Python 为什么sympy可以';t计算非常简单的积分
我不明白为什么Symphy不能计算从0到t的非常简单的积分。如何解决这个问题Python 为什么sympy可以';t计算非常简单的积分,python,sympy,Python,Sympy,我不明白为什么Symphy不能计算从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_deriv
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))
我在内置
sympy
shell中重新运行了您的代码。将积分上限中的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))
我在内置
sympy
shell中重新运行了您的代码。将积分上限中的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))
sympy的积分函数似乎与这个积分有矛盾,但我们可以通过展示使用什么替代来帮助它:
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
sympy的积分函数似乎与这个积分有矛盾,但我们可以通过展示使用什么替代来帮助它:
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
在
sympy.integrate(sympy.sqrt(expression),(t,0,t))
中,t
是一个变量和一个上限,这是不可能的。在(t,0,t)
中的第二个t
必须是一个常数,不是吗?你确定积分像你想的那样简单吗?@DYZ我有-4的区间,那么你应该使用(t,-4,4).Insymphy.integrate(symphy.sqrt(expression),(t,0,t))
中,t
是一个变量和一个上限,这是不可能的。第二个t
中的(t,0,t)
必须是一个常数,不是?你确定积分像你想的那样简单吗?@DYZ我有一个类似-4的区间,然后你应该使用(t,-4,4)
。OP需要(t,-4,4)
。谢谢!重新阅读OP,我注意到我们需要一个变量上界。这意味着积分是该变量的函数。请参阅上面的更正版本。OP需要(t,-4,4)
。谢谢!重新阅读OP,我注意到我们需要一个变量上界。这意味着积分是该变量的函数。见上面的修正版本。