Приближаване на производна на функция

1 зад. Приближете производната на Exp[x] в интервала [0,10], като използвате формула с разлика напред, формула с разлика назад и формула с централна разлика. Да се начертаят на една графика производната и нейните приближения при Δt=0.5, Δt=0.001, Δt=10^(-15)

Формула с разлика напред

f[t_]=Exp[t];
DerF[t_]=D[f[t],t];
ApprDerF1[t_,Δt_]:=(f[t+Δt]-f[t])/Δt
plot05 = Plot[{DerF[t],ApprDerF1[t,0.5]},{t,0,10}];
plot0001 = Plot[{DerF[t],ApprDerF1[t,0.001]},{t,0,10}];
plot1015 = Plot[{DerF[t],ApprDerF1[t,10^(-15)]},{t,0,10}];
GraphicsRow[{plot05, plot0001, plot1015}]

Формула с разлика назад

ApprDerF2[t_,Δt_]:=(f[t]-f[t-Δt])/Δt
plot05 = Plot[{DerF[t],ApprDerF2[t,0.5]},{t,0,10}];
plot0001 = Plot[{DerF[t],ApprDerF2[t,0.001]},{t,0,10}];
plot1015 = Plot[{DerF[t],ApprDerF2[t,10^(-15)]},{t,0,10}];
GraphicsRow[{plot05, plot0001, plot1015}]

Формула с централна разлика

ApprDerF3[t_,Δt_]:=(f[t+Δt]-f[t-Δt])/(2Δt)
plot05 = Plot[{DerF[t],ApprDerF3[t,0.5]},{t,0,10}];
plot0001 = Plot[{DerF[t],ApprDerF3[t,0.001]},{t,0,10}];
plot1015 = Plot[{DerF[t],ApprDerF3[t,10^(-15)]},{t,0,10}];
GraphicsRow[{plot05, plot0001, plot1015}]

Грешки

2 зад. Пресметнете  абсолютната и относителната грешка при приближаването на производната на (e^x) с

формула с разлика напред

plotAbs[Δt_] := Plot[DerF[t]-ApprDerF1[t,Δt],{t,0,10}];
plotRel[Δt_] := Plot[(DerF[t]-ApprDerF1[t,Δt])/DerF[t],{t,0,10}];
GraphicsRow[{plotAbs[0.1], plotAbs[0.01], plotAbs[0.001]}] (*Ако намалим Δt  10 пъти, то грешката изглежда да намалява около 10 пъти *)
GraphicsRow[{plotRel[0.1], plotRel[0.01], plotRel[0.001]}] (*Ако намалим Δt  10 пъти, то грешката изглежда да намалява около 10 пъти *)

формула с разлика назад

plotAbs[Δt_] := Plot[DerF[t]-ApprDerF2[t,Δt],{t,0,10}];
plotRel[Δt_] := Plot[(DerF[t]-ApprDerF2[t,Δt])/DerF[t],{t,0,10}];
GraphicsRow[{plotAbs[0.1], plotAbs[0.01], plotAbs[0.001]}] (*Ако намалим Δt  10 пъти, то грешката изглежда да намалява около 10 пъти *)
GraphicsRow[{plotRel[0.1], plotRel[0.01], plotRel[0.001]}] (*Ако намалим Δt  10 пъти, то грешката изглежда да намалява около 10 пъти *)

формула с централна разлика

plotAbs[Δt_] := Plot[DerF[t]-ApprDerF3[t,Δt],{t,0,10}];
plotRel[Δt_] := Plot[(DerF[t]-ApprDerF3[t,Δt])/DerF[t],{t,0,10}];
GraphicsRow[{plotAbs[0.1], plotAbs[0.01], plotAbs[0.001]}] (*Ако намалим Δt  10 пъти, то грешката изглежда да намалява около 100 пъти *)
GraphicsRow[{plotRel[0.1], plotRel[0.01], plotRel[0.001]}] (*Ако намалим Δt  10 пъти, то грешката изглежда да намалява около 100 пъти *)

Ред на Тейлър:

3 зад. Приближете функцията Sin[x]Cos[x]x в интервала [0,10], като използвате полином на Тейлър от степен 2, 3, 4 около (Subscript[x, 0])=2, (Subscript[x, 0])=5, (Subscript[x, 0])=7.5. Начертайте функцията и приближенията на една графика като използвате.

x0=5;
f[x_]:=x Sin[x]Cos[x]
p2[x_] := f[x0]+f'[x0](x-x0)+f''[x0]((((x-x0))^2)/(2!))
p3[x_] := p2[x]+f'''[x0]((((x-x0))^3)/(3!))
p4[x_] := p3[x]+f''''[x0]((((x-x0))^4)/(4!))
Plot[{f[x],p2[x],p3[x],p4[x]},{x,0,10}]

Допълнително : Коя е минималната степен на полином на Тейлър, при която абсолютна грешка при приближаването на x Sin[x] Cos[x] във всяка точка от интервала [0, 10] е по - малка от 0.1?

Ред на Тейлър:

Вариант 1

PlotDer[f_,start_, end_,step_,order_]:=
(
minF = Min[Table[f[x],{x,start,end, step}]]-1;
maxF = Max[Table[f[x],{x,start,end, step}]]+1;
Manipulate[
	taylorSeries[x0_,x_] = f[x0]+Sum[ReplaceAll[D[f[y],{y,k}],y->x0]*(x-x0)^k/k!,{k,1,order}];
	Show[Plot[{f[x],taylorSeries [x0,x]},{x,start,end}, PlotRange->{{start,end},{minF,maxF}}],ListPlot[{{x0,f[x0]}},PlotStyle->Orange]],
	{x0,start,end, step}]
)

p[x_]:=Sin[x]*Cos[x]*x
PlotDer[p,0,10,0.1,20]

Вариант 2

PlotDer[f_,start_, end_,step_]:=
(
minF = Min[Table[f[x],{x,start,end, step}]]-1;
maxF = Max[Table[f[x],{x,start,end, step}]]+1;
Manipulate[
	taylorSeries[x0_,x_] = f[x0]+Sum[ReplaceAll[D[f[y],{y,k}],y->x0]*(x-x0)^k/k!,{k,1,order}];
	Show[Plot[{f[x],taylorSeries [x0,x]},{x,start,end}, PlotRange->{{start,end},{minF,maxF}}],ListPlot[{{x0,f[x0]}},PlotStyle->Orange]],
	{x0,start,end, step},
	{order,1,20,1}]
)

p[x_]:=Sin[x]*Cos[x]*x
PlotDer[p,0,10,0.1]

4 зад. Намерете оценка за абсолютната грешка на апроксимациите в задача 2. Сравнете с получените резултати.

Clear[f];
fd1[x_,h_] = (f[x+h] - f[x])/h;
fd2[x_,h_] = (f[x] - f[x-h])/h;
fd3[x_,h_] = (f[x+h]-f[x-h])/(2*h);
Taylor[f_] := Series[f[x,h],{h,0,2}]
f'[x] - Taylor[fd1] 
f'[x] -  Taylor[fd2]
f'[x] -  Taylor[fd3]