📄 spoly3.m
字号:
% 三次逼近法求解函数的极小值点
%其中f()表示所求函数表达式,df()表示所求函数的导数表达式
%f和df()是由外部的M-函数提供.
x0=0; %初始点
h=1; %步长
e=0.0005; %精度要求
f0=df(x0);
x1=x0;
x2=x0;
while(df(x1)*df(x2)>0) %寻找解区间
if(f0<0)
x1=x2;
x2=x1+h;
else
x1=x2;
x2=x1-h;
end
end
for i=1:300
y1=f(x1);
y2=f(x2);
dy1=df(x1);
dy2=df(x2);
z=3*(y1-y2)/(x2-x1)+dy1+dy2;
s=sqrt(z^2-dy1*dy2);
if x1<x2
w=s;
else
w=-s;
end
u=(dy2+w-z)/(dy2-dy1+2*w);
if u<0
xe=x2;
elseif u<=1
xe=x2-u*(x2-x1);
else
xe=x1;
end
dye=df(xe);
if abs(dye)<e
break;
else
if dye*dy1<0
x2=xe;
else
x1=xe;
end
end
end
i
xe
dye
f(xe)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -