我不明白为什么渐近不能计算从0到t的非常简单的积分。如何解决这个问题?
import sympy
from sympy import sin , cos , sqrt, asinh , log
t= sympy.symbols('t')
x = 't^2'
y = 't^3'
x_derivatives = sympy.diff(x , t)
y_derivatives = sympy.diff(y , t)
expression = x_derivatives**2 + y_derivatives**2
print(expression)
fi_t = sympy.integrate(sympy.sqrt(expression), (t,0,t))
print(fi_t)结果:
9*t**4 + 4*t**2
Integral(sqrt(9*t**4 + 4*t**2), (t, 0, t))发布于 2020-10-22 04:54:11
似乎渐近的积分函数很难处理这个积分,但是我们可以通过展示使用什么替换来帮助它:
In [46]: fi_t = Integral(sqrt(9*t**4 + 4*t**2), (t, 0, t))
In [47]: fi_t
Out[47]:
t
⌠
⎮ _____________
⎮ ╱ 4 2
⎮ ╲╱ 9⋅t + 4⋅t dt
⌡
0
In [48]: z = Symbol('z', positive=True)
In [49]: fi_t.transform(t, sqrt(z))
Out[49]:
2
t
⌠
⎮ ____________
⎮ ╱ 2
⎮ ╲╱ 9⋅z + 4⋅z
⎮ ─────────────── dz
⎮ 2⋅√z
⌡
0
In [50]: factor_terms(fi_t.transform(t, sqrt(z)))
Out[50]:
2
t
⌠
⎮ _________
⎮ ╲╱ 9⋅z + 4 dz
⌡
0
─────────────────
2
In [51]: factor_terms(fi_t.transform(t, sqrt(z))).doit()
Out[51]:
3/2
⎛ 2 ⎞
⎝9⋅t + 4⎠ 8
───────────── - ──
27 27发布于 2020-10-22 04:07:11
我在内置的sympy外壳中重新运行您的代码。将积分上限中的t更改为1可修复代码。
import sympy
from sympy import sin , cos , sqrt, asinh , log
t= sympy.symbols('t')
x = 't^2'
y = 't^3'
x_derivatives = sympy.diff(x , t)
y_derivatives = sympy.diff(y , t)
expression = x_derivatives**2 + y_derivatives**2
print(expression)
def fi_t(x):
return sympy.integrate(sympy.sqrt(expression), (t,0,x))
print(fi_t(4))
print(fi_t(-4))https://stackoverflow.com/questions/64470886
复制相似问题