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

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

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
偏微分方程数值实验报告六实验题目:用Ritz-Galerkin方法求边值问题的第n次近似,基函数为并用表格列出0.25,0.5,0.75三点处的真解和时的数值解。实验算法:将上述边值问题转化为基于虚功方程的变分问题为:求,满足其中记,引入的n维近似子空间利用Ritz-Galerkin公式:,则问题关于下的近似变分问题解中的系数满足程序代码:%主函数pde=modeldata(); I=[0,1];%积分精度quadorder=10;n=[1,2,3,4]; fori=1:length(n)uh{i}=Galerkin(pde,I,n(i),quadorder); endshowsolution(uh{1},-bo);holdonshowsolution(uh{2},-rx);holdonshowsolution(uh{3},-.ko);holdonshowsolution(uh{4},--k*);holdofftitle(the solution of the un);xlabel(x);ylabel(u);legend(n=1,n=2,n=3,n=4);%计算这三点的数值解x=[1/4,1/2,3/4];un=zeros(length(n),3);fori=1:length(n)[v, ]=basis(x,n(i)); un(i,:)=(v*uh{i}); endformatshortedisp(un);disp(un);%存储数据functionpde=modeldata()pde=struct(f,@f);function z=f(x) z=x.*x;endend%Galerkin方法function uh=Galerkin(pde,I,n,quadorder)h=I(2)-I(1);[lambda,weight]=quadpts1d(I,quadorder);nQuad=length(weight);A=zeros(n,n);b=zeros(n,1);for q=1:nQuadgx=lambda(q); w=weight(q); x=[0.25;0.5;0.75]; [phi,gradPhi]=basis(gx,n); A=A+(-gradPhi*gradPhi+phi*phi)*w; b=b+pde.f(gx)*phi*w;endA=h*A;b=h*b;uh=A\b;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=bsxfun(@times,v,w); gw=pi*cos(pi*x);gv=[zeros(1,m);v(1:end-1,:)];gv(3:end,:)=bsxfun(@times,(2:n-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=v*u;plot(x,y,varargin{:});% varargin: an input variable in a functionend%系数矩阵Afunction [lambda,weight] = quadpts1d(I,quadorder)numPts = ceil((quadorder+1)/2); ifnumPts 10numPts = 10; endswitchnumPtscase 1 A = [0 2.0000000000000000000000000];case 2 A = [0.5773502691896257645091488 1.0000000000000000000000000 -0.5773502691896257645091488 1.0000000000000000000000000];case 3 A = [ 0 0.8888888888888888888888889 0.7745966692414833770358531 0.5555555555555555555555556 -0.774596669241

文档评论(0)

moon8888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档