如何用求解和无根的结果求解联立方程

时间:2016-05-14 17:39:39

标签: matlab equation-solving

以下是代码:

syms G1 G2 G3 M1 M2 M3 P1 P2 P3 D1 D2 D3
S = solve(0 == 0.9 * (20 - G1) - 0.012 * D3 * G1, ...
      0 == 0.9 * (20 - G2) - 0.012 * D1 * G2, ...
      0 == 0.9 * (20 - G3) - 0.012 * D2 * G3, ...
      0 == -0.0033 * M1 + 0.002 * G1, ...
      0 == -0.0033 * M2 + 0.002 * G2, ...
      0 == -0.0033 * M3 + 0.002 * G3, ...
      0 == 0.1 * M1 - 0.0033 * P1 + 2 * 0.5 * D1 - 2 * 0.025 * (P1 ^ 2), ...
      0 == 0.1 * M2 - 0.0033 * P2 + 2 * 0.5 * D2 - 2 * 0.025 * (P2 ^ 2), ...
      0 == 0.1 * M3 - 0.0033 * P3 + 2 * 0.5 * D3 - 2 * 0.025 * (P3 ^ 2), ...
      0 == -0.5 * D1 + 0.025 * (P1 ^ 2) + 0.9 * (20 - G2) - 0.012 * D1 * G2, ...
      0 == -0.5 * D2 + 0.025 * (P2 ^ 2) + 0.9 * (20 - G3) - 0.012 * D2 * G3, ...
      0 == -0.5 * D3 + 0.025 * (P3 ^ 2) + 0.9 * (20 - G1) - 0.012 * D3 * G1)

问题是我需要真正的解决方案,但我有根源的答​​案。我怎样才能得到真正的答案?

1 个答案:

答案 0 :(得分:0)

假设“真实解决方案”是指数值而不是精确的多项式形式,根据您打算如何使用结果,有two options

  1. double:这将评估RootOf表达式,假设没有自由参数,并返回类double的数字输出。虽然输出现在仅限于双精度,但如果您的目标是在计算中使用根并关注性能,那么这是最快的选择。

  2. vpa:这将评估RootOf表达式,假设没有自由参数,并返回类sym的符号输出。虽然现在可以通过预先调用digits来估计输出的近似精度,但由于其符号性质,后续计算可能会产生大量的计算开销。