Escolar Documentos
Profissional Documentos
Cultura Documentos
Para poder utilizar o método de Gauss Jacobi e Gauss Seidel: A soma dos elementos da
mesma linha deve ser maior ou igual ao elemento da diagonal principal.
function [x,deltax]=jacobi(A,b,x,tol,N)
n=size(A,1)
xnew =x
convergiu=%F //FALSE;
k=1
while k<=N & ~convergiu
xnew(1)=(b(1) - A(1,2:n)*x(2:n))/A(1,1)
for i=2:n-1
xnew(i)=(b(i) -A(i,1:i-1)*x(1:i-1) ...
-A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
xnew(n)= (b(n) -A(n,1:n-1)*x(1:n-1) )/A(n,n)
deltax=max( abs(x-xnew) )
if deltax<tol then
convergiu=%T //TRUE
end
k=k+1
x=xnew // atualiza x
disp([k,x’,deltax]) // depuracao
end
if ~convergiu then
error(’Nao convergiu’)
end
endfunction
Código Scilab – Método de Gauss Seidel:
function [x,deltax]=gauss_seidel(A,b,x,tol,N)
n=size(A,1)
xnew =x
convergiu=%F //FALSE;
k=1
while k<=N & ~convergiu
xnew(1)=(b(1) - A(1,2:n)*x(2:n))/A(1,1)
for i=2:n-1
xnew(i)=(b(i) -A(i,1:i-1)*xnew(1:i-1) ...
-A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
xnew(n)=(b(n) -A(n,1:n-1)*xnew(1:n-1) )/A(n,n)
deltax=max( abs(x-xnew) )
if deltax<tol then
convergiu=%T //TRUE
end
k=k+1
x=xnew // atualiza x
disp([k,x’,deltax]) // depuracao
end
if ~convergiu then
error(’Nao convergiu’)
end
endfunction
Matriz A = D + L + U
D = Matriz diagonal
L = Matriz triangular inferior
U = Matriz triangular superior
Iteração de Jacobi:
Condições de Convergência:
Condição Suficiente porém não necessária 🡪 Se a matriz A for diagonal dominante, então
os métodos de Jacobi e Gauss Seidel serão convergentes independente da escolha inicial
x.
Questionário T6:
Apliquei no Scilab:
A = [12 1 4; 8 -1 0; 12 6 13]
norm (A,1)
norm (A,%inf)
//ans = 32 e 31
Apliquei no Scilab:
x = [1321,246544,312134]
y = [1320,246545,312100]
norm(x-y,1)
norm(x-y,2)
norm(x-y,%inf)
//ans = 36, 34.029399, 34
Dúvida kkk - Raio Espectral da Matriz o que significa?
Linha 1: 2 > 1+ 1.1
Linha 2: 2> 2 + 2
Linha 3: 2 NÃO É MAIOR QUE 1+ 1.1
Portanto, a diagonal não é estritamente dominante.
Aplicar no Scilab:
format (25)
A = [4 4;3 4] //Do enunciado
b = [1;1] //Do enunciado
x = [1;0] //Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
D = [4 0;0 4]
L = [0 0;3 0]
U = [0 4;0 0]
TJ = -inv(D)*(L+U);
TJ
cJ = inv(D)*b;
cJ
for k =1:5
x = TJ*x + cJ
end
//ans x2 = -0.171875
Apliquei no Scilab:
format(25)
A = [4 4;3 4] //Do enunciado
x = [1;0] //Do enunciado
b = [1;1]//Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TJ = -inv(D)*(L+U);
TJ
cJ = inv(D)*b;
cJ
for k =1:50
x = TJ*x + cJ
end
//Último x2 = 0.2498118641354587499137
//Penúltimo x2 = 0.2492474565418349996548
//Antepenúltimo x2 = 0.2497491521806116665516
//3 casas decimais
Aplicar no Scilab:
format (25)
A = [4 4;3 4] //Do enunciado
b = [1;1] //Do enunciado
x = [1;0] //Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
D = [4 0;0 4]
L = [0 0;3 0]
U = [0 4;0 0]
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:50
x = TG*x + cG
end
//Último x2 = 0.249999858419585885283
//Penúltimo x2 = 0.2499998112261145322144
//Antepenúltimo x2 = 0.249999748301486024449
//6 casas decimais
J1 J2 J3 J4 J5 J6 J7 J8
I1 2 1 0 0 0 0 0 0
I2 1 2 1 0 0 0 0 0
I3 0 1 2 1 0 0 0 0
I4 0 0 1 2 1 0 0 0
I5 0 0 0 1 2 1 0 0
I6 0 0 0 0 1 2 1 0
I7 0 0 0 0 0 1 2 1
I8 0 0 0 0 0 0 1 2
Apliquei no Scilab:
format(25)
A = [ 2 1 0 0 0 0 0 0; 1 2 1 0 0 0 0 0; 0 1 2 1 0 0 0 0; 0 0 1 2 1 0 0 0; 0 0 0 1 2 1 0 0;
0 0 0 0 1 2 1 0; 0 0 0 0 0 1 2 1; 0 0 0 0 0 0 1 2] //Do enunciado
x = [0;0;0;0;0;0;0;0] //Do enunciado
b = [1;1;1;1;1;1;1;1] //Do enunciado
N = 25 //Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:25
x = TG*x + cG
end
norm(x,%inf)
//ans = 0.446242963195357944528
Apliquei no Scilab:
format(25)
A = [ 2 1 0 0 0 0 0 0; 1 2 1 0 0 0 0 0; 0 1 2 1 0 0 0 0; 0 0 1 2 1 0 0 0; 0 0 0 1 2 1 0 0;
0 0 0 0 1 2 1 0; 0 0 0 0 0 1 2 1; 0 0 0 0 0 0 1 2] //Do enunciado
x = [0;0;0;0;0;0;0;0] //Do enunciado
b = [1;1;1;1;1;1;1;1]//Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TJ = -inv(D)*(L+U);
TJ
cJ = inv(D)*b;
cJ
for k =1:100
x = TJ*x + cJ
end
norm(b-A*x,2)
//ans = 0.0053168770349003536754
Ir testando cada valor de n para que se encaixe na condição de <10^(-7)
Para n = 195: Aplicar no Scilab:
format(25)
A = [ 2 1 0 0 0 0 0 0; 1 2 1 0 0 0 0 0; 0 1 2 1 0 0 0 0; 0 0 1 2 1 0 0 0; 0 0 0 1 2 1 0 0;
0 0 0 0 1 2 1 0; 0 0 0 0 0 1 2 1; 0 0 0 0 0 0 1 2] //Do enunciado
x = [0;0;0;0;0;0;0;0] //Do enunciado
b = [1;1;1;1;1;1;1;1]//Do enunciado
n=8
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:195
x = TG*x + cG
end
//Último x2 = 0.4444444444436837504675
//Penúltimo x2 = 0.444444444443582997728
//Antepenúltimo x2 = 0.4444444444434688668011
//0.4444444444436837504675 - 0.444444444443582997728 =
//0.0000000000001007527395 = 1,007527395*10^(-13)
// |expoente| - 1 = 13 – 1 = 12
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:95
x = TG*x + cG
end
//Último x2 = 0.444444252111593218757
//Penúltimo x2 = 0.4444442266324273305145
//Antepenúltimo x2 = 0.4444441977779259866921
//0.444444252111593218757 - 0.4444442266324273305145
//0.0000000254791658882425 = 2,54791658882425*10^(-8)
//|expoente| - 1 = 8 – 1 = 7
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:45
x = TG*x + cG
end
//Último x2 = 0.4443477343425890624395
//Penúltimo x2 = 0.4443349227345820828816
//Antepenúltimo x2 = 0.4443204139160172316814
// 0.4443477343425890624395 - 0.4443349227345820828816 =
// 0.0000128116080069795579= 1,28116080069795579*10^(-5)
// |expoente| - 1 = 5 – 1 = 4
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:295
x = TG*x + cG
end
//Último x2 = 0.4444444444444444197728
//Penúltimo x2 = 0.4444444444444444197728
//Antepenúltimo x2 = 0.4444444444444444197728
//0.4444444444444444197728 - 0.4444444444444444197728 =
//0
Questionário M6:
Apliquei no Scilab:
A = [1 2 3; 4 5 0; -1 -5 5] //Do enunciado
norm (A,1)
Resposta: 12
J1 J2 J3 J4 J5 J6 J7 J8
I1 1/2 1/4 0 0 0 0 0 0
I2 1/4 1/2 1/4 0 0 0 0 0
I3 0 1/4 1/2 1/4 0 0 0 0
I4 0 0 1/4 1/2 1/4 0 0 0
I5 0 0 0 1/4 1/2 1/4 0 0
I6 0 0 0 0 1/4 1/2 1/4 0
I7 0 0 0 0 0 1/4 1/2 1/4
I8 0 0 0 0 0 0 1/4 1/2
wtf
Apliquei no Scilab:
format (25)
A = [6 1;-1 4] //Do enunciado
b = [1;2] //Do enunciado
x = [2;0] //Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TJ = -inv(D)*(L+U);
TJ
cJ = inv(D)*b;
cJ
for k =1:4
x = TJ*x + cJ
end
//ans x1 = 0.083333333333333328707
Apliquei no Scilab:
format (25)
x = [3141592, 1414213]
y = [%pi,sqrt(2)]*10^6
norm(x-y,2)
//ans = 0.862231474564454036802
Apliquei no Scilab:
format (25)
A = [6 1;-1 4] //Do enunciado
b = [1;2] //Do enunciado
x = [2;0] //Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TG = -inv(L+D)*U;
TG
cG = inv(L+D)*b;
cG
for k =1:10
x = TG*x + cG
end
//Último x2 = 0.5199999999999918021132
//Penúltimo x2 = 0.5200000000001967492835
//Antepenúltimo x2 = 0.519999999995275907771
//0.5199999999999918021132-0.5200000000001967492835
//ans = -0.0000000000002049471703= 2,049471703*10^(-13)
//|expoente| - 1 = 13 – 1 = 12
Apliquei no Scilab:
format (25)
A = [6 1;-1 4] //Do enunciado
b = [1;2] //Do enunciado
x = [2;0] //Do enunciado
D = eye(A).*A; // Descobrir D
D
L = tril(A)-D; // Descobrir L
L
U=triu(A)-D; // Descobrir U
U
TJ = -inv(D)*(L+U);
TJ
cJ = inv(D)*b;
cJ
for k =1:10
x = TJ*x + cJ
end
//Último x2 = 0.520000065305105452218
//Penúltimo x2 = 0.5200014467592593003786
//0.520000065305105452218 - 0.5200014467592593003786 =
//-0.0000013814541538481606 = 1,3814541538481606*10^(-6)
//|expoente| - 1 = 6 – 1 = 5