📄 使用极限微分求解导数(微分).m
字号:
%__________________________________________________________________________
%说明:使用极限的微分求解。
%格式如下:f'(x)=[f(x+10^(-k)*h)-f(x-10^(-k)*h)]/2*(10(-k)h
%允许误差为|Dn+1-Dn|>=|Dn-Dn-1|或者|Dn-Dn-1|<允许误差时候停止计算后一个不等式求最佳近似值f'(x)=Dn
%__________________________________________________________________________
%调用格式:f为输入函数,X为输入导数在此点的值,toler为允许误差
%l的中间列为输出结果
function [l,n]=difflim(f,x,toler)
max1=15;
h=1;
H(1)=h;
D(1)=(feval(f,x+h)-feval(f,x-h))/(2*h);
E(1)=0;
R(1)=0;
for n=1:2
h=h/10;
H(n+1)=h;
D(n+1)=(feval(f,x+h)-feval(f,x-h))/(2*h);
E(n+1)=abs(D(n+1)-D(n));
R(n+1)=2*E(n+1)*(abs(D(n+1))+abs(D(n))+eps);
end
n=2;
while(E(n)>E(n+1)&(R(n)>toler))&n<max1
h=h/10;
H(n+2)=h;
D(n+2)=(feval(f,x+h)-feval(f,x-h))/(2*h);
E(n+2)=abs(D(n+2)-D(n+1));
R(n+2)=2*E(n+2)*(abs(D(n+2))+abs(D(n+1))+eps);
n=n+1;
end
n=length(D)-1;
disp(' l的第一列是表示步长')
disp(' l的第二列是表示近似结果')
disp(' l的第三列是表示误差项')
l=[H' D' E'];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -