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);
}