用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001求高手帮忙!急!急!急!
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/28 11:54:35
![用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001求高手帮忙!急!急!急!](/uploads/image/z/6102104-32-4.jpg?t=%E7%94%A8Matlab%E5%AE%9E%E7%8E%B0%E9%BB%84%E9%87%91%E5%88%86%E5%89%B2%E6%B3%95%2C%E4%BC%98%E5%8C%96%E7%9B%AE%E6%A0%87%E5%87%BD%E6%95%B0minf%28x%29%3D2x%5E2-x-1%2C%E5%88%9D%E5%A7%8B%E5%8C%BA%E9%97%B4%E4%B8%BA%5B-1%2C1%5D%2Ce%3D0.001%E6%B1%82%E9%AB%98%E6%89%8B%E5%B8%AE%E5%BF%99%21%E6%80%A5%21%E6%80%A5%21%E6%80%A5%21)
用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001求高手帮忙!急!急!急!
用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001
求高手帮忙!急!急!急!
用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001求高手帮忙!急!急!急!
首先在matlab新建文件保存为goldmin.m
function[x,y] = goldmin(f,xa,xb,s)
% 黄金分割法求解函数最小值
% 输入
% f 待优化函数
% a,b 区间
% s 精度
% 输出
% x 最优解
% y 最优解对应的最小值
%%
g = (sqrt(5)-1)/2; % 黄金分割比,0.618
a = xa;
b = xb;
x2 = a + g*(b-a);
x1 = a + b - x2;
y1 = f(x1);
y2 = f(x2);
while abs(b-a) > s
if y1=y2
a = x1;
x1 = x2;
x2 = a + b - x1;
end
y1=f(x1);
y2 = f(x2);
end
x = x1;
y = f(x);
然后在命令区输入
>> f = @(x) 2*x^2-x-1;
>> [x,y]=goldmin(f,-1,1,0.001)
x =
0.2497
y =
-1.1250
>>
即当x=0.2497时取最小值-1.125
窗口命令 gold_mean(-1,1,0.001) ans = .2499143985 代码见附件 文件1,gold_fun.m 目标函数 文件2,gold_mean.m 黄金分割法函数