[英]solve sympy equation results in an error on numpy array dimensions
我目前正在嘗試使用sympy求解方程組(在本次科學python講座之后 ),但出現以下錯誤:
Traceback (most recent call last):
File "VMT.py", line 13, in <module>
[Vmc, Vgp, tmc, tgp])
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 311, in solve
_assertRank2(a, b)
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 155, in _assertRank2
two-dimensional' % len(a.shape)
numpy.linalg.linalg.LinAlgError: 1-dimensional array given. Array must be two-dimensional
我的代碼是:
from sympy import *
from pylab import *
Vmc=Symbol('Vmc')
Vgp=Symbol('Vgp')
tmc=Symbol('tmc')
tgp=Symbol('tgp')
solve([-Vmc + (((2300**10)*(tmc - 85))/(0.02*85))**(1/10),
-Vgp + (((6900**10)*(tgp - 85))/(0.02*0.85))**(1/10),
-Vmc + 12000*(((2.76/(tgp - tmc)) - 7)/(16 - 7))**(1/10),
-Vgp - Vmc + 12000],
[Vmc, Vgp, tmc, tgp])
我知道這似乎與如何設置solve函數有關,但是我對如何解決這個問題感到有些困惑。
問題來自使用
from pylab import *
線后
from sympy import *
您已經創建了一個名稱空間沖突,因為solve
在pylab
(實際上是numpy.linalg.solve
的別名)下以及sympy
。
您應嘗試避免此類通用導入。
例如,這將起作用:
from sympy import * # still not a big fan of this
import pylab
Vmc=Symbol('Vmc')
Vgp=Symbol('Vgp')
tmc=Symbol('tmc')
tgp=Symbol('tgp')
solve([-Vmc + (((2300**10)*(tmc - 85))/(0.02*85))**(1/10),
-Vgp + (((6900**10)*(tgp - 85))/(0.02*0.85))**(1/10),
-Vmc + 12000*(((2.76/(tgp - tmc)) - 7)/(16 - 7))**(1/10),
-Vgp - Vmc + 12000],
[Vmc, Vgp, tmc, tgp])
但是,您的方程組可能沒有解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.