在Matplotlib中绘制具有多个变量的函数

问题描述 投票:0回答:1
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')

我们在课堂上得到了一个功能,可以编写为代码

\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库。

在𝑝𝑤(𝑧,𝑡)相对于z的图中绘制三个值t = 0.1,1,10的𝑝𝑤(𝑧,𝑧)。

这是我到目前为止所拥有的:

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')

我之前没有研究过多元演算,所以我有点迷茫!

python matplotlib jupyter-notebook calculus
1个回答
0
投票

[我知道您正在使用sympy进行计算,但是对于绘图来说,将p_w作为numpy数组返回可能更简单。您可以定义一个返回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))   

plt.show()

结果:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.