Size1仅当使用contour()绘制多变量函数时出错。不知道为什么?

2024-09-30 18:16:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用等高线绘制一个复杂的双变量函数。我在contour函数调用中收到一个“TypeError:只有size-1数组才能转换为Python标量”错误

'''

from matplotlib.pyplot import (contour,plot,grid,xlabel,ylabel,show,legend,subplot,figure,suptitle)
import math 
import numpy as np 
from scipy.integrate import odeint
from sympy.solvers import solveset
from sympy import Symbol

V = 3.78 #m^3
CA0 = 5000.0 #mol/m3
CB0 = 0.0 
Keq0 = 9.0 #at 350K
Ea = 15000.0*4.184 #j/mol
R = 8.314 #j/mol/K
DHrx = -25000.0*4.184 #j/mol
T1 = 350.0 #K
kT1 = .4/V/CA0/(.6**2-(.4**2/Keq0))
dT = 1.0
dX = 1/310

T,X = np.meshgrid(np.arange(290,600,dT),np.arange(0,1,dX))

contour(

    T,X,
    X-V*kT1*math.exp((Ea/R)*((1/T1)-(1/T)))*((1-X)**2-(X**2/(Keq0*math.exp(DHrx/R*((1/T1)-(1/T)))))),[0]
)

show()

'''

任何指点都将不胜感激目标是绘制T,X等于零的函数


Tags: 函数fromimportshownp绘制mathcontour
1条回答
网友
1楼 · 发布于 2024-09-30 18:16:25

您需要在数组上使用np.exp,而不是math.expnp.exp取数组中每个元素的指数,而math.exp仅对单个数字有效,例如intfloat

from matplotlib.pyplot import (contour,plot,grid,xlabel,ylabel,show,legend,subplot,figure,suptitle)
import math 
import numpy as np 
from scipy.integrate import odeint
from sympy.solvers import solveset
from sympy import Symbol

V = 3.78 #m^3
CA0 = 5000.0 #mol/m3
CB0 = 0.0 
Keq0 = 9.0 #at 350K
Ea = 15000.0*4.184 #j/mol
R = 8.314 #j/mol/K
DHrx = -25000.0*4.184 #j/mol
T1 = 350.0 #K
kT1 = .4/V/CA0/(.6**2-(.4**2/Keq0))
dT = 1.0
dX = 1/310

T,X = np.meshgrid(np.arange(290,600,dT),np.arange(0,1,dX))

contour(

    T,X,
    X-V*kT1*np.exp((Ea/R)*((1/T1)-(1/T)))*((1-X)**2-(X**2/(Keq0*np.exp(DHrx/R*((1/T1)-(1/T)))))),[0]
)

show()

figure

相关问题 更多 >