隐式差分方程组差分法matlab,一维扩散方程的有限差分法matlab

《一维扩散方程的有限差分法matlab》由会员分享,可在线阅读,更多相关《一维扩散方程的有限差分法matlab(7页珍藏版)》请在人人文库网上搜索。

1、一维扩散方程有限差分法计算物理实验作业七陈万 物理学2013级 l 题目:编程求解一维扩散方程解取。输出t=1,2,.,10时刻x和u(x),并与解析解u=exp(x+0.1t)作比较。l 主程序:% 一维扩散方程有限差分法clear,clc;%定义初始常量a1 = 1; b1 = 1; c1 = 0; a2 = 1;b2 = -1; c2 = 0;a0 = 1.0; t_max = 10; D = 0.1; h = 0.1; tao = 0.1;%调用扩散方程子函数求解u = diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2);l 子程序。

2、1:function output = diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2)% 一维扩散方程有限差分法,采用隐式六点差分格式(Crank-Nicolson)% a0: x最大值% t:_max: t最大值% h: 空间步长% tao: 时间步长% D:扩散系数% a1,b1,c1是(x=0)边界条件系数;a2,b2,c2是(x=a0)边界条件系数x = 0:h:a0;n = length(x);t = 0:tao:t_max;k = length(t); P = tao * D/h2;P1 = 1/P + 1;P2 = 1/P。

3、 - 1;u = zeros(k,n);%初始条件u(1,:) = exp(x);%求A矩阵对角元素dd = zeros(1,n);d(1,1) = b1*P1+h*a1;d(2:(n-1),1) = 2*P1;d(n,1) = b2*P1+h*a2;%求A矩阵对角元素下面一行元素ee = -ones(1,n-1);e(1,n-1) = -b2;%求A矩阵对角元素上面一行元素ff = -ones(1,n-1);f(1,1) = -b1;R = zeros(k,n);%求R%追赶法求解for i = 2:kR(i,1) = (b1*P2-h*a1)*u(i-1,1)+b1*u(i-1,2)+2*。

4、h*c1;for j = 2:n-1R(i,j) = u(i-1,j-1)+2*P2*u(i-1,j)+u(i-1,j+1);endR(i,n) = b2*u(i-1,n-1)+( b2*P2-h*a2)*u(i-1,n)+2*h*c2;M = chase(e,d,f,R(i,:);u(i,:) = M;plot(x,u(i,:); axis(0 a0 0 t_max); pause(0.1)endoutput = u;% 绘图比较解析解和有限差分解X,T = meshgrid(x,t);Z = exp(X+0.1*T);surf(X,T,Z),xlabel(x),ylabel(t),zlab。

5、el(u),title(解析解);figuresurf(X,T,u),xlabel(x),ylabel(t),zlabel(u),title(有限差分解);l 子程序2:function M = chase(a,b,c,f)% 追赶法求解三对角矩阵方程,Ax=f% a是对角线下边一行元素% b是对角线元素% c是对角线上边一行元素% M是求得结果,以列向量形式保存n = length(b);beta = ones(1,n-1);y = ones(1,n);M = ones(n,1);for i = (n-1):(-1):1a(i+1) = a(i);end% 将a矩阵和n对应beta(1) =。

6、 c(1)/b(1);for i = 2:(n-1)beta(i) = c(i)/( b(i)-a(i)*beta(i-1) );endy(1) = f(1)/b(1);for i = 2:ny(i) = (f(i)-a(i)*y(i-1)/(b(i)-a(i)*beta(i-1);endM(n) = y(n);for i = (n-1):(-1):1M(i) = y(i)-beta(i)*M(i+1);end endl 结果:对比分析两图,结果令人满意。取出t_max时刻u值分析:()有限差分解如下:2.3.3.3.4.4.4.5.6.6.7.解析解如下:2.2.3.3.4.4.4.5.6.6.7.分析数据可知误差量级为=0.12+0.12=0.02l 总结:(1) 隐式六点差分格式(Crank-Nicolson)基本思想是用前一时刻三个点表示后一时刻三个点。因为不是直接表示u(k+1,i),故称为隐式差分。(2) x由等步长被分割为N个点,列出N个方程。采用追赶法求解得到结果。原理很简单,关键是求解AU=R中A和R。(3) 子函数2功能是实现追赶法,该程序中没有直接用A来表示三对角矩阵,而是把3列对角元素直接拿出来,因此在调用时应当注意各对角元素位置,避免调用错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值