我试着用SymPy来解一个非线性方程组,这是我以前从来没有做过的,但是我不能让它工作
以下是我尝试过的:
from sympy import *
a, b, c, d, e, f, x, y, z, g0, g1, g2 = symbols('a:f x:z g:3')
system = [(a * (x - y*z))/(b * (1 - z**2)) - g1,
(a * (y - x*z))/(c * (1 - z**2)) - g2,
f - d * (a * (x - y*z))/(b * (1 - z**2)) - e * (a * (y - x*z))/(c * (1 - z**2)) - g0]
nonlinsolve(system, [x, y, z])
我想要的是x,y和z的值,用其他符号来解这个系统。但我得到以下错误信息:
Traceback (most recent call last):
File "/Users/phl43/Desktop/test.py", line 7, in <module>
nonlinsolve(system, [x, y, z])
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sympy/solvers/solveset.py", line 3053, in nonlinsolve
res = _handle_positive_dimensional(polys, symbols, denominators)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sympy/solvers/solveset.py", line 2801, in _handle_positive_dimensional
denominators)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sympy/solvers/solveset.py", line 2719, in substitution
old_result, solveset_real)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sympy/solvers/solveset.py", line 2708, in _solve_using_known_values
result.remove(res)
ValueError: list.remove(x): x not in list
你知道怎么做吗
查看通过手动解决系统而无需检查可以学到什么:
前两个解不起作用,因为这将导致被0除。最后一个解将前两个方程设置为0,而最后一个解满足前两个方程,但这使得最后一个表达式与z无关:
所以
z
可以是任何提供g0 = f -d*g1 - e*g2
的东西。它是求解x,y和z的不适定方程组相关问题 更多 >
编程相关推荐