如何用matlab求函数最优解

我要求函数在最小值下的x解怎么办啊min100000/x+333xx在[1,100]之间的整数。求大神用matlab告知... 我要求函数在最小值下的x解怎么办啊
min 100000/x+333x
x在[1,100]之间的整数。求大神用matlab告知
展开
 我来答
匿名用户
2014-04-08
展开全部

如果求函数在区间内的最小值,可以用fminbnd

但如果限定x是整数,可以直接求出所有点的函数值来,然后用min来求。

 

参考代码:

f=@(x)100000./x+333*x;
x0=fminbnd(@(x)100000/x+333*x,1,100)
ezplot(f,[1 100])
hold on;
plot(x0,f(x0),'ro')
x=1:100;
y=f(x);
[ymin,inx]=min(y);
plot(x(inx),ymin,'ms')
axis auto
xlim([15 20])

 

追问
百度就只能选一个最佳答案,但你的代码也成功了,谢谢你!
追答
的确只能选一个,但选哪个也应该看看回答的质量吧?
算了,不说了。
Sievers分析仪
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
百度网友3588a6a0dc
推荐于2017-09-11 · TA获得超过2.5万个赞
知道大有可为答主
回答量:5218
采纳率:86%
帮助的人:335万
展开全部
function f=myfun(x)
f=x(1)+x(2)+81;
end %%函数,其中x=x(1)y=x(2)

function [c,ceq]=mycon(x)
c(1)=100000-x(1)*x(2);
c(2)=1-x(1);
c(3)=1-x(2);
ceq=[];
end %%条件

clc,clear all
x0=[400 ;400];
[x,fval]=fmincon(@myfun,x0,[],[],[],[],[],[],@mycon)

x =

316.3406
316.1150 %即x=y等于这个数时最小

fval =

713.4556 %最小值为这个值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友565924f
推荐于2017-09-27 · TA获得超过144个赞
知道答主
回答量:34
采纳率:0%
帮助的人:61.9万
展开全部
for i=1:100 %% x在[1,100]
x=i;
f(i)=100000/x+333*x;
end
x=find(f==min(f)) %%计算出f在取得最小值下,x的值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式