diff --git a/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c b/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c index cd6fb82..9683dfa 100644 --- a/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c +++ b/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c @@ -35,7 +35,7 @@ double IntRomb(double x1, double x2, int n, double a, double z, h[0] = (x2 - x1) / (n - 1); //Erste Schrittweite berechnen - T[0][0] = trapez(n, a, z, f1, x1, x2); //erstes Trapez berechnen + T[0][0] = trapez(n, a, z, func, x1, x2); //erstes Trapez berechnen for (i = 1; i <= mmax; i++) { n = n * 2; //Trapeze für k=0 berechnen, indem man n vergrößert @@ -65,21 +65,39 @@ double IntRomb(double x1, double x2, int n, double a, double z, free(h); return ergebnis; } +double potenzial(double x1, double x2,int n,double a,double z,double (*func) (double, double, double),double eps){ + double V; + double alpha=1; + double Q=1; + V=alpha*(Q/a)*IntRomb(x1,x2,n,a,z,f1,eps); + return V; +} +void ableitung(double x1, double x2, double a, double z, int n,double eps, double *dfp){ + double f[2]; + + f[0]=potenzial(x1,x2,n,a,z+eps,f1, eps); + f[1]=potenzial(x1,x2,n,a,z-eps,f1, eps); + *dfp = -1*(f[0] - f[1]) / (2 * eps); //Differenzenquotient + +} int main(void) { double z, a; int n; - int eps = 1e-8; //genauigkeit epsilon + double eps = 1e-8; //genauigkeit epsilon //Eingabe der Variablen - printf("Bitte geben Sie den Abstand der Punktladung von der x-Achse z ein \n"); - scanf("%lf\n", &z); - printf("Bitte geben Sie n ein \n"); - scanf("%d\n", &n); + double df; + printf("Bitte geben Sie den Abstand der Punktladung von der x-Achse z ein\n "); + scanf("%lf", &z); + printf("Bitte geben Sie n ein\n"); + scanf("%d", &n); printf("Bitte geben Sie a ein\n"); - scanf("%lf\n ", &a); + scanf("%lf", &a); double x1 = -5; //Integralgrenzen double x2 = 5; - printf("Ende %f\n", IntRomb(x1, x2, 20, a, z, f1, eps)); //Ergebnis mit hilfe von IntRomb - + printf("Das Integral ist %f\n", IntRomb(x1, x2, n, a, z, f1, eps)); //Ergebnis mit hilfe von IntRomb + printf("Das Potenzial ist %f", potenzial(x1,x2,n,a,z,f1,eps)); + ableitung(x1,x2,a,z,n,eps,&df); + printf("Das E-Feld an der Stelle %lf ist:%f\n", z, df); }