如何对指数积分进行非线性拟合

楼主想拟合一个含指数积分的表达式,得到函数中的两个参数值。

但是第一个问题是不知道自己写的指数积分表达是不是正确,第二是自己调用了哈这个自定义函数,报运行时间的错误,不知道怎么回事。这是那函数表达式。

 

from scipy.special import *
import math
##自定义函数 指数积分
def func(x,a,b):
    c=2.5#单位时间单位长度发热丝的发热量
    d=0.006#校准后的探针间距
    e = 12 #热脉冲加热时间
    #a为热传导系数
    #b为热容量
    return c/(4*math.pi*a*b)*(expn(1,-d*d/(4*a*(x-e)))-expn(1,-d*d/(4*a*x)))
func(17,1,4.8)

报错代码:
D:\anaconda\lib\site-packages\ipykernel_launcher.py:15: RuntimeWarning: invalid value encountered in double_scalars
  from ipykernel import kernelapp as app

 

用expi函数,参见https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.expi.html#scipy.special.expi