函数,对分法求解目标函数最优解函数MATLAB实现"/>
matlab 解目标函数,对分法求解目标函数最优解函数MATLAB实现
%%对分法求解目标函数最优解函数
function [t,y]=equation_extremum(x,~,a,b,epsional)
%%=======================================
%函数默认参数:
%x为目标函数,输入字符串型,默认最优解求其最小值
%a,b为其初始区间,默认闭区间,a
%对初始区间的要求:初始区间是单谷区间,函数求极小值%则a处的导数<=0,b处的导数>=0;
%%=======================================
syms t;
x_inline=inline(sym(x));
func_diff=diff(sym(x));
func_diff_inline=inline(func_diff);
t=b;
high_value=func_diff_inline(t);
t=a;
low_value=func_diff_inline(t);
ifhigh_value*low_value>0
t='本函数不可解';
y='给定初始区间非单谷区间';
else if high_value*low_value==0
ifhigh_value==0
t=b;
y=x_inline(t);
else t=a;
y=x_inline(t);
end
else
while abs(high_value-low_value)>=epsional;
c=1/2*(b+a);
t=c;
middle_value=func_diff_inline(t);
ifmiddle_value>0
high_value=middle_value;
b=c;
else if middle_value<0
low_value=middle_value;
a=c;
else if middle_value==0
break;
end
end
end
end
更多推荐
matlab 解目标函数,对分法求解目标函数最优解函数MATLAB实现
发布评论