Fw: [求救 懸賞5000p] 一個7x7的矩陣 =.=

看板Fortran作者 (綠扁帽)時間5年前 (2018/06/22 16:53), 5年前編輯推噓1(105)
留言6則, 2人參與, 5年前最新討論串1/1
各位請看,這是有限差分法的隱式解法 https://i.imgur.com/9leImX6.png
我們可以把它 拆解成下面的矩陣 https://i.imgur.com/WwrrD7A.png
我設定 係數A=1 係數B=0.8 係數C=1 然後最右邊那一列的C1*、C2*、C3*.....到C7* 都是1 所以最後矩陣相乘的結果D,每一個的計算結果都是(1*1)+(1*0.8)+(1*1)=2.8 =================================== 這是一個迭代的矩陣,計算出每一組D以後, 就把D當成C1*、C2*~~C7*代入,再計算出下一組D; 然後再把D當成C1*、C2*~~C7*代入,再計算出下一組D;一直迭代下去 重點來了, 如果我把中間的那一行(第四行)的A、B、C 改成 0、1、0 這樣子,會導致D的數據,跟原來的不一樣 然後D接下來又被當作C1*、C2*~~C7*代入,又影響到下一組的D 然後下一組的D又當作C1*、C2*~~C7*代入,又影響到下下一組的D 一直影響下去。 ==================================== 總共要迭代幾次、或者要帶什麼數字,您們都可以自行決定。 我只是想要瞭解這個程式的寫法而已,數字不是重點,可自行決定數字大小。 感謝 如果看不懂我文中的"迭代"的意思,可以參閱下面兩張圖。 https://imgur.com/a/hlehNcU (求出最左邊的那一列 0,0,1,8,1,0,0) 把那一列代入到下面這張圖的最右邊 https://imgur.com/a/2enLKV3 求出最左邊的那一列(0 , 0.1 , 1.6 , 6.6 , 1.6 , 1 , 0.1 , 0) 以此類推 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.91.73.136 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1529653193.A.53B.html

06/22 16:44, 5年前 , 1F
while ess>1e-3;x = W*x0;ess = norm(x-x0);x0 = x;end
06/22 16:44, 1F

06/22 16:47, 5年前 , 2F
起始猜值x0跟係數矩陣W 在while外要先給好
06/22 16:47, 2F

06/22 16:48, 5年前 , 3F
W可以用diag創建
06/22 16:48, 3F

06/22 16:50, 5年前 , 4F
誤差也要先給一個能跑的起始值 大概就這樣
06/22 16:50, 4F

10/05 06:32, 5年前 , 5F
tridiagonal matrix algorithm直接解,不是block tridi
10/05 06:32, 5F

10/05 06:32, 5年前 , 6F
agonal 的話這個夠快了
10/05 06:32, 6F
※ 編輯: GreenBeret (60.91.73.136), 05/17/2019 16:02:21
文章代碼(AID): #1RBBa8lt (Fortran)
文章代碼(AID): #1RBBa8lt (Fortran)