Lagrange- Interpolationspolynom

Prof. Dr. Dörte Haftendorn, MuPAD 4,  http://haftendorn.uni-lueneburg.de  Aug.06

Automatische Übersetzung aus  MuPAD 3.11, Nov. 05        Update Juni 06

Es fehlen noch textliche Änderungen, die MuPAD 4 direkt berücksichtigen, das ist in Arbeit.

Web:  http://haftendorn.uni-lueneburg.de             www.mathematik-verstehen.de

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Konstruiert für 4 Datenpunkte, die hier beliebig eingeben werden können.

Eine Anpassung der Zeichenbereiche ist ggf. dann "von Hand" nötig".

datenPunkte:=[1,5], [2,2],[5,3],[7,5]:

dp:=datenPunkte;

math

Gesucht ist ein Polynom durch die 4 Datenpunkte.

graphDatenPunkte:=plot::Listplot([datenPunkte],

   LinesVisible=FALSE, PointSize=3,Scaling=Constrained,

    GridVisible=TRUE,ViewingBox=[0..8,0..6]):

plot(graphDatenPunkte)

MuPAD graphics

Basis-Polynome nach Lagrange

Idee: Es werden Polynome aus 3 Linearfaktoren konstruiert, die an

genau 3 der 4 Stützstellen ihre Nullstellen haben.

Sie sind eine Basis im Polynomraum der Polynome bis zuum 3. Grad.

Die gesuchte Lösung p ist damit eine Linearkombination dieser 4 Polynome

dp

math

L0:=x->(x-dp[2][1])*(x-dp[3][1])*(x-dp[4][1]): L0(x);

L1:=x->(x-dp[1][1])*(x-dp[3][1])*(x-dp[4][1]): L1(x);

L2:=x->(x-dp[1][1])*(x-dp[2][1])*(x-dp[4][1]): L2(x);

L3:=x->(x-dp[1][1])*(x-dp[2][1])*(x-dp[3][1]): L3(x);

math

math

math

math

p:=x->c0*L0(x)+c1*L1(x)+c2*L2(x)+c3*L3(x);p(x)

math

math

c0:=dp[1][2]/L0(dp[1][1]);

c1:=dp[2][2]/L1(dp[2][1]);

c2:=dp[3][2]/L2(dp[3][1]);

c3:=dp[4][2]/L3(dp[4][1]);

math

math

math

math

p(x)

math

graphp:=plot::Function2d(p(x),x=0..8,

             LineColor=RGB::Red, LineWidth=1):

plot(graphp,graphDatenPunkte)

MuPAD graphics

gL0:=plot::Function2d(L0(x),x=0..8,

             LineColor=RGB::Black, LineWidth=1):

gL1:=plot::Function2d(L1(x),x=0..8,

             LineColor=RGB::Blue, LineWidth=1):

gL2:=plot::Function2d(L2(x),x=0..8,

             LineColor=RGB::Magenta, LineWidth=1):

gL3:=plot::Function2d(L3(x),x=0..8,

             LineColor=RGB::Green, LineWidth=1):

xA:=plot::Function2d(0,x=0..8,

             LineColor=RGB::DarkGray, LineWidth=1):

 

plot(xA,gL0,gL1,gL2,gL3,graphp,graphDatenPunkte,

           ViewingBox=[0..8,-7..9], Scaling=Unconstrained)

MuPAD graphics

Hier sieht man also die 4 Basispolynome, die also an genau 3

Stützstellen ihre Nullstellen haben.

Es gibt nur ein einziges Polynom minimalen Grades durch die Datenpunkte.

Mit jeder Methode ergibt sicg dasselbe Polynom.

####################################################

Interpolationspolynom direkt von MuPAD

Zuerst müssen die Datenpunkte in einer x-Datenliste und einer

y-Datenliste aufgenommen werden.

xd:=[dp[i][1]$i=1..4];

yd:=[dp[i][2]$i=1..4];

math

math

ip:=interpolate(xd,yd,x)

math

Das Interpolationspolynom ist vom Datentyp "Polynom".

es kann an jeder Stelle ausgewertet werden, wie eine Funktion.

ip(3)

math

gripol:=plot::Function2d(ip(x),x=0..8,

          LineColor=[0.8,0,0.8], LineWidth=1, LineStyle=Dashed):

plot(graphp,gripol,graphDatenPunkte,

           ViewingBox=[0..8,-2..6])

MuPAD graphics

Es passt natürlich aufeinander.

################################################