用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值最大,或者说求出在一个固定数的情况下它们之间的最佳分配比例是多少,请给出详细过程,谢谢。 展开
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询