Mathematica FindRoot求解方程

时间:2014-12-14 13:03:51

标签: wolfram-mathematica

我有一个任务是使用FindRoot解决方程式系统:

a*x+b*y^2-c*x^2=a-ba*x^2+b*y^2+b*x-cy=b+c,其中a = 10,b = 10,c = 6;

我非常(!)是Mathematica的新手,有一天能够了解它。

非常感谢任何关于如何解决这个等式的评论!

谢谢!

2 个答案:

答案 0 :(得分:2)

这开始在x = 0y = 0

搜索root
eq = {a*x + b*y^2 - c*x^2 == a - b, a*x^2 + b*y^2 + b*x - c*y == b + c}
param = {a -> 10, b -> 10, c -> 6}
result = FindRoot[eq /. param, {x, 0}, {y, 0}]

这只能为您提供两个Real解决方案中的一个。 Solve会给你们两个(甚至一些带有复数的解决方案)。测试它:

eq /. param /. result

这会返回(True, True),因此您知道找到了正确的根。

要以图形方式查找解决方案,请使用ContourPlot

ContourPlot[Evaluate[eq /. param], {x, -5, 5}, {y, -5, 5}]

答案 1 :(得分:1)

以下是Solve / NSolve的版本

NSolve[{a*x + b*y^2 - c*x^2 == a - b, 
        a*x^2 + b*y^2 + b*x - c*y == b + c} /.  {a -> 10, b -> 10, c -> 6},
       {x, y}]

它将提供4种解决方案。如果您使用Solve而不是NSolve,那么每个解决方案的每个组件都会有一个(大)封闭形式。

如果您需要更多数字用于解决方案,请在NSolve命令的末尾添加选项WorkingPrecision->30(或任何其他数字的数字。这些是二次方,它们可以根据任何精度计算)。