问题描述
我正在尝试使用符号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
来“评估”(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