0

我正在使用 MATLAB 和这个函数:

function [x,w,P]=lglnodes(N)

% Truncation + 1
N1=N+1;

x=cos(pi*(0:N)/N)';

% Legendre Vandermonde Matrix
P=zeros(N1,N1);

xold=2;

while max(abs(x-xold))>eps

    xold=x;

    P(:,1)=1;    P(:,2)=x;

    for k=2:N
        P(:,k+1)=( (2*k-1)*x.*P(:,k)-(k-1)*P(:,k-1) )/k;
    end

    x=xold-( x.*P(:,N1)-P(:,N) )./( N1*P(:,N1) );

end

w=2./(N*N1*P(:,N1).^2);

使用这个函数,我可以获得权重和节点,我可以在它们上集成我最喜欢的函数。例如,我可以调用lglnodes(400 - 1)并获取N = 400. 然后我有这个代码:

我想对 Gauss-Laguerre (GaussLaguerre(n, alpha)函数)做同样的事情,但我不明白如何使用输入来获得与上述相同的权重。你能解释一下如何调整输入吗?如何设置nalpha

4

1 回答 1

1

Gauss-Lobatto 和 Gauss-Laguerre 是两个不同积分的积分点/权重:

  • Lobatto 用于 (-1, 1) 中的未加权积分,
  • Laguerre 适用于 (0, infty) 和 weight x^alpha exp(-x)

你不能期望得到相同的重量。

于 2020-06-02T08:38:27.337 回答