【问题标题】:Matlab's symbolic math toolbox can't evaluate simple integrationMatlab 的符号数学工具箱无法评估简单的积分
【发布时间】: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


【解决方案1】:

先化简表达式,然后才行

clear all
syms z mu t k
f(z,mu) = exp(-(z-mu)^2);
a(t,k) = exp(-t/k);
int(simplify(f(z,mu)*a(t-z,k)),z,[0,t])

回答

-(pi^(1/2)*exp(-t/k)*exp(1/(4*k^2))*exp(mu/k)*
           (erf(mu - t + 1/(2*k)) - erf(mu + 1/(2*k))))/2

Matlab 2015a,Windows 7

【讨论】:

  • 如果我使用exp(-((z-mu)/del)^2),它无法计算。我只是将z-mu 除以del
  • @yashar 这是一个新问题吗?我回答了发布的问题。如果您有不同的意见,请提出新问题,因为很难在同一个地方回答 2 个不同的问题,而且我不知道 del 是什么以及您现在从最初显示的内容中得到了什么。
  • 这实际上是同一个问题。我不认为删除额外的符号变量会有所作为。我将编辑问题。
  • 请不要像这样编辑问题。现在答案不反映原来的问题。您可以在下面的edit 下添加它并进行跟进。现在答案没有反映新问题。
  • 通过改变变量我可以得到答案,但我想直接从 Matlab 中得到它,而不需要操纵指数函数。
猜你喜欢
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2015-02-13
相关资源
最近更新 更多