Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我试图用nonlinsolve解非线性方程组时出错_Python_Sympy - Fatal编程技术网

Python 当我试图用nonlinsolve解非线性方程组时出错

Python 当我试图用nonlinsolve解非线性方程组时出错,python,sympy,Python,Sympy,我试着用Symphy来解一个非线性方程组,这是我以前从未做过的,但我无法让它工作 以下是我尝试过的: 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

我试着用Symphy来解一个非线性方程组,这是我以前从未做过的,但我无法让它工作

以下是我尝试过的:

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
回溯(最近一次呼叫最后一次):
文件“/Users/phl43/Desktop/test.py”,第7行,在
非linsolve(系统[x,y,z])
nonlinsolve中的文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/symy/solvers/solveset.py”,第3053行
res=\u句柄\u正\u维(多边形、符号、分母)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/sympy/solvers/solveset.py”,第2801行,以正数表示
分母)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/symy/solvers/solveset.py”,第2719行,替换为
旧结果,解算集(真实)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/sympy/solvers/solveset.py”,第2708行,使用已知值求解
结果:删除(res)
ValueError:list。删除(x):x不在列表中

您知道如何实现这一点吗?

无需检查即可手动解决系统问题,了解您可以学到什么:

>>> r = solve(system, dict=True, manual=True, check=False)
>>> r
[{x: -y, z: -1}, {x: y, z: 1}, {x: (b*g1 + c*g2*z)/a, y: (b*g1*z + c*g2)/a}]
前两个解决方案不起作用,因为这将导致除以0。最后一个解将前两个方程设置为0,而最后一个解满足前两个方程,但这使得最后一个表达式独立于z:

>>> [simplify(i.subs(r[-1])) for i in r]
[0, 0, -d*g1 - e*g2 + f - g0]

所以只要
g0=f-d*g1-e*g2
,就可以是
z
。这是一组求解x、y和z的不适定方程组。

根据,库中可能存在导致此问题的错误。谢谢,我之前看到了此公开问题,所以我担心它可能是错误的,但因为我以前从未使用过此库,我希望我做了一些错误的事情。谢谢,这很有帮助,但是nonlinsolve不应该返回某种信息,表明方程组是不适定的,而不是崩溃的吗?是的。将
和res
添加到solveset.py的(现在)第3048行中,可以为您的系统提供以下内容:
{(-b*g1-c*g2*z)/a,(b*g1*z+c*g2*z)/a,(b*g1*z+c*g2)/a,z),((-a*y*z-b*g1*z)/a,y,z),((a*y*z-b*g1*z**2+b*g1)/a,y,z)
。因此,15422问题仍然是罪魁祸首。