Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 用辛方法求解代数方程组_Python_Sympy_Algebra - Fatal编程技术网

Python 用辛方法求解代数方程组

Python 用辛方法求解代数方程组,python,sympy,algebra,Python,Sympy,Algebra,我对python的SymPy不太熟悉,正在尝试求解一个简单的方程组。我可以成功地计算变量“y”,但当我尝试将此值替换回“x”时,我无法让它简单地计算表达式并输出值。我的代码如下: x = Symbol('x') y = Symbol('y') A = 1 B = 3 C = 6 x = solve(A*(1-x-y) + B*x + C*y - 4, x) x = x[0] y = solve(A*(1-x-y) + B*x - (8-C)*y, y) y = y[0] print x pr

我对python的SymPy不太熟悉,正在尝试求解一个简单的方程组。我可以成功地计算变量“y”,但当我尝试将此值替换回“x”时,我无法让它简单地计算表达式并输出值。我的代码如下:

x = Symbol('x')
y = Symbol('y')
A = 1
B = 3
C = 6

x = solve(A*(1-x-y) + B*x + C*y - 4, x)
x = x[0]
y = solve(A*(1-x-y) + B*x - (8-C)*y, y)
y = y[0]

print x
print x.subs(y,0.5)
到目前为止,我的每一次尝试都只返回-5*y/2+3/2。我尝试将其转换为浮点,尝试以不同的方式使用solve表达式,并将其转换为字符串,然后使用simpify将其转换为要求解的表达式


我所做的一切都不管用,我意识到这可能是一项简单的任务,但我想不出来。任何建议都会有帮助,谢谢

我不确定你是不是想要:

from sympy import *

x = Symbol('x')
y = Symbol('y')
A = 1
B = 3
C = 6

xeq = solve(A*(1-x-y) + B*x + C*y - 4,x)[0]
print ('x = %s' % xeq)
yeq = solve(A*(1-x-y) + B*x - (8-C)*y,y)[0]
print ('y = %s' % yeq)

ysolve = 0.5
xval = xeq.subs(y, ysolve)
print ('If y = %f, x = %f' % (ysolve, xval))
yval = yeq.subs(x, xval)
print ('If x = %f, y = %f' % (xval, yval))
产出将是:

x = -5*y/2 + 3/2
y = 2*x/3 + 1/3
If y = 0.500000, x = 0.250000
If x = 0.250000, y = 0.500000

我认为代码的主要问题是,在执行过程中,您正在覆盖符号
x
y

不要忘记,您也可以使用solve:

>>> x,y=symbols('x y')
>>> A = 1
>>> B = 3
>>> C = 6
>>> sol = solve((
...     A*(1-x-y) + B*x + C*y - 4,
...     A*(1-x-y) + B*x - (8-C)*y, ))
>>> sol
{x: 1/4, y: 1/2}
>>> print "x = {x} and y = {y}".format(x=sol[x],y=sol[y])
x = 1/4 and y = 1/2

当您写入
x=
y=
时,您将覆盖x和y,使它们不再是
Symbol('x')
Symbol('y')