RESOLUÇÃO DA SEGUNDA PARTE DO EXAME DE MATEMÁTICA COMPUTACIONAL 13/2/03

Sistema[A_, v_, eps_] := (dim = Length[A]; x0 = Table[0, {i, dim}]; 
        x1 = x0; dif = eps + 1; 
        While[dif > eps ,  
          Do[x1[[i]] = (v[[i]] - (∑_(j = 1)^(i - 1))A[[i, j]] x1[[j]] - (∑_(j = i + 1)^dim) A[[i, j]] 
                        x0[[j]])/A[[i, i]], {i, dim}]; 
          dif = Max[Abs[x1 - x0]]; x0 = x1]; x1)

Pergunta 1.O método considerado é o método iterativo de Gauss-Seidel (comparar com o formulário) .  
          Caso Particular:

A = {{2, 1, 1}, {1, 2, 1}, {1, 1, 2}}

v = {4. , 4. , 4. }

Primeira iterada .  Temos x0 = (0, 0, 0); logo

x1[[1]] = 1/2 (4 - 0 - 0)

x1[[2]] = 1/2 (4 - 2 - 0)

x1[[3]] = 1/2 (4 - 2 - 1)

x1

Teste :

Sistema[Matriz, v, 0.001]

Pergunta 2.Se pretendermos que o método pare ao fim de NMAX iterações (caso o critério de paragem não tenha sido satisfeito antes), o programa passará a ter a seguinte forma:

Sistema[A_, v_, eps_, nmax_] := (dim = Length[A]; 
        x0 = Table[0, {i, dim}]; x1 = x0; nit = 0; dif = eps + 1; 
        While[dif > eps  &&  nit < nmax ,  
          Do[x1[[i]] = (v[[i]] - (∑_(j = 1)^(i - 1))A[[i, j]] x1[[j]] - (∑_(j = i + 1)^dim) A[[i, j]] 
                        x0[[j]])/A[[i, i]], {i, dim}]; 
          dif = Max[Abs[x1 - x0]]; x0 = x1; nit = nit + 1]; {x1, 
          nit})

Testes:

Sistema[Matriz, v, 0.001, 5]

Sistema[Matriz, v, 0.001, 10]

Pergunta 3.Programa para o método SOR

Sor[A_, v_, eps_, nmax_, w_] := (dim = Length[A]; 
        x0 = Table[0, {i, dim}]; z = Table[0, {i, dim}]; x1 = x0; nit = 0; 
        dif = eps + 1; 
        While[dif > eps  &&  nit < nmax ,  
          Do[z[[i]] = (v[[i]] - (∑_(j = 1)^(i - 1))A[[i, 
                            j]] x1[[j]] - (∑_(j = i + 1)^dim) 
                          A[[i, j]] x0[[j]])/A[[i, i]]; 
            x1[[i]] = w*z[[i]] + (1 - w)*x0[[i]], {i, 
              dim}]; 
res = A . x1 - v; 
          Print["res=", res]; dif = Max[Abs[res]]; x0 = x1; 
          nit = nit + 1]; {x1, nit})

O vector x0 representa a iterada anterior e o vector x1 representa a iterada seguinte;  
    o vector z é um vector auxiliar que representa o reultado da aplicação do método de Gauss - 
      Seidel à iterada anterior; 
    o vector res representa a diferença 
A x1  - 
      v (necessária para o critério de paragem).

Sor[Matriz, v, 0.001, 10, 1.1]

Max[Abs[res]]