|
|
|
@ -26,7 +26,7 @@ double trapez(int n, double a, double z, double (*func)(double, double, double), |
|
|
|
} |
|
|
|
|
|
|
|
double IntRomb(double x1, double x2, int n, double a, double z, |
|
|
|
double (*func)(double, double, double), int eps) { |
|
|
|
double (*func)(double, double, double), double eps) { |
|
|
|
int i, k; //Variablen für Schleifen |
|
|
|
double ergebnis; //zum speichern des Ergebnis |
|
|
|
double **T; //Trapezsummen (später als 2-dim Array) |
|
|
|
@ -53,7 +53,7 @@ double IntRomb(double x1, double x2, int n, double a, double z, |
|
|
|
+ (h[i] * h[i] / (h[i] * h[i] - h[i - k] * h[i - k]) |
|
|
|
* T[i - 1][k - 1]); |
|
|
|
} |
|
|
|
if (abs(T[i][i] - T[i - 1][i - 1]) <= eps) { //Abschätzen ob das Ergebnis genau genug ist wenn ja aus Schleife raus |
|
|
|
if (T[i-1][i-1] / T[i][i] > (1 - eps) || T[i-1][i-1] / T[i][i] < (1 + eps)) { //Abschätzen ob das Ergebnis genau genug ist wenn ja aus Schleife raus |
|
|
|
ergebnis = T[i][i]; |
|
|
|
|
|
|
|
break; |
|
|
|
@ -127,12 +127,12 @@ double ges_efeld(int n, double a1, double a2, double z, double Q1, double Q2, |
|
|
|
double d, double *df1, double *df2, |
|
|
|
double (*func)(double, double, double), double eps) { //verwendet numerisch berechnetes E-Feld |
|
|
|
efeld(a1, z, n, Q1, eps, df1, func); //Berechnung E-Feld des 1. Drahtes |
|
|
|
efeld(a2, d - z, n, Q2, eps, df2, func); //Berechnung E-Feld des 2. Drahtes |
|
|
|
efeld(a2, z-d, n, Q2, eps, df2, func); //Berechnung E-Feld des 2. Drahtes |
|
|
|
double E_ges = *df1 + *df2; //Superposition der E-Felder der einzelnen Drähte |
|
|
|
return E_ges; |
|
|
|
} |
|
|
|
|
|
|
|
double secant_pauline(int n, double a1, double a2, double Q1, double Q2, |
|
|
|
double secant_pauline(int n,double a1, double a2, double Q1, double Q2, |
|
|
|
double d, double *df1, double *df2, |
|
|
|
double (*func)(double, double, double), double eps) { |
|
|
|
|
|
|
|
@ -162,7 +162,7 @@ double secant_pauline(int n, double a1, double a2, double Q1, double Q2, |
|
|
|
|
|
|
|
int main(void) { |
|
|
|
double z, a1, a2; |
|
|
|
int n = 30; |
|
|
|
int n = 10; |
|
|
|
const double eps = 1e-8; //genauigkeit epsilon |
|
|
|
const double eps2 = 1e-4; |
|
|
|
double d = 12; //Abstand 2.Draht zum 1. |
|
|
|
@ -199,6 +199,6 @@ int main(void) { |
|
|
|
|
|
|
|
printf("Nullstelle %f\n", |
|
|
|
secant_pauline(n, a1, a2, Q1, Q2, d, &df1, &df2, f1, eps2)); |
|
|
|
z = 0.1; |
|
|
|
|
|
|
|
|
|
|
|
} |