SQR迭代法是對GS迭代法的又一改進,在每一解向量份量處取其先前份量與GS迭代法算出的份量值的加權平均。
其中w鬆弛因子決定了加權的係數,若SQR方法收斂,則w的取值範圍爲0~2。
代碼以下:函數
A=[4,3,0;3,4,-1;0,-1,4] b=[24;30;-24]
function x=SQR(A,b) % SQR逐次超鬆弛迭代法。 % 輸入參數: % A: 矩陣 % b: 向量 % w: 鬆弛因子 % x: 初始向量 % 輸出參數: % x:迭代獲得的解向量 % 調用說明: % x=SQR(A,b):調用函數迭代求出AX=b的解X。 % 版本號V1.5,編寫於2019年8月20號,修改於2019年8月20號,做者:Hiper n=length(b); M=zeros(n); N=-A; for i=1:n M(i,i)=A(i,i); N(i,i)=0; end B=M^-1*N; f=M^-1*b; while 1 w=input('請輸入鬆弛因子w:'); if w<0||w>2 disp('鬆弛因子大小不正確,請從新輸入!'); else break; end end while 1 x=input('請輸入初始解向量x_0:'); if size(x)~=size(b) disp('解向量大小不正確,請從新輸入!') else break; end end time=0; while 1 %實現do while循環 for i=1:n x(i)=w*(B(i,:)*x+f(i))+(1-w)*x(i); end time=time+1; if norm(b-A*x)<(10e-7) %當解向量收斂到小於10e-7時結束迭代。 break; end end fprintf('總共迭代次數爲%d',time);