在matlab中用数值求解双积分

时间:2013-10-21 04:54:13

标签: algorithm matlab math

在论文"The fractional Laplacian operator on bounded domains as a special case of the nonlocal diffusion operator"中。作者将有界域上的分数拉普拉斯方程解为非局部扩散方程。

我试图在matlab中实现一维问题的有限元逼近(请参阅上述论文的第14页)。

我使用$ \ phi_k $的以下定义,因为文件中提到$ \ phi $是$hat\;function$ \begin{equation} \phi_{k}(x)=\begin{cases} {x-x_{k-1} \over x_k\,-x_{k-1}} & \mbox{ if } x \in [x_{k-1},x_k], \\ {x_{k+1}\,-x \over x_{k+1}\,-x_k} & \mbox{ if } x \in [x_k,x_{k+1}], \\ 0 & \mbox{ otherwise},\end{cases} \end{equation}

$ \ Omega =( - 1,1)$和$ \ Omega_I =( - 1- \ lambda,-1)\ cup(1,1 + \ lambda)$以便$ \ Omega \ cup \ Omega_I = (-1- \拉姆达,1 + \拉姆达)$

对于整数K,N,我们定义$ \ overline {\ Omega \ cup \ Omega_I} = [ - 1- \ lambda,1 + \ lambda] $ as的分区,

\开始{}方程 -1- \拉姆达= X _ { - K}< ...

最后我们必须解决的方程式才能得到解的一些系数$ \ tilde {u_N} = \ sum_ {i = -K} ^ {K + N} U_j \ phi_j(x)$ $ U_j $是:

enter image description here

其中$ i = 1,...,N-1 $。

我需要指针以简化和解决matlab中的LHS双积分。我在文章(第15页)中写道,我应该使用四点高斯求积分用于内积分和quadgk.m函数用于外积分,但是因为内积分的极限是x,我怎么能在它上面应用四点高斯积分?任何帮助都将受到赞赏。 感谢。

您可以找到原始问题here。(因为SO不支持Latex)

2 个答案:

答案 0 :(得分:1)

首先要解决问题,请查看dblquad和/或quad2d

最后,您需要自定义求积法,因此您应该执行以下操作:

% The integrand is of course a function of both x and y
integrand = @(x,y) (phi_j(y) - phi_j(x))*(phi_i(y) - phi_i(x))/abs(y-x)^(2*s+1);

% The inner integral is a function of x, and integrates over y
inner = @(x) quadgk(@(y)integrand(x,y), x-lambda, x+lambda);

% The inner integral is integrated over x to yield the value of the double integral 
dblIntegral = quadgk(inner, -(1+lambda), 1+lambda)

我曾两次使用quadgk,但您可以使用任何其他(自定义)正交方法替换。

顺便说一下 - 作者提出(非自适应)4点高斯方法的原因是什么?这样,你就没有估计(和/或控制)内部积分中的错误...

答案 1 :(得分:0)

你可以做4点1D高斯积分。您似乎认为它意味着2D积分。不是这样 - 这是假设1D以上的高阶正交。

如果您正在解决一维有限元问题,那么在2D域上进行积分是没有意义的。

我没有读过这篇论文,但这是我从FEA那里回忆起的。

相关问题