F4 - Tillämpningar av derivata

KTH/ICT: IX1304, VT-2012
Göran Andersson, goeran@kth.se
120330

Mål

Att kunna redogöra för följande begrepp

Derivata

Linjär approximation av funktion

att kunna

ge exempel på sambandet förändring - derivata

bestämma en linjär approximation till funktion

använda linjär approximation för ekvationslösning (Newton-Raphson)

lösa extremvärdesproblem med derivata

bestämma enkla Taylorpolynom

Innehåll

Teori

Adams chapter 4

Förändringshastighet

Adams (6^th) ed. ch. 4.1
Adams (7^th) ed. ch. 4.1

Flygproblem

Ett flygplan flyger med 900km/h i horisontell riktning. En person står rakt under planet.

Bestäm den fart som planet avlägsnar sig från personen som funktion av det horisontella avståndet.

Bestäm den fart som planet avlägsnar sig från personen som funktion av tiden.

Bestäm vinkelhastigheten mot en vertikal axel som funktion av det horisontella avståndet och som funktion av tiden.

Lösning

Inför variabler enligt bilden nedan.

Vi söker ((ds)/(dt)). Enligt en välkänd grekisk sats gäller

(s^2)=(8^2)+(x^2)

Derivering m.a.p. t ger:

2s ((ds)/(dt))=0+2x ((dx)/(dt))⇔2(Sqrt[(8^2)+(x^2)]) ((ds)/(dt))=2x·900

⇔((ds)/(dt))=((900x)/(Sqrt[(8^2)+(x^2)]))[km/h]

Vi skriver om farten till SI-enheter eftersom timme är för stor tidsenhet i sammanhanget.

((dx)/(dt))=v=900(km/h)=900((1000m)/(3600s))=250m/s

Vi söker nu ((ds)/(dt)) som funktion av tiden. Antag att x=0 vid t=0. Eftersom farten v i x-led är konstant kan x(t) skrivas

x(t)=0+v t=250 t

Därmed kan s'(t) skrivas

⇔s'(t)=((250·250t)/(Sqrt[(8000^2)+(((250t))^2)]))=((250·250t)/(Sqrt[(((250))^2)(((8000^2)/(250^2))+(t^2))]))=((250t)/(Sqrt[(32^2)+(t^2)]))[m/s]

Vi söker nu vinkelhastigheten ω=θ'(t). Om vi fortsätter med SI-enheter uttrycks denna i rad/s. Det är den farten som betraktaren upplever. Från geometrin i triangeln i bilden erhålls

tan(θ)=(x/8000)

Derivering m.a.p. t ger:

(1/((cos^2)(θ)))ω=(v/8000)⇔ω=(1/8000)v (cos^2)(θ)⇔ω=(1/8000)v ((((8000/s)))^2)=((8000 v)/((8000^2)+(x^2)))=(1/32)(1/(1+(((x/8000))^2)))

Detta är ω(x). Om vi nu vill uttrycka som funktion av tiden ω(t) behöver vi bara ersätta x med x(t)=250t. Dvs.

ω(t)=(1/32)(1/(1+(((250t/8000))^2)))=(1/32)(1/(1+(((t/32))^2)))

Om vi vill uttrycka °/s så kan vi multiplicera med skalfaktorn 180/π.

Anm: m.a.p. betyder med avseende på

I Mathematica finns olika möjligheter till derivering. Metoden D förutsätter explicit beroende vid derivering. Det innebär att om du exempelvis deriverar m.a.p. x kommer uttryck som inte innehåller x att behandlas som konstanter. Detta kallas ofta partiell derivering. Exempel:

ClearAll["`*"]

D[(x^3)+2x y+(y^2),x]

Här behandlas y som en konstant, dvs. derivatan av (y^2) blir 0.

Metoden Dt förutsätter implicit beroende vid derivering. Det innebär att om du exempelvis deriverar m.a.p. x kommer uttryck som inte innehåller x att behandlas som funktioner av x. Detta kallas ofta total derivering. Exempel:

Dt[(x^3)+2x y+(y^2),x]

Här behandlas y som en funktion y(x), dvs. derivatan av (((y(x)))^2) blir 2y(x)y'(x). Du kan även använda metoden D för att få samma resultat om du inför y som funktion y(x).

D[(x^3)+2x y[x]+((y[x])^2),x]

Lösning av uppgiften. För enkelhets skull räknar vi konsekvent i SI-enheter. Ekvationen enligt Pytagoras’ sats är

eqa=(s^2)==(8000^2)+(x^2);

sola=Reduce[{eqa,s>0},s,Reals]

Set@@sola; (* tilldela s lösningen *)

Derivering m.a.p. t ger s'(t)

Dt[s,t]

Den horisontella farten x'(t) införs:

vs[x_]=Dt[s,t]/.{Dt[x,t]->900*1000/3600}

Plot[vs[x],{x,0,20×(10^3)},AxesLabel->{"x [m]","(Subscript[v, s]) [m/s]"}]

Vi är nu intresserade av s'(t) som funktion av t. Substituering i (Subscript[v, s])(x) av x=0+v t ger

vs[t_]=vs[0+900*1000/3600t]

Detta är uttrycket för fartens [m/s] beroende av tiden i sekunder.

Plot[vs[t],{t,0,90},AxesLabel->{"t [s]","(Subscript[v, s]) [m/s]"}]

Vi är nu intresserade vinkelhastigheten, dels som funktion av x och dels som funktion av t.

eqc=Tan[θ]==(x/8000);

solc=Reduce[{eqc,0<θ<(π/2)},θ,Reals]

Set@@solc[[2]];(* tilldela θ lösningen *)

Vinkelhastigheten blir ω=((dθ)/(dt))

ω[x_]=FullSimplify[Dt[θ,t]]

Farten x'(t)=250m/s införs.

ω[x_]=ω[x]/.{Dt[x,t]->250}

Plot[ω[x],{x,0,20×(10^3)},AxesLabel->{"x [m]","ω [rad/s]"},PlotRange->{0,All}]

Detta är ω(x). Om vi nu vill uttrycka som funktion av tiden ω(t) behöver vi bara ersätta x med x(t)=250t. Dvs.

ω[t_]=ω[250t]

Plot[ω[t],{t,0,90},AxesLabel->{"t [s]","ω [rad/s]"},PlotRange->{0,All}]

Ekvationslösning

Adams (6^th) ed. ch. 4.6
Adams (7^th) ed. ch. 4.2

Fixpunktsiteration

En ekvation av typen x=f(x) kan ibland lösas med rekursionen (Subscript[x, n])=f((Subscript[x, n-1])). Undersök metoden för

f(x)=a x (1-x)

Lösning

En funktion f(x) sägs ha en fixpunkt r om

r=f(r)

Vi ska nu undersöka om (Subscript[x, n])=f((Subscript[x, n-1])) konvergerar mot fixpunkten (lösningen) till ekvationen. Vi börjar med en plot av

({{{, ({{y=f(x)}, {y=x}})}})

Lösningen x (och y) till ekvation x=f(x) är ju skärningen mellan linjen och funktionen. Låt oss börja med a=(3/2)=>x=(3/2)x (1-x). Om vi bortser från den triviala lösningen x=0 har vi då x=(1/3). Nu vet vi lösningen och kan se om algoritmen ger korrekt svar.

ClearAll["`*"]

a=3/2;
f[x_]:=a x (1-x)

Solve[x==f[x],x]

Vi sätter vissa optioner för Plot för att slippa skriva dem varje plot.

oldopts=Options[Plot];
SetOptions[Plot,AspectRatio->Automatic,AxesLabel->Automatic,PlotLabel:>StringForm["a = `1`",a]];

Plot[{f[x],x},{x,0,1},PlotRange->{{0,1},{0,1}}]

Låt oss nu studera vad som händer med rekursionen

(Subscript[x, n])=f((Subscript[x, n-1]))

med något startvärde (Subscript[x, 0]). Vi väljer här (Subscript[x, 0])=0.4. Talföljden blir då

(Subscript[x, 1])=f((Subscript[x, 0])),(Subscript[x, 2])=f((Subscript[x, 1])),(Subscript[x, 3])=f((Subscript[x, 2])),…⇔(Subscript[x, 0]), f((Subscript[x, 0])), f(f((Subscript[x, 0]))),f(f(f((Subscript[x, 0])))), …

En nästlad funktionsberäkning på detta sätt kan i Mathematica beräknas med Nest.

Nest[g,x0,3]

En lista med nästlade funktionsvärden kan i beräknas med NestList.

NestList[g,x0,5]

I vårt fall får vi med f(x) och (Subscript[x, 0])=0.4

NestList[f,0.4,20]

Man kan studera hur talföljden fungerar genom att bilda successiva linjer mellan punkterna (x,x),(x,f(x)),(f(x),f(x)) för x=(Subscript[x, 0]),(Subscript[x, 1]).(Subscript[x, 2]),…

linjer[x_]:=Line[{{x,x},{x,f[x]},{f[x],f[x]}}]

Plot[
{x,f[x]},{x,0,1},PlotRange->{{0,1},{0,1}},
Epilog->{linjer/@NestList[f,0.4,5]}
]

Här är en zoomad bild:

Plot[
{x,f[x]},{x,0,1},
PlotRange->{{0.32,0.41},{0.32,0.41}},
Epilog->{linjer/@NestList[f,0.4,5]}
]

Vi kan se hur startvärdet (Subscript[x, 0])=0.4 “arbetar sig” mot lösningen eller fixpunkten x=1/3.

FixedPoint[f,0.4]

För a=11/4=2.75 får vi ett annat beteende, men fortfarande (en långsam) konvergens mot lösningen x=7/11.

a=11/4;
Nest[f,0.4,100]

plot1=Plot[
{x,f[x]},{x,0,1},PlotRange->{{0,1},{0,1}},
Epilog->{linjer/@NestList[f,0.4,5]}
];
plot2=Plot[
{x,f[x]},{x,0,1},PlotRange->{{0.6,0.7},{0.6,0.7}},
Epilog->{linjer/@NestList[f,0.4,5]}
];
GraphicsRow[{plot1,plot2}]

Då vi väljer a=11/3 är lösningen

a=11/3;
Solve[x==f[x],x]

Av följande plot framgår att algoritmen inte konvergerar mot lösningen a=8/11 utan mot vi får en följd mot två olika fixpunkter. För ökande a kommer antalet fixpunkter att dubbleras vid vissa bestämda värden (Subscript[a, k]). Se nedanstående diagram.

Plot[
{x,f[x]},{x,0,1},PlotRange->{{0,1},{0,1}},
Epilog->{linjer/@NestList[f,0.4,5]}
]

Mitchell Feigenbaum visade 1978 att ett flertal iterationer av typ (Subscript[x, n])=f((Subscript[x, n-1])) uppfyller

(lim_(k->∞)) (((Subscript[a, k+1])-(Subscript[a, k]))/((Subscript[a, k+2])-(Subscript[a, k+1])))=δ=4.669920…

Kontanten δ kallas numera Feigenbaums konstant och är en naturkonstant, typ π eller e.

För a=3.9 uppvisar vår algoritm ett kaotiskt beteende och för a>4 är följden divergent. Dessa inledande experiment blev upptakten till intensiva studier i kaosteori under 1980-talet.

a=3.9;
Plot[
{x,f[x]},{x,0,1},PlotRange->{{0,1},{0,1}},
Epilog->{linjer/@NestList[f,0.4,25]}
]

I läroboken finns en sats på sidan 221 som ett (grovt) tillräckligt villkor för en fixpunkt. Det finns ett antal olika satser om konvergens mot fixpunkter. En av de enklare är:

Låt f vara kontinuerligt deriverbar i ett interval (a,b) kring fixpunkten r om då (Abs[f'(r)])<1 konvergerar följden (Subscript[x, n])=f((Subscript[x, n-1])).

Återställ optionerna för Plot:

SetOptions[Plot,oldopts];

Newton-Raphsons metod

Använd tangentens ekvation för att erhålla ett närmevärde till roten för ekvationen cos(x)=x.

Lösning

En funktion kan approximeras med en tangent. Dvs. roten till f(x)=0 kan approximeras med tangentens skärningspunkt. Denna idé kan användas för att successivt närma sig en rot r till ekvationen f(x)=0. Om vi börjar med att gissa med (Subscript[x, 0]) och bildar tangenten i ((Subscript[x, 0]),f((Subscript[x, 0]))) blir ekvationen för den röda tangenten

y=f((Subscript[x, 0]))+f'((Subscript[x, 0])) (x-(Subscript[x, 0]))

Denna tangent skär x-axeln i punkten ((Subscript[x, 1]),0). Dvs.

0=f((Subscript[x, 0]))+f'((Subscript[x, 0])) ((Subscript[x, 1])-(Subscript[x, 0]))⇔(Subscript[x, 1])=(Subscript[x, 0])-((f((Subscript[x, 0])))/(f'((Subscript[x, 0]))))

Nu, när vi har räknat ut (Subscript[x, 1]) kan vi bilda den blå tangenten i punkten ((Subscript[x, 1]),f((Subscript[x, 1]))):

y=f((Subscript[x, 1]))+f'((Subscript[x, 1])) (x-(Subscript[x, 1]))

Denna tangent skär x-axeln i punkten ((Subscript[x, 2]),0). Dvs.

0=f((Subscript[x, 1]))+f'((Subscript[x, 1])) ((Subscript[x, 2])-(Subscript[x, 1]))⇔(Subscript[x, 2])=(Subscript[x, 1])-((f((Subscript[x, 1])))/(f'((Subscript[x, 1]))))

... och så vidare. Vi har en rekursionsformel

(Subscript[x, n])=(Subscript[x, n-1])-((f((Subscript[x, n-1])))/(f'((Subscript[x, n-1]))))

Vår ekvation

cos(x)=x⇔x-cos(x)=0

Vi väljer vår funktion till f(x)=x-cos(x) och söker lösningen till f(x)=0.

ClearAll["`*"]

f[x_]:=x-Cos[x]

För att kunna välja ett lämpligt startvärde plottas funktionen

Plot[f[x],{x,0,1},AxesLabel->Automatic]

Av grafen framgår att (Subscript[x, 0])=3/4 är ett lämpligt startvärde.

Clear[x];
x[0]=0.75;
x[n_]:=x[n]=x[n-1]-((f[x[n-1]])/(f'[x[n-1]]))

Syntaxen x[n_] := x[n] = ... gör att beräknade värden (Subscript[x, n]) sparas i en look-up table och behöver inte beräknas på nytt vid anrop. Se länken Functions That Remember Values They Have Found.

x[n_] := x[n] = ...

Vi kan nu se att rekursionen konvergerar snabbt mot lösningen:

xData=Table[x[n],{n,0,6}]

Redan (Subscript[x, 2]) innehåller 6 korrekta decimaler. Låt undersöka hur snabb konvergensen är med större noggrannhet. Nu anges startvärdet med 100 värdesiffror

Clear[x];
x[0]=0.75`100;
x[n_]:=x[n]=x[n-1]-((f[x[n-1]])/(f'[x[n-1]]))

Vi gör nu en utskrift med 50 värdesiffror.

xData=Table[x[n],{n,0,6}];

TableForm[SetPrecision[xData,50]]

I Mathematica löses ekvationer numeriskt på detta sätt med metoden FindRoot.

FindRoot[Cos[x]==x,{x,0.75}]

Eftersom rekursionsformeln () innehåller en derivata i nämnaren kommer metoden att misslyckas om f'((Subscript[x, n-1]))=0. Det innebär att lutningskoefficienten är 0 och tangenten är horisontell. Dvs. vi får ingen skärningspunkt på x-axeln. I praktiken kommer metoden att misslyckat även då f'((Subscript[x, n-1]))≈0 eftersom då skärningen ligger långt från den sökta roten.

I vårt fall är derivatan

f'[x]

Dvs. om x=-(π/2) är derivatan 0. Det innebär att metoden misslyckas om detta anges som startvärde.

FindRoot[Cos[x]==x,{x,-(π/2)}]

Antag nu att vi studerar ekvationen (e^(-x))sin(5x)=0.

Clear[x,f];
f[x_]:=(E^(-x))Sin[5x]

Plot[f[x],{x,0,5},AxesLabel->Automatic]

Genom att studera grafen inses att startvärdet är väsentligt om vi som svar vill ha en viss rot. Antag att vi är intresserade av roten kring 1.9. Då är ju detta ett lämpligt starvärde.

FindRoot[f[x]==0,{x,1.9}]

Om vi däremot ger 1.6 som startvärde kommer tangentens lutning att bli för flack så att konvergensen går mot en annan rot.

f'[1.6]

x1=1.6-((f[1.6])/(f'[1.6]))

x2=x1-((f[x1])/(f'[x1]))

FindRoot[f[x]==0,{x,1.6}]

Extremvärden

Adams (6^th) ed. ch. 4.2, 4.5
Adams (7^th) ed. ch. 4.4, 4.8

Teori

Sats : Extremvärde
Om f(x) är kontinuerlig på ett slutet och begränsat intervall [a,b] finns max/min-punkter m resp. M i [a,b] så att
			f(m)≤f(x)≤f(M)
för alla x i [a,b].

Problem : Hitta max/min
Sök max/min för f(x) som är kontinuerlig på ett slutet och begränsat intervall [a,b]. 

Lösning:
	(I)	Sök alla kritiska punkter i det inre av intervallet ]a,b[
	(II)	Beräkna f(a) och f(b) samt f(x) i de kritiska punkterna
	(III)	Största värdet i (II) är maxpunkt och minsta värdet minpunkt.

En kritisk punkt är en punkt där derivatan är 0 (stationär punkt) eller en punkt där derivatan inte existerar (singulär punkt).

Man kan förtydliga genom att använda andra-derivatan f''(x) för att testa om en stationär punkt är lokalt max/min.

f'(c)=0, f''(c)<0=>lokalt max

f'(c)=0, f''(c)>0=>lokalt min

f'(c)=0, f''(c)=0=>?

? kan betyda max som för x=0, f(x)=-(x^4), eller min för f(x)=(x^4) eller en så kallad inflexionspunkt (terrasspunkt) för f(x)=(x^3) där f'' byter tecken.

I figuren nedan är (Subscript[c, 1]) en lokal max-punkt, (Subscript[c, 2]) en lokal min-punkt och (Subscript[c, 3]) en inflexionspunkt.

Exempel 1

Bestäm max/min till

f(x)=x-(x^(2/3)), x∈[-1,2]

Lösning

Vi börjar med de inre punkterna i intervallet I=]-1,2[

f'(x)=1-(2/3)(x^((2/3)-1))=1-(2/3)(x^(-1/3))

Vi kan se att f'(x) inte existerar för x=0. Funktionsvärdet här är f(0)=0-(0^(2/3))=0. Derivatans nollställen söks nu:

f'(x)=0⇔1-(2/3)(x^(-1/3))=0(Overscript[⇔, x≠0])(x^(1/3)) (1-(2/3)(x^(-1/3)))=0×(x^(1/3))⇔(x^(1/3))-(2/3)=0⇔x=((((2/3)))^3)

=>f(((((2/3)))^3))=((((2/3)))^3)-(((((((2/3)))^3)))^(2/3))=((((2/3)))^3)-((((2/3)))^2)=-(1/3)((((2/3)))^2)=-(4/27)

Nu återstår ändpunkterna x=-1 och x=2:

f(-1)=-1-(((-1))^(2/3))=-1-((((((-1))^2)))^(1/3))=-1-(1^(1/3))=-1-1=-2

f(2)=2-(2^(2/3))=2 (1-((((1/2)))^(1/3)))     (dvs. detta värde är >0)

Därmed är vi färdiga för bedömning:

max(f(x))=max{0,-(4/27),-2,2 (1-((((1/2)))^(1/3)))}=2 (1-((((1/2)))^(1/3)))

min(f(x))=min{0,-(4/27),-2,2 (1-((((1/2)))^(1/3)))}=-2

Mathematica

ClearAll["`*"]

Vi skriver (x^(2/3))=((((x^2)))^(1/3)) för att slippa problem med komplexa tal.

f[x_]:=x-((((x^2)))^(1/3))

Plot[f[x],{x,-1,2},AxesLabel->{"x","y"}]

f'[x]

Reduce[{f'[x]==0,-1≤x≤2}]

Max[{f[-1],f[0],f[(8/27)],f[2]}]

Min[{f[-1],f[0],f[(8/27)],f[2]}]

Anm 1: Vi kan även använda metoderna Maximize resp. Minimize här för att få resultatet direkt.

Maximize[{f[x],-1≤x≤2},x]

Minimize[{f[x],-1≤x≤2},x]

Anm 2: Mathematica räknar default med komplexa tal. De komplexa talen antas ha argument i principaldomänen -π<arg(z)≤π. Talet (((-1))^(1/3))=((-1)^(1/3)) definieras enligt:

(((-1))^(1/3))=((((Abs[-1])(e^(i arg(-1)))))^(1/3))=((Abs[-1])^(1/3))((((e^(i π))))^(1/3))=(1^(1/3)) (e^(i π/3))=(e^(i π/3))=(1/2)(1+i (Sqrt[3]))

Observera att lösningen till ekvationen (z^3)=-1 har tre lösningar om man räknar med komplexa tal

Reduce[(z^3)==-1]

ComplexExpand[%]

men bara en lösning am man räknar med reella tal.

Reduce[(z^3)==-1,Reals]

Jämför med det reella talet (Sqrt[1]) som definieras till 1 även om ekvationen (x^2)=1 har två lösningar.

Exempel 2

Bestäm max/min till

f(x)=(x^3)-2x+1, x∈]0,1]

Lösning

Intervallet är inte slutet så max/min existerar inte säkert. Vi börjar med de inre punkterna i intervallet I=]0,1[

f'(x)=3(x^2)-2

f'(x)=0⇔3(x^2)-2=0(Overscript[⇔, x∈I])x=(Sqrt[(2/3)])

f((Sqrt[(2/3)]))=((((Sqrt[(2/3)])))^3)-2(Sqrt[(2/3)])+1=(Sqrt[(2/3)])((2/3)-2)+1=-(4/3)(Sqrt[(2/3)])+1

Nu återstår ändpunkterna x=0 och x=1:

f(1)=(1^3)-2+1=0

x=0 tillhör inte definitionsmängden så värdet ska formellt undersökas med högergränsvärde

(lim_(x->(SuperPlus[0]))) f(x)(Overscript[=, (*)])f(0)=1

(*)  f(x) är uppenbart kontinuerlig här.

Eftersom 0∉(Subscript[D, f]) och (lim_(x->(SuperPlus[0]))) f(x)=1>f(1)>f((Sqrt[(2/3)])) existerar inte max(f). Det minsta värdet blir

min(f(x))=min{-(4/3)(Sqrt[(2/3)])+1,0}=-(4/3)(Sqrt[(2/3)])+1

Mathematica

ClearAll["`*"]

f[x_]:=(x^3)-2x+1

Plot[f[x],{x,0,1},AxesLabel->{"x","y"}]

f'[x]

Reduce[{f'[x]==0,0<x≤1}]

f[1]

Limit[f[x],x->0,Direction->-1]

Min[{f[(Sqrt[(2/3)])],f[1]}]

Anm: Vi kan även använda metoderna Maximize resp. Minimize här för att få resultatet direkt.

Maximize[{f[x],0<x≤1},x]

Minimize[{f[x],0<x≤1},x]

Linjär approximation

Adams (6^th) ed. ch. 4.7
Adams (7^th) ed. ch. 4.4

Teori

Om man är intresserad av hur en funktion beter sig runt en viss punkt x=a kan det i många sammanhang vara önskvärt att förenkla problemet till en linje. Denna linje väljs gå lämpligen till tangenten i punkten x=a. Approximationen är god om (Abs[x-a]) är litet. Den linjära approximationen är

(Subscript[f, 1])(x)=f(a)+f'(a) (x-a)

Observera Om vi går ett steg längre och approximerar f'(x) med dess tangent erhålls

(Subscript[f, 2])(x)=f(a)+(f'(a)+(Subscript[c , 2])f''(a)(x-a)) (x-a)=f(a)+f'(a)(x-a)+(Subscript[c, 2])f''(a)(((x-a))^2)

där (Subscript[c, 2]) väljs så att

(Subscript[f, 2]^(′′))(x)=f''(a)=>2 (Subscript[c, 2])=1⇔(Subscript[c, 2])=(1/2)

(Subscript[f, 2])(x)=f(a)+f'(a)(x-a)+(1/2)f''(a)(((x-a))^2)

efter ytterligare en approximation erhålls

(Subscript[f, 3])(x)=f(a)+f'(a)(x-a)+(1/2)f''(a)(((x-a))^2)+(1/(2×3))Derivative[3][f](a)(((x-a))^3)

Generaliseringen är nu relativt uppenbar:

(Subscript[f, n])(x)=(∑_(i=0)^n)((Derivative[i][f](a))/(i!))(((x-a))^i)

Detta polynom brukar kallas Taylor-polynomet. Man kan visa att n->∞ så konvergerar serien mot f(x) (om den konvergerar).

Exempel 1

En av de vanligaste linjära approximationerna är av rotfunktionen. Vi vill approximera

f(x)=(Sqrt[1+x]), x≈0

Vi väljer alltså a=0.

f'(x)=(1/2)(((1+x))^((1/2)-1))=(1/(2(Sqrt[1+x])))=>f'(0)=(1/2)

Approximationen blir därmed

L(x)=f(0)+f'(0) (x-0)=1+(1/2)(x-0)=1+(1/2)x

I bilden nedan är approximationen L(x) streckad och f(x)=(Sqrt[1+x]) heldragen.

Mathematica

Den linjära approximationen kan erhållas med kommandot Series i kombination med Normal.

ClearAll["`*"]

a=0;
f[x_]:=(Sqrt[1+x])

L[x_]=Normal[Series[f[x],{x,a,1}]]

Det är nu inga problem att få ett polynom av högre gradtal med Taylor-utvecklingen:

f5[x_]=Normal[Series[f[x],{x,a,5}]]

Plot[{f[x],L[x],f5[x]},{x,-1,1},PlotStyle->{Black,Blue,Red}]

Exempel 2

En annan vanlig approximation är av sin(x). Vi vill approximera

f(x)=sin(x), x≈0

Vi väljer alltså a=0.

f'(x)=cos(x)=>f'(0)=1

Approximationen blir därmed

L(x)=f(0)+f'(0) (x-0)=sin(0)+1(x-0)=x

Mathematica

ClearAll["`*"]

f[x_]:=Sin[x]

L[x_]=Normal[Series[f[x],{x,0,1}]]

Normal[Series[f[x],{x,0,10}]]

Exempel 3

Approximera f(x)=ln(1+(x^2)) runt x=1 med Taylorpolynom upptill ordning 4.

Lösning

f(x)=ln(1+(x^2)) =>f(1)=ln(2)

Derivatorna blir:

f'(x)=(((1+(x^2)))^(-1))2x=((2x)/(1+(x^2)))=>f'(1)=1

f''(x)=-(((1+(x^2)))^(-2))(((2x))^2)+(((1+(x^2)))^(-1))2=-((2 ((x^2)-1))/((((x^2)+1))^2))=>f''(1)=0

Derivative[3][f](x)=2(((1+(x^2)))^(-3))2x 2 ((x^2)-1)-(((1+(x^2)))^(-2))4x=(( (4(x^3)-12x))/((((x^2)+1))^3))=>Derivative[3][f](1)=-1

Derivative[4][f](x)=-3(((1+(x^2)))^(-4))2x  (4(x^3)-12x)+(((1+(x^2)))^(-3))(12 (x^2)-12)=-((12 ((x^4)-6 (x^2)+1))/(((1+(x^2)))^4))=>Derivative[4][f](1)=3

Taylor polynomet blir då enligt ().

(Subscript[f, 4])(x)=(∑_(i=0)^4)((Derivative[i][f](1))/(i!))(((x-1))^i)=((f(1))/(0!))+((f'(1))/(1!))(x-1)+((f''(1))/(2!))(((x-1))^2)+((Derivative[3][f](1))/(3!))(((x-1))^3)+(Derivative[4][f]/(4!))(1)(((x-1))^4)

=((ln(2))/1)+(1/1)(x-1)+(0/2)(((x-1))^2)+(((-1))/6)(((x-1))^3)+(3/24)(((x-1))^4)=ln(2)+(x-1)-(1/6)(((x-1))^3)+(1/8)(((x-1))^4)

Mathematica

ClearAll["`*"]

f[x_]:=Log[1+(x^2)]

a=1;

f[n_,x_]:=(∑_(k=0)^n)((Derivative[k][f][a] (((x-a))^k))/(k!))

Table[f[n,x],{n,0,4}]

Plot[
{f[x],f[0,x],f[1,x],f[2,x],f[3,x],f[4,x]},{x,-2,4},
AxesLabel->Automatic,
PlotStyle->{
Directive[Black,Dashed],Red,Orange,Darker[Green],Blue,Purple
},
Epilog->{PointSize[0.01],Point[{a,f[a]}]}
]

Vi kan se att (Subscript[f, 1])(x)=(Subscript[f, 2])(x) eftersom f''(1)=0.

f[1,x]

f[2,x]

Notera att (Subscript[f, 4])(x) är den approximation som följer kurvan y=f(x) längst.