현재 수학 계산을 돕기 위해 Sympy
을 사용하고 있습니다. 지금 당장은 수치 적 통합을 시도하고 있지만 스크립트를 실행할 때마다 계속 오류가 발생합니다. 여기에 스크립트입니다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)
내가 실제 물리/수학에 문제가 아마도이 있는지,하지만 지금 난 그냥 통합하려는.
8.05359718208634e-5*x/(-6.28318530717959*x + 0.000935483870967742)
Traceback (most recent call last):
File "script.py", line 34, in <module>
integrate(ig*x,x)
File "C:\Python27\lib\site-packages\sympy\utilities\decorator.py", line 24, in threaded_func
return func(expr, *args, **kwargs)
File "C:\Python27\lib\site-packages\sympy\integrals\integrals.py", line 847, in integrate
return integral.doit(deep = False)
File "C:\Python27\lib\site-packages\sympy\integrals\integrals.py", line 364, in doit
antideriv = self._eval_integral(function, xab[0])
File "C:\Python27\lib\site-packages\sympy\integrals\integrals.py", line 577, in _eval_integral
parts.append(coeff * ratint(g, x))
File "C:\Python27\lib\site-packages\sympy\integrals\rationaltools.py", line 42, in ratint
g, h = ratint_ratpart(p, q, x)
File "C:\Python27\lib\site-packages\sympy\integrals\rationaltools.py", line 124, in ratint_ratpart
H = f - A.diff()*v + A*(u.diff()*v).quo(u) - B*u
File "C:\Python27\lib\site-packages\sympy\core\decorators.py", line 75, in __sympifyit_wrapper
return func(a, sympify(b, strict=True))
File "C:\Python27\lib\site-packages\sympy\polys\polytools.py", line 3360, in __mul__
return f.mul(g)
File "C:\Python27\lib\site-packages\sympy\polys\polytools.py", line 1295, in mul
_, per, F, G = f._unify(g)
File "C:\Python27\lib\site-packages\sympy\polys\polytools.py", line 377, in _unify
F = f.rep.convert(dom)
File "C:\Python27\lib\site-packages\sympy\polys\polyclasses.py", line 277, in convert
return DMP(dmp_convert(f.rep, f.lev, f.dom, dom), dom, f.lev)
File "C:\Python27\lib\site-packages\sympy\polys\densebasic.py", line 530, in dmp_convert
return dup_convert(f, K0, K1)
File "C:\Python27\lib\site-packages\sympy\polys\densebasic.py", line 506, in dup_convert
return dup_strip([ K1.convert(c, K0) for c in f ])
File "C:\Python27\lib\site-packages\sympy\polys\domains\domain.py", line 85, in convert
raise CoercionFailed("can't convert %s of type %s to %s" % (a, K0, K1))
sympy.polys.polyerrors.CoercionFailed: can't convert DMP([1, 0], ZZ) of type ZZ[_b1] to RR
[Finished in 0.3s with exit code 1]
편집 : 저는 여기에 스크립트를 실행할 때 내가 얻을 출력 좋아을, 그래서 프로그램이 사용 울프 람 알파에 넣어 것을 숫자를 꺼냈다. 적분이 수렴하지 않음을 알 수 있습니다. 따라서 오차가 발생합니다. 나는 그것이 단지 수학 오류라고 생각한다.