[英]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
我相信你的代碼的主要問題是你正在覆蓋符號x
和y
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.