Lista 2 === Os enunciados dos 7 exercícios desta lista se encontram [aqui](https://drive.google.com/file/d/1D0is527FwY7tGWfpETkbaCTgUNGIFMIp/view). Grupo --- João Vitor Prado Larissa Toledo Kaleb Alves [toc] ## Exercício 1 #### Cramer: Dado um sistema de equações lineares com mesmo número de incógnitas, tq: ![](https://i.imgur.com/gGrRImC.png) Devemos montar uma matriz com estas, do tipo $$ A = \begin{bmatrix} a_{11} & a_{12} & \ldots & a_{1n}\\ a_{21} & a_{22} & \ldots & a_{nn}\\ \vdots & \vdots & \ddots & \vdots\\ a_{m1} & a_{m2} & \ldots & a_{mn}\\ \end{bmatrix} $$ $$ X = \begin{bmatrix} x1\\ x2\\ x3\\ \end{bmatrix} $$ $$ B = \begin{bmatrix} b1\\ b2\\ b3\\ \end{bmatrix} $$ Resolver o determinante e validar que este é != 0; A resolução do sistema é única e dada por (x1, x2, ... , xn) tq: $$x_i = Det_i/Det_A$$, para qualquer i pertencente ao intervalo de 1 à n. #### Gauss É o método do escalonamento. Este método consiste em aplicar sucessivas operações elementares em um sistema linear, transformando-o em um sist. triangular, de modo que este tenha as mesmas soluções que o original. As operações elementares são aquelas que aplicadas às linhas ou colunas não alteram o sistema (Podemos fazer trocas de linhas e colunas). Tendo a matrix Ax=b ![](https://i.imgur.com/V6i6aRc.png) Após realizar algumas operações: ![](https://i.imgur.com/vU33j1k.png) Se o sistema estiver correto, já conseguiremos a partir disso o valor de $$x_3$$. Este método é considerado mais simples de ser resolvido em relação ao de Cramer (principalmente computacionalmente), mesmo aparentando ser mais complexo. #### Método de decomposição A = LU: Este método permite resolver uma matriz de ordem quadrada (A), possibilitando achar o resultado de um sistema linear que forme a mesma. Esta fatoração dessa matriz quadrada (A) gera um sistema linear triangular inferior (L) e um sistema triangular superior (U). A decomposição pode ser feita de tal forma: ![](https://i.imgur.com/hITaVof.png) O sistema pode ser reescrito de tal forma: $$Ax=b -> (LU)x=b -> L(Ux)=b -> Ly=b e Ux=y$$ Isto significa que, ao invés de resolvermos o sistema original, podemos resolver o sistema triangular inferior Ly=b e, então, o sistema triangular superior Ux=y, o qual nos fornece a solução de Ax=b. Obs: Este método é o mais trabalhoso dos 3. ## Exercício 2 Resolver o sistema: ![](https://i.imgur.com/IcXpzi0.png) ## Exercício 3 ## Exercício 4 O método não converge em Gauss, porém em Jacobi sim, abaixo a tabela: Método de Jacobi ![](https://i.imgur.com/JvDGCY4.png) Método de Gauss: ![](https://i.imgur.com/gTQw9Iy.png) Mesmo não convergindo em Gauss, este se mostra mais rápido na convergência. ## Exercício 5 ``` A = [10 2 1; 1 5 1; 2 3 10]; I = eye(A); t = 3; b = [7;-8;6]; eps=10^(-2); x0 = [0.7;-1.6;0.6]; prep = 10; x = x0; it=0; i=0; s=0; for i=1:t for s=1:t AA(i,s) = A(i,s)/A(i,i); end; be(i) = b(i)/A(i, i); end; AB = AA; bc = be; while prep > eps & it<=100 x = bc - ((AB-I)*x); prep = norm((AB*x)-bc); it = it+1; end; if(it>999) then printf("Não converge"); else printf("Interações %f", it); disp(x); end; ``` Outra forma de resolver seria: ``` x1=0.7 x2=-1.6 x3= 0.6 itr = 1 while(1) then x1a=x1 x2a=x2 x3a=x3 x1 = (1/10)*(7-(2*x2a)-x3a) x2 = (1/5)*(-8-x1a-x3a) x3=(1/10)*(6-(2*x1a)-(3*x2a)) mprintf('iteração %d:\n%.3f\n', itr, x1) mprintf('%.3f\n', x2) mprintf('%.3f\n\n', x3) if int(x1*100) == int(x1a*100) & int(x2*100) == int(x2a*100) & int(x3*100) == int(x3a*100) then break end itr = itr + 1 end mprintf('FINAL: \n%.2f\n', x1) mprintf('%.2f\n', x2) mprintf('%.2f\n', x3) ``` O que nos retorna uma lista de x1, x2, x3 por iteração. ## Exercício 6 Analisando as colunas e linhas, não há garantia de convergência. ``` x1=0 x2= 0 x3= 0 itr = 1 while(1) then x1a=x1 x2a=x2 x3a=x3 x1 = (1/5)*(5-x2-x3) x2 = (1/4)*(6- (3*x1)-x3) x3 = (1/6)*(-(3*x1)-(3*x2)) mprintf('iteração %d:\n%.3f\n', itr, x1) mprintf('%.3f\n', x2) mprintf('%.3f\n\n', x3) if int(x1*100) == int(x1a*100) & int(x2*100) == int(x2a*100) & int(x3*100) == int(x3a*100) then break end itr = itr + 1 end mprintf('RESULTADO: \n%.2f\n', x1) mprintf('%.2f\n', x2) mprintf('%.2f\n', x3) ``` Após todas as interações, o sistema converge, e se comparado a outro método, como do Jacobi, este (de Gauss) se mostra mais eficiente. ## Exercício 7 As equações resultantes da substituição no polinômio de quarto grau é: $$(0,-1): 0a + 0b + 0c + 0d + e = -1$$ $$(1,1): 1a + 1b + 1c + 1d + e = 1$$ $$(3,3): 81a + 27b + 9c + 3d + e = 3$$ $$(5,2): 625a + 125b + 25c + 5d + e = 2$$ $$(6,-2): 1296a +216b + 36c + 6d + e = -2$$ Para encontrar a,b,c,d,e, precisamos resolver o sistema linear da matriz abaixo, multiplicando por um vetor das componentes requisitadas. $$ A = \begin{bmatrix} 1 & 0 & 0 & 0 & 0\\ 1 & 1 & 1 & 1 & 1\\ 1 & 3 & 9 & 27 & 81\\ 1 & 5 & 25 & 125 & 625\\ 1 & 6 & 36 & 216 & 1296 \end{bmatrix} $$ ``` A = [1, 0, 0, 0, 0; 1, 1, 1, 1, 1; 1, 3, 9, 27, 81; 1, 5, 25, 125, 625; 1, 6, 36, 216, 1296]; I = eye(A); n = 5; num = 0; b = [-1, 1, 3, 2, -2]; eps=10^(-2); x0 = [0;0;0;0;0]; p = 10; x = x0; x1 = x; it=0; i=0; s=0; for i=1:n bc(i) = b(i)/A(i, i); end; while p > eps & it<=1000 for i=1:n num = 0; for j=1:n if j <> i then num = num + A(i,j)*x(j); end; end; x(i) = (1/A(i,i))*(b(i)-num); end; p = norm((A*x)-b'); it = it+1; end; if(it>999) then printf("N converge"); disp(x); abort; else printf("Convergiu. Iter: %f", it); disp(x); end; ``` Encontrando os valores das iterações, temos que a eq é: $$ y(x) = -0.0246787x⁴ + 0.213254x³ - 0.8648614x² * 2.759642x -1 $$ O gráfico gerado foi: ![](https://i.imgur.com/vy2FORk.png)