如何解决在mathematica中给出两个等价多项式的未知数

时间:2011-02-06 06:28:44

标签: wolfram-mathematica

例如,我有以下多项式等同,我需要分别确定未知数c1,c2,c3。如何在mma中自动执行此操作,尤其是涉及多个术语时?

x+2*x^3+4*x^5==(c1+c2)*(x+2*c2*x^3)+(4-c1)*c3*x^5

非常感谢。

编辑:理想情况下,我想将条款的左右系数等同于x中的相等指数。然后解决这个方程组。

3 个答案:

答案 0 :(得分:4)

如果对所有x都必须如此,则可以使用SolveAlways(未经测试)

SolveAlways[x+2*x^3+4*x^5==(c1+c2)*(x+2*c2*x^3)+(4-c1)*c3*x^5, x]

答案 1 :(得分:1)

尝试:

p1 = x + 2*x^3 + 4*x^5;
p2 = (c1 + c2)*(x + 2*c2*x^3) + (4 - c1)*c3*x^5;

Solve[CoefficientList[p2, x] == CoefficientList[p1, x], {c1, c2, c3}]  

停止

 {{c1 -> 0, c2 -> 1, c3 -> 1}}

答案 2 :(得分:1)

即使在更复杂的情况下,这也应该做你想要的。

eq = x + 2*x^3 + 4*x^5 == (c1 + c2)*(x + 2*c2*x^3) + (4 - c1)*c3*x^5;
list = CoefficientList[eq /. Equal[k__, l__] -> Plus[k, -l], x];
vars = Variables@list;
Solve[list == Table[0, {i, First@Dimensions@list}], vars]

Out[1] := {{c1 -> 0, c2 -> 1, c3 -> 1}}