利用matlab程序解决热传导问题
一维介质中的热传导问题 卡尔曼滤波 matlab

一维介质中的热传导问题一、概述热传导是物理学中的一个重要问题,特别是对于介质的热传导问题更是如此。
一维介质中的热传导问题是指介质在一维空间内热量的传导过程。
这一问题不仅在物理学中具有重要性,而且在工程领域中也有着广泛的应用。
在实际工程中,我们常常需要对介质中的热传导问题进行分析和研究,以便更好地设计和优化热传导设备,提高能源利用效率。
二、热传导方程介质中的热传导过程可以用热传导方程来描述。
一维情况下,热传导方程可以写为:其中,u(x, t)为介质中的温度分布,k为介质的热导率,c为介质的比热容,ρ为介质的密度,t为时间,x为空间坐标。
三、数值模拟对于介质中的热传导问题,我们常常需要进行数值模拟来解决热传导方程。
数值模拟可以采用有限差分法、有限元法等数值方法来进行。
在进行数值模拟时,我们通常需要借助计算机软件来进行计算,其中Matlab是一种非常实用的数学建模和仿真软件,特别适用于解决热传导问题。
四、卡尔曼滤波卡尔曼滤波是一种最优状态估计算法,可以用于对系统的状态进行预测和估计。
在介质中的热传导问题中,我们可以利用卡尔曼滤波算法来对系统的温度状态进行估计,从而更好地理解和分析热传导过程。
五、Matlab仿真在研究介质中的热传导问题时,我们可以利用Matlab软件进行仿真计算。
通过编写Matlab程序,我们可以对介质中的热传导过程进行模拟,并得到系统的温度分布。
我们也可以借助Matlab提供的工具,如ODE求解器等,对热传导方程进行数值求解,得到系统的温度变化规律。
六、结论介质中的热传导问题是一个具有重要意义的物理问题,对其进行深入的研究不仅有助于提高工程设备的效率,而且可以推动物理学领域的发展。
卡尔曼滤波和Matlab仿真技术的应用为介质中的热传导问题研究提供了新的方法和手段,可以更好地帮助我们理解和解决这一重要问题。
希望未来能够有更多的研究者投入到介质中的热传导问题的研究中,共同推动科学技术的进步。
matlab傅里叶谱方法求解热传导方程

文章标题:深度解析matlab傅里叶谱方法求解热传导方程在工程学和科学领域中,热传导方程是一个非常重要的偏微分方程,描述了物体内部温度分布随时间的变化。
而傅里叶谱方法是一种常用的数值求解方法,能够高效地对热传导方程进行求解。
本文将深入探讨matlab傅里叶谱方法在求解热传导方程中的应用,以及该方法在实际工程中的意义。
1. 热传导方程的基本概念热传导方程是描述物体内部温度分布随时间演化的方程。
一维情况下,热传导方程可以表示为:$$\frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partialx^2}$$其中,$u(x,t)$是位置$x$和时间$t$的温度分布函数,$\alpha$是热扩散系数。
对于二维、三维情况,热传导方程的形式也可以相应拓展。
2. matlab傅里叶谱方法的基本原理傅里叶谱方法是一种基于傅里叶级数展开的数值求解方法。
它的基本思想是将热传导方程通过傅里叶变换转化为频域上的方程,再通过离散化的方式进行求解。
在matlab中,可以利用快速傅里叶变换(FFT)来高效地实现傅里叶谱方法。
该方法的优点是高精度、高效率,并且适用于多维情况。
3. matlab傅里叶谱方法的具体实现在matlab中,可以通过编写相应的程序来实现对热传导方程的求解。
首先需要将热传导方程进行离散化,得到一个离散的时间和空间网格。
然后利用傅里叶变换将热传导方程转化为频域上的方程,通过FFT算法高效地求解。
最后再利用逆傅里叶变换将频域上的解转化为时域的解。
通过这一系列步骤,就可以在matlab中实现对热传导方程的高效求解。
4. 实际工程中的应用与意义matlab傅里叶谱方法在实际工程中有着广泛的应用与意义。
例如在材料科学中,可以利用该方法对材料的热传导特性进行建模和仿真。
在电子工程领域,也可以利用该方法对电路元件的热特性进行分析和优化。
另外,在生物医学工程中,对人体组织的热传导特性进行研究也可以借助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'),colorbar5. 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 = 1if 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')如有侵权请联系告知删除,感谢你们的配合!。
MATLAB在导热问题中的应用

MATLAB在导热问题中的应用导热问题简介导热是指物质内部不同温度区域之间的热量传递现象。
在不同的热力学系统中,由于温度差异,导致热量从高温区域流向低温区域,以减少温度差异,直到两个区域相等为止,这个过程叫做导热。
在工业生产和科学研究中,导热问题是一个非常重要的问题,例如,建筑物的两面温度差、内部电子器件的散热等等都涉及到导热问题。
对于一些研究者而言,如何利用数学模型和计算机软件来解决导热问题,就成为了一个非常重要的课题。
MATLAB在导热问题中的应用MATLAB是一个非常强大的工具箱,因其拥有强大的计算功能,可以用于解决一些复杂的导热问题,例如:热传导方程热传导方程是描述物质中热量传递的基本方程,可以用MATLAB进行求解。
假设离散化的计算域中存在一系列温度节点,我们可以用以下公式表示热传导方程。
$$ \\dfrac{\\partial T}{\\partial t} = \ abla \\cdot (k \ abla T) $$其中,T为温度场变量,t为时间变量,k为热导率,abla表示热传导方程的梯度算子。
我们可以用MATLAB中的数值计算工具箱进行矩阵运算、微分运算等维度相关的计算,以求解这个方程。
边值问题在一些实际的导热问题中,会涉及到一些带边界的热传导问题,例如,房屋内的热传导问题,需要考虑外界空气温度对房屋内温度的影响。
这时,我们可以使用MATLAB中的偏微分方程工具箱,以求解带边值条件的问题。
辐射换热问题在一些高温应用场合,例如火车内部电力设备的散热问题,会涉及到辐射换热问题。
与传导换热不同,辐射换热是指物体表面和空间中其他物体表面之间的热量传递现象。
在这种情况下,我们可以使用MATLAB中的图像处理工具箱,通过计算辐射通量的分布来解决辐射换热问题。
结论综上所述,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中模拟一维热传导过程。
有限差分法是一种常用的数值解法,用于近似求解微分方程。
它将连续的物理问题离散化,将连续的空间和时间划分为离散的网格点,并通过近似替代微分算子来计算离散点上的数值。
在一维热传导问题中,我们可以将传热方程离散化为差分方程,然后通过迭代计算来模拟热传导过程。
我们需要定义问题的边界条件和初始条件。
对于一维热传导问题,我们通常需要给定材料的热扩散系数、初始温度分布和边界条件。
假设我们研究的是一个长为L的细杆,材料的热扩散系数为α,初始温度分布为T(x,0),边界条件为T(0,t)和T(L,t)。
接下来,我们将空间离散化为N个网格点,时间离散化为M个时间步长。
我们可以使用等距网格,将杆的长度L划分为N个小段,每段的长度为Δx=L/N。
同样,时间也被划分为M个小步长,每个步长的长度为Δt。
这样,我们可以得到网格点的坐标x(i)和时间点的坐标t(j),其中i=1,2,...,N,j=1,2,...,M。
在有限差分法中,我们使用差分近似代替偏导数项。
对于一维热传导方程,我们可以使用向前差分近似代替时间导数项,使用中心差分近似代替空间导数项。
这样,我们可以得到差分方程:(T(i,j+1)-T(i,j))/Δt = α*(T(i+1,j)-2*T(i,j)+T(i-1,j))/Δx^2其中,T(i,j)表示在位置x(i)和时间t(j)的温度。
通过对差分方程进行重排和整理,我们可以得到递推公式:T(i,j+1) = T(i,j) + α*Δt*(T(i+1,j)-2*T(i,j)+T(i-1,j))/Δx^2现在,我们可以在MATLAB中实现这个递推公式。
首先,我们需要定义问题的参数和初始条件。
matlab传热计算程序

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

matlab ode解一维热传导偏微分方程一维热传导偏微分方程是在众多领域中经常出现的一个方程,如何用数值方法求解这个方程一直是数学科学家们研究的一个方向。
在这篇文章中,我们将围绕Matlab的Ode求解器,介绍如何使用Matlab 来解决一维热传导偏微分方程。
首先,我们要了解一维热传导方程的形式。
一维热传导方程如下所示:ut = kuxx其中,u表示温度,t表示时间,k是热传导系数,x是空间坐标。
该方程描述了温度随时间和空间的变化情况。
接下来,我们将使用Matlab Ode求解器来解决这个方程。
一个很重要的问题是,我们需要将一维热传导方程转换为一个ODE系统。
这可以通过离散化方法来实现。
我们可以将空间x离散为N个点,用差分来近似求解uxx,进而得到一个差分方程组。
例如,我们可以使用中心差分来近似求解uxx,得到如下方程组:u0 = uN = 0ui,j+1 –ui,j = (kΔt/Δx^2)*(ui+1,j –2ui,j + ui-1,j)其中,ui,j 表示在时间j和位置 i 处的温度,Δx是网格宽度,Δt是时间步长。
现在,我们已经将一维热传导方程转换为一个差分方程组,可以使用Matlab的Ode求解器来解决。
首先,我们需要将差分方程组转换为ODE向量形式。
将所有的ui,j都展开成一个向量u,然后将等式转化为一个向量形式。
我们可以将每一个方程表示为:ui,j+1 – ui,j = F(ui,j)其中,F(ui,j) 表示u的时间导数在i, j的位置。
接下来,我们需要将这个ODE系统输入到Matlab Ode求解器中。
可以使用ODE45或ODE23等求解器解决。
首先,需要定义一个包含所有ODE的函数,该函数接受一个向量u和时间t作为输入,并返回u 的时间导数。
然后,需要指定初始条件 u0 和时间范围。
最后,调用ode45或ode23等求解器,将ODE函数传递给求解器,并得到解。
在得到解之后,可以将解绘制成一维热传导的温度分布图。
matlab求解一维带内热源传热问题

matlab 求解一维带内热源传热问题解一维带有内部热源的传热问题通常涉及到热传导方程的求解。
热传导方程描述了温度场随时间和空间的变化。
一维热传导方程通常写作:22()T T Q x t xα∂∂=+∂∂ 其中:• T 是温度,• t 是时间,• x 是空间坐标,• α 是热扩散系数,• Q(x) 是热源。
解这个方程需要适当的边界条件和初始条件。
为了简化问题,我们可以考虑一个稳态(0T t∂=∂)情况。
以下是使用 MATLAB 求解一维带有内部热源的传热问题的简单示例代码:% 参数设置L = 1; % 区域长度alpha = 0.01; % 热扩散系数Q = @(x) 1; % 内部热源% 空间离散化N = 100; % 离散网格数x = linspace(0, L, N);% 热传导方程T = zeros(1, N);T(1) = 0; % 初始条件T(N) = 100; % 边界条件% 离散格式求解dx = x(2) - x(1);dt = 0.01;num_steps = 1000;for step = 1:num_stepsfor i = 2:N-1T(i) = T(i) + alpha * dt / dx^2 * (T(i+1) - 2*T(i) + T(i-1)) + Q(x(i)) * dt;endend% 结果可视化plot(x, T);xlabel('空间坐标');ylabel('温度');title('一维带内部热源传热问题');请注意,这是一个简化的例子,具体的问题可能需要更多的考虑,例如更精确的数值方法、不同的边界条件和初始条件、更复杂的热源分布等。
这个示例主要用于演示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程序解决热传导问题院系:能源与环境学院专业:建筑环境与设备工程学号:姓名:盖茨比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中,导热问题通常涉及热传导方程的数值求解。
热传导方程描述了物体内部温度分布随时间的变化,通常采用偏微分方程来描述。
解决导热问题的一种常见方法是使用有限差分法。
在MATLAB中,可以通过编写代码来离散化热传导方程,并使用迭代方法求解离散化后的方程。
另一种常见的方法是使用MATLAB的偏微分方程工具箱(Partial Differential Equation Toolbox)。
该工具箱提供了一系列函数和工具,可以帮助用户建立和求解偏微分方程,包括热传导方程。
用户可以通过定义边界条件、初始条件和热传导方程的参数来建立模型,并使用工具箱中的函数进行数值求解。
此外,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来求解二维热传导方程。
首先,我们需要确定问题的边界条件和初始条件。
假设我们研究一个矩形区域内的热传导问题,并且该区域的边界上有固定的温度。
那么边界条件可以描述为边界上的温度值为常数。
对于初始条件,我们可以指定矩形区域内的温度分布。
然后,我们将采用有限差分法来离散化热传导方程。
假设矩形区域的长度为Lx,宽度为Ly,并将其划分为Nx个网格段和Ny个网格段。
我们可以将矩形区域内的温度值表示为一个Nx×Ny的矩阵,其中每个网格点的温度值为Ti,j。
根据有限差分法的思想,我们可以将二维热传导方程离散化为如下的差分方程:(Ti,j(t+Δt) - Ti,j(t))/Δt = α( (Ti+1,j(t) - 2Ti,j(t) + Ti-1,j(t))/(Δx)² +(Ti,j+1(t) - 2Ti,j(t) + Ti,j-1(t))/(Δy)² )其中,Δt是时间步长,α是热导率,Δx和Δy分别是网格段在x和y方向上的长度。
我们可以通过对该差分方程进行离散化,得到如下的迭代公式:Ti,j(t+Δt) = Ti,j(t) + αΔt/Δx² ( Ti+1,j(t) - 2Ti,j(t) + Ti-1,j(t) ) + αΔt/Δy² ( Ti,j+1(t) - 2Ti,j(t) + Ti,j-1(t) )我们可以使用MATLAB来编写程序求解上述差分方程,计算每个网格点在每个时间步长上的温度值。
首先,我们需要定义问题的参数,包括矩形区域的大小、网格的数量、以及时间步长等等。
Lx = 1; % 矩形区域的长度Ly = 1; % 矩形区域的宽度Nx = 100; % 网格在x方向上的数量Ny = 100; % 网格在y方向上的数量alpha = 0.1; % 热导率tFinal = 1; % 计算的总时间dt = 0.001; % 时间步长然后,我们需要对矩形区域进行离散化,得到网格点的坐标。
matlab在传热学例题中的应用

matlab在传热学例题中的应用
MATLAB 是一种广泛使用的数学软件,可以在传热学等领域中用于数值计算和可视化。
以下是 MATLAB 在传热学例题中的应用:
1. 求解热传导方程
热传导方程是传热学中的基本方程之一,可以用于描述热量在固体表面上的传递。
MATLAB 可以用于求解热传导方程,例如可以使用Navier-Stokes 方程求解器来求解热传导方程。
2. 模拟热传导过程
通过使用 MATLAB 中的数值积分方法,可以模拟热传导过程,例如在求解热传导问题时,可以使用有限差分法 (FDM) 来求解热传导问题。
3. 可视化传热过程
MATLAB 可以用于可视化传热过程,例如可以使用 MATLAB 中的图像处理工具箱来绘制热传导过程的可视化图像。
此外,MATLAB 还可以用于制作动画,以展示传热过程的变化。
4. 研究热传导特性
通过使用 MATLAB 进行传热模拟,可以研究热传导特性,例如可以研究热传导率、热阻等特性。
此外,MATLAB 还可以用于研究热传导的非线性特性,例如可以使用非线性优化工具箱来求解最优热传导率。
MATLAB 在传热学中的应用非常广泛,可以帮助传热学者更好地理解和研究传热过程。
Matlab在热传递学课程中的应用

Matlab在热传递学课程中的应用热传递学是研究热能传递和传导的学科,广泛应用于工程、物理和环境领域。
在热传递学课程中,Matlab是一个常用的工具,可以帮助学生理解和分析热传递过程。
下面将介绍在热传递学课程中使用Matlab的步骤和应用。
第一步是建立热传递模型。
在研究热传递过程时,我们需要建立相应的数学模型。
可以使用Matlab来编写这些模型,并通过求解数学方程来分析热传递现象。
例如,我们可以使用Matlab编写热传导方程,并求解得到温度分布。
第二步是处理边界条件。
在热传递过程中,边界条件对结果有着重要的影响。
例如,我们可以设置材料的初始温度、表面的热通量或边界温度等。
Matlab提供了丰富的边界条件处理函数和图形界面,使得处理边界条件变得更加简便。
第三步是求解热传递问题。
在建立了合适的模型和边界条件后,我们可以使用Matlab的数值求解方法来求解热传递问题。
Matlab提供了许多数值求解算法,如有限差分法和有限元法,可以帮助我们得到准确的结果。
通过对求解结果的分析和可视化,我们可以更好地理解热传递过程。
第四步是进行参数敏感性分析。
在研究热传递过程时,我们通常需要考虑不同的参数对结果的影响。
Matlab提供了参数敏感性分析的工具,可以帮助我们理解不同参数对热传递问题的影响程度。
通过参数敏感性分析,我们可以选择最优的参数组合,并优化热传递系统的设计。
第五步是进行热传递实验和数据处理。
除了数值分析,实验也是研究热传递的重要手段。
Matlab 可以辅助我们进行热传递实验的数据处理和分析。
通过编写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导热问题

二维导热物体温度场的数值模拟姓名小明学号 111111班级能动学院能动一、问题描述有一墙角模型,尺寸如图1所示,导热系数0.53W/(m·K),墙角内外壁为第一类边界条件。
求解该模型的温度分布及导热量。
图1q=0二、计算原理根据热平衡法列出节点方程,各方向导入单元体的热量之和为零。
内节点和绝热边界点(图1点划线上的点)的方程形式不同。
图2 Array图2所示的内节点和绝热边界节点方程如下:内节点:)()()()(1,,1,,1,1,,1,=⎥⎦⎤⎢⎣⎡-+-+-+-••=+++-+-+x y t t x y t t y x t t y x t t j i j i j i j i j i j i j i j i W E S N ∆∆∆∆∆∆∆∆ΦΦΦΦλ绝热边界点:)(02)(2)(1,,1,1,,1,=⎥⎦⎤⎢⎣⎡-++-+-••=+++--+x y t t y xt t y x t t j i j i j i j i j i j i W E S N ∆∆∆∆∆∆ΦΦΦΦλ三、计算过程用Matlab7.1语言编写计算程序,初取网格步长m y x 1.0=∆=∆运行结果:图1:各个点的温度数值图2:分层设色等温线分布图3:等温线分布(每两条线间隔为三度)四、小结本次数值模拟是运用matlab程序用于数值计算。
小组成员共同讨论并复习了热传导问题的数学描述和热平衡法;从模拟过程中练习了不同节点迭代方程的建立;并简单学习了matlab语言的使用。
这次大作业对于我们以后的学习和可能的研究来说是一个很好的锻炼机会。
MATLAB编辑一维热传导方程的模拟程序

求解下列热传导问题: 【1 】()()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧====-=≤≤=∂∂-∂∂1,10,,1,010,001222ααL t L T t T zz T L z t T z T程序:function heat_conduction() %一维齐次热传导方程options={'空间杆长L','空间点数N' ,'时光点数M','集中系数alfa','稳固前提的值lambda(取值必须小于0.5)',};topic='seting';lines=1;def={'1','100','1000','1','0.5'};h=inputdlg(options,topic,lines,def);L=eval(h{1});N=eval(h{2});M=eval(h{3});alfa=eval(h{4});lambda=eval(h{5});%lambda 的值必须小于%***************************************************h=L/N;%空间步长z=0:h:L;z=z';tao=lambda*h^2/alfa;%时光步长tm=M*tao;%热传导的总时光tmt=0:tao:tm;t=t';%盘算初值和边值T=zeros(N+1,M+1);Ti=init_fun(z);To=border_funo(t);Te=border_fune(t);T(:,1)=Ti;T(1,:)=To;T(N+1,:)=Te;%用差分法求出温度T与杆长L.时光t的关系for k=1:Mm=2;while m<=NT(m,k+1)=lambda*(T(m+1,k)+T(m-1,k))+(-2*lambda+1)*T(m,k); m=m+1;end;end;%设置立体网格for i=1:M+1X(:,i)=z;end;for j=1:N+1Y(j,:)=t;endmesh(X,Y,T);view([1 -1 1]);xlabel('Z');ylabel('t');zlabel('T');function y=init_fun(z)%初值前提y=1-z.^2;returnfunction y=border_funo(t)%z=0的鸿沟前提y=1+t.*0;returnfunction y=border_fune(t)%z=L的鸿沟前提y=t*.0;return运行情形:按“run”运行时,弹出窗口将图中相干数据更改为:点击图框中的“OK”,在“command window”中输出成果为:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈佛大学能源与环境学院课程作业报告作业名称:传热学大作业——利用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次方时,跳出循环得出结果。
将误差改为0.01时,只需迭代25次,如下[x,n]=gauseidel(A,b,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]',0.01)运行结果为 将误差改为0.1时,需迭代20次,可见随着迭代次数增加,误差减小,变化速度也在减小。
[方法2]通过 i=1:10判断收敛,为迭代10次,若改为1:20,则迭代20次。
2、在同样的误差要求下,误差控制在e 的-6次方内,Gauss 迭代用了49次达到要求,而Jacobi 迭代用了97次,可见,在迭代中尽量采用最新值,可以大幅度的减少迭代次数,迭代过程收敛快一些。
在Gauss 中,初值为100,迭代46次达到精确度1.0e-6,初值为50时,迭代47次,初值为0时,迭代49次,初值为200时迭代50次,可见存在一个最佳初始值,是迭代最快。
这一点在jacobi 迭代中表现的尤为明显。
五、上下边界的热流量:上边界t=200℃,∞t =10℃,所以,热流量Φ1=λ*[2*100-200x y ∆∆+x y a ∆∆t -200+x y ∆∆b t -200+x y ∆∆c t -200+2*t -200d x y ∆∆] =1*(100/2+(200-139.6088)+(200-150.3312)+(200-153.0517)+(200-153.5639)/2) =230.2264W下边界热流量Φ2=|λ*[x y ∆∆m i t -t +x y∆∆o j t -t +x y ∆∆p k t -t +2*t -t q l x y ∆∆]- h*(2*10-100x y ∆∆+x *t -t n ∆∆∞y +x *t -t o ∆∆∞y +x *t -t m ∆∆∞y +2*t -t p x y ∆∆∞)|=|1*((84.1429-20.1557)+(67.9096-15.4521)+(63.3793-14.8744)+(62.4214- 14.7746)/2)-10*(90/2+(20.1557-10)+(15.4521-10)+(14.8744-10)+(14.7746-10)/2)| = |-489.925|W =489.25W六、温度等值线Gauss:Yacobi:七、计算小结导热问题进行有限差分数值计算的基本思想是把在时间、空间上连续的温度场用有限个离散点温度的集合来代替,即有限点代替无限点,通过求解根据傅里叶定律和能量守恒两大法则建立关于控制面内这些节点温度值的代数方程,获得各个离散点上的温度值。