簡體   English   中英

用SymPy求解代數方程組

[英]Solving a System of Algebraic Equations with SymPy

我是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將其轉換回要解決的表達式。

我沒有做過任何工作,我意識到這應該是一件容易的事,但我無法理解。 任何建議都會有所幫助,謝謝!

不要忘記你可以同時解決這兩個問題,解決:

>>> 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

我不確定你是否會這樣做:

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

我相信你的代碼的主要問題是你正在覆蓋符號xy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM