1D quadratic finite volume element method
- We seek the solution between Ω = ( 0 , 1 ) \Omega=(0,1) Ω=(0,1);
- Model Problem:
− d d x ( p d u d x ) + r d u d x + q u = f -\frac{d}{dx}(p\frac{du}{dx})+r\frac{du}{dx}+qu=f −dxd(pdxdu)+rdxdu+qu=f
MATLAB code:
%一维二次元有限体积法
%两点边值问题
%对q,r相关计算近似,最好取值较小,否则精度阶被污染
% clc,clear;
% tic
format long;
iter=4;
%---------------------------------------------
%%eg1
% pde.left=0;
% pde.right=1;
% pde.Alpha=0;%left BC Dirichlet
% pde.Beta=-pi;%right BC Neumann
% pde.p=@(x) x;
% pde.r=@(x) 0;
% pde.q=@(x) x;
% pde.f=@(x) pi^2*x.*sin(pi*x)-pi*cos(pi*x)+x.*sin(pi*x);
% pde.realu=@(x) sin(pi*x);
% pde.Drealu=@(x) pi*cos(pi*x);
%---------------------------------------------
%%eg2
pde.left=0;%左边界
pde.right=1;%右边界
pde.Alpha=0;%左边值条件Dirichlet
pde.Beta=-pi;%右边值条件Neumann
pde.p=@(x) 1;
pde.r=@(x) 0;
pde.q=@(x) 0;
pde.f=@(x) pi^2*sin(pi*x);
pde.realu=@(x) sin(pi*x);
pde.Drealu=@(x) pi*cos(pi*x);
%---------------------------------------------
[L2_convergenceOrder,H1_convergenceOrder]=convergenceOrder(iter,pde)
function [ERRL2,ERRH1]=clacerr(N,pde)
h=(pde.right-pde.left)/N;
x=pde.left:h:pde.right;%已经等分,N+1个点 %x(i)=x_i-1,初始剖分
%下面是对偶剖分
X=x+h/2;X=X(1:N)</