我有一些代码可以做到这一点,但我不喜欢使用我不理解的东西。这是代码
N1=N+1;
cheb=cos(pi*(0:N)/N)';
unif=linspace(-1,1,N1)';
if N<3
x=cheb;
else
x=cheb+sin(pi*unif)./(4*N);
end
P=zeros(N1,N1);
%N1xN1 zero matrix
xold=2;
%eps= epsilon!
while max(abs(x-xold))>eps
xold=x;
P(:,1)=1;
P(:,2)=x;
%set first collumn entries to 1 (P(:,1) = 1);
%set second collumn entries to x (P(:,2) = x);
for k=2:N
P(:,k+1)=( (2*k-1)*x.*P(:,k)-(k-1)*P(:,k-1) )/k;
%%Bonnets formula ;)
end
x=xold-( x.*P(:,N1)-P(:,N) )./( N1*P(:,N1));
end
%---chebyshev differentiation matrix---------------------------------------- ---------
x=-x;
X=repmat(x,1,N1);%set every collumn of X to x
Xdiff=X-X'+eye(N1);
L=repmat(P(:,N1),1,N1);
L(1:(N1+1):N1*N1)=1;
D=(L./(Xdiff.*L'));
D(1:(N1+1):N1*N1)=0;
D(1)=-(N1*N)/4;
D(N1*N1)=(N1*N)/4;
从理论上讲,我真的很想了解这个矩阵是如何形成的,然后更重要的是,如何在 MATLAB 中实现。
直到评论
% --- chebyshev differenti....
我明白。
我似乎找不到任何与这个矩阵的形成有关的文件。
注意:我可以接受的语法,它是我遇到问题的矩阵的实际形成。我已经在 MSE 上发布了这个,它被搁置了。我查看了帮助中心,这个网站似乎符合描述。