八度积分不能计算带有符号变量的定积分

问题描述 投票:0回答:1

我正在尝试使用符号 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() 内部。这没有改变任何事情

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

matlab octave symbolic-integration
1个回答
0
投票

您可以使用

eval
来“评估”(废话)积分。例如。通过上面的代码,我得到:

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
© www.soinside.com 2019 - 2024. All rights reserved.