名称错误:未定义名称 "Integral"。

问题描述 投票:0回答:1

我想用一个涉及积分的函数来拟合一个图形。我还没有使用 sympy.Integral() 函数,但出现了这个错误。

File "<lambdifygenerated-11>", line 4, in _lambdifygenerated

    0.203002924854919*sqrt(2)*(-1.0 + 0.346880560655606*pi)*(exp(t/Kef) - 1)*exp(-t/Kef)*Integral(exp(log(D)**2), (D, 1.0, 10.0))/pi**(3/2))

NameError: name 'Integral' is not defined

代码是:

import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit
import sympy as sp

xs=np.arange(0.1,10,0.5)
ys=np.log(xs)

D,Kef,t=sp.symbols('D, Kef, t',real=True)
Dm=float(input("Diâmetro Médio="))
s=float(input("Desvio Padrão="))
T=float(input("Temperatura="))
u0=float(input("Permeabilidade magnética do meio="))
Ms=float(input("Magnetização de Saturação="))
H=1
Kb=1
r=Dm/2
V=(4/3)*sp.pi*r**3
m=u0*H*Ms*V/(Kb*T)
L=sp.coth(m).evalf()-1/m
f=(sp.exp(-2*s**2)/(Dm*s*sp.sqrt(2*sp.pi)))*(sp.exp((sp.ln(D/Dm)**2)))/(2*s**2)
Rel=1-sp.exp(-t/Kef)
ma1=sp.integrate(f*L*Rel,(D,1/Dm,10*Dm))
ma=sp.lambdify((t,Kef),ma1)

xFit=np.arange(0,10.01,0.01)
popt, pcov=curve_fit(ma,xs,ys)
plt.scatter(xs,ys)
plt.plot(xFit,ma(xFit,*popt),color="r")
print(popt[0])

我很感激任何建议。谢谢你的建议。

python sympy curve-fitting integral integrate
1个回答
0
投票

试着简化ma1,然后再将其打包到lambdify中。

ma1=sp.integrate(f*L*Rel,(D,1/Dm,10*Dm))
ma1.sp = simplify(ma1)
ma=sp.lambdify((t,Kef),ma1)
© www.soinside.com 2019 - 2024. All rights reserved.