使用sypy在Python中集成

2024-10-03 00:17:39 发布

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

我目前正在使用Sympy来帮助我进行数学计算。现在,我正在尝试执行数值积分,但每次运行脚本时都会出现错误。脚本如下:

from sympy import *
cst = { 'qe':1.60217646*10**-19, 'm0':N(1.25663706*10**-6) }

d = 3.6*10**-2
l = 20.3*10**-2
n = 217.0
I = 10.2

# Circum of loops
circ = l/n;
# Radius
r = N( circ/(2*pi) )
# Flux through a ring a distance R from the ceter
def flux(rad, I, loopRad):
    distFromWire = loopRad - rad
    bPoint = cst['m0']*I/(2*pi*distFromWire)
    return ( bPoint*2*pi*rad )

# Integrate from r=0 to r=wireRad
x = Symbol('x')
ig = Symbol('ig')
ig = flux(x, I, r)
print(ig)
integrate(ig*x,x)

我确信实际的物理/数学可能有问题,但现在我只想让它整合起来。以下是我运行脚本时得到的输出:

^{pr2}$

编辑: 好吧,我把程序使用的数字取出来,放到wolfram alpha中。结果是积分不收敛。我想这只是个数学错误。在


Tags: from脚本错误pi数学symbolcircrad
1条回答
网友
1楼 · 发布于 2024-10-03 00:17:39

使用符号库进行数值计算是一个非常糟糕的主意。只需使用scipy/numpy。也就是说,对于这样一个简单的积分,你可以用sympy。但是,您应该实际使用sympy表达式,而不是将所有内容转储到不透明函数中。在

首先,了解python中的变量是如何工作的:

ig = Symbol('ig')
ig = flux(x, I, r)

在这个操作之后,ig不再是一个符号,它只是flux的返回值。在

定义你所有的符号,然后用它们来表达。积分足够简单,sympy可以处理它。在

最后,像您这样简单的积分应该手工完成,而不是浪费在软件上。在

[编辑]:我已经彻底重写了它,但是由于一个bug,sympy仍然没有正确地集成。你可以在邮件列表或问题追踪器上报告,他们会努力改正的。也就是说,这个表达式非常简单,可以用手来整合。在

[编辑2]:

^{pr2}$

相关问题 更多 >