逐次超鬆弛迭代法SOR

2021-06-08 15:32:51 字數 1045 閱讀 2646

%sor:逐次超鬆弛迭代法

%本函式只能求解當a為n*n的矩陣

%2010-10-21

function x=sor(a,b,w)

tic;

if nargin==2

w=1.23;%預設鬆弛因子w=1.23

endif w<0

error('matlab:sor:argument w:should be larger than 0',...

'recomanded range is 0j

l(i,j)=a(i,j);

elseif i1 %譜半徑大於1,迭代不收斂……

error('matlab:sor:the iteration matrix may not be astringent.see sor.');

endfid=fopen('sor-output.txt','w');%用檔案儲存每次迭代結果

y=1;%y代表迭代深度

while 1 %matlab中沒有do-while迴圈,可用break跳出

for i=1:n

temp1=0;

for j=1:i-1

temp1=temp1+a(i,j)*x2(j)/a(i,i);

endtemp2=0;

for j=i+1:n

temp2=temp2+a(i,j)*x1(j)/a(i,i);

endx2(i)=w*(b(i)/a(i,i)-temp1-temp2-(1-1/w)*x1(i));

endfprintf(fid,'%d\t',y);

for z=1:n          %將資料寫入檔案

fprintf(fid,'%2.8f\t',x2(z));

endfprintf(fid,'\r\n');%輸出完一次結果,換行

if norm(x2-x1)<1e-10

break;%迭代結束

endx1=x2; %繼續下一輪迭代

y=y+1;

endx=x2;%返回計算結果

fclose(fid);%關閉檔案

toc;

超鬆弛迭代法求方法組的解(Python實現)

求方程組 5x 1 2x 2 x 3 12 x 1 4x 2 2x 3 20 2x 1 3x 2 10x 3 2 end right.5x 1 2 x2 x3 12 x1 4x2 2x3 20 2x1 3x 2 1 0x3 2 超鬆弛迭代其實基於高斯 塞德爾迭代的 可以對比著之前的高斯迭代法對比一下...

牛頓迭代法

創新工廠的筆試題 不用庫函式sqrt 求乙個整型數n的開方,要求精度達到0.001即可。在這裡首先介紹一下牛頓迭代法 假設乙個方程為 f x 0 那麼假設其解為x0,則用泰勒級數展開之後可得 f x f x0 f x0 x x0 0 其中x為其近似解。根據上式推導出 x x0 f x0 f x0 這...

牛頓迭代法

目前接觸到的牛頓迭代法主要應用於兩個方面 1 方程求根問題 2 最優化問題。1 求解方程。並不是所有的方程都有求根公式,或者求根公式很複雜,導致求解困難。利用牛頓法,可以迭代求解。原理是利用泰勒公式,在x0處展開,且展開到一階,即f x f x0 x x0 f x0 求解方程f x 0,即f x0 ...