24小时热门版块排行榜    

查看: 2554  |  回复: 18
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

青沙山

木虫 (小有名气)

[求助] Mathematica中求解二元高次方程组 已有1人参与

想用Mathematica解个二元高次方程组,可是一直解不出来(总是卡死),请高手指点!
同样的,若遇到多元高次方程组,类似本题,该如何求解?
Mathematica中求解二元高次方程组
我只知道根据理论上的a,b解代入后求c应该为0.5,可验证下.

代码如下:
2 b^2 + b^4 + 4 a^3 (3 + b) + 6 a^2 (-1 + 2 b + b^2 - 4 c) +
   4 a (-b^2 + b^3 - 6 b c + 3 c (1 + c)) ==
  4 b^3 + 6 c^2 + 4 b (-3 + c) c^2;
(*用此等式解出c的实数解,其中0<a<c<a+b<1*)
((-2 + 4 a + 4 b) (-a + c)^3 -
   b (a - c) (3 a^3 + 2 b - 4 b^2 + b^3 + a^2 (6 b - c) - c^3 +
      a (-4 b + 4 b^2 - c^2)))/b;
(*然后将c代入上述表达式中得到表达式【1】*)
-(3 + 3 a^4 + 6 a^3 (-2 + b) - 8 b + 6 b^2 - b^3 +
    2 a^2 (9 - 11 b + 2 b^2) + a (-12 + 24 b - 12 b^2 + b^3));
-a (3 a^3 + 6 a^2 b + 4 a (-1 + b) b + b (2 - 4 b + b^2));
(*表达式【1】和上面两个表达式相等,得到两个方程,求a,b的近似值(小数点后保留4位)使得表达式【1】值<0*)
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zho123855

新虫 (正式写手)

【答案】应助回帖

引用回帖:
7楼: Originally posted by zho123855 at 2016-01-11 11:58:41
早上过来用MATLAB尝试了一下,五分钟搞定,解出来a=0.2232,b=0.5537,c=0.5
不过这个方程组确实是多解的,需要一些小技巧来排除不需要的解。

对我而言,绝大多数时候会优先考虑MATLAB,Mathematica确实是优秀的数学软件,尤其是在符号推导方面,但做数值计算,尤其是大规模数值计算,目前看不出相对于MATLAB的优势。
具体到你这个问题,既然你知道C的取值,不妨把C的值代入后面的三个式子,两两相等得到两个方程,然后求解就可以得到想要的结果了。
MATLAB在求解非线性方程组时需要提供初始值,因此迭代得很快。
供你参考
9楼2016-01-11 12:13:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 19 个回答

zho123855

新虫 (正式写手)

这个应该没太大难度吧,把代码贴出来看看

发自小木虫Android客户端
2楼2016-01-10 19:54:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

青沙山

木虫 (小有名气)

引用回帖:
2楼: Originally posted by zho123855 at 2016-01-10 19:54:17
这个应该没太大难度吧,把代码贴出来看看

代码已经有了,图片下面那个不就是,谢谢啦!
3楼2016-01-10 20:14:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zho123855

新虫 (正式写手)

懂你的意思了。
你需要首先求解一个符号方程得到C的解析表达是吧
这个就有难度了,一方面计算量确实很大,另一方面,C一般不会只有一个解,你这个思路可能不大行得通,换个思路?
4楼2016-01-10 20:49:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见