指数积分函数中的变量。Python不能计算

2024-10-10 00:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数学问题在这里-https://math.stackexchange.com/questions/2063507/solving-this-integral-involving-ei-function

这将种群动态与t=时间,Nˉt=时间t的种群,r=增长率,K=繁殖能力有关。在

我的代码附在下面。在

Python无法计算N_next的值,因为它在指数积分函数scipy.special.expi()内。我怎样才能避开这个? 它现在说的是“Scipy没有特殊属性”,但是根据这个-https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.special.expi.html-它应该是。在

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

t_f =100
N_0 = 10
t = []
N_t = [N_0,]
r = 2.5
K = 1000

for i in range(0,100):
    scipy.special.expi(r*N_next/K) = i*math.exp(r) + scipy.special.expi(r/K * N_t[i])
    N_t.append(N_next)
    t.append(i)

plt.plot(t,N_t)
plt.show

Tags: httpsimportmatplotlibas时间plt数学math
3条回答

所以,我想出来了。嗯,有点。现在代码的计算量非常大。但它至少有效。它在下面。在

import math
from scipy import *
from scipy.special import expi
import numpy as np

t_f =100
N_0 = 10
t = [0,]
n = [N_0,]
r = 2.5
K = 100
N_t = [N_0,]

for i in range(0,100):
    a= i*math.exp(r) + expi(r/K * N_0)
    n.append(a)
    t.append(i+1)

g = np.arange(0,1000,0.0001)
d = []
e = []

for i in g:
    x = expi(i)
    d.append(x)
    e.append(i)    

for j in range(1,99):
    b = n[j]
    c = []

    for i in g:
        c.append(b)

    t = np.subtract(d,c)
    for i in range(len(t) - 1):
        if t[i] == 0. or t[i] * t[i + 1] < 0.:
            y = e[i]
            print(y)

    N_next = math.floor(y*K/r)
    N_t.append(N_next)

print(N_t)
plot(t,N_t)

https://math.stackexchange.com/questions/2063507/solving-this-integral-involving-ei-function中的答案提供了一个公式,您要对一系列的t值进行计算。在构建这样的脚本时,我建议您采用自下而上的方法。以下是我目前为止所写的。在

from numpy import exp
import matplotlib.pyplot as plt

K = 1000
r = 2.5

N_0 = 10
N_t = 50

def Ei(x):
    return x

def Ei_inv(x):
    return 1/x

def N(t):
    return K*Ei_inv(exp(r)*t+Ei(r*N_0/K))/r

t = [_ for _ in range(40)]
N = [N(_) for _ in t]

plt.plot(t,N)
plt.show()
  • 我知道一些常量是什么;因此我将它们放入代码中。在
  • 我不知道什么是Ei或它的逆函数,也不知道在哪里可以找到这些函数;作为临时措施,我编写了“虚拟”函数来代替它们。在
  • 现在,我可以编写一个函数,实际上我想要计算的函数是另一个具有单个参数的Python函数,即伪函数。在这一点上,我尝试使用print (N(50))来验证代码的各个部分在一起的行为是否有礼貌。在
  • 我添加了两行,一行定义绘图的x或时间值,第二行是yN值。在

轮到你了,用计算Ei和它的逆函数所需要的代替伪函数。在

这个错误是Python解释程序的一种奇特方式:不能将表达式结果赋给函数调用

for i in range(0,100):
    # function call assignment expression
    ei(r*N_next/K) = i*e^r + ei(r/K * N_t[i])

也许你把这句话混在你的例子里了?在这种情况下,请编辑您的帖子,以便我们可以帮助您。在

相关问题 更多 >

    热门问题