首页 > 解决方案 > 如何根据此处所示的两个变量绘制诱导速度函数的二维图?

问题描述

我正在阅读一篇技术论文并尝试重现与以下函数相对应的图表:

在此处输入图像描述

K(x) 和 E(x) 分别是第一类和第二类勒让德椭圆积分。的情节V_r如下所示:

在此处输入图像描述

我试图在 Python 中绘制这个函数,这是我的代码:

import numpy as np
import scipy
import matplotlib.pyplot as plt
from scipy import special


def x(r,z,R):
    return np.sqrt((-4*r*R)/((R-r)**2+z**2))


def V_z(Gamma,R,r,z):
    
    return (-Gamma/4*np.pi)*((2/np.sqrt((R-r)**2+z**2))*(special.ellipk(x(r,z,R))+\
                 (R**2-r**2-z**2)/((R+r)**2+z**2) * special.ellipe(x(r,z,R))))


def V_r(Gamma,R,r,z):
    
    return (-Gamma/4*np.pi)*((4*R*z*np.sqrt((R+r)**2+z**2)/((R+r)**4+z**2*(2*(R+r)**2+z**2)) \
                              * np.sqrt((R+r)**2+z**2)/((R-r)**2+z**2)))*special.ellipe(x(r,z,R))


r = np.linspace(-5,5,100);
z = np.linspace(-5,5,100);

V_z_list = []
for i in V_z(0.1,1,r,z):
    if np.isnan(i).any() == False:
        print(i)
        V_z_list.append(i)


V_r_list = []
for i in V_r(0.1,1,r,z):
    if np.isnan(i).any() == False:
        print(i)
        V_r_list.append(i)


plt.plot(V_z_list)



但是,我得到了这张图:

在此处输入图像描述

有人可以帮我修复我的代码吗?

标签: pythonnumpymatplotlib

解决方案


推荐阅读