热传导方程以及Matlab求解

热传导方程以及Matlab求解本文讲述热传导方程 以及基于第一类边界条件的有限差分法的 Matlab 求解

热传导方程以及Matlab求解

简略推导

u = u ( x ⃗ , t ) u=u(\vec{x},t) u=u(x
,t)
表示某一个均匀物体 Ω ⊂ R 3 \Omega\subset\mathbb{R}^3 ΩR3在位置 x ⃗ \vec{x} x
,时刻 t t t的温度(单位: K K K), c c c表示比热(单位: J / ( k g ⋅ K ) J/(kg\cdot K) J/(kgK)), ρ \rho ρ表示密度(单位: k g / m 3 kg/m^3 kg/m3),令 V V V Ω \Omega Ω内的任何光滑区域, q ⃗ \vec{q} q
表示温度场的热流密度(单位: W / m 2 W/m^2 W/m2)且 f 0 = f 0 ( x ⃗ , t ) f_0=f_0(\vec{x},t) f0=f0(x
,t)
表示在位置 x x x,时刻 t t t产生的热量密度,由能量守恒定律我们得到

d d t ∭ V c ρ u ( x ⃗ , t ) d v + ∬ ∂ V q ⃗ ⋅ n ⃗ d S = ∭ V ρ f 0 d v \frac{d}{dt}\iiint\limits_{V}c\rho u(\vec{x},t)dv+\iint\limits_{\partial V}\vec{q}\cdot\vec{n}dS=\iiint\limits_{V}\rho f_0dv dtdVcρu(x
,t)dv+
Vq
n
dS=
Vρf0dv

其中 n ⃗ \vec{n} n
∂ V \partial V V的单位外法向量,利用Gauss公式我们知道
c ρ ∭ V ∂ u ( x ⃗ , t ) ∂ t d v + ∭ V d i v q ⃗ d v = ∭ V ρ f 0 ( x ⃗ , t ) d v c\rho\iiint\limits_{V}\frac{\partial u(\vec{x},t)}{\partial t}dv+\iiint\limits_{V}\mathrm{div}\vec{q}dv=\iiint\limits_{V}\rho f_0(\vec{x},t)dv cρVtu(x
,t)
dv+
Vdivq
dv=
Vρf0(x
,t)dv

由于区域 V V V的任意性,我们有
c ρ ∂ u ( x ⃗ , t ) ∂ t + d i v q ⃗ = ρ f 0 ( x ⃗ , t ) c\rho \frac{\partial u(\vec{x},t)}{\partial t}+\mathrm{div}\vec{q}=\rho f_0(\vec{x},t) cρtu(x
,t)
+
divq
=
ρf0(x
,t)

由Fourier热传导定律,温度场中的热流密度与温度梯度成正比,而且热量总是从高温处流向低温处
q ⃗ = − k ( ∂ u ( x ⃗ , t ) ∂ x 1 , ∂ u ( x ⃗ , t ) ∂ x 2 , … , ∂ u ( x ⃗ , t ) ∂ x n ) \vec{q}=-k(\frac{\partial u(\vec{x},t)}{\partial x_1},\frac{\partial u(\vec{x},t)}{\partial x_2},\dots,\frac{\partial u(\vec{x},t)}{\partial x_n}) q
=
k(x1u(x
,t)
,x2u(x
,t)
,,xnu(x
,t)
)

k > 0 k>0 k>0是物体的导热系数,代入上式之后,我们得到热方程
∂ u ( x ⃗ , t ) ∂ t − a 2 ( ∂ 2 u ( x ⃗ , t ) ∂ x 1 2 + ∂ 2 u ( x ⃗ , t ) ∂ x 2 2 + ⋯ + ∂ 2 u ( x ⃗ , t ) ∂ x n 2 ) = f ( x ⃗ , t ) \frac{\partial u(\vec{x},t)}{\partial t}-a^2(\frac{\partial^2 u(\vec{x},t)}{\partial x_1^2}+\frac{\partial^2 u(\vec{x},t)}{\partial x_2^2}+\dots+\frac{\partial^2 u(\vec{x},t)}{\partial x_n^2})= f(\vec{x},t) tu(x
,t)
a2(x122u(x
,t)
+
x222u(x
,t)
+
+xn22u(x
,t)
)=
f(x
,t)

这里 a = k c ρ , f ( x ⃗ , t ) = f 0 ( x ⃗ , t ) c a=\sqrt{\frac{k}{c\rho}},f(\vec{x},t)=\frac{f_0(\vec{x},t)}{c} a=cρk
,f(x
,t)=
cf0(x
,t)


















初始条件和边界条件的物理意义

初始条件:给出物体内部各点在初始时刻 t = 0 t=0 t=0的温度分布
u ( x ⃗ , 0 ) = φ ( x ⃗ ) , x ∈ Ω u(\vec{x},0)=\varphi(\vec{x}),x\in\Omega u(x
,0)=
φ(x
),x
Ω

其中 φ ( x ) \varphi(x) φ(x)是已知函数




边值条件:给出物体边界 ∂ Ω \partial \Omega Ω在时间 t > 0 t>0 t>0的温度分布或受周围介质的影响情况,通常分为以下三类

(1)已知边界 ∂ Ω \partial \Omega Ω的温度分布
u ( x ⃗ , t ) = g ( x ⃗ , t ) , x ∈ ∂ Ω , t ≥ 0 u(\vec{x},t)=g(\vec{x},t),x\in\partial\Omega,t\ge0 u(x
,t)=
g(x
,t),x
Ω,t0

g g g为常数时,表示物体的边界保持恒温。




(2)已知通过物体边界 ∂ Ω \partial \Omega Ω流入或流出物体 Ω \Omega Ω的热量
k ∂ ∂ n ⃗ u ( x ⃗ , t ) = g ( x ⃗ , t ) , x ∈ ∂ Ω , t ≥ 0 k\frac{\partial}{\partial\vec{n}}u(\vec{x},t)=g(\vec{x},t),x\in\partial\Omega,t\ge0 kn
u(x
,t)=
g(x
,t),x
Ω,t0

其中 n ⃗ \vec{n} n
∂ Ω \partial\Omega Ω的单位外法向量,当 g ≥ 0 g\ge0 g0时表示热量流入, g ≤ 0 g\le0 g0时表示热量流出, g = 0 g=0 g=0时表示物体绝热。




(3)已知通过物体边界 ∂ Ω \partial\Omega Ω与周围介质的热交换强度
k ∂ ∂ n ⃗ u ( x ⃗ , t ) = α 0 ( x ⃗ , t ) ( g 0 ( x ⃗ , t ) − u ( x ⃗ , t ) ) , x ∈ ∂ Ω , t ≥ 0 k\frac{\partial}{\partial\vec{n}}u(\vec{x},t)=\alpha_0(\vec{x},t)(g_0(\vec{x},t)-u(\vec{x},t))_,x\in\partial\Omega,t\ge0 kn
u(x
,t)=
α0(x
,t)(g0(x
,t)
u(x
,t)),x
Ω,t0


∂ ∂ n ⃗ u ( x ⃗ , t ) + α ( x ⃗ , t ) u ( x ⃗ , t ) = g ( x ⃗ , t ) , x ∈ ∂ Ω , t ≥ 0 \frac{\partial}{\partial\vec{n}}u(\vec{x},t)+\alpha(\vec{x},t)u(\vec{x},t)=g(\vec{x},t),x\in\partial\Omega,t\ge0 n
u(x
,t)+
α(x
,t)u(x
,t)=
g(x
,t),x
Ω,t0

其中 n ⃗ \vec{n} n
∂ Ω \partial\Omega Ω的单位外法向量, g 0 g_0 g0表示周围介质的温度, α 0 ≥ 0 \alpha_0\ge0 α00表示热交换系数, α = α 0 k > 0 , g = g 0 k \alpha=\frac{\alpha_0}{k}>0,g=\frac{g_0}{k} α=kα0>0,g=kg0








有限差分法以及Matlab求解

对各点差分化, x x x轴设置 N x N_x Nx个分点, t t t轴每个单位长度设置 N t N_t Nt个分点。
{ x i = i N x , i = 1 , 2 , … , N x t j = j N t , j = 1 , 2 , … , ∞ x i + 1 − x i = d x = x d N x t j + 1 − t j = d t = 1 N t \begin{cases} x_i=\frac{i}{N_x},\quad i=1,2,\dots,N_x \\t_j=\frac{j}{N_t},\quad j=1,2,\dots,\infty \\x_{i+1}-x_i=d_x=\frac{x_d}{N_x} \\t_{j+1}-t_j=d_t=\frac{1}{N_t} \end{cases}

xi=Nxi,i=1,2,,Nxtj=Ntj,j=1,2,,xi+1xi=dx=Nxxdtj+1tj=dt=Nt1

对二阶差分项,我们使用二阶中心差商,上述方程可以近似写成
u ( x i , t j + 1 ) − u ( x i , t j ) d t = α u ( x i + 1 , t j ) − 2 u ( x i , t j ) + u ( x i − 1 , t j ) d x 2 \frac{u(x_{i},t_{j+1})-u(x_i,t_j)}{d_t}=\alpha\frac{u(x_{i+1},t_{j})-2u(x_i,t_j)+u(x_{i-1},t_{j})}{d_x^2} dtu(xi,tj+1)u(xi,tj)=αdx2u(xi+1,tj)2u(xi,tj)+u(xi1,tj)
这说明, ( i + 1 , j ) , ( i , j ) , ( i , j + 1 ) , ( i , j − 1 ) (i+1,j),(i,j),(i,j+1),(i,j-1) (i+1,j),(i,j),(i,j+1),(i,j1)之间可以相互表示








我们可以用图直观表示

在这里插入图片描述

Nx=100;Nt=100;%我们对x轴分成Nx段,有Nx+1个点,对t轴分成Nt段,有Nt+1个点 xd=1;t=1000; dt=1/Nt;dx=xd/Nx; alpha=1000*0.082/(300*1377);%热传导系数,可以自行调整,alpha越大表示传热越快 u=zeros(Nx+1,floor(t*Nt)+1);%生成(Nx+1)*(Nt+1)的矩阵 u(end,:)=37;u(:,1)=20; u(1,:)=65; for j=1:floor(t*Nt) for i=2:Nx u(i,j+1)=(1-2*alpha*dt/dx^2)*u(i,j)+(alpha*dt/dx^2)*(u(i+1,j)+u(i-1,j)); end end f=@(x,t)u(floor(x*Nx/xd)+1,floor(t*Nt)+1); figure X=0:0.05:1;[~,xl]=size(X); T=0:1:1000;[~,Tl]=size(T); [xx,tt]=meshgrid(X,T); Z=zeros(xl,Tl); for ii=1:xl for jj=1:Tl Z(ii,jj)=f(X(ii),T(jj)); end end mesh(xx,tt,Z') xlabel('与热源之间的距离d') ylabel('经过的时间t') zlabel('温度') %下面我们要找出x=d时,温度随时间的变化趋势 figure for d=0.01:0.01:0.12 subplot(3,4,100*d) t_x_d=0:1:1000; [~,len]=size(t_x_d); U_d=zeros(1,len); for i=1:len U_d(i)=f(d,t_x_d(i)); end plot(t_x_d,U_d); xlabel('经过的时间t') ylabel('温度') title(['d=' num2str(d)]) end figure for d=0.2:0.05:0.95 subplot(4,4,20*d-3) t_x_d=0:1:1000; [~,len]=size(t_x_d); U_d=zeros(1,len); for i=1:len U_d(i)=f(d,t_x_d(i)); end plot(t_x_d,U_d); xlabel('经过的时间t') ylabel('温度') title(['d=' num2str(d)]) end 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218237.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午7:44
下一篇 2026年3月18日 上午7:44


相关推荐

  • 此视频无法播放0xc00d36c4_视频播放失败代码-30

    此视频无法播放0xc00d36c4_视频播放失败代码-30相信很多用户都遇到过视频无法播放的问题。比如将重要视频从旧电脑拷到U盘上,使用另一台电脑播放时,提示视频播放错误代码0xc00d36c4,不支持该视频播放。其实,视频无法播放的问题是很常见的,不少用户在电脑上连接相机或者手机后播放视频,也会提示0xc00d36c4。出现这样的问题要怎么解决,怎么才能修复该视频文件使其正常播放?播放MP4格式视频显示错误代码0xc00d36c4的情况大多数情况下,…

    2026年4月18日
    5
  • OpenClaw 的作者最新 SOUL.md 提示词,让你的龙虾更有趣儿

    OpenClaw 的作者最新 SOUL.md 提示词,让你的龙虾更有趣儿

    2026年3月13日
    2
  • linux虚拟机设置固定IP

    linux虚拟机设置固定IPlinux虚拟机设置固定IPubuntu虚拟机(桥接模式)设置固定IP方法很简单,直接在系统设置里面配置就可以了1.先使用ifconfig查看掩码2.点击设置3.点击network再点击set4.第一个为虚拟机ip,为避免冲突,建议设置210以上的ip5.重启,ifconfig查看ip不同版本系统界面可能不同,但操作类似…

    2022年7月16日
    14
  • exits函数「建议收藏」

    exits函数「建议收藏」updateempsetsal=sal*1.2whereexists(select1fromdeptwheredeptno=emp.deptnoandloc=’DALLAS’); 等同于updateempasetsal=sal*1.2whereexists(select1fromdeptbwhereb.deptno=a.deptnoa

    2025年7月21日
    4
  • CGAL 安装

    CGAL 安装win8 1 vs2013 下安装 CGAL 含 qt boost cmake 我的 CGAL 配置环境为 windows8 1 vs2013 qt4 8 6 cmake2 8CGAL 是非常强大的算法几何库 它是基于 boost 库编写的 因此需要要首先配置 boost 为了完成计算机辅助几何的项目需要用到很多几何算法 网格划分 几何建模等 所以需要配置安装 CGAL 个人感觉这是我遇到过最复杂的

    2026年3月18日
    2
  • 以太网用户侧接口(以太网协议转换方案)

    以太网接口示意图如下图1:以太网接口 如果您的职业生涯大部分时间都在从事PCB设计,并且您在计算机接口的布局和布线方面有经验,那么您就知道一件事是正确的:在器件应用说明中会有一些推荐的设计建议,并不是这些建议总是错误的,而是这些建议很容易断章取义。一位同事向我提出的一项建议是,在离散磁铁和连接器之间布线时,在RJ45连接器下方使用接地层。一些应用说明建议将系统接地覆盖RJ45连接器下方,一些应用说明建议将接地平面拆分为系统和机箱部分,以提供更强的隔离。应用说明中的一些建议指出,PHY、磁体和/或

    2022年4月15日
    184

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号