急需matlab求函数最大值小弟刚学matlab,需求 f = (200+5*x)*(0.65-x*0.01)-x*0.45; x>0的最大值
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/23 20:42:37
急需matlab求函数最大值小弟刚学matlab,需求 f = (200+5*x)*(0.65-x*0.01)-x*0.45; x>0的最大值
急需matlab求函数最大值
小弟刚学matlab,需求 f = (200+5*x)*(0.65-x*0.01)-x*0.45; x>0的最大值
急需matlab求函数最大值小弟刚学matlab,需求 f = (200+5*x)*(0.65-x*0.01)-x*0.45; x>0的最大值
楼上的方法也行,但不是很通用,需要确定搜索范围,而我们一般也不知道极值点在哪个范围,因此有一定的缺陷.楼上的方法偏向于数值迭代计算,工程上使用较多,特别适于没有解析解的情况.
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)))])
else
disp(['函数在' num2str(h(i)) '处二阶导数也为0,故在该点处函数可能有极大值、极小值或无极值'])%%%详情见高数课本
end
end
>> f = @(x)-((200+5*x).*(0.65-x*0.01)-x*0.45);
>> [X,FVAL,EXITFLAG] = fminbnd(@(x)f(x),0,100)
X =
8.0000
FVAL =
-133.2000
EXITFLAG =
1
x=0:0.01:200;
f = (200+5.*x).*(0.65-x.*0.01)-x*0.45;
plot(x,f)
max(f)
求出f最大值133.2
建议到数学中国的matlab论坛找找里面的代码!!看有你需要的吗