Markus8
Ensign
- Registriert
- Apr. 2004
- Beiträge
- 179
Hi Leute,
wie bereits im Topic erwähnt, versuche ich gerade ein Programm für das Newtonsche Näherungsverfahren zu schreiben, was auch schon einigermaßen geklappt hat
.
Aber trotzdem könnte ich ein paar Verbesserungsvorschläge gebrauchen.
Eins vorweg: Ich bin noch net sehr weit in C, habe vor kurzer Zeit "Schleifen" und "Funktionen definieren" gelernt, also versucht mir nicht was zuschreiben wovon ich "noch" keine Ahnung hab', am besten auf einfachste Art und Weise
.
Hier mein erster Versuch:
Aber irgendwie wusst' ich hier in der Schleife nicht weiter, vor allem beim Speichern des aktuellen Wertes, naja, am besten wäre ohnehin ne Schleife die sofort den "Nullpunkt" ausrechnet oder eben sehr präziese arbeitet.
Darauf hab' ich's mit dieser einfachen Methode probiert, was es aber nicht wirklich bringt
.
Hoffe ihr habt'n paar gute Ansätze für mich.
Thx im Voraus
wie bereits im Topic erwähnt, versuche ich gerade ein Programm für das Newtonsche Näherungsverfahren zu schreiben, was auch schon einigermaßen geklappt hat
Aber trotzdem könnte ich ein paar Verbesserungsvorschläge gebrauchen.
Eins vorweg: Ich bin noch net sehr weit in C, habe vor kurzer Zeit "Schleifen" und "Funktionen definieren" gelernt, also versucht mir nicht was zuschreiben wovon ich "noch" keine Ahnung hab', am besten auf einfachste Art und Weise
Hier mein erster Versuch:
#include <stdio.h>
main(){
float x,a,b,c,h=0.0,f;
int zahl;
printf("\tNewtonsches Naeherungsverfahren");
printf("\n\n\nDieses Programm bezieht sich ausschliesslich auf ");
printf("Polynomdarstellungen im Format \n ax*x*x+bx*x-c");
printf("\n\n\n\nUm im Anschluss mehr als einen Naeherungswert zu bestimmen,");
printf("geben Sie bitte '1',\nansonsten '0' ein: ");
scanf("%i",&zahl);
printf("\n\n\nGeben Sie bitte den Wert der Variablen 'a' ein: ");
scanf("%f",&a);
printf("\nNun den Wert der Variablen 'b': ");
scanf("%f",&b);
printf("\nJetzt bitte 'c' (Absolutglied): ");
scanf("%f",&c);
printf("\n\n\nDas waren die Werte fuer die Funktion");
printf("\n\nGeben Sie nun bitte den x-Wert (Startwert) ein: ");
scanf("%f",&x);
h = x - ((a*x*x*x+b*x*x-c)/(3*a*x*x+2*b*x));
printf("\n\nDer erste Naeherngswert der Fkt %.2fx*x*x+%.2fx*x-%.2f lautet: ",
a,b,c);
printf("%f",h);
while (zahl != 0){
f = (h - ((a*h*h*h+b*h*h-c)/(3*a*h*h+2*b*h)));
printf("\n\nAktueller Naeherungswert = %f",f);
f = h;
printf("\n\nFuer einen erneuten Durchlauf bitte '1', ansonsten '0' eingeben: ");
scanf("%i",&zahl);
}
getch();
}
Aber irgendwie wusst' ich hier in der Schleife nicht weiter, vor allem beim Speichern des aktuellen Wertes, naja, am besten wäre ohnehin ne Schleife die sofort den "Nullpunkt" ausrechnet oder eben sehr präziese arbeitet.
#include <stdio.h>
main(){
float a,b,c,d,f,g,h=0.0,i,j,x;
printf("\tNewtonsches Naeherungsverfahren");
printf("\n\n\nDieses Programm bezieht sich ausschliesslich auf ");
printf("Polynomdarstellungen im Format \n ax*x*x+bx*x-c");
printf("\n\n\n\nGeben Sie bitte den Wert der Variablen 'a' ein: ");
scanf("%f",&a);
printf("\nNun den Wert der Variablen 'b': ");
scanf("%f",&b);
printf("\nJetzt bitte 'c' (Absolutglied): ");
scanf("%f",&c);
printf("\n\n\nDas waren die Werte fuer die Funktion");
printf("\n\nGeben Sie nun bitte den x-Wert (Startwert) ein: ");
scanf("%f",&x);
h = x - ((a*x*x*x+b*x*x-c)/(3*a*x*x+2*b*x));
printf("\n\nDer erste Naeherngswert der Fkt %.2fx*x*x+%.2fx*x-%.2f lautet: ",
a,b,c);
printf("%f",h);
f = h - ((a*h*h*h+b*h*h-c)/(3*a*h*h+2*b*h));
printf("\n\n2. Naeherungswert = %f",f);
g = f - ((a*f*f*f+b*f*f-c)/(3*a*f*f+2*b*f));
printf("\n\n3. Naeherungswert = %f",g);
d = g - ((a*g*g*g+b*g*g-c)/(3*a*g*g+2*b*g));
printf("\n\n4. Naeherungswert = %f",d);
i = d - ((a*d*d*d+b*d*d-c)/(3*d*d*d+2*b*d));
printf("\n\n5. Naeherungswert = %f",i);
j = i - ((a*i*i*i+b*i*i-c)/(3*i*i*i+2*b*i));
printf("\n\n6. Naeherungswert = %f",j);
getch();
}
Darauf hab' ich's mit dieser einfachen Methode probiert, was es aber nicht wirklich bringt
Hoffe ihr habt'n paar gute Ansätze für mich.
Thx im Voraus
Zuletzt bearbeitet: