两点边值问题
考虑两点边值问题:
这里 $y\in \Lambda=[0,1]$,通过变换方程的方式变到 $[-1,1]$ 的标准形式,再利用 Legendre 谱方法求解。
令 $x\in I=[-1,1]$,$y=\frac{x}{2}+\frac{1}{2}$,$U(x)=u(y)-1$,变换后的方程
其中 $F(x)=f(2x-1)-1$.
Legendre-Galerkin 方法
弱形式:
令 $\phi_{k}(x)=L_{k}(x)+a_{k} L_{k+1}(x)+b_{k} L_{k+2}(x)$ 满足边界条件,可得
记 $X_N=\mathrm{span}\{\phi_{k} , k=0,1,\cdots ,N-2. \}.$
逼近解展开
谱格式:
将 $u_{N}(x)$ 的展开式代入谱格式方程。令
取 $\phi=\phi_{k}$,可得到以下方程组
刚度矩阵 $S=(s_{jk})$ 是一个对角矩阵 [P146-4.22],它的非零元素为
质量矩阵 $M=(m_{jk})$ 是一个对称的五对角矩阵 [P146-4.23],它的非零元素为
谱方法可以求解得到 $U_{N}(x)$,通过变换 $u(y)=U(x)+1$ 得到原方程的数值解。
数值求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
clear all; close all; Nvec=3:18;
L2_Err=[]; condnv=[];
for N=Nvec [xv,wv]=legs(N+1); Lm=lepolym(N,xv); yv=1/2*(xv+1); U=(1-yv).^2.*exp(yv)-1; F=(2-4*yv).*exp(yv)-1; e1=0:N-2; e2=0:N-3; e3=0:N-4; S=diag( (4*e1+6).*(e1+1).^2./(e1+2).^2 ); M=diag(2./(2*e1+1)+2*(2*e1+3)./(e1+2).^4+2*((e1+1)./(e1+2)).^4./(2*e1+5))... +diag( 2./(e2+2).^2-2*(e2+1).^2./((e2+2).^2.*(e2+3).^2) , 1 )... +diag(2./(e2+2).^2-2*(e2+1).^2./((e2+2).^2.*(e2+3).^2),-1)... +diag( -2*(e3+1).^2./((2*e3+5).*(e3+2).^2) , 2 )... +diag(-2*(e3+1).^2./((2*e3+5).*(e3+2).^2),-2); A=4*S+M; Pm=(Lm(1:end-2,:)+diag((2*e1+3)./(e1+2).^2)... *Lm(2:end-1,:)-diag((e1+1).^2./(e1+2).^2)*Lm(3:end,:)); b=Pm*diag(wv)*F; Uh=A\b; Un=Pm'*Uh; L2_error=sqrt(((Un-U).^2)'*wv); L2_Err=[L2_Err;L2_error]; condnv=[condnv,cond(A)]; end
plot(Nvec,log10(L2_Err),'bo-','MarkerFaceColor','w','LineWidth',1) grid on
set(gca,'fontsize',12) xlabel('N','fontsize', 14), ylabel('log_{10}Error','fontsize',14)
xticks(2:2:18) yticks(-16:2:0) xlim([2 18]) ylim([-16 0])
|
参考书籍
- Spectral Methods: Algorithms, Analysis and Applications.