Python:绘制积分

标签 python scipy quad

我知道这里有一些类似的问题,但似乎没有一个能真正解决我的问题。

我的代码是这样的:

import numpy 

import matplotlib.pyplot as plt

from scipy import integrate as integrate

def H(z , omega_m , H_0 = 70):

    omega_lambda=1-omega_m
    z_prime=((1+z)**3)
    wurzel=numpy.sqrt(omega_m*z_prime + omega_lambda)

    return H_0*wurzel



def H_inv(z, omega_m , H_0=70):

    return 1/(H(z, omega_m, H_0=70))

def integral(z, omega_m , H_0=70):

    I=integrate.quad(H_inv,0,z,args=(omega_m,))
    return I


def d_L(z, omega_m , H_0=70):

    distance=(2.99*(10**8))*(1+z)*integral(z, omega_m, H_0=70)

    return distance

函数确实有效,我的问题是:如何绘制 d_L 与 z 的关系图?就像我在 d_L 的定义中有这个积分函数显然是一个问题,它取决于 z 和一些 args=(omega_m, )。

最佳答案

要构建@eyllanesc 的解决方案,请按以下方式绘制 omega 的多个值:

import numpy

import matplotlib.pyplot as plt

from scipy import integrate


def H(z, omega_m, H_0=70):
    omega_lambda = 1 - omega_m
    z_prime = ((1 + z) ** 3)
    wurzel = numpy.sqrt(omega_m * z_prime + omega_lambda)

    return H_0 * wurzel


def H_inv(z, omega_m, H_0=70):
    return 1 / (H(z, omega_m, H_0=70))


def integral(z, omega_m, H_0=70):
    I = integrate.quad(H_inv, 0, z, args=(omega_m,))[0]
    return I


def d_L(z, omega_m, H_0=70):
    distance = (2.99 * (10 ** 8)) * (1 + z) * integral(z, omega_m, H_0)
    return distance

z0 = -1.8
zf = 10
zs = numpy.linspace(z0, zf, 1000)

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(16,9))

for omega_m in np.linspace(0, 1, 10):
    d_Ls = numpy.linspace(z0, zf, 1000)
    for index in range(zs.size):
        d_Ls[index] = d_L(zs[index], omega_m=omega_m)
    ax.plot(zs,d_Ls, label='$\Omega$ = {:.2f}'.format(omega_m))
ax.legend(loc='best')
plt.show()

Plot with multiple lines

关于Python:绘制积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960968/

相关文章:

python 的 scipy.stats.ranksums 与 R 的 wilcox.test

python - scipy.signal.lombscargle 的使用

python - Pandas `read_csv` 方法使用过多 RAM

python - 将 csv 中的行插入 mysql 数据库

python - 为什么我需要 "fftshift"DFT 的乘积来恢复卷积乘积

python - 将 linspace 向量发送到函数会使该向量在函数启动之前全部为零

python - 如何隔离 scipy.integrate.quad 函数的结果,而不是计算结果和错误?

python - 如何在诗歌中使用 nox?

python - CNTK:克隆单层