有限差分和Matlabpde求解一维稳态传热问题.docx
一维稳态导热问题的离散化

一维稳态导热问题的离散化
一维稳态导热问题可以通过离散化的方法进行求解。
离散化将问题转化为一个由有限个节点组成的网格模型,每个节点对应着问题中的一个位置点。
问题的解可以表示为节点上的温度值。
离散化的方法有多种,常用的方法包括有限差分法和有限元法。
有限差分法是一种通过近似导数的方式对微分方程进行离散化的方法。
在一维稳态导热问题中,可以将求解区域分割为多个小段,并在每个小段上构建一个节点。
对于每个节点,可以利用温度的散度来近似导热方程中的导数项。
通过将导数项替换为差分形式,可以得到一个由节点温度值组成的线性方程组。
解这个线性方程组就可以得到整个区域上的温度分布。
有限元法是一种通过将求解区域分割为很多小单元并在每个小单元上构建一个形状函数的方法。
在一维稳态导热问题中,可以将求解区域分割为多个小单元,并在每个小单元上构建一个线性形状函数。
通过将温度场近似为形状函数的线性组合,可以得到一个由形状函数系数组成的线性方程组。
解这个线性方程组就可以得到整个区域上的温度分布。
无论是有限差分法还是有限元法,离散化的关键在于选择合适的节点或小单元,并确定节点之间的邻接关系。
这样,可以将原问题转化为一个线性方程组,通过求解这个方程组就可以得到问题的数值解。
matlab有限差分法

matlab有限差分法一、前言Matlab是一种广泛应用于科学计算和工程领域的计算机软件,它具有简单易学、功能强大、易于编程等优点。
有限差分法(Finite Difference Method)是一种常用的数值解法,它将微分方程转化为差分方程,通过对差分方程进行离散化求解,得到微分方程的数值解。
本文将介绍如何使用Matlab实现有限差分法。
二、有限差分法基础1. 有限差分法原理有限差分法是一种通过将微分方程转化为离散形式来求解微分方程的数值方法。
其基本思想是将求解区域进行网格划分,然后在每个网格点上进行逼近。
假设要求解一个二阶常微分方程:$$y''(x)=f(x,y(x),y'(x))$$则可以将其转化为离散形式:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$其中$h$为网格步长,$y_i$表示在$x_i$处的函数值。
2. 一维情况下的有限差分法对于一维情况下的常微分方程:$$\frac{d^2 y}{dx^2}=f(x,y,y')$$可以使用中心差分法进行离散化:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$这个方程可以写成矩阵形式:$$A\vec{y}=\vec{b}$$其中$A$为系数矩阵,$\vec{y}$为函数值向量,$\vec{b}$为右端项向量。
三、Matlab实现有限差分法1. 一维情况下的有限差分法假设要求解的方程为:$$\frac{d^2 y}{dx^2}=-\sin(x)$$首先需要确定求解区域和网格步长。
在本例中,我们将求解区域设为$[0,2\pi]$,网格步长$h=0.01$。
则可以通过以下代码生成网格:```matlabx = 0:0.01:2*pi;```接下来需要构造系数矩阵和右端项向量。
根据上面的公式,系数矩阵应该是一个三对角矩阵,可以通过以下代码生成:```matlabn = length(x)-2;A = spdiags([-ones(n,1), 2*ones(n,1), -ones(n,1)], [-1 0 1], n, n); ```其中`spdiags`函数用于生成一个稀疏矩阵。
一维稳态导热问题数值模拟

一维稳态导热问题数值模拟问题描述:设有一导热方程,022=+T dxTd ,边界条件为011dTx dx x T ⎧==⎪⎨⎪==⎩编写一段程序对此问题进行数值模拟。
解析:220d T T dx += 0011dT x dx x T ⎧==⎪⎨⎪==⎩ 1、用控制容积有限差分方法做出内部节点和边界节点的离散化方程:首先进行离散化,先确定节点,再确定控制容积。
将0-1划分为N 段,共N+1个节点,N 个控制容积,其中1x N∆=。
可以得到如下:对原方程建立差分方程,内部节点有:[()]0ew d dTT dx dx dx +=⎰ 0e wdT dT T x dxdx⇒-+∆=0P W E P P T T T T T x x x --⇒-+∆=∆∆1011P W E P P T T T T T N N N--⇒-+=1(2)1E W P E W P E W P P E E W W a a N N T NT NT N a a a a T a T a T N ==⎫⎧⇒-=+⎪⎪⇒⎬⎨=+-⎪⎪=+⎭⎩则转换为下式,:Pi i Ei Ei Wi Wi a T a T a T =+ i=2,….,N上式即为内部节点的离散化方程。
对于外部节点可有:1011i ii T T i T i N +==⎧⎨==+⎩综上可以得到内部节点和外部节点的离散化方程为:12111Pi i Ei Ei Wi Wi i i i a T a T a T i N T T i T i N +=+=⎧⎪==⎨⎪==+⎩,...,即为11(2)2111i Ei Wi i i i N T NT NT i N N T T i T i N +⎧-=+=⎪⎪⎨==⎪==+⎪⎩,...,上式不满足系数为负数,则可改用如下离散方程: 内部节点:*120E p P W P P T T T T T T N N N N----+= E w a a N == 1p E w a a a N =++ 12p a N N =+ *2p b T N=p p E E W W a T a T a T b =++ pi pi Ei Ei Wi Wi i a T a T a T b =++ *1112(2)()i i i P N T N T T T N N-++=++边界节点 1x= 11N T +=p p E E W W a T a T a T b =++E w a a N == 1p E w a a a N=++12p a N N=+*11112N N N N N N P a T a T a T T N ++--=++ *112(2)N N P N T N NT T N N-+=++边界节点 0x=0dTdx= (())0e P d dT T dx dx dx +=⎰ *1(2)012P E P P T T T T N N-+-=E a N = *1P b T N = 11++22P E a a N N N==p p E E a T a T b =+ *11221P a T a T T N =+ *1211()2P N T NT T N N-=+组成代数方程组:*12*11*111(+)1212(2)()212(2)1P i i i PN N P N T NT T i N N N T N T T T i N N N N T N NT T i N N N -+-⎧=+=⎪⎪⎪+=++≤≤⎨⎪⎪+=++=+⎪⎩写成矩阵方程组:*1*22*1*11+000021220001..0200 (2100202100)2P P N N P N P N N T N N T N N N T N T NN N N N T T T N N N NT N T N NN N N --⎡⎤-⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎡⎤-+-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+-⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+-⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥⎢⎥+⎢⎥-+⎣⎦⎢⎥⎣⎦2、写出代数方程组的迭代求解程序: 用Matlab 编写如下求解程序;(1)高斯赛德尔迭代法(调用程序gauseidel 文件) function [x,n]=gauseidel(A,b,x0,eps,M) %高斯迭代格式 %线性方程组的系数:A%线性方程组中常数向量:b%迭代初始向量:x0%解的精度控制:eps%迭代步数控制:M%线性方程组的解:x%求出所需精度的解实际迭代步数:n if nargin==3eps=0.000001;M=10000;elseif nargin==4M=10000;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);G=(D-L)\U;f=(D-L)\b;x=x0;n=0;tol=1;while tol>=epsx=G*x0+f;n=n+1;tol=norm(x-x0);x0=x;if (n>=M)disp ('Warning:’迭代次数过多,可能不收敛.') return;endend(2)主程序(demo文件)如下:N=input('请输入N值''\n')Tp=input('请输入Tp值''\n')x1=zeros(N,1)A0=zeros(N);A0(1,1)=N+1/(2*N);A0(1,2)=-N;A0(N,N-1)=-N;A0(N,N)=2*N+1/N;for i=2:N-1A0(i,i-1)=-N;A0(i,i)=2*N+1/N;A0(i,i+1)=-N;endb0=zeros(N,1);b0(1,1)=(1/N)*Tp;b0(N,1)=(2/N)*Tp+N;for i=2:N-1b0(i,1)=(2/N)*Tp;endA=A0;b=b0;x0=x1;[x,n]=gauseidel(A,b,x0)x=[x;1]t=(0:1/N:1)title('一维稳态导热问题空间温度分布图')xlabel('空间分布X')ylabel('温度分布T')hold onplot(t,x)T=1。
一维稳态导热问题数值计算

一维稳态导热问题数值计算刘强引言❖目前为止,一般稍微复杂的导热问题几乎都依靠数值法求解。
❖导热问题的数值法有三种:有限差分法,有限元法和边界元法。
本教材介绍目前在铸造领域温度场计算中普遍采用的直接差分法,也叫单元热平衡法。
❖基本思想:不用导热微分方程,而是直接通过能量守恒定律,根据相邻单元间的能量交换关系导出差热方程。
❖分析i 单元的热量平衡关系,从t n 到t n+1时间内,由i-1单元流入i 单元的热量为:=1Q x i T i T k n n ∆---)1()(x ∆⋅(1)由i 单元流入i+1单元的热量为:=2Q 由内能计算公式:t x i T i T k n n ∆⋅∆-+-)()1(Tm C Q p ∆=而在该时间内,得出单元的内能增量为:[])()(1i T i T C x Q n n p -∆=+ρ蓄(2)(3)根据能量守恒定律则能得出蓄Q Q Q =-21t x i T i T k n n ∆⋅∆---)1()([])()()()1(1i T i T C x t x i T i T k n n p n n -∆=∆⋅∆-+++ρ或是其中[])1()()2()1(1++-+-i T i T M i T M n n n tx M ∆⋅∆=α/上式即为显式差分格式(4)=+)(1i T n初始条件:边界条件:给定初始温度T (i ),i=1,2,3,…,N由初始和边界条件可计算区域内部各节点随时间t 变化的温度值:代表时间步常数给定边界温度n n N T T nn ,,2,1,0),(),1(⋅⋅⋅=),3,2,1;1,,3,2(),(⋅⋅⋅=-⋅⋅⋅=n N i i T n步骤如下由初始条件和边界条件知图中第0排的温度,知,其中由初始条件提供)1(~)2(T 00-N T 由边界条件提供,与)()1(00N T T 第一排的温度值)1,,3,2)(1(1-⋅⋅⋅=N i T 可由(4)式得到;再利用边界条件,得到),()1(11N T T 与即能得到第一排上的全部节点的温度再由(4)式和边界条件依次算得inT n⋅⋅⋅==⋅⋅⋅i),,),2,1;(,3,2(n显示与隐式差分格式)(1i T n +)(1i T n +)1()()1(+-i T i T i T n n n 、、在4式中,n+1排上的任一节点i 的温度只依赖在n 排上i 节点及相邻节点i-1、i+1的温度值换言之,就是可由明显地来表示出来⇒显示差分格式若用)1()()1(111+-+++i T i T i T n n n 、、时刻的温度去计算1+n t tx i T i Tk Q n n ∆⋅∆---=++)1()(111t x i T i T k Q n n ∆⋅∆-+-=++)()1(112,21Q Q 、则能得到(5)(6)结合(3)式便得到另一种差分格式)()1(1)()21()1(1111i T i T Mi T M i T M n n n n =+-++--+++(7)此式只是表示的时间水平不同,实际上⇒与(4)式形势完全一致式(7)即完全隐式差分格式谢谢。
matlab传热计算程序

matlab传热计算程序
传热计算在工程学和科学领域中是一个重要的应用。
Matlab是一个功能强大的工程计算软件,可以用于传热计算。
在Matlab中,你可以使用各种方法来进行传热计算,比如有限元法、差分法、有限体积法等。
以下是一些常见的传热计算程序的示例:
1. 热传导方程求解,你可以编写一个Matlab程序来求解热传导方程,根据给定的边界条件和初始条件,使用差分法或有限元法来离散方程,并进行时间步进求解,得到温度场的分布。
2. 对流换热计算,对于流体内部的对流换热问题,你可以编写一个Matlab程序来求解Navier-Stokes方程和能量方程,结合有限体积法来进行流场和温度场的耦合求解。
3. 辐射换热计算,针对辐射换热问题,你可以编写一个Matlab程序来计算辐射传热,比如使用辐射传热方程和辐射传热模型,结合离散方法进行求解。
4. 传热系统优化,除了单一的传热计算,你还可以使用Matlab进行传热系统的优化设计,比如通过建立传热模型和耦合其
他工程模型,使用优化算法来寻找最优的传热系统设计参数。
总之,Matlab提供了丰富的工具和函数,可以用于传热计算的各个方面。
通过编写程序,你可以灵活地进行传热计算,并且可以根据具体的问题需求进行定制化的计算和分析。
希望这些信息对你有所帮助。
一维稳态导热数值计算

一维稳态导热数值计算引言在工程和科学领域中,热传导是一个重要的问题,它涉及到物体内部的热量传递过程。
一维稳态导热是指物体在一个方向上的热传导过程,且不随时间变化。
为了分析和解决一维稳态导热问题,我们可以使用数值计算方法,如有限差分法。
本文将介绍一维稳态导热数值计算的基本原理和步骤。
基本原理一维稳态导热问题可以描述为以下的热传导方程:$$\\frac{{d}}{{dx}}(k \\frac{{dT}}{{dx}}) = 0$$其中,k是物质的热导率,T是温度。
我们需要根据边界条件和初始条件求解该方程的解析解或数值解。
在数值求解中,我们通常将问题的区域离散化,将连续变量转化为离散变量。
我们可以将区域划分为多个小区间,每个小区间内的温度和导热系数近似为常数。
然后,我们可以使用有限差分法来近似求解。
数值计算步骤为了进行一维稳态导热问题的数值计算,我们需要按照以下步骤进行操作:步骤 1:确定区域和边界条件首先,我们需要确定问题的区域,并确定边界条件。
区域可以是一根导热杆或其他具有一维结构的物体。
边界条件可以是固定温度或热流量。
步骤 2:离散化区域将区域离散化是数值计算的基础。
我们可以将区域划分为多个小区间,每个小区间内的温度和导热系数近似为常数。
确定离散化的步长可以根据问题的要求进行选择。
步骤 3:建立差分方程根据离散化后的区域,我们可以建立差分方程,将热传导方程转化为一个线性方程组。
在一维稳态导热问题中,通常采用中心差分法或其他差分格式进行近似。
步骤 4:求解线性方程组求解差分方程就是求解线性方程组。
我们可以使用常见的数值计算工具或算法,如高斯消元法或迭代法,来求解线性方程组。
根据边界条件的不同,方程组的形式也会有所不同,需要根据具体情况进行选择。
步骤 5:计算结果最后,根据线性方程组的解,我们可以计算出每个小区间内的温度分布。
可以根据具体需求进行进一步计算和分析。
总结本文介绍了一维稳态导热数值计算的基本原理和步骤。
热传导方程有限差分法的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中的偏微分方程数值解法偏微分方程(Partial Differential Equations,PDEs)是数学中的重要概念,广泛应用于物理学、工程学、经济学等领域。
解决偏微分方程的精确解往往非常困难,因此数值方法成为求解这类问题的有效途径。
而在MATLAB中,有丰富的数值解法可供选择。
本文将介绍MATLAB中几种常见的偏微分方程数值解法,并通过具体案例加深对其应用的理解。
一、有限差分法(Finite Difference Method)有限差分法是最为经典和常用的偏微分方程数值解法之一。
它将偏微分方程的导数转化为差分方程,通过离散化空间和时间上的变量,将连续问题转化为离散问题。
在MATLAB中,使用有限差分法可以比较容易地实现对偏微分方程的数值求解。
例如,考虑一维热传导方程(Heat Equation):∂u/∂t = k * ∂²u/∂x²其中,u为温度分布随时间和空间的变化,k为热传导系数。
假设初始条件为一段长度为L的棒子上的温度分布,边界条件可以是固定温度、热交换等。
有限差分法可以将空间离散化为N个节点,时间离散化为M个时刻。
我们可以使用中心差分近似来计算二阶空间导数,从而得到以下差分方程:u(i,j+1) = u(i,j) + Δt * (k * (u(i+1,j) - 2 * u(i,j) + u(i-1,j))/Δx²)其中,i表示空间节点,j表示时间步。
Δt和Δx分别为时间和空间步长。
通过逐步迭代更新节点的温度值,我们可以得到整个时间范围内的温度分布。
而MATLAB提供的矩阵计算功能,可以大大简化有限差分法的实现过程。
二、有限元法(Finite Element Method)有限元法是另一种常用的偏微分方程数值解法,特点是适用于复杂的几何形状和边界条件。
它将求解区域离散化为多个小单元,通过构建并求解代数方程组来逼近连续问题。
在MATLAB中,我们可以使用Partial Differential Equation Toolbox提供的函数进行有限元法求解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有限差分和pde函数求解一维定态热传导方程
分别用有限差分方法和pde函数求解一维定态热传导方程,初始条件和边界
条件,热扩散系数α=0.00001,
2
2
TTtx
(1)
求解过程:
1. 用Tylaor展开法推导出FTCS格式的差分方程
首先对T进行泰勒展开得到如下两式子:
23
123123...232!3!23...232!3!nnnnnjjjjjnnnnnjjjjjttTTtxxTTxTTTtttTTTxxx
上述两个方程变换得:
1122323...23nnnnnnnjjjjjjjTTTTTtTtTotttttt
(2)
223
123...23nnnnnjjjjjTTTxTxTxxxx
1232422342222...3!4!nnnnnnjjjjjjTTTTxTxTxxxxxx
2
1122222-nnnjjjTTTToxxx
(3)
将上述式子(2)(3)代入(1)得:
12112222()nnnnnnnjjjjjjjTTTTTTTOtxtxtx
,
(4)
2. 方程的相容性和稳定性讨论:
上述方程截项为:
223324
2334
()...4...23!3!4!nnnnjjjjtTtTxTxTOtxttxx,
由于,0,0limxtotx所以方程有相容性
其经过傅里叶变换后,只有当,tx满足下列条件时,方程具有较好的稳
定性:
2
2
20sin12mkxtx
其中mNkLN为节点个数,L为边界长度由于:
22
sinsin122mkxNxL
所以当20.5tsx时方程具有稳定性
3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。
由式(4)得:
1111122(12)nnnjjjnnnnnjjjjjTTTTTtsTsTsTx
要想知道下一个时刻1nt下的温度,则必须知道在nt时刻下该点以及相邻
两点的温度,如下图所示:
所以需要知道的是在各个时刻x轴两侧的温度,以及初始时刻x轴上各点
温度。下述各题求解过程中,均采用
0
max0.000010(1,2...1)j
Tjj,
0
100nT
,作为边界条件。边界条件是由外界给定,本身对过程求解,精
度无影响
4. 编写M文件求解上述方程
M文件的编写见附录所示。
在matlab中调用heat_conduct(0.00001,15000,500,0.1),得到如下结果:
rms error is
rms =
0.7959
说明:1.上述结果采用的,xt分别为0.1和500,时间最终给定为15000
当,xt为(0.01,5)时的结果
附录1,传热方程有限差分的 M文件编写
function heat_conduct(alpha,Timemax,dt,dx)
%方程需要输入的参数有,最大时刻数,alpha,dt,dx,实际
Tmax=Timemax/dt+1;%时刻数
JMAX=1/dx+1;%x轴上的差分点个数
J=JMAX-1;MAXEX=J;
T=zeros(Tmax,JMAX);%构造温度矩阵
TE=zeros(Tmax,JMAX);%实际温度矩阵
%设定边界条件
T(:,1)=100;T(:,JMAX)=100;
s=alpha*dt/dx/dx;
%计算各个点的温度
for i=1:(Tmax-1)
for j=2:J
T(i+1,j)=s*T(i,j+1)+(1-2*s)*T(i,j)+s*T(i,j-1);
end
end
%计算实际值
%画图
z=0:dx:1;
t=0:(Tmax-1);
a=3000/dt+1;b=9000/dt+1;
subplot(1,2,1)
plot(z,T(a,:),'g*',z,T(a,:),'g',z,T(b,:),'o',z,T(b,:),'r',z,T(Tmax,:),'b')
xlabel('x方向')
ylabel('温度T')
title('3000,9000,15000时刻的温度分布')
%画整体分布图
for i=1:JMAX
X(:,i)=t;
end;
for j=1:Tmax
Y(j,:)=z;
end
subplot(1,2,2)
mesh(X,Y,T);
view([-1 1 1]);
xlabel('时刻t');
ylabel('方向x');
zlabel('温度T');
title('整体分布')
二、调用MATLAB函数完成上述计算
1. 编写M文件求解上述方程,并用适当的文字对程序做出说明。
Matlab中自带的pdepe函数可直接求解一般偏微分方程。其调用格式为:
T=pdepe(m,@pdefun,@pdeic,@pdebc,x,t);其中T为输出结果,在本题中,其输出格
式为一个二维数组,分别表示一维空间和时间上的温度;x,t,分别为所需输入
的时间和空间数组;
为达到该pdepe函数求解要求,将上述方程转化为如下函数:即@pdefun
所要求的函数的描写格式:
,,,,,,,,mmTTTcxtxxfxtusxtuxtxxx
本题中,在描述@pdefun时,
,,1Tcxtx;10mxm;,,,TTfxtuxx
;,,,0sxtux
@pdeic为初值条件,其描述的标准格式为:
0
0,0Tx
@pdebc为边界条件,本题要求边界温度为100℃,其描述的标注格式为:
,,,,*,,,0TpxtTqxtTfxtux
所以左右边界的,,pxtT与,,qxtT分别表示为:,,100pxtTT边界边界;
,,=0qxtT
边界
上述程序编写见附录2
heat_conduct1(0.1,500,15000)得到如下结果所示:
附录2:Matlab PDE求解上述一维传热方程
%带求解函数
function [c,f,s]=pdefun(x,t,T,dT)