伙计们!对此我提前表示歉意。
假设我想卷积两个函数(f和g),一个带有breit-wigner的高斯函数:
f[x_] := 1/(Sqrt[2 \[Pi]] \[Sigma])Exp[-(1/2) ((x - \[Mu])/\[Sigma])^2];
g[x_] := 1/\[Pi] (\[Gamma]/((x - \[Mu])^2 + \[Gamma]^2));一种方法是使用卷积,如下所示:
Convolve[f[x],g[x],x,y];但这给出了:
(\[Gamma] Convolve[E^(-((x - \[Mu])^2/(2 \[Sigma]^2))),1/(\[Gamma]^2 + (x - \[Mu])^2), x, y])/(Sqrt[2] \[Pi]^(3/2) \[Sigma])这意味着它不能做卷积。
然后我尝试了积分(卷积的定义):
Integrate[f[x]*g[y - x], {x, 0, y}, Assuptions->{x > 0, y > 0}]但再一次,它无法集成。我知道有些函数无法解析集成,但在我看来,每当我进入卷积时,我都会发现另一个无法集成的函数。
在Mathematica中,数值积分是做卷积的唯一方法(除了示例中的那些简单函数),还是我做错了什么?
我的目标是用breit-weigner来卷积水晶球。CB类似于:
Piecewise[{{norm*Exp[-(1/2) ((x - \[Mu])/\[Sigma])^2], (
x - \[Mu])/\[Sigma] > -\[Alpha]},
{norm*(n/Abs[\[Alpha]])^n*
Exp[-(1/2) \[Alpha]^2]*((n/Abs[\[Alpha]] - Abs[\[Alpha]]) - (
x - \[Mu])/\[Sigma])^-n, (x - \[Mu])/\[Sigma] <= -\[Alpha]}}]我已经在C++中做到了这一点,但我想我应该在Mathematica中尝试一下,并使用它来拟合一些数据。所以请告诉我,如果我必须在Mathematica中做一个数值积分程序,或者还有更多关于解析积分的内容。
谢谢你,艾利安
发布于 2013-05-28 14:25:10
我稍微简化了你的函数(它可能看起来很小,但在本质上是巨大的)。在这种情况下,我将Mu设置为零。
\[Mu] = 0;现在我们有:
f[x_] := 1/(Sqrt[2 \[Pi]] \[Sigma]) Exp[-(1/2) ((x)/\[Sigma])^2];
g[x_] := 1/\[Pi] (\[Gamma]/((x)^2 + \[Gamma]^2));请求Mathematica卷积:
Convolve[f[x], g[x], x, y]
-((I E^(-((y + I \[Gamma])^2/(2 \[Sigma]^2))) (E^((2 I y \[Gamma])/\[Sigma]^2) \[Pi] Erfi[((y - I \[Gamma]) Sqrt[1/\[Sigma]^2])/Sqrt[2]] - \[Pi] Erfi[((y + I \[Gamma]) Sqrt[1/\[Sigma]^2])/Sqrt[2]] - Log[-y - I \[Gamma]] - E^((2 I y \[Gamma])/\[Sigma]^2) Log[y - I \[Gamma]] + E^((2 I y \[Gamma])/\[Sigma]^2) Log[-y + I \[Gamma]] + Log[y + I \[Gamma]]))/(2 Sqrt[2] \[Pi]^(3/2) \[Sigma]))虽然这并不完全是您所要求的,但它表明,如果您的函数稍微简单一点,Mathematica将能够进行集成。在你的问题中,除非我们知道更多关于Mu的信息,否则我不认为卷积的结果是封闭的。你可能会问math.stackexchange.com的人关于你的积分,看看有没有人想出一个封闭的形式。
https://stackoverflow.com/questions/16778623
复制相似问题