MATLAB 求目标函数最优解试编制程序实现黄金分割法,并求目标函数F(x) = x2 −4x+4的最优解.给定的初始区间为[−10 10],收敛精度ε = 0.001 .希望帮忙做出程序代码
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/27 04:26:03
MATLAB 求目标函数最优解试编制程序实现黄金分割法,并求目标函数F(x) = x2 −4x+4的最优解.给定的初始区间为[−10 10],收敛精度ε = 0.001 .希望帮忙做出程序代码
MATLAB 求目标函数最优解
试编制程序实现黄金分割法,并求目标函数F(x) = x2 −4x+4的最优解.给
定的初始区间为[−10 10],收敛精度ε = 0.001 .
希望帮忙做出程序代码
MATLAB 求目标函数最优解试编制程序实现黄金分割法,并求目标函数F(x) = x2 −4x+4的最优解.给定的初始区间为[−10 10],收敛精度ε = 0.001 .希望帮忙做出程序代码
function [p,u]=nlp618(f_name,a,b,e)
%//////////////////////////////////////////////////
%输入f_name为函数名,[a,b]初始区间,e为最小区间要求
%输出p为所有的计算情况,u为最优解,表示x,step为计算步骤
%//////////////////////////////////////////////////
a(1)=a;
b(1)=b;
L=e;
t(1)=a(1)+0.382*(b(1)-a(1));
u(1)=a(1)+0.618*(b(1)-a(1));
k=1;
m(1)=feval(f_name,t(1));
n(1)=feval(f_name,u(1));
while(b(k)-a(k)>L)
if(m(k)>n(k))
a(k+1)=t(k);
b(k+1)=b(k);
t(k+1)=u(k);
u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));
else
a(k+1)=a(k);
b(k+1)=u(k);
u(k+1)=t(k);
t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));
end
m(k+1)=feval(f_name,t(k+1));
n(k+1)=feval(f_name,u(k+1));
ans=feval(f_name,t(k+1));
k=k+1;
end
t(k)=0;
u(k)=0;
m(k)=0;
n(k)=0;
p=[a',b',t',u',m',n'];
ans=(a(k)+b(k))/2;
step=k-1
%函数
function y=f1(x)
y=x^2-4*x+4;
//////////////////////////////////////////////////////////////////////
运行结果
>> [p,u]=nlp618('f1',-10,10,0.001)
step =
21
p =
-10 10 -2.36 2.36 19.01 0.1296
-2.36 10 2.36 5.2785 0.1296 10.748
-2.36 5.2785 0.5579 2.36 2.0797 0.1296
0.5579 5.2785 2.36 3.4752 0.1296 2.1763
0.5579 3.4752 1.6723 2.36 0.10738 0.1296
0.5579 2.36 1.2463 1.6723 0.56806 0.10738
1.2463 2.36 1.6723 1.9346 0.10738 0.0042814
1.6723 2.36 1.9346 2.0973 0.0042814 0.0094681
1.6723 2.0973 1.8347 1.9346 0.027337 0.0042814
1.8347 2.0973 1.9346 1.997 0.0042814 9.1529e-006
1.9346 2.0973 1.997 2.0351 9.1529e-006 0.0012347
1.9346 2.0351 1.973 1.997 0.00072978 9.1529e-006
1.973 2.0351 1.997 2.0114 9.1529e-006 0.00012988
1.973 2.0114 1.9877 1.997 0.00015231 9.1529e-006
1.9877 2.0114 1.997 2.0023 9.1529e-006 5.4217e-006
1.997 2.0114 2.0023 2.0059 5.4217e-006 3.4659e-005
1.997 2.0059 2.0004 2.0023 1.4382e-007 5.4217e-006
1.997 2.0023 1.999 2.0004 9.6081e-007 1.4382e-007
1.999 2.0023 2.0004 2.0011 1.4382e-007 1.1333e-006
1.999 2.0011 1.9998 2.0004 3.9646e-008 1.4382e-007
1.999 2.0004 1.9995 1.9998 2.1243e-007 3.9646e-008
1.9995 2.0004 0 0 0 0
u =
2
最优解在x=2
f(x)=0