分数阶微分方程数值实验MATLAB编码.doc

分数阶微分方程数值实验MATLAB编码.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分数阶微分方程数值实验 实验题目: 考虑分数阶扩散微分方程 这里的,,其中初值为,边值,其真解为,计算其数值解。 实验算法: 1.将空间区间等距剖分成段,个节点为 ;将时间区间等距剖分成段,个节点为。 2.将方程组中的用有限算子离散,即 其中 , 其中 是分数阶。 再对利用中心差分进行离散,则得到的离散格式 将方程中的利用进行离散,其中为时间步长 方程的离散格式为 即 (1.2) , 等价于下面的矩阵形式 (1.3) 其中,这里的, 要求方程的数值解,即求系统。 程序代码: function gg_alph = g( M,alph ) gg_alph = zeros( M+1,1 ); gg_alph(1,1) = 1; for i = 1:M gg_alph( i+1,1 ) = gamma( i-alph ) / ( gamma( -alph ) * gamma( i+1 ) ); end End 主程序 T = 1; M = 100;%空间步数 N = M;%时间步数 h = 1/M;%空间步长 tau = T/N;%时间步长 x = 0:h:1; t = 0:tau:T; alph = 1.8; ue = zeros( M+1,N+1 ); u = ue; D=zeros(M-1,1); a=D; f = @( x,t ) -( 1 + x ) .* exp( -t ) .* x.^3;%右端函数 initial_condation = @( x ) x.^3; left_boundary = @( t ) 0; right_boundary = @( t ) exp( -t ); exact = @( x,t ) exp( -t ) .* x.^3; d = @( x ) gamma( 2.2 ) * x.^2.8 / 6; for k=1:N+1 ue(1:end,k) = exact( x(1:end),t(k) );%真解 end %问题初边值条件 u( 1:end,1 ) = initial_condation( x ); u(1,1:end) = left_boundary(t); u(end,1:end) = right_boundary(t); %构造矩阵A A=zeros(M-1,M-1); for i = 1:M-1 D( i,1 ) = d( x( i+1 ) ); end a = tau * D / ( 2 * h^alph ); gg = g( M,alph ); for i = 1:M-1 for k = 1:N-1 if k = i-1 A( i,k ) = a( i,1 ) * gg( i-k+2,1 ); elseif k == i A( i,k ) = a( i,1 ) * gg( 2,1 ); elseif k == i+1 A( i,k ) = a( i,1 ) * gg( 1,1 ); else A( i,k ) = 0; end end end for k = 1:N b = ( eye( M-1 ) + A ) * u( 2:end-1,k ) + tau * f( x( 2:end-1 ),t( k )+tau/2 ) + ... a .* ( gg( 3:end ) * ( u( 1,k+1 ) + u( 1,k ) ) .* ones( M-1,1 ) ); b( end,1 ) = b( end,1 ) + a( end,1 ) * gg( 1 ) * ( u( end,k+1 ) + u( end,k ) ); u( 2:end-1,k+1 ) = ( eye(M-1) - A ) \ b;%数值解 end error = abs(u-ue); figure [X,Y]=meshgrid(x,t); mesh(X,Y,error); 该图是方程对于的数值解

文档评论(0)

_______ + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档