我正在尝试绘制具有多个变量的表达式。我想为除一个之外的所有符号指定数值,并绘制相对于该一个变量的函数。
我尝试使用这种方法进行绘图:
import numpy as np
import sympy as smp
import matplotlib.pyplot as plt
smp.init_printing()
dP_single,dP_parallel, Q,mu,L_filter,L_cake,K_filter,K_cake=smp.symbols('dP_single,dP_parallel, Q,mu,L_filter,L_cake,K_filter,K_cake')
Eq1=smp.Eq((-Q*mu*(L_filter+L_cake)/(K_filter+K_cake))-dP_single,0)
Eq2=smp.Eq((-(Q/2)*mu*(L_filter+(L_cake/2))/(K_filter+K_cake))-dP_parallel,0)
sol=smp.solve([Eq1,Eq2],[dP_single,dP_parallel])
display(sol)
Eq2=smp.Eq((1/4)*(-L_cake*Q*mu-2*L_filter*Q*mu)*dP_single/(-L_cake*Q*mu-L_filter*Q*mu)-dP_parallel,0).simplify()
display(Eq2)
sol2=smp.solve(Eq2,dP_parallel)
display(sol2[0].simplify())
def percent_dP_single(L_cake_):
percent_dPsingle=smp.N(sol2[0].subs({'dP_single':1,'L_cake':L_cake_,'L_filter':.005}))
return percent_dPsingle
L_cake=np.linspace(0,.01,200)
plt.plot(L_cake,percent_dP_single(L_cake))
我收到以下错误:
x and y must have same first dimension, but have shapes (200,) and (1,)
vectorize
类,以便您可以使用 NumPy 数组作为参数来调用 percent_dP_single
函数(当前需要单个标量值):
import numpy as np
import sympy as smp
import matplotlib.pyplot as plt
smp.init_printing()
dP_single,dP_parallel, Q,mu,L_filter,L_cake,K_filter,K_cake=smp.symbols('dP_single,dP_parallel, Q,mu,L_filter,L_cake,K_filter,K_cake')
Eq1=smp.Eq((-Q*mu*(L_filter+L_cake)/(K_filter+K_cake))-dP_single,0)
Eq2=smp.Eq((-(Q/2)*mu*(L_filter+(L_cake/2))/(K_filter+K_cake))-dP_parallel,0)
sol=smp.solve([Eq1,Eq2],[dP_single,dP_parallel])
display(sol)
Eq2=smp.Eq((1/4)*(-L_cake*Q*mu-2*L_filter*Q*mu)*dP_single/(-L_cake*Q*mu-L_filter*Q*mu)-dP_parallel,0).simplify()
display(Eq2)
sol2=smp.solve(Eq2,dP_parallel)
display(sol2[0].simplify())
# add vectorize decorator
@np.vectorize
def percent_dP_single(L_cake_):
percent_dPsingle=smp.N(sol2[0].subs({'dP_single':1,'L_cake':L_cake_,'L_filter':.005}))
return percent_dPsingle
L_cake=np.linspace(0,.01,200)
plt.plot(L_cake,percent_dP_single(L_cake))