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

提问者的评价:谢谢啊!!

问题:在线,急需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 提问者的评价:谢谢啊!!
经验分享 程序员 微信小程序 职场和发展