[問題] 有限差分法繪圖問題

看板MATLAB作者 (伊武天澤)時間13年前 (2012/11/29 23:41), 編輯推噓4(4014)
留言18則, 3人參與, 最新討論串1/1
在下是matlab的新手,今天晚上終於搞好怎麼用有限差分法。 不過教授要求用把方格裡每次跌代的數據拿來繪圖,製成動畫 所以我猜數據應該要維持成原方格模式, 我用的方法比較笨, 假如邊界值是這樣好了 1 1 1 1 1 0.8 x7 x8 x9 1 0.5 x4 x5 x6 1 0.2 x1 x2 x3 1 0 0.1 0.25 0.9 1 我是把u1~u9周圍加相除以四的部份拿出來算,之後再列出 9*9的大矩陣Ax=b的方式來求解 再輸入matlab 用Jocobi法進行跌代進算, 但問題來了..我算出來的 新x值是以 x=[x1 x2 x3 x4 x5 x6 x7 x8 x9]' 的方式顯現, 在想要寫甚麼碼來把他塞回原方格的位置, 而且邊界值的部份是被我先抓出來手算過的,所以也不太知道該怎麼把邊界值&新x值 組回原本的方格 向 1 1 1 1 0.8 newx7 newx8 newx9 1 0.5 newx4 newx5 newx6 1 0.2 newx1 newx2 newx3 1 0 0.1 0.25 0.9 1 這樣子的方式來顯現他, for i=1:n^0.5 B(i,1:n^0.5)=x(1:n^0.5,1) end 一開始是打算用這樣的方式來寫 B = 0.3508 0.5276 0.8187 0.3508 0.5276 0.8187 0.3508 0.5276 0.8187 ans = 0.3508 0.5276 0.8187 0.5874 0.7017 0.8589 0.8080 0.8562 0.9258 卻跑出這樣的東西....不知道該怎麼... 還是說從我一開始這樣來解跌代的問題,就不太可能把數字塞回方格了呢? 而且我這樣的方式很笨,今天只有九個未知數.... 當如果有90個方程式的話,就得自己手算90個 再慢慢去輸入A係數矩陣, 感覺上不是很好, 有沒有其他更好的寫法可以推薦^^? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.229.231

11/30 00:27, , 1F
xMat = rot90(reshape(x, 3, 3)); % 將 x 排回原來的位置
11/30 00:27, 1F

11/30 00:28, , 2F
B(2:(end-1), 2:(end-1)) = xMat; % 將排好的 x 塞回去
11/30 00:28, 2F

11/30 00:55, , 3F
謝謝CBET大,幫大忙了,不過我要輸入第二行的式子
11/30 00:55, 3F

11/30 00:55, , 4F
B(2:(end-1), 2:(end-1)) = xMat
11/30 00:55, 4F

11/30 00:59, , 5F
會出現Undefined function or variable 'B'.的訊息
11/30 00:59, 5F

11/30 00:59, , 6F
是我要再設syms B之類的嗎?還是先設定好B矩陣的唯度!?
11/30 00:59, 6F

11/30 01:03, , 7F
我這邊 B 是指那 5x5 含邊界值的矩陣,需要先定義好
11/30 01:03, 7F

11/30 01:19, , 8F
不好意思我沒用過不輸入數字、代號,純定義矩陣維度的
11/30 01:19, 8F

11/30 01:19, , 9F
方法,是用eye ones 或是zeros randn 這些 隨便定出B矩
11/30 01:19, 9F

11/30 01:19, , 10F
陣嗎?
11/30 01:19, 10F

11/30 01:20, , 11F
還是說打好邊界值,中間3*3那一塊 就打個0給他就好嗎?
11/30 01:20, 11F

11/30 01:29, , 12F
是的,中間那塊給 0 就可以了,反正後面要用 xMat 取代
11/30 01:29, 12F

11/30 01:29, , 13F
了解 謝謝
11/30 01:29, 13F

11/30 01:30, , 14F
雖然說自己只能慢慢列矩陣 方程式 和自己補邊界值
11/30 01:30, 14F

11/30 01:31, , 15F
不過也是一個方法^^"學到了很多 謝謝
11/30 01:31, 15F

11/30 01:32, , 16F
作業是中間是9*9 右邊界還是 對x偏微=0 所以是90個方程
11/30 01:32, 16F

11/30 01:32, , 17F
有得我算了orz..
11/30 01:32, 17F
※ 編輯: e01234567 來自: 140.120.229.231 (11/30 10:33)

11/30 13:30, , 18F
感覺好溫馨 看見十幾年前的東西...
11/30 13:30, 18F
文章代碼(AID): #1Gju8Fn6 (MATLAB)