Angewandte Mathematik
Nerwtonverfahren
f(x)=x³-x²-x-2
f'(x)=3x²-2x-1

Das Newtonverfahren nimmt anstelle der Sekante die Tangente. Ansonsten ist es dem Sekantenverfahren sehr ähnlich. Der Hauptunterschied besteht in der Berechnung des neuen x-Wertes.
f(xk-1)
Newtonverfahren: xk := xk-1 - ------------------------------
Steigung von f an der Stelle xk-1

Bemerkung:
Die Steigung entspricht der Steilheit der Tangente an der Stelle x.
Sie Steigung wird durch die Ableitung berechnet.
2,4-(3.7/11.48)=2,4-0.322=2,078
2,078-(0,5768945/7,798252)=2,0040226
Wie lauten die ausgehend von den Startwerten x0=2 und x1=3 für die Funktion
f(x)=x²-5 mittels des Newtonverfahrens
berechneten Nährungswerte x0, x1, ... , x4 für die Nullstelle Wurzel aus (5)?
| ein kleines Programm zur Simulation. |
| #include <stdio.h> #include <math.h> long double funk(long double); long double funkstr(long double); void sekanten(int,long double,long double); void newton(int,long double); long double funk(long double x) { return (x-exp(-x*x)); } long double funkstr(long double x) { return (1.0+2.0*x*exp(-x*x)); } void sekanten(int n, long double x0, long double x1) { int i; long double x,xx,xxx; x=x0; xx=x1; for(i=1;i<=n;i++) { printf("Die %.2i-te Sekanten-Naeherung lautet: % .12LE.\n",i,xx); xxx=x; x=xx; xx=xxx-(funk(xxx)*(xx-xxx)/(funk(xx)-funk(xxx))); } } void newton(int n, long double x0) { int i; long double x; x=x0; for(i=0;i<=n;i++) { printf("Die %.2i-te Newton-Naeherung lautet: % .12LE.\n",i,x); x=x-(funk(x)/funkstr(x)); } } /* Hauptprogramm */ int main(void) { long double x0=0.0,x1=2.0; sekanten(10,x0,x1); printf("\n"); printf("\n"); printf("\n"); newton(10,x0); printf("\n"); return(0); } |