|
|
|
@ -85,7 +85,7 @@ double potenzial(int n, double a, double z, |
|
|
|
} |
|
|
|
double InfInt(int n, double a, double z, double eps,double (*func)(double, double, double)) { |
|
|
|
double x1 = -1; //Grenzen definieren |
|
|
|
double x2 = 1; |
|
|
|
double x2 = 0; |
|
|
|
double R=IntRomb(x1,x2,n,a,z,func,eps); //Variable zum speichern des Ergebnis, Integral für erste Grenzen ausrechnen |
|
|
|
double lastR; //Vergleichsvariable definieren |
|
|
|
do { |
|
|
|
@ -96,7 +96,7 @@ double InfInt(int n, double a, double z, double eps,double (*func)(double, doubl |
|
|
|
R = IntRomb(x1, x2, n, a, z, func, eps); //neues Ergebnis berechnen |
|
|
|
|
|
|
|
} while ((lastR/R<(1-eps)) || (lastR/R>(1+eps))); //Integralwerte vergleichen ,sodass deren Änderung kleiner als eps ist |
|
|
|
return R; |
|
|
|
return 2*R; |
|
|
|
} |
|
|
|
void efeld(double a, double z, int n, double eps, |
|
|
|
double *dfp,double (*func)(double, double, double)) { |
|
|
|
@ -109,8 +109,8 @@ void efeld(double a, double z, int n, double eps, |
|
|
|
do { |
|
|
|
h=h/2; //h kleiner machen |
|
|
|
lastdf=*dfp; //Alte Ableitung auf neuer Variable speichern |
|
|
|
f[0] = potenzial( n, a, z +(h), f1, eps); //f(z+h) berechnen |
|
|
|
f[1] = potenzial(n, a, z - h, f1, eps); //f(z-h) berechnen |
|
|
|
f[0] = potenzial( n, a, z +(h), func, eps); //f(z+h) berechnen |
|
|
|
f[1] = potenzial(n, a, z - h, func, eps); //f(z-h) berechnen |
|
|
|
|
|
|
|
|
|
|
|
*dfp = -1* (f[0] - f[1]) / (2 * h); //Differenzenquotient |
|
|
|
@ -142,5 +142,17 @@ int main(void) { |
|
|
|
printf("Das E-Feld an der Stelle %3.2lf ist:%f\n", z, potenzial(n,a,z,f2,eps)); |
|
|
|
double diff=fabs(df - potenzial(n,a,z,f2,eps)); |
|
|
|
printf("Differenz %1.10f", diff); |
|
|
|
printf("Achtung schleife"); |
|
|
|
for(int i=0; i<20; i++){ |
|
|
|
efeld(a,z,n,eps,&df,f1); |
|
|
|
printf("Das E-Feld an der Stelle %3.2lf ist:%f\n", z, df); |
|
|
|
printf("Das E-Feld an der Stelle %3.2lf ist:%f\n", z, potenzial(n,a,z,f2,eps)); |
|
|
|
double diff=fabs(df - potenzial(n,a,z,f2,eps)); |
|
|
|
printf("ZZ %3.2lf\n", z); |
|
|
|
printf("Differenz %1.10f \n", diff); |
|
|
|
|
|
|
|
z=z*2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |