在 Matplotlib 中绘制具有多个变量的函数
Plotting a function with more than one variable in Matplotlib
import numpy as np
import matplotlib.pyplot as plt
import sympy as sym
from ipywidgets.widgets import interact
sym.init_printing(use_latex="mathjax")
x, y, z, t = sym.symbols('x y z t')
我们在 class 中得到了一个函数来编写代码
\begin{equation}
p_w(z,t)=\frac{1}{\sqrt{\pi \left(1-\exp\left[-2 t\right]\right)}}
\exp\left[-\frac{\left(z-\exp\left[-t\right]\right)^{2}}{1-
\exp\left[-2t\right]}\right]
\end{equation}
这是我写的
p_w = (1/(sym.sqrt((sym.pi)*(1-(sym.exp(-2*t))))))*(sym.exp((-(z-sym.exp(-t))**2)/(1-sym.exp(-2*t))))
然后求偏微分方程
∂(,)=∂[(,)]+1/2 ∂2(,)
我是这样写的:
LHS=sym.diff(p_w,t,1)
#differentiate once with respect to t
RHS=sym.diff(z*p_w,z,1)+((1/2)*(sym.diff(p_w,z,2)))
#now differentiate with respect to z
现在需要绘制,只能使用matplotlib/numpy/sympy库
Plot (,) for the three values t=0.1,1,10 in a (,) versus z diagram.
这是我目前得到的:
t_points=[0.1,1,10]
#pw = sym.lambdify(t,p_w)
mytspace=np.linspace(0,10,200)
#myzspace=pw(mytspace)
plt.xlabel("t axis")
plt.ylabel("z axis")
plt.plot(t_array,np.zeros(3),'bs')
没学过多元微积分,有点迷茫!
由于您的变量之一已给出(您知道 t
必须是 t=0.1
、t=1
或 t=10
),您唯一用于绘图的变量是 z
.我知道您正在使用 sympy
进行计算,但是对于绘图来说,将 return p_w
作为 numpy
数组可能更简单。您可以定义一个函数 return p_w
如下:
import numpy as np
import matplotlib.pyplot as plt
def p_w(z, t):
p_w = (1/(np.sqrt((np.pi)*(1-(np.exp(-2*t))))))*(np.exp((-(z-np.exp(-t))**2)/(1-np.exp(-2*t))))
return p_w
这将为您提供一个带有 p_w(z, t)
结果的 numpy 数组,其中 z
是一个数组,而 t
只是一个数字。然后你可以迭代你需要的 t
的值:
t_points=[0.1, 1, 10]
z = np.linspace(0,10,200)
for t in t_points:
plt.plot(z, p_w(z, t), label='t = {0}'.format(t))
plt.legend()
plt.show()
结果:
import numpy as np
import matplotlib.pyplot as plt
import sympy as sym
from ipywidgets.widgets import interact
sym.init_printing(use_latex="mathjax")
x, y, z, t = sym.symbols('x y z t')
我们在 class 中得到了一个函数来编写代码
\begin{equation}
p_w(z,t)=\frac{1}{\sqrt{\pi \left(1-\exp\left[-2 t\right]\right)}}
\exp\left[-\frac{\left(z-\exp\left[-t\right]\right)^{2}}{1-
\exp\left[-2t\right]}\right]
\end{equation}
这是我写的
p_w = (1/(sym.sqrt((sym.pi)*(1-(sym.exp(-2*t))))))*(sym.exp((-(z-sym.exp(-t))**2)/(1-sym.exp(-2*t))))
然后求偏微分方程
∂(,)=∂[(,)]+1/2 ∂2(,)
我是这样写的:
LHS=sym.diff(p_w,t,1)
#differentiate once with respect to t
RHS=sym.diff(z*p_w,z,1)+((1/2)*(sym.diff(p_w,z,2)))
#now differentiate with respect to z
现在需要绘制,只能使用matplotlib/numpy/sympy库
Plot (,) for the three values t=0.1,1,10 in a (,) versus z diagram.
这是我目前得到的:
t_points=[0.1,1,10]
#pw = sym.lambdify(t,p_w)
mytspace=np.linspace(0,10,200)
#myzspace=pw(mytspace)
plt.xlabel("t axis")
plt.ylabel("z axis")
plt.plot(t_array,np.zeros(3),'bs')
没学过多元微积分,有点迷茫!
由于您的变量之一已给出(您知道 t
必须是 t=0.1
、t=1
或 t=10
),您唯一用于绘图的变量是 z
.我知道您正在使用 sympy
进行计算,但是对于绘图来说,将 return p_w
作为 numpy
数组可能更简单。您可以定义一个函数 return p_w
如下:
import numpy as np
import matplotlib.pyplot as plt
def p_w(z, t):
p_w = (1/(np.sqrt((np.pi)*(1-(np.exp(-2*t))))))*(np.exp((-(z-np.exp(-t))**2)/(1-np.exp(-2*t))))
return p_w
这将为您提供一个带有 p_w(z, t)
结果的 numpy 数组,其中 z
是一个数组,而 t
只是一个数字。然后你可以迭代你需要的 t
的值:
t_points=[0.1, 1, 10]
z = np.linspace(0,10,200)
for t in t_points:
plt.plot(z, p_w(z, t), label='t = {0}'.format(t))
plt.legend()
plt.show()
结果: