学习MATLAB请关注这里:MATLAB实例系列教程
问题:在线,急需matlab求函数最大值_
问题描述:小弟刚学matlab,很多不会。需求 f = (200+5*x)*(0.65-
x*0.01)-x*0.45; x;0的最大值一定要用matlab哦,步骤详细点哦,谢
谢啦!!
答案1:: 楼上的方法也行,但不是很通用,需要确定搜索范围,而
我们一般也不知道极值点在哪个范围,因此有一定的缺陷。楼上的方
法偏向于数值迭代计算,工程上使用较多,特别适于没有解析解的情
况。
syms x
f=(200+5*x)*(0.65-x*0.01)-x*0.45;
s=diff(f);%一阶导数
s2=diff(f,2);%二阶导数
h=double(solve(s));%一阶导数为零的点可能就是极值点,注意是可
能,详情请见高数课本
for i=1:length(h)
if subs(s2,x,h(i))<0
disp(['函数在' num2str(h(i)) '处取得极大值,极大值为'
num2str(subs(f,x,h(i)))])
elseif subs(s2,x,h(i));0
disp(['函数在' num2str(h(i)) '处取得极小值,极小值为'
num2str(subs(f,x,h(i)))])
else
disp(['函数在' num2str(h(i)) '处二阶导数也为0,故在该
点处函数可能有极大值、极小值或无极值'])%%%详情见高数课本
end
end
提问者的评价:谢谢啊!!