5. laborgyakorlat
Numerikus számítások fizikusoknak
Contents
clear all, close all
Iterációs eljárások lineáris egyenletrendszerek megoldására
Alsó háromszögmátrix rész (k. átló és alatta)
A= hilb(5); tril(A,-1)
ans = Columns 1 through 3 0 0 0 0.500000000000000 0 0 0.333333333333333 0.250000000000000 0 0.250000000000000 0.200000000000000 0.166666666666667 0.200000000000000 0.166666666666667 0.142857142857143 Columns 4 through 5 0 0 0 0 0 0 0 0 0.125000000000000 0
Felső háromszögmátrix rész (k. átló és felette)
A= hilb(5); triu(A,1)
ans = Columns 1 through 3 0 0.500000000000000 0.333333333333333 0 0 0.250000000000000 0 0 0 0 0 0 0 0 0 Columns 4 through 5 0.250000000000000 0.200000000000000 0.200000000000000 0.166666666666667 0.166666666666667 0.142857142857143 0 0.125000000000000 0 0
Jacobi-iteráció (diagonálisan domináns mátrixú egyenletrendszer esetén)
A=hilb(5)+2*eye(5); b=ones(5,1); L=-tril(A,-1); R=-triu(A,1); D=diag(diag(A)); B=D\(L+R); f=D\b; x=zeros(5,1); for i=1:25 x=B*x+f; end x % pontos megoldás A\b
x = 0.190393396740113 0.292147815747131 0.339425311557676 0.368164698748943 0.387814784476461 ans = 0.190393396693669 0.292147815696678 0.339425311513461 0.368164698710511 0.387814784442693
Gauss-Seidel-iteráció (diagonálisan domináns vagy szimmetrikus poz. def. mátrixú egyenletrendszer esetén)
A=hilb(5)+2*eye(5); b=ones(5,1); L=-tril(A,-1); R=-triu(A,1); D=diag(diag(A)); B=(D-L)\R; f=(D-L)\b; x=zeros(5,1); for i=1:25 % x=B*x+f; end x % Pontos megoldás A\b
x = 0.190393396693669 0.292147815696678 0.339425311513461 0.368164698710511 0.387814784442693 ans = 0.190393396693669 0.292147815696678 0.339425311513461 0.368164698710511 0.387814784442693