我正在尝试使用符号 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
即原始积分及其内部函数。
我尝试通过以下方式解决问题:
我知道符号包正在工作,因为示例代码返回正确的定积分。
您可以使用
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