首页 > 解决方案 > 八度积分不使用符号变量评估定积分

问题描述

我正在尝试使用符号 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       

即原始积分与它里面的功能。

我尝试通过以下方式解决问题:

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

谢谢。

标签: matlabsignalsintegrationoctave

解决方案


您可以使用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

推荐阅读