偏微分方程数值算法及matlab实验报告(6)

偏微分方程数值算法及matlab实验报告(6)

ID:21987264

大小:144.72 KB

页数:8页

时间:2018-10-26

偏微分方程数值算法及matlab实验报告(6)_第1页
偏微分方程数值算法及matlab实验报告(6)_第2页
偏微分方程数值算法及matlab实验报告(6)_第3页
偏微分方程数值算法及matlab实验报告(6)_第4页
偏微分方程数值算法及matlab实验报告(6)_第5页
资源描述:

《偏微分方程数值算法及matlab实验报告(6)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、偏微分方程数值实验报告六实验题目:川Ritz-Galerkin方法求边值问题0<义<1-u--U=A*2“(0)=0,“(1)=1的第n次近似人⑺,基函数为资(x)=W/7(…),i=l,2,...n并用表格列出0.25,0.5,0.75三点处的真解和/7=1,2,3,4时的数值解。实验算法:将上述边值问题转化为基于虚功方程的变分问题为:求WG//(!,(/),满足蛛,,v)=-(x,X),VveHjj(/)其中v)=(Lw,v)=£(u"v+uv)dx=£(-u*v’+uv)dx记w(x)=sin(;rx),引入和(/)的n维近似子空间%

2、={於,么,…,氏}=sin(i7rx),i=1,2,...,/IRitz-Galerkin公式:)=O,.),j=1,2,...,《,则问题关于%下的近似变分问题解7=1n打人中的系…,e□"满足[砌為)'•=17=1程序代码:%主函数pde=modeldata();I=[o,l];%积分精度quadorder=10;n=[l,2,3,4];fori=l:length(n)uh{i}=Galerkin(pde,工,n(i),quadorder);endshowsolution(uh{1},▼-bo1);holdonshowsolution(

3、uh{2},1-rx•);holdonshowsolution(uh{3},▼-•ko▼);holdonshowsolution(uh{4},’——k*’);holdofftitle(1thesolutionoftheunf);xlabel(’x▼);ylabel(1u1);legend('n=l1,'n=2’,1n=3',丨n=41);%计算这三点的数值解x=[l/4,l/2,3/4];un=zeros(length(n),3);fori=l:length(n)[v,]=basis(x,n(i));un(i,:)=(v1*uh{i})1;e

4、ndformatshortedisp(1un1);disp(un);%存储数据functionpde=modeldata()pde=struct(ff',@f);functionz=f(x)z=x.*x;endend%Galerkin•方法functionuh=Galerkin(pde,I,n,quadorder)h=I(2)-1(1);[lambda,weight]=quadptsld(工,quadorder);nQuad=length(weight);A=zeros(n,n);b=zeros(n,1);forq=l:nQuadgx=lam

5、bda(q);w=weight(q);x=[0.25;0.5;0.75];[phi,gradPhi]=basis(gx,n);A=A+(-gradPhi*gradPhi*+phi*phi1)*w;b=b+pde•f(gx)*phi*w;endA=h*A;b=h*b;uh=Ab;end%构造基函数function[phi,gradPhi]=basis(x,n)m=length(x);w=sin(pi*x);v=ones(n,m);v(2:end,:)=bsxfun(@times,v(2:end,:),x);v=cumprod(v,1);phi

6、=bsxfun(@times,v,w);gw=pi*cos(pi*x);gv=[zeros(l,m);v(1:end-1,:)];gv(3:end,:)=bsxfun(@times,(2:n-1)1,gv(3:end,:));gradPhi=bsxfun(@times,v,gw)+bsxfun(@times,gv,w);end%数值解的图像functionshowsolution(u,varargin)x=0:0.01:1;n=length(u);[v,]=basis(x,n);y=v1*u;plot(x,y,varargin{:});%va

7、rargin:aninputvariableinafunctionend%系数矩阵Afunction[lambda,weight]=quadptsld(I,quadorder)numPts=ceil((quadorder+1)/2);ifnumPts>10numPts=10;endswitchnumPtscase1A=[02.0000000000000000000000000];case2A=[0.57735026918962576450914881.0000000000000000000000000-0.577350269189625764

8、50914881.0000000000000000000000000];case3A=[00.88888888888888888888888890.77459666

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。