热传导方程以及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求解

我们给出一个例题
{ ∂ u ( x , t ) ∂ t = α ∂ 2 u ( x , t ) ∂ x 2 u ( 0 , t ) = T 1 = 65 , u ( x d , t ) = T 2 = 37 u ( x , 0 ) = 20 ( x ≠ 0 ) α = k ρ c , k = 0.082 , ρ = 300 , c = 1377 \begin{cases} \frac{\partial u(x,t)}{\partial t}=\alpha\frac{\partial^2 u(x,t)}{\partial x^2} \\u(0,t)=T_1=65,\quad u(x_d,t)=T_2=37 \\u(x,0)=20(x\ne0) \\\alpha=\frac{k}{\rho c},k=0.082,\rho=300,c=1377 \end{cases} tu(x,t)=αx22u(x,t)u(0,t)=T1=65,u(xd,t)=T2=37u(x,0)=20(x=0)α=ρck,k=0.082,ρ=300,c=1377
该题由2018年数学建模国赛A题改编而成, u u u是在 x = 0 x=0 x=0处有一个65度的热源,经过时间 t t t后,距离热源 d d d处的温度。
题目中的边界条件是Dirchilet边界条件, u ( 0 , t ) = T 1 = 65 u(0,t)=T_1=65 u(0,t)=T1=65的物理意义是任何时刻 t t t距离恒定热源 0 0 0的温度是 T 1 = 65 T_1=65 T1=65 u ( x d , t ) = T 2 = 37 u(x_d,t)=T_2=37 u(xd,t)=T2=37的物理意义是防护服的厚度是 x d x_d xd,即距离热源 x d x_d xd的温度恒为37度,即人体体温。
我们用一个图表示题目中给出的边界条件。 u ( x , 0 ) = 20 u(x,0)=20 u(x,0)=20的物理意义是在 t = 0 t=0 t=0时刻防护服内部的任何位置都是环境温度20度。
热传导方程以及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)之间可以相互表示

我们可以用图直观表示

热传导方程以及Matlab求解

方程可以改写成
{ u ( x i , t j + 1 ) = ( 1 − 2 α d t d x 2 ) u ( x i , t j ) + α d t d x 2 ( u ( x i + 1 , t j ) + u ( x i − 1 , t j ) ) u ( x i , 0 ) = 20 , i = 1 , 2 , … , N x u ( 0 , t j ) = 65 , u ( N x , t j ) = 37 , j = 0 , 1 , 2 , … , ∞ \begin{cases} u(x_{i},t_{j+1})=(1-2\frac{\alpha d_t}{d_x^2})u(x_i,t_j)+\frac{\alpha d_t}{d_x^2}({u(x_{i+1},t_{j})+u(x_{i-1},t_{j})}) \\u(x_i,0)=20,& i=1,2,\dots,N_x \\u(0,t_j)=65,\quad u(N_x,t_j)=37,& j=0,1,2,\dots,\infty \end{cases} u(xi,tj+1)=(12dx2αdt)u(xi,tj)+dx2αdt(u(xi+1,tj)+u(xi1,tj))u(xi,0)=20,u(0,tj)=65,u(Nx,tj)=37,i=1,2,,Nxj=0,1,2,,
我们根据下面一行已知点,求解出上面一行未知点,逐层向上求解,可以使用Matlab求解。

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

热传导方程以及Matlab求解

热传导方程以及Matlab求解
热传导方程以及Matlab求解文章来源地址https://www.toymoban.com/news/detail-461226.html

到了这里,关于热传导方程以及Matlab求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 李雅普诺夫方程以及MATLAB函数求解

    (1)开环系统:x(k+1)=Ax(k)+Bu(k) A T PA - P = -Q (2)闭环系统:x(k+1)=Ax(k)+Bu(k) (A-BK) T P(A-BK) - P = -Q (1)开环系统:x(k+1)=Ax(k)+Bu(k) A T P - P A= -Q (2)闭环系统:x(k+1)=Ax(k)+Bu(k) (A-BK) T P - P(A-BK) = -Q 连续时间系统: P = lyap (A , Q) 就可以求解满足李雅普诺夫方程的对称矩阵P。 离散时间系

    2024年02月08日
    浏览(51)
  • 牛顿(Newton)迭代法求解非线性方程以及方程组的Matlab实现

    必做题目比较简单,写得有些随意,主要还是第二个拓展题目的难度比较高 传入题设数据有: 另附运行截图  

    2024年02月11日
    浏览(49)
  • 数值分析·学习 | 解线性方程组的直接方法(高斯消去法以及LU求解)matlab实现

    目录 一、前言: 二、算法描述: 三、实现代码: 1、高斯消去法: 2、高斯消去法-列主元消去法: 3、LU分解: 4、求逆矩阵: 四、总结: 个人学习内容分享 1、高斯消去法:         设有线性方程组         或写为矩阵形式

    2024年02月05日
    浏览(79)
  • matlab求解方程和多元函数方程组

    核心函数solve 一般形式 S=solve(eqns,vars,Name,Value) ,其中: eqns是需要求解的方程组; vars是需要求解的变量; Name-Value对用于指定求解的属性(一般用不到); S是结果,对应于vars中变量; 单个方程求解 方程:sin(x)=1 代码: 结果: 说明: MATLAB定义方程用的是 == 符号,就是这样

    2024年02月08日
    浏览(44)
  • MATLAB-常微分方程求解

    MATLAB中可以用来求解常微分方程(组)的函数有ode23、 ode23s、 ode23t、 ode23tb 、ode45、ode15s和odel13等,见下表。它们的具体调用方法类似,为了方便后面的描述, 在后面的介绍中将使用solver统一代替它们。 函数的具体调用方法如下。 [T,Y] =solver( odefun, tspan,y0) [T,Y] = solver( odefun,

    2024年02月02日
    浏览(50)
  • MATLAB-线性方程组求解

    线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。 对于形如AX=B的方程组来说,假设其系数矩阵A是m×n的矩阵,根据其维数可以将方程组分以下3种情况。 1)若m=n,则为恰定方程组,即方程数等于未知

    2023年04月16日
    浏览(45)
  • MATLAB:方程组的求解

    综合实例应用:方程组的求解 无论工程应用问题,还是数学计算问题,方程组都是解决问题转化的重要途径之一,将复杂问题转化为简单的方程组矩阵求解问题。 利用矩阵分解来求解线性方程组,是工程计算中最常用的计算。 LU分解法是先将系数矩阵A进行LU分解,得到LU=P

    2024年01月19日
    浏览(37)
  • MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

    非线性方程的求根方法很多,常用的有牛顿迭代法,但该方法需要求原方程的导数,而在实际运算中这一条件有时 是不能满足的,所以又出现了弦截法、二分法等其他方法。 在 MATLAB 中,非线性方程的求解和最优化问题往往需要调用最优化工具箱来解决。优化工具箱提供了一

    2024年02月08日
    浏览(56)
  • 矩阵方程的计算求解:使用 MATLAB

    矩阵方程的计算求解:使用 MATLAB 矩阵方程是数学中一类重要的方程,它以矩阵的形式表示,并涉及到矩阵的乘法、加法和逆运算等。在 MATLAB 中,我们可以使用多种方法来求解矩阵方程,包括直接求解、迭代法和数值方法等。本文将介绍几种常见的方法,并给出相应的 MATL

    2024年02月08日
    浏览(54)
  • MATLAB 之 线性方程组求解

    在 MATLAB 中,关于线性方程组的解法一般分为两类:一类是直接法,就是在没有舍入误差的情况下,通过有限步的矩阵初等运算来求得方程组的解;另一类是迭代法,就是先给定一个解的初始值,然后按照一定的迭代算法进行逐步逼近,求出更精确的近似解。 线性方程组的直

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包