\(\displaystyle{ \begin{cases}
x_{1} -5 x_{2} -x_{3} +=-8 \\
4 x_{1} +x _{2}-x _{3}=13\\
2x _{1} -x _{2} -6x _{3} =-2
\end{cases}}\)
\(\displaystyle{ \begin{cases}
-x _{1} +3x _{2} =1 \\
6x _{1} -2x _{2} =2
\end{cases}}\)
Których rozwiązanie to odpowiednio \(\displaystyle{ x=(2,1,1)}\) i \(\displaystyle{ x=(0.5,0.5)}\)
2.Zmodyfikuj funkcję Jacobiego w taki sposób, że będzie wyświetlany komunikat jeśli iteracja Jacobiego nie bedzie zbieżna.
Uwaga : Komenda
matlab y=eig(B)
oblicza wartości własne macierzy B. Proszę o pomoc, nie mam pojęcia jak się za to zabrać.
Metoda Jacobi'ego:
Kod: Zaznacz cały
function [x,iter]=Jacobi(A,b,x0,M,tol)
n=length(b);
%3 2 1
B=zeros(n,n);
xe=[1 0 1]'
for i=1:n
for j=1:n
if i~=j
B(i,j)=-(A(i,j)/A(i,i));
end
end
c(i)=b(i)/A(i,i);
end
B
c
y=eig(B)
radioes=max(abs(y));
if radioes >=1
disp('Sorry, Jacobi will not converge´')
x=[]; iter=[];
return
end
x=x0;
dif=1000;
iter=0;
while abs(dif) > tol && iter <=M
iter=iter+1;
xold=x;
x=B*x+c';
dif=norm(xold-x);
ee(iter)=norm(x-xe);
it(iter)=iter;
end
plot(it,ee)
end
Kod: Zaznacz cały
A=[4 6 2 ; 6 18 -1.5 ; 2 -1.5 4]
b=[6 4.5 6]
x0=[0 0 0];
M=100;
tol=10.^(-8);
[x,iter]=Jacobi(A,b',x0',M,tol)