diff --git a/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c b/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c index 9c4d5c6..6ba64f2 100644 --- a/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c +++ b/Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c @@ -2,7 +2,7 @@ #include #include -int mmax = 10; //globale Variable, Maximale Anzahl der Schritte +int mmax = 10; //globale Variable, Maximale Anzahl der Schritte double f1(double x, double a, double z) { // Zu integrierende Funktion return (exp(-(x * x) / (a * a)) / sqrt(x * x + z * z)); } @@ -33,16 +33,16 @@ double IntRomb(double x1, double x2, int n, double a, double z, } - h[0] = (x2 - x1) / (n - 1); //Nullter + h[0] = (x2 - x1) / (n - 1); //Erste Schrittweite berechnen - T[0][0] = trapez(n, a, z, f1, x1, x2); + T[0][0] = trapez(n, a, z, f1, x1, x2); //erstes Trapez berechnen for (i = 1; i <= mmax; i++) { - n = n * 2; + n = n * 2; //Trapeze für k=0 berechnen, indem man n vergrößert T[i][0] = trapez(n, a, z, func, x1, x2); - h[i] = h[i - 1] / 2.0; + h[i] = h[i - 1] / 2.0; //h berechnen für i>1 indem man durch 2 teilt - for (k = 1; k <= i; k++) { + for (k = 1; k <= i; k++) { //mit Formel aus VL T für k>1 berechnen T[i][k] = (-h[i - k] * h[i - k] / ((h[i] * h[i]) - (h[i - k] * h[i - k])) * T[i][k - 1]) @@ -50,14 +50,14 @@ double IntRomb(double x1, double x2, int n, double a, double z, * T[i - 1][k - 1]); } - if (abs(T[i][i] - T[i - 1][i - 1]) <= eps) { + if (abs(T[i][i] - T[i - 1][i - 1]) <= eps) { //Abschätzen ob das Ergebnis genau genug ist wenn ja aus Schleife raus ergebnis = T[i][i]; break; } } - + //Speicherplatz befreien und ergebnis return for (i = 0; i <= mmax; i++) { free(T[i]); } @@ -69,17 +69,17 @@ double IntRomb(double x1, double x2, int n, double a, double z, int main(void) { double z, a; int n; - int eps = 1e-8; - printf( - "Bitte geben Sie den Abstand der Punktladung von der x-Achse z ein \n"); + int 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); printf("Bitte geben Sie a ein\n"); scanf("%lf\n ", &a); - double x1 = -5; + double x1 = -5; //Integralgrenzen double x2 = 5; - printf("Ende %f\n", IntRomb(x1, x2, 20, a, z, f1, eps)); + printf("Ende %f\n", IntRomb(x1, x2, 20, a, z, f1, eps)); //Ergebnis mit hilfe von IntRomb }