看板 MATLAB 關於我們 聯絡資訊
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
ejialan:你加速迭代應該是用SOR 那整理完是長這樣沒錯 10/22 10:32
ejialan:我試了一下w=1.0001迭代次數有變少 不過收斂條件只看x(1) 10/22 10:34
ejialan:有點怪怪的 10/22 10:34