首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NameError:未定义名称“Integral”

NameError:未定义名称“Integral”
EN

Stack Overflow用户
提问于 2020-04-30 02:19:51
回答 1查看 675关注 0票数 0

我想要使用一个涉及集成的函数来拟合图形。我没有使用过sympy.Integral()函数,但是出现了这个错误:

代码语言:javascript
复制
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

代码是:

代码语言:javascript
复制
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])

我很感谢你的建议。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-04-30 06:14:39

在将ma1打包到lambdify之前,请尝试简化它。

代码语言:javascript
复制
ma1=sp.integrate(f*L*Rel,(D,1/Dm,10*Dm))
ma1.sp = simplify(ma1)
ma=sp.lambdify((t,Kef),ma1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61508920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档