簡體   English   中英

使用Sympy,python2.7求解方程組

[英]Solving a system of equation with Sympy, python2.7

我想解決一個方程組。 但我希望能夠精確地將值“精確化”,並將其作為“什么”的函數。

為了更好地理解,我從這里開始 ,我修改了一個例子:

import sympy as sp
x, y, z = sp.symbols('x, y, z')
rho, sigma, beta = sp.symbols('rho, sigma, beta')
f1 = sigma * (y - x)
f2 = x * (rho - z) - y
f3 = x * y - beta * z
print sp.solvers.solve((f1, f2, f3), (x, y, z))

import sympy as sp
x, y, z, w = sp.symbols('x, y, z, w')
rho, sigma, beta = sp.symbols('rho, sigma, beta')
f1 = sigma * (y - x)
f2 = x * (rho - z) - y
f3 = x * y - beta * w
f4 = z - w
print sp.solvers.solve((f1, f2, f3, f4), (x, y, z))

所以,正如你所看到的,我在最后一個等式中用w替換了z ,並且我在精確的z = w中添加了一個新的。 但是, sympy(在python 2.7上)無法解決這個新的方程式!

所以我的問題:如何得到x,y,z的結果作為rho,sigma,beta的函數。 更一般地說,我們如何精確變量“響應變量”。

我認為這可能非常有用,因為通常,在要求python解決之前,你不想開發你的等式系統。

同樣,如果我采取一個更復雜的例子:

import sympy as sp
x, y, z, w, u = sp.symbols('x, y, z, w, u')
rho, sigma, beta = sp.symbols('rho, sigma, beta')
f1 = sigma * (y - x)
f2 = x * (rho - u) - y
f3 = x * y - beta * w
f4 = z - w
f5 = w - u
print sp.solvers.solve((f1, f2, f3, f4, f5), (x, y, z))

我得到的回應是:

[]

但是,如你所見,我有z = w = u兒子,我應該得到相同的答案!

您的代碼出現以下錯誤:

回溯(最近一次調用最后一次):文件“C:\\ temp \\ equation1.py”,第37行,在f3 = x * y - beta * w NameError:名稱'w'未定義

因此,我們從同情符號中拉出符號'w',如下面的x, y, z, w = sp.symbols('x, y, z, w')

您還提到過您正在嘗試添加z = w ,因此一旦我們將其添加到您的代碼中,它就會起作用。

工作守則:

import sympy as sp
x, y, z, w = sp.symbols('x, y, z, w')
rho, sigma, beta = sp.symbols('rho, sigma, beta')
z = w
f1 = sigma * (y - x)
f2 = x * (rho - z) - y
f3 = x * y - beta * w
f4 = z - w
print sp.solvers.solve((f1, f2, f3, f4), (x, y, z, w))

輸出:

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
[(0, 0, 0), (-sqrt(beta*rho - beta), -sqrt(beta*(rho - 1)), rho - 1), (sqrt(beta*rho - beta), sqrt(beta*(rho - 1)), rho - 1)]
>>> 

暫無
暫無

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

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