用MATLAB解多元非线性方程组,求大神

方程组为:y1=e^(8.864-267.893/x1)y2=e^(11.271-1227.294/x2)y3=e^(13.223-12277.294/x3)y4=e^(... 方程组为:y1=e^(8.864-267.893/x1)
y2=e^(11.271-1227.294/x2)
y3=e^(13.223-12277.294/x3)
y4=e^(11.925-3632.467/x4)
x1+x2+x3+x4等于一个正数,假设是10000,求大神给出x1、x2、x3、x4分别是多少使得y1+y2+y3+y4值最大,或者说求出在一个固定数的情况下它们之间的最佳分配比例是多少,请给出详细过程,谢谢。
展开
匿名用户
2014-03-23
展开全部

分析

这是一个约束优化问题,可用fmincon求解。

 

参考代码

f = @(x)exp(8.864-267.893/abs(x(1)))+exp(11.271-1227.294/x(2))+exp(13.223-12277.294/x(3))+exp(11.925-3632.467/x(4));
s = 10000;
x = fmincon(@(x)-f(x),ones(1,4)*s/4,[],[],ones(1,4),s,zeros(1,4),ones(1,4)*inf,[]);
x = num2str(x)
f = f(x)

 

得到的最优解为:

x =

-3.3140659e-018      3088.6297 1.1046886e-018      6911.3703


f =

  1.4204e+005

 

说明

1、最优解的x1、x3在浮点数误差意义上为0;

2、由于x1的结果是很小的负值,导致目标函数的y1为无穷大,所以该项的x1应加绝对值符号(x1-x4都应该是正数吧?不然任取哪一个为一个很小的正数,都会导致目标函数为无穷大)。

更多追问追答
追问
对,x1、x2、x3、x4全是正数,那如果x1+x2+x3+x4=20000,那么使得y1+y2+y3+y4和最大(最大值是多少)的x1 x2 x3 x4分别是多少呢,谢谢。
追答
程序都给你了,自己算一下不就知道了?
x =
3.35970028e-018 1882.04839 14208.5627 3909.38894
f =
37.0103
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式