首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么渐近不能计算非常简单的积分

为什么渐近不能计算非常简单的积分
EN

Stack Overflow用户
提问于 2020-10-22 03:58:34
回答 2查看 84关注 0票数 0

我不明白为什么渐近不能计算从0到t的非常简单的积分。如何解决这个问题?

代码语言:javascript
复制
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)

结果:

代码语言:javascript
复制
9*t**4 + 4*t**2
Integral(sqrt(9*t**4 + 4*t**2), (t, 0, t))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-22 04:54:11

似乎渐近的积分函数很难处理这个积分,但是我们可以通过展示使用什么替换来帮助它:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-10-22 04:07:11

我在内置的sympy外壳中重新运行您的代码。将积分上限中的t更改为1可修复代码。

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64470886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档