八次方积分不计算具有符号变量的定积分



我试图使用符号int((函数来计算卷积积分,我的程序没有返回有用的答案,而是返回积分本身。这是我的代码

clc; clear;
pkg load symbolic
syms t tau Wn   % Declare symbolic variables
f = tau^2 * sin( Wn *(t-tau) );
convolution = int( f, tau, [0 t] );   % Specify tau as the integration variable
% and integration limits are from 0 to t 
pretty(convolution)

代码运行,但不会返回有用的内容。它没有返回答案,而是返回以下内容:

t                       
⌠                       
⎮  2                    
⎮ τ ⋅sin(Wn⋅t - Wn⋅τ) dτ
⌡                       
0       

即具有其内部函数的原始积分

我已经尝试通过以下方式排除问题:

  • 从Octave int((帮助页面复制/粘贴示例代码,这样可以计算定积分
  • 将集成语法从0,t更改为[0,t]这不会改变任何内容
  • 生成变量f并将函数存储在那里,而不是函数位于int((内部。这不会改变任何内容

我知道符号包正在工作,因为示例代码返回了正确的定积分。

谢谢。

您可以使用eval来"评估";(duh(积分。例如,使用上面的代码,我得到:

octave:9> eval( convolution )
ans = (sym)
⎧ 2                                                   
⎪t    2⋅cos(Wn⋅t)    2                                
⎪── + ─────────── - ───  for Wn > -∞ ∧ Wn < ∞ ∧ Wn ≠ 0
⎨Wn         3         3                               
⎪         Wn        Wn                                
⎪                                                     
⎩          0                       otherwise          

注意,如果你真的在工作空间上"定义"了一些符号,那么这些符号就会被考虑在内:

octave:10> Wn = 1;   % or preferably `sym('1')` ...
octave:11> eval( convolution )
ans = (sym)
2               
t  + 2⋅cos(t) - 2

最新更新