[問題] 加快迭代的w位置

看板MATLAB作者 (亞嘛搭六)時間12年前 (2013/10/22 03:36), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串1/1
A=[-4 1 1 1;1 -4 1 1;1 1 -4 1;1 1 1 -4]; B=[1;1;1;1]; x(1)=0; x(2)=0; x(3)=0; x(4)=0; for i=1:1:4 B(i)=B(i)/A(i,i); for j=1:1:4 if i~=j A(i,j)=A(i,j)/A(i,i); end end end for k=1:60 if abs((x(1)+1)/-1)>10^(-5) for i=1:4 x(i)=B(i); for j=1:4 if j~=i x(i)=x(i)-(A(i,j)*x(j)); end end fprintf('%f ',x(i)); end fprintf('\n'); else break end end fprintf('%f',k); 這是用Gauss Seidel的方法寫的 然後再來有加快迭代的方法 課本裡面的範例就是用這個矩陣 w=1時 迭代次數跟課本一樣 可是只要大於1就整個發散了... x(i)=x(i)-w*(A(i,j)*x(j)); 請問我w加在這裡有什麼問題呢? 已經卡了好久了...... 麻煩解惑 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.254.168

10/22 10:32, , 1F
你加速迭代應該是用SOR 那整理完是長這樣沒錯
10/22 10:32, 1F

10/22 10:34, , 2F
我試了一下w=1.0001迭代次數有變少 不過收斂條件只看x(1)
10/22 10:34, 2F

10/22 10:34, , 3F
有點怪怪的
10/22 10:34, 3F
文章代碼(AID): #1IPO9PaU (MATLAB)