Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么sympy可以';t计算非常简单的积分_Python_Sympy - Fatal编程技术网

Python 为什么sympy可以';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

我不明白为什么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_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)
.In
symphy.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,我注意到我们需要一个变量上界。这意味着积分是该变量的函数。见上面的修正版本。