簡體   English   中英

解決sympy方程會導致numpy數組尺寸錯誤

[英]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 *

您已經創建了一個名稱空間沖突,因為solvepylab (實際上是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.

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