【发布时间】:2015-05-18 12:30:48
【问题描述】:
我想在 Matlab 中象征性地计算这个积分:
syms z mu t k
f(z,mu) = exp(-(z-mu)^2);
a(t,k) = exp(-t/k);
int(f(z,mu)*a(t-z,k),z,[0,t])
但 Matlab 无法评估结果。 Mathematica 可以很容易地计算这个积分。我无法通过 MatLink 将 Mathematica 中的术语发送到 Matlab,所以我决定在 Matlab 中完成所有操作。 有没有办法计算这个积分?我不想以数字方式执行此操作,因为这比符号积分然后给它输入要慢。
编辑
给定的答案适用于上述示例,但不适用于此示例:
syms z mu t k del
f(z,mu) = exp(-((z-mu)/del)^2);
a(t,k) = exp(-t/k);
int(f(z,mu)*a(t-z,k),z,[0,t])
我将指数函数中的(z-mu)除以符号变量del。
【问题讨论】:
-
积分是否等同于拉普拉斯变换?如果是这样,也许您可以通过 Matlab 中的拉普拉斯变换函数计算它(我不知道它的名称)或在表格中查找它。
-
拉普拉斯变换的上界无穷大,但这里是变量t。
-
好点。实际上,它是一个卷积,不是吗?在这种情况下,您可以使用恒等式
L(f*g) = L(f) L(g),其中f*g是 f 和 g 的卷积,L 是拉普拉斯变换。 -
您的所有符号变量是否都可能是复杂的(默认),或者您知道是否有任何/全部是真实的?您是否知道是否有任何变量仅限于特定域,例如,任何 > 0 或 >= 0 或其他一些界限集?在 Matlab 中进行符号数学运算时,您需要利用
assumptions来简单地帮助您解决问题。
标签: matlab symbolic-math