熱導方程的Matlab數值解方法

2021-02-14 matlab愛好者

這是一個很久很久以前的一個故事,久到能夠讓人忘記原來這這些方程是如此的貼近自己的學習。你學或者不學,它都在這裡,不難也不簡單。過冷水今天就和大家分享一下一維熱傳導方程特別案例的具體求解方法。

熱傳導是一個很常見的現象。當物體內部的溫度分布不均勻時,熱量就會從溫度較高的地方流動,這個過程中,溫度是空間和時間的函數。熱傳導方程就是溫度所滿足的偏微分方程,它的解給出任意時刻物體內的溫度分布。

為了建立熱導方程,我們首先介紹熱導系統置於x軸,考查系統在任意x處的橫截面上的一個單位面積,設熱流沿x軸方向傳遞,x處的溫度為u(x),溫度梯度為du(x)/dx。傅立葉指出:在單位面積內流經該單位面積的熱量q與該處的溫度梯度成正比即:

k:熱導率,負號表示與溫度梯度方向相反。現在假設這個一維熱傳導系統的長度為l,橫截面面積為s杆的兩個端點處於x=0和x=l.假定杆在初始t=0時刻溫度分布為Φ(x),在隨後的時間(t>0),熱量在杆中流動。現在我們要確定在任意t時刻,杆中任意位置x(0<x<l)的溫度u(x,t)。

我們考查系統在x位置的一段∆x,根據傅立葉定律在∆t時間內從∆x前端流入的熱量為:

    另一方面,在該時間內從後端流出的熱量為:

在沒有其他熱源的情況下,體積元S∆x吸收的熱量使之溫度升高。而溫度升高的描述則是基於熱體比熱c的定義:

其中,m是物體的質量,c表示單位質量的物體溫度升高1K所需要的熱量。這樣體積元S∆x吸收的熱量為:

其中,ρ=m/(S∆x)是系統質量體密度。熱量守恆要求:

則:

對其進行進一步變化可得:

這就是所謂的一維系統的熱傳導方程。我們對熱傳導方程進行一個簡單的分析,若時間的微商項du(x)/dt=0這是穩態過程。則d2u(x)/dx2=0則:


有熱源的熱傳導方程為:

我們來看一個比較簡單形式的求解方法。

該條件下的熱導方程求解,採用兩種不同的形式分離變量法和差分法。我們先來看分離變量法:

則:

由邊界條件u(0,t)=0,u(l,t)=0可得X(0)=X(l)=0,求邊值問題:

解:

這裡需要解釋一下X、、(x)+λX(x)=0微分方程根據λ<0,λ=0,λ>0;表示成不同函數類型,除λ>0能夠得到符合邊界條件的函數外,其它都不符合邊界條件。

現在考慮:

將特徵值λ帶入方程的:

通解為:


於是:

再利用初值條件:u(x,0)=φ(x)可得:

於是最終解就是給出來:

我們看一道有具體條件的題:

再利用初值條件:u(x,0)=φ(x)可得:

最終結果有沒有覺得神秘複雜的熱導方程好像也不是那麼難計算,就是一個累計加和的形式,很簡單。讀者需要注意的是熱導方程的形式是和邊界條件有關係的,不同的邊界條件最終的形式差別是很大的,我們來看一下代碼:

x=0:0.1*pi:pi;y=0:0.04:1;[x,t]=meshgrid(x,y);s=0;m=length(j);%matlab可計算的最大數   for i=1:m    s=s+(200*(1-(-1)^i))/(i*pi)*(sin(i*x).*exp(-i^2*t));end;surf(x,t,s);xlabel('x'),ylabel('t'),zlabel('T');title(' 分離變量法(無窮)');axis([0 pi 0 1 0 100])

熱導方程的數值解代碼出乎意料的簡潔。我們再來看一下另外一種求解方法:有限差分方法。

有限差分:將求解域劃分為差分網格,用有限個網格節點代替連續的求解域。有限差分方法以泰勒級數展開等方法,把控制方程中的導數用網格節點上函數值的差商代替進行離散,從而建立以網格節點上的值為未知數的代數方程組.

離散化:

其代碼實現為:

%有限差分法:u=zeros(10,25);%橫坐標為x,縱坐標為t;s=(1/25)/(pi/10)^2;fprintf('穩定性係數S為:\n');disp(s);for i=2:9;    u(i,1)=100;end;for j=1:25;    u(1,j)=0;    u(10,j)=0;end;for j=1:24;    for i=2:9;        u(i,j+1)=s*u(i+1,j)+(1-2*s)*u(i,j)+s*u(i-1,j);    endenddisp(u);[x,t]=meshgrid(1:25,1:10);surf(x,t,u);xlabel('t');ylabel('x');zlabel('T');title('有限差分法解');

這就是過冷書想要和大家分享的關於一維熱傳導方程求解的方法,數值解的代碼過程很簡單,主要是數學問題,第一種方法用到了分離變量的思想使得溫度變得簡單。第二種方法就是用具體值來近似表示熱導方程。使得問題變得簡單。看完之後才有豁然開朗的感覺,數學也沒有想像中的那麼難。限於篇幅一部分人所關注的二維熱傳導方程敬請起來後期會和大家分享二維熱導方程案例,具體實現代碼。

公眾號中長期支持投稿,若是對相關方程的計算有獨到體會可以進行投稿,在公眾號回復投稿,聯繫小編即可。

要求:有必要的算法介紹、公式推導(公式需要能編輯)、完整可執行的代碼、自行選擇一個稍微複雜的微分方程作為求解示例,提交文稿一律用Word,並提供相關m文件和圖片,以上題目網上基本上都有原始碼,參考後必須註明相關參考連結,切勿直接抄襲,需要有自己的理解和分析

如需轉載,請在公眾號中回復「轉載」獲取授權,未經授權擅自搬運抄襲的,必將追究其責任!

往期回顧>>>>>>

從泰勒級數說傅立葉級數

你所不知道的Monte Carlo形式

基於Hough變換原理實現圖像直線檢測【附原始碼】

數值計算——MATLAB數值積分原理詳講

相關焦點

  • 用MATLAB巧解微分方程實例分析
    其完整形式為:dsolve(『eqn』,』cond』,』var』)沒接觸過matlab的小兄弟可能看著有點懵,這是啥。暫且聽我慢慢道來:eqn代表微分方程,cond代表初始條件(無初始條件可以預設),var代表微分方程中的自變量(默認為t)。對了,重要的一階導,二階導,等高階導怎麼表示呢?別著急,也很簡單。
  • 偏微分方程(組)的數值解法介紹
    >我們知道物理現象中很多問題可以用偏微分方程描述,例如振動、熱傳導、擴散等。一些典型物理方程的構建及解析解法,有興趣的用戶可參考顧樵編著的《數學物理方法》。涉及到多變量或多領域的偏微分方程就存在著變量的耦合,很難用數解析解法或無法用解析解法求得耦合偏微分方程解,此時就需要我們是用數值解法進行求解,本文的主題就放在耦合的偏微分方程組的數值解法介紹上。
  • 熱傳導方程的差分格式原理與matlab實現
    熱傳導方程的差分格式一、研究問題介紹拋物型方程中一種最基本形式
  • 帶你用matlab輕鬆搞定微分方程
    之前過冷水有和大家分享熱傳導方程求解的方法,其本質上是微分方程的問題
  • Matlab:代數方程求解—solve命令
    那麼對於普通的代數方程,我們如何用matlab求解呢,這就是我們今天要討論的內容啦。一元一次方程先從簡單的開始,我們看看下面的一元一次方程,其中x是未知數。好了,大家一眼就能看出來這個方程的解是x=9。現在我們希望matlab來幫我們做這件事,這就要用到matlab 的 solve 命令了。
  • 人工邊界方法與偏微分方程數值解
    中國科學院數學與系統科學研究院餘德浩研究員等的合作研究項目 「人工邊界方法與偏微分方程數值解」喜獲2008年度國家自然科學二等獎。
  • MATLAB數值微分與數值積分
    例、設f(x)=ln(x),採用上述方法繪製出[0,10]之間的其導函數的圖像,求解出導函數在1處的值,對比理論值1之間的差值,看相差大不大。>>  x=0:0.01:10;y=log(x);f1=diff(y).
  • 誤差的分析與減少及Matlab解線性方程的四種方法
    :數學模型的精確解與數值方法得到的數值解之間的誤差     捨入誤差:對數據進行四捨五入後產生的誤差2、減少誤差的幾種方法         現在,我們一般用計算機解決計算問題,使用最多的是Matlab軟體。
  • MATLAB常微分方程數值求解
    有一類常微分方程,其解的分量有的變化很快,有的變化很慢,且相差懸殊,這就是所謂的剛性問題 (Stiff) 。對於剛性問題,數值解算法必須取很小步長才能獲得滿意的結果,導致計算量會大大增加。解決剛性問題需要有專門方法。
  • 2019數學建模國賽|Matlab 求解微分方程(組)
    2.函數 dsolve 求解的是常微分方程的精確解法,也稱為常微分方程的符號解.但是,有大量的常微分方程雖然從理論上講,其解是存在的,但我們卻無法求出其解析解,此時,我們需要尋求方程的數值解,在求常微分方程數值解方面,MATLAB 具有豐富的函數,將其統稱為 solver,其一般格式為:           [T,Y]=solver(odefun,tspan,y0)
  • 時滯微分方程的matlab解法
    有位小夥伴在matlab編程愛好者(群號:531421022)群中問道有關時滯微分方程的matlab
  • MATLAB常微分方程
    4.8  微分方程微分方程是數值計算中常見的問題,MATLAB提供了多種函數來計算微分方程的解。
  • Matlab/Simulink建模詳解:一階時變偏微分方程的求解
    舉個簡單的例子:炒菜的鍋的鍋壁溫度,溫度這個變量不僅僅是時間的參數(不同時候,鍋壁同一個點的溫度不一樣),而且也是空間的參數(同一時刻,鍋壁不同位置的溫度不一樣)。求解PDE的時候可以直接求解,也可以先轉化成ODE,再用求解ODE的方法求解。這裡,小編先將PDE轉化成ODE再求解。
  • MATLAB建模實例——微分方程
    ❞1 微分方程的解析解求微分方程(組)的解析解命令:dsolve(『方程1』,『方程2』,…『方程n』,『初始條件',『自變量』)而在實際上對初值問題,一般是要求得到解在若干個點上滿足規定精確度的近似值,或者得到一個滿足精確度要求的便於計算的表達式。因此,研究常微分方程的數值解法是十分必要的。
  • 有限差分法之熱傳導方程的求解
    偏微分方程的數值求解在數值分析中佔有重要地位,很多科學技術問題的數值計算都包括了偏微分方程的數值解問題。
  • 微分方程有限元解法——有限差分法&加權殘值法
    L.Feli一、偏微分方程(組)的解法介紹引導我們知道物理現象中很多問題可以用偏微分方程描述,例如振動、熱傳導、擴散等。在每個點上將偏微分方程的微分項用合適的差商代替,從而將偏微分方程轉換為代數形式的差分方程,每個節點的差分方程組合在一起就構成了一個代數方程組,我們利用初始值和邊界條件,即可求解代數方程組的解,獲取每個節點的變量值,即偏微分方程的數值解。例如針對如下的橢圓形偏微分方程中偏微分項
  • Matlab基礎(四)
    解方程解代數方程(組)的求解是個永恆的話題,線性方程組很好解,直接利用線性代數理論即可。對於非線性方程組,在matlab裡面可以利用solve指令求解符號方程組(可以得到絕對的解析解,但是只對一些不太複雜的方程組有效),複雜的非線性方程組可以利用fzero和fsolve求解數值解。
  • 數值分析和有限元的課程筆記
    數值分析數值分析當然講的是與做研究時數值處理的方法。
  • [優化] 《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據
    本書首先針對matlab新版本特有的一些編程思想、高效的編程方法、新技術進行了較為詳細的討論,在此基礎上,以大量案例介紹了matlab在科學計算中的應用。內容包括:matlab快速入門、重新認識矢量(向量)化編程、matlab處理海量數據、匿名函數類型介紹、嵌套函數類型介紹、積分以及積分方程求解案例、優化及非線性方程(組)求解案例、人臉圖像壓縮與重建案例、有關預測分類的案例、常微分方程(組)求解案例、層次分析法及其matlab實現、定時器及其應用。
  • MATLAB在高等數學中的應用(極限、導數、積分)
    (一)求極限matlab中求極限的命令為limit(expr, x, a)limit(expr, a)limit(expr)limit(expr, xclc,clear;syms x ab = limit((1+a/x)^x,x, inf)b =exp(a)(二)求導數matlab