[其他] matlab有限差分上之疑問

看板MATLAB作者 (伊武天澤)時間13年前 (2012/11/29 13:00), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
最近剛好有用到有限差分法的問題 試著把書上的例題碼輸進M文件裡 以下是我輸入的程式碼 我的A矩陣是9*9 b跟x0就是n*1 x0初始值我是全部打0 v則是九個常數 function x= code(A,b,x0,tol,max_it) %輸入及輸出: % A 係數矩陣(n乘n) % b 右側項(n乘1) % x0 初始解(n乘1) % tol 若x變量的範數<tol則停止 % max 最大跌代次數 % x 解向量(n乘1) [n,m]=size(A); xold=x0; C=-A; for i=1:n C(i,i)=0; end for i = 1:n C(i,1:n)=C(i,1:n)/A(i,i); end for i=1:n d(i,1)=b(i)/A(i,i); end disp('i x1 x2 x3 ....'); while(i <=max_it) xnew=C*xold+d; if norm(xnew-xold) <= tol x=xnew; disp('Jacobi method converged');return; else xold=xnew; end disp([i xnew']); i=i+1; end disp('Jacobi method did not converge'); disp('results after maximum number of iterations'); x=xnew; 之後我打code(A,b,x0,1e-5,10)後 即跑出 i x1 x2 x3 .... 9 NaN NaN NaN NaN NaN NaN NaN NaN NaN 10 NaN NaN NaN NaN NaN NaN NaN NaN NaN Jacobi method did not converge results after maximum number of iterations ans = NaN NaN NaN NaN NaN NaN NaN NaN NaN 疑似無法收斂,想問我哪裡打錯了 以下附上我的A b矩陣 A=[0.00 0.25 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.25 0.00 0.25 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.25 0.00 0.25 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.25 0.00 0.25 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.25 0.00 0.25 0.00] b=[0.075 0.0625 0.475 0 0.25 0.45 0.25 0.5]' 在下是matlab的新手,有請指教^^" 這個跌代法用excel也是算得出來的,但無法紀錄下每次跌代的數據, 所以想改用matlab嘗試 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.229.231 ※ 編輯: e01234567 來自: 140.120.229.231 (11/29 13:01)

11/29 15:42, , 1F
A is singular
11/29 15:42, 1F

11/29 17:15, , 2F
跌代法很像要避開奇異矩陣的樣子
11/29 17:15, 2F

11/29 17:15, , 3F
but我要我照著說明書上面的打法
11/29 17:15, 3F
※ 編輯: e01234567 來自: 140.120.229.231 (11/29 17:19) ※ 編輯: e01234567 來自: 140.120.229.231 (11/29 17:25)

11/29 17:39, , 4F
我成功解出來了^^"感恩 搞懂自己錯誤在哪邊了
11/29 17:39, 4F
※ 編輯: e01234567 來自: 140.120.229.231 (11/29 23:44)
文章代碼(AID): #1GjkldtH (MATLAB)