matlab高斯迭代公式 數(shù)值模擬主要過程和步驟?
數(shù)值模擬主要過程和步驟?目標(biāo),講問題,可以確定背后的物理機(jī)制和過程,即確認(rèn)應(yīng)力應(yīng)變,能量遷出,流體動(dòng)力學(xué),波,電磁場我還是其中某些的同盟協(xié)議作用,這做出決定了有哪些物理場,物理量,和物理性質(zhì)要被決定出
數(shù)值模擬主要過程和步驟?
目標(biāo),講問題,可以確定背后的物理機(jī)制和過程,即確認(rèn)應(yīng)力應(yīng)變,能量遷出,流體動(dòng)力學(xué),波,電磁場我還是其中某些的同盟協(xié)議作用,這做出決定了有哪些物理場,物理量,和物理性質(zhì)要被決定出去。
第二步,依據(jù)什么物理機(jī)制和過程確立數(shù)學(xué)模型。這個(gè)數(shù)學(xué)模型說白了那是成堆成堆方程和公式,其中有以偏微分方程為代表的控制方程和其他能表達(dá)狀態(tài)量之間,狀態(tài)量和材料性質(zhì)之間關(guān)系的只附加公式。至于,初始和邊界條件也要可以確定下去,而且我們做研究的問題時(shí)總填寫有限時(shí)間和有限空間大小的。
第十步,上述數(shù)學(xué)模型如果尤其簡單方程和邊界和初始條件,一般沒有解析解(也就是用初等數(shù)學(xué)函數(shù)能表達(dá)的解)。于是,數(shù)值離散化方法方法就能上場了,最常見有有限單元法,不足體積法,和太遠(yuǎn)差分法等。這些方法所做的,就是把上成立在在不空間和時(shí)間之上的數(shù)學(xué)方程們離散成一個(gè)代數(shù)方程,好象有A*XB的形式。X是一個(gè)矩陣。如在有限元法中,X是在不足單元的頂點(diǎn)上的待求函數(shù)(因變量)的值,點(diǎn)的數(shù)量決定了X的矩陣大小。這里,在離散中又比較復(fù)雜了空間離散化方法(網(wǎng)格劃分)和方程線性系統(tǒng)(轉(zhuǎn)發(fā)動(dòng)方程為代數(shù)方程)。有些方法如有限元法法者上述過程中會附加那些要求推導(dǎo)公式弱形式等。
第四步,有代數(shù)方程以后,我們還需要求解答它。這里面就有很多方法可供你選擇,.例如直接法如高斯法和各種相同的迭代方法。就像即使我們是做求解器的,我們可以不用很多太麻煩的工具去求解釋這個(gè)代數(shù)方程,而不需要再寫一個(gè)求解器來求高人。諸如,在MATLAB中就可以在用一個(gè)再簡單啊當(dāng)然了的XAB命令來求高人。
第五步,求出知道一點(diǎn)之后,取決于你想干什么,像是我會想知道解在某一時(shí)刻在空間內(nèi)該如何廣泛分布的。諸如,要是我們做熱傳遞結(jié)論,我們一想到溫度這個(gè)因變量是如何其分布的。當(dāng)然了,我們也很有可能會想明白了其他依賴于溫度的材料性質(zhì)如熱傳導(dǎo)系數(shù)和比熱容的值,分布或者變化等。這些實(shí)際最簡單算出都可以得到。像是的數(shù)值軟件都提供至多基本上的后處理主要是用于不顯示和一次性處理計(jì)算出結(jié)果。要是自己編程的話,我們也可以不使用第三方的后處理程序.例如Paraview等。有些偏數(shù)學(xué)和理論的同學(xué),說不定又要做敏感性分析和誤差總結(jié),也就是看誤差隨某些變量和計(jì)算過程的變化,得以來常理推斷模型,離散化方法方法,求解器等中的錯(cuò)誤,誤差,或則性能。
手算高斯賽德爾迭代法求解方程?
1.
用雅克比迭代法和高斯--賽德爾迭代法求高人a.方程組,取迭代初值[0;0;0]。
(1)
編程求解釋,并與用數(shù)學(xué)軟件求解答的結(jié)果對比。
(2)
實(shí)際考察迭代法的收斂性,若均收斂,差不多兩種方法的收斂速度。
解:源程序:
①雅克比迭代法:組建函數(shù)文件jacobi.m
function[n,x]jacobi(A,b,X,nm,w)
%用雅克比迭代法求高人方程組Axb
%輸入:A為方程組的系數(shù)矩陣,b為方程組右端的列向量,X為迭代初值組成的列向量,nm為大迭代次數(shù),w為誤差精度
%輸出:x為易求的方程組的解所構(gòu)成的列向量,n為迭代次數(shù)
n1;
mlength(A);
Ddiag(diag(A));%令A(yù)D-L-U,可以計(jì)算矩陣D
Ltril(-A)D;%令A(yù)D-L-U,計(jì)算出矩陣L
Utriu(-A)D;%令A(yù)D-L-U,計(jì)算矩陣U
Minv(D)*(LU);%計(jì)算迭代矩陣
ginv(D)*b;%算出迭代格式中的常數(shù)項(xiàng)
%下面是迭代過程
whilerfn
xM*Xg;%用迭代格式進(jìn)行迭代
ifnorm(x-X,2)