热传导方程向前差分格式的MATLAB程序

合集下载

导热方程求解matlab

导热方程求解matlab

使用差分方法求解下面的热传导方程2(,)4(,)0100.2t xx T x t T x t x t =<<<<初值条件:2(,0)44T x x x =-边值条件:(0,)0(1,)0T t T t ==使用差分公式1,,1,222(,)2(,)(,)2(,)()i j i j i j i j i j i j xx i j T x h t T x t T x h t T T T T x t O h h h -+--++-+=+≈,1,(,)(,)(,)()i j i j i j i jt i j T x t k T x t T T T x t O k k k ++--=+≈上面两式带入原热传导方程,1,1,,1,22i j i ji j i j i jT T T T T k h +-+--+= 令224k r h=,化简上式的 ,1,1,1,(12)()i j i j i j i j T r T r T T +-+=-++ix jt j编程MATLAB 程序,运行结果如下x t Tfunction mypdesolutionc=1;xspan=[0 1];tspan=[0 0.2];ngrid=[100 10];f=@(x)4*x-4*x.^2;g1=@(t)0;g2=@(t)0;[T,x,t]=rechuandao(c,f,g1,g2,xspan,tspan,ngrid);[x,t]=meshgrid(x,t);mesh(x,t,T);xlabel('x')ylabel('t')zlabel('T')function [U,x,t]=rechuandao(c,f,g1,g2,xspan,tspan,ngrid)% 热传导方程:% Ut(x,t)=c^2*Uxx(x,t) a<x<b ts<t<tf% 初值条件:% u(x,0)=f(x)% 边值条件:% u(a,t)=g1(t)% u(b,t)=g2(t)%% 参数说明% c:方程中的系数% f:初值条件% g1,g2:边值条件% xspan=[a,b]:x的取值范围% tspan=[ts,tf]:t的取值范围% ngrid=[n,m]:网格数量,m为x网格点数量,n为t的网格点数量% U:方程的数值解% x,t:x和t的网格点n=ngrid(1);m=ngrid(2);h=range(xspan)/(m-1);x=linspace(xspan(1),xspan(2),m);k=range(tspan)/(n-1);t=linspace(tspan(1),tspan(2),n);r=c^2*k/h^2;if r>0.5error('为了保证算法的收敛,请增大步长h或减小步长k!')ends=1-2*r;U=zeros(ngrid);% 边界条件U(:,1)=g1(t);U(:,m)=g2(t);% 初值条件U(1,:)=f(x);% 差分计算for j=2:nfor i=2:m-1U(j,i)=s*U(j-1,i)+r*(U(j-1,i-1)+U(j-1,i+1));endend。

热传导模型方程matlab

热传导模型方程matlab

热传导模型方程引言热传导模型方程是描述热传导过程的数学模型,它在物理学、工程学等领域中有着广泛的应用。

该方程可以用来求解物体内部的温度分布以及热量的传输过程。

本文将重点介绍热传导模型方程在Matlab中的实现方法及应用。

热传导模型方程热传导模型方程是一种偏微分方程,用于描述物体内部温度分布随时间的变化。

它的一般形式如下:∂u/∂t = κ∇²u其中,u是温度分布函数,t是时间,κ是热传导率,∇²是拉普拉斯算子。

离散化处理为了在计算机中求解热传导模型方程,我们需要对其进行离散化处理。

通常,我们将物体分成若干个小区域,每个小区域的温度可以看作是一个离散节点。

然后,我们利用数值差分方法将偏微分方程转化为差分方程。

最常用的数值差分方法是有限差分法,其中最简单的方法是二阶中心差分法。

二阶中心差分法二阶中心差分法是一种常用的数值差分方法,它能够较为准确地近似热传导模型方程。

该方法利用了节点的前后两个时间步长的温度值和空间步长的温度梯度。

具体来说,对于一个二维网格,节点(i, j)的二阶中心差分近似可以表示为:(∂u/∂t)(i, j) ≈ (u(i+1, j) - 2u(i, j) + u(i-1, j))/(Δx²) + (u(i, j+1) - 2u(i, j) + u(i, j-1))/(Δy²)其中,Δx和Δy分别是空间步长。

Matlab实现在Matlab中,我们可以通过编写代码来求解热传导模型方程。

下面是实现该方程的一个示例代码:% 定义初始条件和边界条件N = 50; % 网格节点数L = 1; % 系统尺寸T = 1; % 总时间dx = L/N;dt = dx^2/4;x = linspace(0, L, N+1);y = linspace(0, L, N+1);[X, Y] = meshgrid(x, y);u = sin(pi*X).*sin(pi*Y); % 初始温度分布% 迭代求解热传导模型方程for t = 0:dt:Tu_new = u + dt*(del2(u)/dx^2);u = u_new;end% 可视化温度分布surf(X, Y, u)xlabel('x')ylabel('y')zlabel('Temperature')在上面的代码中,我们首先定义了初始条件和边界条件,然后利用循环迭代的方式求解热传导模型方程。

一维非定常热传导方程的求解及matlab源程序

一维非定常热传导方程的求解及matlab源程序

一维非定常热传导方程的求解及matlab 源程序1、计算模型本题计算的模型示意图如图1所示,在已知两边界点温度数值的情况下,根据一维非定常热传导方程,求解整个计算域长度上的温度分布。

一维非定常热传导方程为0x Tt T 22=∂∂⋅-∂∂α,式中α=1。

总长为10m ,两端的边界数值分别为T0=100℃和Tn=300℃。

计算域内的热传导满足方程:∂T ∂t −∂∙∂2T∂X2=0图1 一维非定常热传导方程计算模型示意图2、数值分析方法在本题的计算过程中,用到的数值分析方法有:差分近似导数,追赶法解三对角方程组。

对于一维非定常热传导而言,热传导参数的分布是连续的,具有无穷多个数值,它们的数值由给定的非定常热传导方程决定。

但是微分方程无法直接求解,因此通过差分近似导数的方法,将微分方程转化成代数方程,然后通过迭代即可计算出平衡时刻各个参考点的温度。

在计算时,先由一维非定常热传导的微分方程,推导出与其对应的线性方程,将第i 个时间层上某个离散点处的温度用第i-1个时间层上某些点的温度数值来表示。

这样在求解过程中,先假定第0时间层的时刻各参考点的温度初值,然后运用线性方程组推导出第1时间层时刻,各个参考点的温度数值,再求第2时间层时刻各个参考点处的温度数值,依次类推,直到相邻时间层上的速度残差达到预先设定的收敛要求为止。

此计算模型中给定的左边界温度值为T0=100℃,右边界温度值为Tn=300℃,均恒定不变。

总长度10m 进行N 等分。

3、数值计算过程一维非定常热传导方程为:0x T t T 22=∂∂⋅-∂∂α,移项处理得:22xT t T ∂∂⋅=∂∂α一阶向前差分:t T ∂∂=t 1n ∆-+nii T T ;二阶中心差分:()211222x T x T T T ni n i n i ∆+⋅-⋅∂=∂∂⋅∂-+; 因此可化简为代数方程为:()2111n 2t x T T T T T ni n i n i n i i ∆+⋅-⋅∂=∆--++ ; 即 ()()nin i n i n i iT T T T x tT ++⋅-⋅∆∆⋅∂=-++1121n 2;用()n i n i T T 11121++++代替n i T 1+,用()n i n i T T ⋅-⋅-+22211代替n i T ⋅-2,用()ni n i T T 11121-+-+代替n i T 1-,即: ()()()()()⎥⎦⎤⎢⎣⎡++⋅-⋅-++⋅∆∂=∆+⋅-⋅∂=∆--+-++++-++n i n i n i n i n i n i n i n i n i n i i T T T T T T x x T T T T T 111111122111n 212221212t ()()()()()n i n i n i n i n i n i n i T T T x t T T x t T x t Tx t 1121121211222212-+++++-+⋅-⋅∆⋅∆⋅∂--=⋅∆⋅∆⋅∂+⋅⎪⎪⎭⎫ ⎝⎛∆∆⋅∂+-⋅∆⋅∆⋅∂因此,上式的含义是:第n+1个时间层上第i-1个,第i 个和第i+1个参考点处的温度值,与第n 个时间层上第i-1个,第i 个和第i+1个参考点处的温度值的关系式;代数关系式示意图如图2所示:图2代数方程式示意图令A=()22x t ∆⋅∆⋅∂,B=()21x t ∆∆⋅∂+ ,Ki=()()n i n i n i n i T T T x t T 11222-++⋅-⋅∆⋅∆⋅∂-- 则上式可化简为:Ki T A T B T A n i n i n i =⋅+⋅-⋅++++-11111即2321K T A T B T A =⋅+⋅-⋅'21232K T A K T A T B =⋅-=⋅+⋅-3432K T A T B T A =⋅+⋅-⋅112---=⋅+⋅-⋅n n n n K T A T B T A'1112----=⋅-=+⋅-⋅n n n n n K T A K T B T A⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⋅⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--'16543'2165432B -A 0 0 0 0 0 00 0A B -A 0 0 00 0 0A B -A 0 00 0 0 0A B -A 00 0 0 0 0A B -A 0 0 0 0 0 0A B -n n K K K K K K T T T T T T当第0时间层时刻各个参考点温度已知时,方程式右侧的矩阵[K2’ K3 K4 K5 ……Kn-2 Kn-1’] ‘为已知量,系数矩阵U 也为已知量,则可以计算出第1时间层各个参考点的温度值[T2 T3 T4 T5 T6……Tn-1] ‘,并且T1=100,Tn=300。

matlab差分法求解传热微分方程

matlab差分法求解传热微分方程

matlab差分法求解传热微分方程matlab差分法求解传热微分方程是一种利用有限差分法对传热微分方程进行数值求解的方法。

有限差分法是一种广泛应用于偏微分方程求解的数值方法,它将连续的空间和时间离散化,通过离散的节点上的值来逼近连续的解。

1.matlab差分法求解传热微分方程求解步骤与规则:在使用matlab差分法求解传热微分方程时,通常遵循以下步骤和规则:(1)确定问题的物理模型:首先明确传热问题的类型,如稳态或非稳态传热,以及问题的边界条件和初始条件。

(2)离散化:将求解域划分为离散的网格节点,用于表示空间坐标。

同时,根据时间步长对时间进行离散化。

(3)建立差分方程:根据离散化的空间和时间,将传热微分方程转化为差分方程。

这通常包括对空间导数和时间导数的差分处理。

(4)选择适当的差分格式:根据问题的稳定性要求,选择合适的差分格式。

常见的有限差分格式有向前差分、向后差分、中心差分等。

(5)编写matlab程序:根据所选的差分格式和差分方程,编写matlab 程序进行求解。

程序中需要包含迭代算法,如三角剖分法、平方根法等,以收敛解为最终结果。

(6)验证和分析:通过与理论解或实验数据进行对比,验证求解结果的正确性和稳定性。

此外,分析结果以了解传热过程的规律和特点。

2.matlab差分法求解传热微分方程使用场景:matlab差分法求解传热微分方程在以下场景中具有广泛应用:(1)建筑节能分析:通过求解建筑墙体内部的温度场,评估建筑物的保温性能,为建筑设计提供依据。

(2)电子散热设计:分析电子设备内部的传热过程,优化散热结构,提高设备的工作效率和可靠性。

(3)能源工程:研究能源转换和传输过程中的热损失,为提高能源利用效率提供理论支持。

(4)材料科学:研究材料的热传导性能,为新材料的开发和应用提供参考。

(5)生物医学:分析生物组织内的传热过程,辅助诊断和治疗相关疾病。

总之,matlab差分法在求解传热微分方程方面具有较高的准确性和灵活性,为各种传热问题的分析和解决提供了有力工具。

热传导方程有限差分法的MATLAB实现

热传导方程有限差分法的MATLAB实现

热传导方程有限差分法的MATLAB实现
史策
【期刊名称】《咸阳师范学院学报》
【年(卷),期】2009(24)4
【摘要】对于有界热传导齐次方程的混合问题,用分离变量法求解往往很复杂.为了更好地理解热传导方程的解,使用MATLAB软件将方程的解用图像表示出来.通过区域转换的思想,利用MATLAB编程实现一定区域内热传导方程的有限差分方法,数值表明了方法的可行性和稳定性.
【总页数】4页(P27-29,36)
【作者】史策
【作者单位】西安建筑科技大学,理学院,陕西,西安,710055
【正文语种】中文
【中图分类】O552
【相关文献】
1.有限差分法解薛定谔方程与MATLAB实现 [J], 刘晓军
2.放射性气体扩散方程有限差分法的MATLAB实现 [J], 龙亮;张振华;姜林;周科廷;莫懿新
3.泊松方程的有限差分法的MATLAB实现 [J], 冯立伟;徐涛;屈福志
4.拉普拉斯方程有限差分法的MATLAB实现 [J], 谢焕田;吴艳
5.基于MATLAB的电磁场二维场域有限差分法分析 [J], 林向会;谢本亮
因版权原因,仅展示原文概要,查看原文内容请购买。

【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现

【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现

第1章前言1.1问题背景在史策教授的《一维热传导方程有限差分法的MATLAB实现》和曹刚教授的《一维偏微分方程的基本解》中,对偏微分方程的解得MATLAB实现问题进行过研究,但只停留在一维中,而实际中二维和三维的应用更加广泛。

诸如粒子扩散或神经细胞的动作电位。

也可以作为某些金融现象的模型,诸如布莱克-斯科尔斯模型与Ornstein-uhlenbeck过程。

热方程及其非线性的推广形式也被应用与影响分析。

在科学和技术发展过程中,科学的理论和科学的实验一直是两种重要的科学方法和手段。

虽然这两种科学方法都有十分重要的作用,但是一些研究对象往往由于他们的特性(例如太大或太小,太快或太慢)不能精确的用理论描述或用实验手段来实现。

自从计算机出现和发展以来,模拟那些不容易观察到的现象,得到实际应用所需要的数值结果,解释各种现象的规律和基本性质。

科学计算在各门自然科学和技术科学与工程科学中其越来越大的作用,在很多重要领域中成为不可缺少的重要工具。

而科学与工程计算中最重要的内容就是求解科学研究和工程技术中出现的各种各样的偏微分方程或方程组。

解偏微分方程已经成为科学与工程计算的核心内容,包括一些大型的计算和很多已经成为常规的计算。

为什么它在当代能发挥这样大的作用呢?第一是计算机本身有了很大的发展;第二是数值求解方程的计算法有了很大的发展,这两者对人们计算能力的发展都是十分重要的。

1.2问题现状近三十年来,解偏微分方程的理论和方法有了很大的发展,而且在各个学科技术的领域中应用也愈来愈广泛,在我国,偏微分方程数值解法作为一门课程,不但在计算数学专业,而且也在其他理工科专业的研究生的大学生中开设。

同时,求解热传导方程的数值算法也取得巨大进展,特别是有限差分法方面,此算法的特点是在内边界处设计不同于整体的格式,将全局的隐式计算化为局部的分段隐式计算。

而且精度上更好。

目前,在欧美各国MATLAB的使用十分普及。

在大学的数学、工程和科学系科,MATLAB苏佳园:二维热传导方程有限差分法的MATLAB实现被用作许多课程的辅助教学手段,MATLAB也成为大学生们必不可少的计算工具,甚至是一项必须掌握的基本技能。

热传导方程的差分格式讲解

热传导方程的差分格式讲解

热传导方程的左分格式—上机卖习报告二零一gg年五月一维抛物方程的初边值问题分别用向前差分格式、向后差分格式、六点对称格式,求解下列问题:du d2u”(兀0) = sin兀X、0 <x <1w(0,O = z/(l,O = 0, r >0在f = 0.05,0.1和0.2时刻的数值解,并与解析解u^t) = e-7:l sm(^x)进行比较。

1差分格式形式设空间步长h = l/N,时间步长r>0, T=M T,网比r = r/h2.(1)向前差分格式向前差分格式,即Z = /C\) ‘“;=0 =心),必=吆=0其中,丿= 1,2,…,N —1,R = 1,2,…,M—l. ^r^at/h2表示网比。

(1)式可改写成如下:M*+1 = + (i-2r)Uj + rw*_! + tfj此格式为显格式。

其矩阵表达式如下:Q-2r r)r l-2r(j、r 1一2广rl吐7、厂1一2、用丿加(2)向后差分格式(1)向后差分格式,即=0=久形)上:=WN =a其中j = 12・・\N_l,k = H,M_L (2)式可改写成- rw :[: + (l+2r )叶' -中;;=0 + 叭此种差分格式被称为隐格式。

其矩阵表达式如下:rl + 2r -r( j \ I”-r l + 2r-r l + 2r -rW.V-1-r 1 + 2广丿MJ< UN >(3) 六点对称格式六点差分格式:喟-0 _ a加:-2喟+唸;唏- 2”; +吃,—T2L戸 戸 J眄=0产久XJM=H ;=O.将(3)式改写成-g 唸;+ (1 + 时-1 昭=g 略 + (1 - 诃 * * 咯 + /其矩阵表达式如下:(1 + r -r/2<l-r r/2 ) ( j\ -r/2 l + rr/2 1-rui-r/2 l + r -r/2r/2 1-r r/2X-r 1+2匚M丿r/2 l-2r ;E >2利用MATLAB 求解问题的过程对每种差分格式依次取N = 40., r=l/1600, r=l/3200, el/6400,用 MATLAB 求解并图形比较数值解与精确解,用表格列出不同剖分时的Z?误差。

利用matlab程序解决热传导问题-推荐下载

利用matlab程序解决热传导问题-推荐下载

1、题目及要求
1. 原始题目及要求 2. 各节点的离散化的代数方程 3. 源程序 4. 不同初值时的收敛快慢 5. 上下边界的热流量(λ=1W/(m℃)) 6. 计算结果的等温线图 7. 计算小结 题目:已知条件如下图所示:
二、各节点的离散化的代数方程
各温度节点的代数方程
ta=(300+b+e)/4 ; tb=(200+a+c+f)/4; tc=(200+b+d+g)/4; td=(2*c+200+h)/4 te=(100+a+f+i)/4; tf=(b+e+g+j)/4; tg=(c+f+h+k)/4 ; th=(2*g+d+l)/4 ti=(100+e+m+j)/4; tj=(f+i+k+n)/4; tk=(g+j+l+o)/4; tl=(2*k+h+q)/4
0,0,-2,4,0,0,0,-1,0,0,0,0,0,0,0,0; -1,0,0,0,4,-1,0,0,-1,0,0,0,0,0,0,0; 0,-1,0,0,-1,4,-1,0,0,-1,0,0,0,0,0,0; 0,0,-1,0,0,-1,4,-1,0,0,-1,0,0,0,0,0; 0,0,0,-1,0,0,-2,4,0,0,0,-1,0,0,0,0; 0,0,0,0,-1,0,-1,0,4,0,0,0,-1,0,0,0; 0,0,0,0,0,-1,0,0,-1,4,-1,0,0,-1,0,0; 0,0,0,0,0,0,-1,0,0,-1,4,-1,0,0,-1,0; 0,0,0,0,0,0,0,-1,0,0,-2,4,0,0,0,-1; 0,0,0,0,0,0,0,0,-2,0,0,0,24,-1,0,0; 0,0,0,0,0,0,0,0,0,-2,0,0,-1,24,-1,0; 0,0,0,0,0,0,0,0,0,0,-2,0,0,-1,24,-1; 0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1,12]; b=[300,200,200,200,100,0,0,0,100,0,0,0,300,200,200,100]'; [x,n]=gauseidel(A,b,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]',1.0e-6) xx=1:1:4; yy=xx; [X,Y]=meshgrid(xx,yy); Z=reshape(x,4,4); Z=Z' contour(X,Y,Z,30) Z= 139.6088 150.3312 153.0517 153.5639

利用matlab程序解决热传导问题

利用matlab程序解决热传导问题

哈佛大学能源与环境学院课程作业报告作业名称:传热学大作业——利用matlab程序解决热传导问题院系:能源与环境学院专业:建筑环境与设备工程学号:姓名:盖茨比2015年6月8日一、题目及要求1.原始题目及要求2.各节点的离散化的代数方程3.源程序4.不同初值时的收敛快慢5.上下边界的热流量(λ=1W/(m℃))6.计算结果的等温线图7.计算小结题目:已知条件如下图所示:二、各节点的离散化的代数方程各温度节点的代数方程ta=(300+b+e)/4 ; tb=(200+a+c+f)/4; tc=(200+b+d+g)/4; td=(2*c+200+h)/4 te=(100+a+f+i)/4; tf=(b+e+g+j)/4; tg=(c+f+h+k)/4 ; th=(2*g+d+l)/4ti=(100+e+m+j)/4; tj=(f+i+k+n)/4; tk=(g+j+l+o)/4; tl=(2*k+h+q)/4tm=(2*i+300+n)/24; tn=(2*j+m+p+200)/24; to=(2*k+p+n+200)/24; tp=(l+o+100)/12 三、源程序【G-S迭代程序】【方法一】函数文件为:function [y,n]=gauseidel(A,b,x0,eps)D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1;while norm(y-x0)>=epsx0=y;y=G*x0+f;n=n+1;end命令文件为:A=[4,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0;-1,4,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0;0,-1,4,-1,0,0,-1,0,0,0,0,0,0,0,0,0;0,0,-2,4,0,0,0,-1,0,0,0,0,0,0,0,0;-1,0,0,0,4,-1,0,0,-1,0,0,0,0,0,0,0;0,-1,0,0,-1,4,-1,0,0,-1,0,0,0,0,0,0;0,0,-1,0,0,-1,4,-1,0,0,-1,0,0,0,0,0;0,0,0,-1,0,0,-2,4,0,0,0,-1,0,0,0,0;0,0,0,0,-1,0,-1,0,4,0,0,0,-1,0,0,0;0,0,0,0,0,-1,0,0,-1,4,-1,0,0,-1,0,0;0,0,0,0,0,0,-1,0,0,-1,4,-1,0,0,-1,0;0,0,0,0,0,0,0,-1,0,0,-2,4,0,0,0,-1;0,0,0,0,0,0,0,0,-2,0,0,0,24,-1,0,0;0,0,0,0,0,0,0,0,0,-2,0,0,-1,24,-1,0;0,0,0,0,0,0,0,0,0,0,-2,0,0,-1,24,-1;0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1,12];b=[300,200,200,200,100,0,0,0,100,0,0,0,300,200,200,100]';[x,n]=gauseidel(A,b,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]',1.0e-6) xx=1:1:4;yy=xx;[X,Y]=meshgrid(xx,yy);Z=reshape(x,4,4);Z=Z'contour(X,Y,Z,30)Z =139.6088 150.3312 153.0517 153.5639108.1040 108.6641 108.3119 108.1523 84.1429 67.9096 63.3793 62.4214 20.1557 15.4521 14.8744 14.7746 【方法2】>> t=zeros(5,5);t(1,1)=100;t(1,2)=100;t(1,3)=100;t(1,4)=100;t(1,5)=100;t(2,1)=200;t(3,1)=200;t(4,1)=200;t(5,1)=200;for i=1:10t(2,2)=(300+t(3,2)+t(2,3))/4 ;t(3,2)=(200+t(2,2)+t(4,2)+t(3,3))/4;t(4,2)=(200+t(3,2)+t(5,2)+t(4,3))/4;t(5,2)=(2*t(4,2)+200+t(5,3))/4;t(2,3)=(100+t(2,2)+t(3,3)+t(2,4))/4;t(3,3)=(t(3,2)+t(2,3)+t(4,3)+t(3,4))/4; t(4,3)=(t(4,2)+t(3,3)+t(5,3)+t(4,4))/4; t(5,3)=(2*t(4,3)+t(5,2)+t(5,4))/4;t(2,4)=(100+t(2,3)+t(2,5)+t(3,4))/4;t(3,4)=(t(3,3)+t(2,4)+t(4,4)+t(3,5))/4;t(4,4)=(t(4,3)+t(4,5)+t(3,4)+t(5,4))/4;t(5,4)=(2*t(4,4)+t(5,3)+t(5,5))/4;t(2,5)=(2*t(2,4)+300+t(3,5))/24;t(3,5)=(2*t(3,4)+t(2,5)+t(4,5)+200)/24;t(4,5)=(2*t(4,4)+t(3,5)+t(5,5)+200)/24;t(5,5)=(t(5,4)+t(4,5)+100)/12;t'endcontour(t',50);ans =100.0000 200.0000 200.0000 200.0000 200.0000 100.0000 136.8905 146.9674 149.8587 150.7444 100.0000 102.3012 103.2880 103.8632 104.3496 100.0000 70.6264 61.9465 59.8018 59.6008 100.0000 19.0033 14.8903 14.5393 14.5117【Jacobi迭代程序】函数文件为:function [y,n]=jacobi(A,b,x0,eps)D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=D\(L+U);f=D\b;y=B*x0+f;n=1;while norm(y-x0)>=epsx0=y;y=B*x0+f;n=n+1;end命令文件为:A=[4,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0;-1,4,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0; 0,-1,4,-1,0,0,-1,0,0,0,0,0,0,0,0,0; 0,0,-2,4,0,0,0,-1,0,0,0,0,0,0,0,0;-1,0,0,0,4,-1,0,0,-1,0,0,0,0,0,0,0; 0,-1,0,0,-1,4,-1,0,0,-1,0,0,0,0,0,0; 0,0,-1,0,0,-1,4,-1,0,0,-1,0,0,0,0,0;0,0,0,-1,0,0,-2,4,0,0,0,-1,0,0,0,0;0,0,0,0,-1,0,-1,0,4,0,0,0,-1,0,0,0;0,0,0,0,0,-1,0,0,-1,4,-1,0,0,-1,0,0;0,0,0,0,0,0,-1,0,0,-1,4,-1,0,0,-1,0;0,0,0,0,0,0,0,-1,0,0,-2,4,0,0,0,-1;0,0,0,0,0,0,0,0,-2,0,0,0,24,-1,0,0;0,0,0,0,0,0,0,0,0,-2,0,0,-1,24,-1,0;0,0,0,0,0,0,0,0,0,0,-2,0,0,-1,24,-1;0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1,12];b=[300,200,200,200,100,0,0,0,100,0,0,0,300,200,200,100]'; [x,n]=jacobi(A,b,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]',1.0e-6); xx=1:1:4;yy=xx;[X,Y]=meshgrid(xx,yy);Z=reshape(x,4,4);Z=Z'contour(X,Y,Z,30)n =97Z =139.6088 150.3312 153.0517 153.5639108.1040 108.6641 108.3119 108.152384.1429 67.9096 63.3793 62.421420.1557 15.4521 14.8744 14.7746四、不同初值时的收敛快慢1、[方法1]在Gauss 迭代和Jacobi 迭代中,本程序应用的收敛条件均为norm(y-x0)>=eps ,即使前后所求误差达到e 的-6次方时,跳出循环得出结果。

热传导方程有限差分法的MATLAB实现

热传导方程有限差分法的MATLAB实现

万方数据万方数据万方数据万方数据热传导方程有限差分法的MATLAB实现作者:史策作者单位:西安建筑科技大学,理学院,陕西,西安,710055刊名:咸阳师范学院学报英文刊名:JOURNAL OF XIANYANG NORMAL UNIVERSITY年,卷(期):2009,24(4)被引用次数:0次1.曹钢,王桂珍,任晓荣.一维热传导方程的基本解[J].山东轻工业学院学报,2005,19(4):76-80.2.万正苏,方春华,张再云.关于热传导方程有限差分区域分解并行算法精度的注记[J].湖南理工学院学报(自然科学版),2007,20(3):12-14.3.StephenJ.Chapman.MATLAB编程[M].邢树军,郑碧波,译.北京:科学出版社,2008.4.田兵.用MATLAB解偏微分方程[J].阴山学刊,2006,20(4):12-13.5.王飞,裴永祥.有限差分方法的MATLAB编程[J].新疆师范大学学报(自然科学版),2003,22(4):21-27.6.王宝红.热传导方程的可视化探讨[J].忻州师范学院学报,2008,24(2):31-36.7.李先枝.热传导方程差分解法的最佳网格[J].河南大学学报(自然科学版),2004,34(3):16-18.8.赵德奎,刘勇.MATLAB在有限差分数值计算中的应用[J].四川理工学院学报,2005,18(4):61-64.9.谢焕田,吴艳.拉普拉斯有限差分法的MATLAB实现[J].四川理工学院学报,2008,21(3):1-2.10.南京大学数学系计算数学专业.偏微分方程数值解法[M].北京:科学出版社,1979.1.学位论文申卫东热传导方程有限差分区域分解算法研究2003区域分解算法是在并行机上求解偏微分方程数值解的一种较自然的方法.该方法先将偏微分方程求解区域划分为若干个子区域,然后在各个子区域并行求解.全文共五章.第一章为引言,简要介绍了热传导方程并行算法的概况及该文所讨论的基本内容.在第二章,我们在内边界点为等距分划的多子区域条件下,得到Dawson等人关于求解热传导方程区域分解算法差分解的误差估计.在第三章,我们以Saul'yev非对称格式作内边界处理,发展了新的区域分解算法,得到了差分解的先验误差估计,并与Dawson等人的算法作了比较.给出了关于算法计算精度的数值结果.在第四章,我们发展了一些新技术,在子区域的边界处采用小时间步长古典显式格式求解,构造了新的区域分解算法,得到了差分解的先验误差估计.给出了关于算法计算精度的数值结果.在第五章,我们在二维热传导方程求解上扩充了Dawson等人的区域分解算法.给出了关于算法计算精度的数值结果.第六章为该研究工作的主要结论.2.期刊论文张守慧.王文洽.ZHANG Shou-hui.WANG Wen-qia热传导方程有限差分逼近的数学Stencil及其新型迭代格式-山东大学学报(理学版)2006,41(6)将Stencil应用于偏微分方程有限元差分逼近过程,以两类差分格式为基础建立了求解热传导方程的两种新型迭代算法.此两种算法与经典的Jacobi方法同样具有并行的性质,但比Jacobi方法收敛快.给出的算例说明方法的适用性.3.期刊论文吕桂霞.马富明.Lü Guixia.Ma Fuming二维热传导方程有限差分区域分解算法-数值计算与计算机应用2006,27(2)本文讨论了一类数值求解二维热传导方程的并行差分格式.在这个算法中,通过引进内界点将求解区域分裂成若干子区域.在子区域间内界点上采用非对称格式计算,一旦这些点的值被计算出来,各子区域间的计算可完全并行.本文得到了稳定性条件和最大模误差估计.它表明我们的格式有令人满意的稳定性,并且有着较高的收敛阶.4.学位论文田源地下煤火三维数理模型正演数值模拟2006本文首先给出了几个地下煤火随空间、温度变化的动态和稳态热数学物理模型及其简化模型。

matlab 热传导方程的差分

matlab 热传导方程的差分

matlab 热传导方程的差分热传导方程是描述物体内部温度分布随时间变化的数学模型。

在工程和科学领域中,热传导方程的数值解是非常重要的,因为它可以帮助工程师和科学家们预测材料的温度变化,设计有效的散热系统等。

在本文中,我们将讨论如何使用Matlab对热传导方程进行差分求解。

差分法是一种常用的数值解法,它将连续的方程离散化为离散的点,通过迭代计算得到方程的近似解。

首先,让我们回顾一下热传导方程。

热传导方程通常写作:$$\frac{\partial u}{\partial t} = \alpha \nabla^2 u$$。

其中,$u$是温度分布,$t$是时间,$\alpha$是热传导系数,$\nabla^2$是拉普拉斯算子。

在一维情况下,热传导方程可以简化为:$$\frac{\partial u}{\partial t} = \alpha\frac{\partial^2 u}{\partial x^2}$$。

接下来,我们将使用有限差分法对这个一维热传导方程进行离散化。

假设我们有一个长度为$L$的杆,我们将其分成$n$个小段,每个小段的长度为$\Delta x = \frac{L}{n}$。

我们将温度在每个小段的离散点上进行逼近,即$u_i(t)$表示第$i$个小段上的温度,$t_j$表示第$j$个时间步。

我们可以使用中心差分法来逼近二阶导数:$$\frac{\partial^2 u}{\partial x^2} \approx\frac{u_{i+1} 2u_i + u_{i-1}}{(\Delta x)^2}$$。

将这个逼近代入热传导方程,我们可以得到离散化的方程:$$\frac{u_i^{j+1} u_i^j}{\Delta t} = \alpha\frac{u_{i+1}^j 2u_i^j + u_{i-1}^j}{(\Delta x)^2}$$。

其中,$\Delta t$是时间步长。

通过这个离散化方程,我们可以使用Matlab编写一个迭代算法来求解热传导方程的数值解。

热传导模型方程matlab

热传导模型方程matlab

热传导模型方程matlab热传导模型方程可以用 MATLAB 求解,具体步骤如下:1. 导入 MATLAB 环境,新建一个 MATLAB 文件。

2. 定义热传导模型的参数,如物体的热传导系数、接触面积等。

3. 定义物体的温度分布,可以使用 MATLAB 的函数生成随机数来模拟温度分布。

4. 定义物体内部的热量传输过程,可以使用 MATLAB 的函数来计算热传导的过程。

5. 求解热传导模型的结果,可以使用 MATLAB 的积分函数来计算热量的传输速率。

6. 可视化结果,可以使用 MATLAB 的绘图函数来绘制温度分布曲线和热量传输速率曲线。

具体求解过程可以参考以下 MATLAB 代码示例:```matlab% 创建 MATLAB 文件f = @(t,y) [-y(2); y(1)]; % 定义物体的温度分布函数A = 1; % 定义接触面积k = 0.1; % 定义物体的热传导系数t0 = 0; % 定义物体初始温度t1 = 1; % 定义物体目标温度tstep = 0.1; % 定义温度变化率y0 = A*rand(1,1000); % 定义物体内部的温度分布y = f(t,y0); % 计算物体内部的温度分布t = t0:tstep:t1; % 定义时间序列Q = zeros(length(t),1); % 定义热量传输速率for i=1:length(t)y = y(1:end-1); % 将时间序列中的前一部分代入热传导模型 Q(i) = -k*sum(y(2:end),2); % 计算热量传输速率y = y(2:end); % 将时间序列中的后一部分代入热传导模型Q(i) = -k*sum(y(2:end),2); % 计算热量传输速率endQ = Q/length(t); % 将热量传输速率进行归一化处理plot(t,y,"o",t,Q); % 绘制温度分布和热量传输速率曲线title("热传导模型方程"); % 添加标题xlabel("时间"); % 添加 x 轴标签ylabel("温度分布"); % 添加 y 轴标签```上述 MATLAB 代码可以求解热传导模型方程,并可视化结果。

matlab练习程序(差分法解一维热传导方程)

matlab练习程序(差分法解一维热传导方程)

matlab练习程序(差分法解⼀维热传导⽅程)差分法计算⼀维热传导⽅程是计算偏微分⽅程数值解的⼀个经典例⼦。

热传导⽅程也是⼀种抛物型偏微分⽅程。

⼀维热传导⽅程如下:该⽅程的解析解为:通过对⽐解析解和数值解,我们能够知道数值解的是否正确。

下⾯根据微分写出差分形式:整理得:已知⽹格平⾯三条边的边界条件,根据上⾯递推公式,不断递推就能计算出每个⽹格的值。

matlab代码如下:clear all;close all;clc;t = 0.03; %时间范围,计算到0.03秒x = 1; %空间范围,0-1⽶m = 320; %时间⽅向分320个格⼦n = 64; %空间⽅向分64个格⼦ht = t/(m-1); %时间步长dthx = x/(n-1); %空间步长dxu = zeros(m,n);%设置边界条件i=2:n-1;xx = (i-1)*x/(n-1);u(1,2:n-1) = sin(4*pi*xx);u(:,1) = 0;u(:,end) = 0;%根据推导的差分公式计算for i=1:m-1for j=2:n-1u(i+1,j) = ht*(u(i,j+1)+u(i,j-1)-2*u(i,j))/hx^2 + u(i,j);endend%画出数值解[x,t] = meshgrid(0:x/(n-1):1,0:0.03/(m-1):0.03);mesh(x,t,u)%画出解析解u1 = exp(-(4*pi)^2*t).*sin(4*pi*x);figure;mesh(x,t,u1);%数值解与解析解的差figure;mesh(abs(u-u1));数值解:解析解:两种解的差的绝对值:。

matlab前向差分法matlab

matlab前向差分法matlab

前向差分法是一种常见的数值计算方法,它被广泛应用于解决偏微分方程、积分方程等数学问题。

该方法通过使用差分近似和迭代计算,能够较为精确地求解复杂的数值问题,尤其在数学建模、科学计算、工程技术等领域有着重要的作用。

在matlab中,前向差分法可以通过内置的函数和工具进行实现。

下面将分别介绍在matlab中使用前向差分法的步骤和注意事项。

1. 确定求解的数学问题:在使用前向差分法求解数值问题之前,首先需要确定所要解决的数学问题,包括方程、边界条件、初值条件等。

只有明确了求解问题的数学模型,才能有效地应用前向差分法进行数值计算。

2. 离散化问题:将求解问题离散化为有限个离散点的集合,这是前向差分法的基础。

在matlab中,可以使用数组、矩阵等数据结构来存储离散点的数值,以便进行迭代计算。

3. 编写迭代计算的程序:利用matlab的编程能力,可以编写前向差分法的迭代计算程序。

该程序应当包括对离散化问题的数值计算、迭代更新等步骤,以实现对数学问题的精确求解。

4. 考虑收敛性和稳定性:在使用前向差分法进行数值计算时,需要注意数值解的收敛性和计算过程的稳定性。

这涉及到步长的选择、迭代的停止条件等问题,需要进行合理的分析和调整。

5. 对结果进行验证和分析:在得到数值解之后,需要对结果进行验证和分析,包括与解析解的对比、误差估计、解的物理意义等方面。

只有对数值解进行充分的验证和分析,才能保证前向差分法的计算结果的可靠性和准确性。

在matlab中使用前向差分法进行数值计算是一个复杂而又有趣的过程,需要充分理解数学模型,熟练掌握编程技巧,合理选择参数和方法,才能得到准确的数值解。

希望通过本文的介绍,读者能够对matlab中前向差分法的应用有所了解,从而在实际问题中进行有效的数值计算。

在数值计算中,前向差分法是一种重要的计算方法,常被应用于解决偏微分方程、积分方程等数学问题。

它通过使用差分近似和迭代计算,能够较为精确地求解复杂的数值问题,在数学建模、科学计算、工程技术等领域发挥着不可替代的作用。

有限差分法matlab程序一维热传导

有限差分法matlab程序一维热传导

有限差分法matlab程序一维热传导有限差分法是一种常用的数值解法,用于模拟和求解热传导问题。

本文将介绍如何使用MATLAB编写一维热传导的有限差分法程序。

热传导是指在物体内部或跨越物体表面的热量传递过程。

一维热传导是指热量在一个维度上传导,例如在杆状物体中的热传导。

通过有限差分法,我们可以离散化连续问题,将其转化为离散的点上的计算问题。

我们需要定义问题的边界条件和初始条件。

在一维热传导问题中,我们通常需要指定杆的长度、时间步长、温度边界条件和初始温度分布。

假设杆的长度为L,我们将其分割为N个网格点,每个网格点之间的距离为Δx = L/N。

时间步长为Δt。

我们用u(i, j)表示在第i个网格点上的温度值,其中i表示网格点的索引,j表示时间步的索引。

有限差分法的基本思想是使用差分逼近导数,将偏导数转化为有限差分的形式。

在一维热传导问题中,我们可以使用向前差分法或中心差分法来逼近偏导数。

对于一维热传导问题,我们可以使用显式差分格式来求解。

在每个时间步长上,我们可以使用网格点的前一时间步长的温度值来计算当前时间步长的温度值。

具体计算步骤如下:1. 初始化网格点上的温度值,包括初始温度分布和边界条件。

2. 根据初始温度分布和边界条件,计算第一个时间步长上网格点的温度值。

3. 对于每个时间步长j,根据第j-1个时间步长上的温度值,使用差分格式计算第j个时间步长上网格点的温度值。

4. 重复步骤3,直到计算到所需的时间步长。

在MATLAB中,我们可以使用for循环来实现这个计算过程。

首先,我们需要定义模拟所需的参数,如杆的长度、时间步长、温度边界条件和初始温度分布。

然后,我们可以使用嵌套的for循环来计算每个时间步长上的温度值。

我们可以将计算得到的温度值可视化,以便更直观地观察热传导过程。

我们可以使用MATLAB中的plot函数来绘制温度随时间和位置的变化曲线,或使用MATLAB中的surf函数来绘制三维温度分布图。

一维热传导MATLAB模拟

一维热传导MATLAB模拟

一维热传导MATLAB模拟昆明学院2015届毕业设计(论文)设计(论文)题目一维热传导问题的数值解法及其MATLAB模拟子课题题目无姓名伍有超学号 2所属系物理科学与技术系专业年级 2011级物理学2班指导教师王荣丽2015 年 5 月摘要本文介绍了利用分离变量法和有限差分法来求解一维传导问题的基本解,并对其物理意义进行了讨论。

从基本解可以看出,在温度平衡过程中,杠上各点均受初始状态的影响,而且基本解也满足归一化条件,表示在热传导过程中杆的总热量保持不变。

通过对一维杆热传导的分析,利用分离变量法和有限差分法对一维热传导进行求解,并用MATLAB 数学软件来对两种方法下的热传导过程进行模拟,通过对模拟所得三维图像进行取值分析,得出由分离变量法和有限差分法绘制的三维图基本相同,且均符合热传导过程中温度随时间、空间的变化规律,所以两种方法均可用来解决一维热传导过程中的温度变化问题。

关键词:一维热传导;分离变量法;有限差分法;数值计算;MATLAB 模拟AbstractIn this paper, the method of variable separation andfinite difference method are introduced to solve the problem of one-dimensional heat conduction problems, and the physical significance of numerical methods for heat conduction problems are discussed. From the basic solution, we can see the temperature on the bar are affected by the initial state during the process of temperature balance, and basic solution also satisfy the normalization condition which implied the invariance of the total heat in the bar during the heat conduction process. Through the analysis of the one-dimensional heat conduction, by taking use of variable separation method and finite difference method, we simulated the one-dimensional heat conduction problem by MATLAB. The three-dimensional images of the simulation results obtained by the method of separation of variables and finite difference method are similar to each other, and the temperature curve is in accordance with the law of temperature variation during heat conduction. Thus, we can go to the conclusion that both methods can be used to deal with the one-dimensional heat conduction problems.Keywords: One-dimensional heat conduction; method of variableseparation; finite difference method; numerical2method; MATLAB simulation目录第一章绪论11.1热传导的概念......................................................... .. (1)1.2热质的运动和传递......................................................... (1)第二章一维热传导问题的两种数值解法32.1一维热传导问题的初值问题32.2一维热传导问题的分离变量法42.3一维热传导问题的有限差分法63第三章一维有界杆热传导问题的MATLAB模拟9 3.1一维有界杆热传导问题93.2分离变量法的MATLAB模拟93.3有限差分法的MATLAB模拟12第四章总结与展望18参考文献19谢辞204第一章绪论1.1热传导的概念由于温度分布不均匀,热量从介质中温度高的地方流向温度低的地方称为热传导。

热传导方程以及matlab求解

热传导方程以及matlab求解

热传导方程及matlab求解1. 热传导方程的概念热传导方程是描述物质内部温度分布随时间变化的数学模型。

它是热力学基本方程之一,描述了热能在物体内传递和扩散的过程。

热传导方程通常表示为:$$\frac{\partial u}{\partial t} = \alpha \nabla^2 u$$其中,u表示温度分布,t表示时间,$\alpha$表示热扩散系数,$\nabla^2$表示拉普拉斯算子。

热传导方程可以根据不同的物理条件和边界条件进行不同形式的推导和求解。

2. 热传导方程的重要性热传导方程在工程、地球科学、生物学和材料科学等领域都有着广泛的应用。

通过研究热传导方程,可以深入理解物质内部温度变化的规律,从而优化材料设计、改进能源利用效率,甚至预测地球内部热量分布等方面都有着重要的意义。

3. 热传导方程的matlab求解Matlab作为一种强大的科学计算软件,对热传导方程的求解有着很好的支持。

通过Matlab中的偏微分方程求解工具包,可以方便地对热传导方程进行数值求解。

一般来说,使用Matlab求解热传导方程的步骤包括定义方程、设定边界条件和初值条件、选择合适的数值求解方法,并进行模拟计算。

4. 个人观点和理解对于热传导方程及其在Matlab中的求解,我个人认为这是一个非常有意思且实用的课题。

热传导方程作为热力学基本方程之一,在工程领域有着很重要的应用,而Matlab作为科学计算软件的代表,在求解热传导方程时具有高效、准确的优势。

通过学习热传导方程及在Matlab中的求解,不仅可以深入理解热传导的物理过程,还能够提升数值计算及编程的能力。

总结通过本文的介绍,我们了解了热传导方程的基本概念、重要性以及在Matlab中的求解方法。

热传导方程作为描述物质内部温度分布变化的数学模型,对于研究物质热传导过程有着重要意义。

而Matlab作为强大的科学计算软件,对于求解热传导方程也有着很好的支持。

希望通过本文的介绍,读者能对热传导方程及其在Matlab中的求解有更深入的理解,并能够在相关领域应用这些知识。

热传导方程几种差分格式的MATLAB数值解法比较

热传导方程几种差分格式的MATLAB数值解法比较

热传导方程几种差分格式的MATLAB数值解法比较
冯立伟
【期刊名称】《沈阳化工大学学报》
【年(卷),期】2011(025)002
【摘要】对求解热传导方程的几种差分格式进行分析,并讨论使用MATLAB编程求解偏微分方程的方法.编制几种差分格式的MATLAB程序,使用算例进行数值实验,在不同网格比情况下,比较几种算法的优劣.
【总页数】5页(P179-182,191)
【作者】冯立伟
【作者单位】沈阳化工大学数理系,辽宁沈阳110142
【正文语种】中文
【中图分类】O241.82
【相关文献】
1.热传导方程几种差分格式的MATLAB数值解法比较 [J], 冯立伟
2.热传导方程非局部初边值问题的向前Euler差分格式和向后Euler差分格式 [J], 潘祝山
3.热传导方程非局部初边值问题的向前Euler差分格式和向后Euler差分格式 [J], 潘祝山
4.基于Crank-Nicolson差分与Newton迭代法的非线性热传导方程数值解法 [J], 高忠社
5.一类基于Crank-Nicolson差分格式的非线性热传导方程数值解 [J], 高忠社
因版权原因,仅展示原文概要,查看原文内容请购买。

Matlab解热传导方程代码

Matlab解热传导方程代码

Sample MATLAB codes1.%Newton Cooling Lawclear; close all; clc;h = 1;T(1) = 10; %T(0)error = 1;TOL = 1e-6;k = 0;dt = 1/10;while error > TOL,k = k+1;T(k+1) = h*(1-T(k))*dt+T(k);error = abs(T(k+1)-T(k));endt = linspace(0,dt*(k+1),k+1);plot(t,T),hold on, plot(t,1,'r-.')xlabel('Time'),ylabel('Temperature'),title(['T_0 = ',num2str(T(1)), ', T_\infty = 1']), legend('Cooling Trend','Steady State')2.%Boltzman Cooling Lawclear; close all; clc;h = 1;T(1) = 10; %T(0)error = 1;TOL = 1e-6;k = 0;dt = 1/10000;while error > TOL,k = k+1;T(k+1) = h*(1-(T(k))^4)*dt+T(k);error = abs(T(k+1)-T(k));endt = linspace(0,dt*(k+1),k+1);plot(t,T),hold on, plot(t,1,'r-.')xlabel('Time'),ylabel('Temperature'),title(['T_0 = ',num2str(T(1)), ', T_\infty = 1']), legend('Cooling Trend','Steady State')3.%Fourier Heat conductionclear; close all; clc;h = 1;n = 11;T = ones(n,1); Told = T;T(1) = 1; %Left boundaryT(n) = 10; %Right boundaryx = linspace(0,1,n);dx = x(2)-x(1);dt = dx^2/3; %cfl conditionerror = 1;TOL = 1e-6;k = 0;while error > TOL,Told = T;k = k+1;for i = 2:n-1T(i) = dt*(Told(i+1)-2*Told(i)+Told(i-1))/dx^2+Told(i);enderror = max(abs(T-Told));if mod(k,5)==0, out(k,:) = T; endendplot(x,out)xlabel('x'),ylabel('Temperature'),title(['Fourier Heat Conduction']),%legend('Cooling Trend','Steady State')4. 2D Heat Equation%2D Heat Equation.clear; close all; clcn = 10; %grid has n - 2 interior points per dimension (overlapping) x = linspace(0,1,n); dx = x(2)-x(1); y = x; dy = dx;TOL = 1e-6;T = zeros(n);T(1,1:n) = 10; %TOPT(n,1:n) = 1; %BOTTOMT(1:n,1) = 1; %LEFTT(1:n,n) = 1; %RIGHTdt = dx^2/4;error = 1; k = 0;while error > TOLk = k+1;Told = T;for i = 2:n-1for j = 2:n-1T(i,j) = dt*((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/dx^2 ... + (Told(i,j+1)-2*Told(i,j)+Told(i,j-1))/dy^2) ...+ Told(i,j);endenderror = max(max(abs(Told-T)));endsubplot(2,1,1),contour(x,y,T),title('Temperature (Steady State)'),xlabel('x'),ylabel('y'),colorbar subplot(2,1,2),pcolor(x,y,T),shading interp,title('Temperature (Steady State)'),xlabel('x'),ylabel('y'),colorbar 5. Wave Translation%Oscillations - translation left and rightclear; close all; clc;for c = [1 -1]cc = 0;n = 261;x = linspace(0,13,n);u = zeros(n,1);u(121:141) = sin(pi*x(121:141));dx = x(2)-x(1);dt = dx;error = 1;TOL = 1e-6;k = 0;while k < 110uold = u;k = k+1;for i = 2:n-1if c == 1, u(i) = dt*c*(uold(i+1)-uold(i))/dx+uold(i); end%c = 1 if c == -1, u(i) = dt*c*(uold(i)-uold(i-1))/dx+uold(i); end%c = -1 enderror = max(abs(u-uold));if mod(k,10)==0, cc = cc+1; out(cc,:) = u;endendif c == 1subplot(2,1,1),for hh = 1:ccplot(x,out(hh,:)+hh),hold on,endu = zeros(n,1);u(121:141) = sin(pi*x(121:141)); plot(x,u)xlabel('u(x)'),ylabel('Time'),title('Translation to the Left')elseif c == -1subplot(2,1,2),for hh = 1:ccplot(x,out(hh,:)+hh),hold on,endu = zeros(n,1);u(121:141) = sin(pi*x(121:141)); plot(x,u)xlabel('u(x)'),ylabel('Time'),title('Translation to the Right')endend6.%wave equationclear; close all; clc;c = 1;n = 21;x = linspace(0,1,n);dx = 1/(n-1);dt = dx;u(:,1) = sin(pi*x);u(1,2) = 0;for i = 2:n-1u(i,2) = 0.5*(dt^2*c^2*(u(i+1,1)-2*u(i,1)+u(i-1,1))/dx^2+2*u(i,1));endu(n,2) = 0;error = 1; k = 1;while k < 100k = k+1;u(1,k+1) = 0;for i = 2:n-1u(i,k+1) = dt^2*c^2*(u(i+1,k)-2*u(i,k)+u(i-1,k))/dx^2+2*u(i,k)-u(i,k-1); endu(n,k+1) = 0;endplot(x,u), xlabel('x'),ylabel('y')。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档