matplotlib 如何在python中为通过积分定义的函数绘制等值线图,并在代码中以数值方式计算积分

zaqlnxep  于 2022-11-15  发布在  Python
关注(0)|答案(1)|浏览(107)

我需要对一个函数做一个轮廓图,这个函数很难进行解析计算,所以我在代码中用integrate.quad函数进行了计算。然后我需要一个轮廓图,所以我把它传递给轮廓图函数,但它不起作用。
我想我不明白这里的二维和一维数组。
下面是我对代码的想法:

x=np.arange(0,5,0.1)
y=np.arange(0,5,0.1)
h=len(y)
v=[0,0]*h
[X,Y]=np.meshgrid(x,y)

for i in range(h):
  for j in range(h):
    f= lambda o:np.exp(o**6*x[i]*y[j])
    v[i,j], error= integrate.quad(f, 0, 2)

[X,Y]=np.meshgrid(x,y)
fig, ax=plt.subplots(1,1)
m=ax.contourf(X,Y,v)
ax.set_xlabel('x')
ax.set_ylabel('y')
cbar=fig.colorbar(m)
plt.show()

你能帮我画出一个由积分定义的函数吗?我的方法有什么问题?
谢谢你

sdnqo3pr

sdnqo3pr1#

v数组的大小必须与X(2D数组)的大小相同:

import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate

x=np.arange(0,5,0.1)
y=np.arange(0,5,0.1)
h = len(x)
[X,Y]=np.meshgrid(x,y)
v = np.zeros_like(X)
error = np.zeros_like(X)

for i in range(h):
    for j in range(h):
        f= lambda o:np.exp(o**6*x[i]*y[j])
        v[i, j], error[i, j] = integrate.quad(f, 0, 2)

fig, ax=plt.subplots(1,1)
m=ax.contourf(X,Y,v)
ax.set_xlabel('x')
ax.set_ylabel('y')
cbar=fig.colorbar(m)
plt.show()

相关问题