Browse Source

g,mnnbjkb

master
maasp 5 years ago
parent
commit
9ed6d8bddb
1 changed files with 6 additions and 6 deletions
  1. 12
      Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c

12
Hausaufgaben/ComputerphysikAbgabe/src/ComputerphysikAbgabe.c

@ -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 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 int i, k; //Variablen für Schleifen
double ergebnis; //zum speichern des Ergebnis double ergebnis; //zum speichern des Ergebnis
double **T; //Trapezsummen (später als 2-dim Array) 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]) + (h[i] * h[i] / (h[i] * h[i] - h[i - k] * h[i - k])
* T[i - 1][k - 1]); * 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]; ergebnis = T[i][i];
break; 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 d, double *df1, double *df2,
double (*func)(double, double, double), double eps) { //verwendet numerisch berechnetes E-Feld 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(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 double E_ges = *df1 + *df2; //Superposition der E-Felder der einzelnen Drähte
return E_ges; 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 d, double *df1, double *df2,
double (*func)(double, double, double), double eps) { 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) { int main(void) {
double z, a1, a2; double z, a1, a2;
int n = 30;
int n = 10;
const double eps = 1e-8; //genauigkeit epsilon const double eps = 1e-8; //genauigkeit epsilon
const double eps2 = 1e-4; const double eps2 = 1e-4;
double d = 12; //Abstand 2.Draht zum 1. double d = 12; //Abstand 2.Draht zum 1.
@ -199,6 +199,6 @@ int main(void) {
printf("Nullstelle %f\n", printf("Nullstelle %f\n",
secant_pauline(n, a1, a2, Q1, Q2, d, &df1, &df2, f1, eps2)); secant_pauline(n, a1, a2, Q1, Q2, d, &df1, &df2, f1, eps2));
z = 0.1;
} }
Loading…
Cancel
Save