TSC999 发表于 2018-7-19 23:46:39

用 mathematica 求多元函数的极值,为何有的不成功

(1) 当 \( a, b, c\) 均非负但不全为零时,求\( \displaystyle \frac{a}{2a+b+c}+\frac{b}{2b+a+c}+\frac{c}{2c+a+b} \) 的最小值。

(2) 当 \( a, b, c\) 均非负但不全为零时,求\( \displaystyle \frac{a}{2a+b+c}+\frac{b}{2b+a+c}+\frac{c}{2c+a+b}-\frac{ab+bc+ca}{a^2+b^2+c^2} \) 的最小值。

用 mathematica 做,对于 (1):
Minimize[{a/(2 a + b + c) + b/(2 b + a + c) + c/(2 c + b + a), a >= 0,
   b >= 0, c > 0}, {a, b, c}]
可得到最小值是 \( \frac{1}{2} \)。

但是用同样方法做 (2),就出不了结果了。这是因为软件还不够强大?有没有改进的方法,让软件能够胜任?

mathematica 发表于 2018-7-20 17:12:14

你为什么不能用数值解呢?
数值解精确到一千位,然后用rootapproximate函数反推精确解

zeroieme 发表于 2018-7-20 18:26:10

既然是对称形式,可以消对称减少一个变量
a/(2 a+b+c)+b/(2 b+a+c)+c/(2 c+a+b)-(a b+b c+c a)/(a^2+b^2+c^2)/.{a->u c,b->v c}//Factor/@#&//Minimize[{#,u>=0,v>=0},{u,v}]&




菜鸟既看不懂一行mathematica代码也只能用数值解

zeroieme 发表于 2018-7-20 18:31:08

a/(2 a+b+c)+b/(2 b+a+c)+c/(2 c+a+b)-(a b+b c+c a)/(a^2+b^2+c^2)/.{a->u c,b->v c}//Factor/@#&//Minimize[{#,u>=0,v>=0},{u,v}]&//{#[],{a->u c,b->v c}/.#[]}&
这样能还原中间变量

TSC999 发表于 2018-7-22 09:11:01

zeroieme 发表于 2018-7-20 18:26
既然是对称形式,可以消对称减少一个变量




谢谢! 菜鸟还须慢慢发呆一阵子。

mathematica 发表于 2018-7-23 13:07:53

TSC999 发表于 2018-7-22 09:11
谢谢! 菜鸟还须慢慢发呆一阵子。

Clear["Global`*"];(*Clear all variables*)
NMinimize[{a/(2*a+b+c)+b/(2*b+a+c)+c/(2*c+b+a)-(a*b+b*c+c*a)/(a^2+b^2+c^2),a>=0,b>=0,c>=0},{a,b,c},
AccuracyGoal->800,PrecisionGoal->800,WorkingPrecision->1200]

最小值-0.25,但是点似乎不唯一,a=b=c的时候取到

mathematica 发表于 2018-7-23 13:13:36

Clear["Global`*"];(*Clear all variables*)
b=a;
c=a;
ff=a/(2*a+b+c)+b/(2*b+a+c)+c/(2*c+b+a)-(a*b+b*c+c*a)/(a^2+b^2+c^2)

这下你发现ff=-1/4
有无穷多组解答,
所以可以用数值解先测试一下结果,最后才追求符号解

zeroieme 发表于 2018-7-23 16:29:11

本帖最后由 zeroieme 于 2018-7-23 16:30 编辑

TSC999 发表于 2018-7-22 09:11
谢谢! 菜鸟还须慢慢发呆一阵子。

说错了,可约去一变量的理由应当是每个分式的分子分母是齐次多项式,而不是对称形式。
页: [1]
查看完整版本: 用 mathematica 求多元函数的极值,为何有的不成功