通用的黄金分割法
function [A,B,x,Y]=tongyong(a, b,degree,f,X)
%{
黄金分割法确定区间解单峰函数值
[a,b]是初始区间长度
degree 是精度
f 是要求的函数表达式
X 表示 f 中含有的变量符号
返回值中[A,B]表 示最后确定的区间
x 是最终的最优解
Y 表示最后求的函数值
例:
syms x
f=x^2-2*x+1
X=[x];
degree=0.08;
%}
while (b-a)>=degree
w=b-a;
a1=((3-sqrt(5))/2)*(b-a)+a; %取端点值
y1=subs(f,X,a1);
b1=((sqrt(5)-1)/2)*(b-a)+a;
y2=subs(f,X,b1);
if y1>y2 %判断大小,决定端点去留
a=a1;
end
if y1<y2
b=b1;
end
if y1==y2
a=a1;
b=b1;
end
end
x=(a+b)/2;
A=a;
B=b;
Y=double(subs(f,X,x));
end
评论0