在 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.1t=1t=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()

结果: