Browse Source

nochmal

master
maasp 5 years ago
parent
commit
fc90773464
1 changed files with 16 additions and 4 deletions
  1. 20
      Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c

20
Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c

@ -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;
}
}
Loading…
Cancel
Save