Em Álgebra Linear, a Tolerância $\large (\epsilon)$ é um valor pequeno e positivo que define a precisão desejada para a solução aproximada de um sistema de equações lineares. Ela é usada como critério para parar as iterações em métodos iterativos como o Método de Jacobi e o Método de Gauss-Seidel. O valor de $\large (\epsilon)$ determina o quão perto da solução exata as iterações devem chegar antes de o algoritmo ser interrompido.



A definição da tolerância depende de vários fatores:
1. Precisão
Desejada
Se a solução precisa ser muito precisa, um valor menor de tolerância (por exemplo, 10-8 ou 10-10) pode ser usado.

Para uma solução menos precisa, 10-4 ou 10-2 pode ser suficiente.
2. Natureza do Problema Problemas com coeficientes muito grandes ou muito pequenos podem necessitar de ajustes na tolerância.

A escala dos valores envolvidos no sistema de equações também pode influenciar a escolha de
3. Recursos Computacionais Uma tolerância menor resulta em mais iterações, aumentando o tempo de execução.

Uma tolerância maior pode reduzir o número de iterações, economizando tempo, mas resultando em uma solução menos precisa.
4. Condições de Convergência Sistemas que convergem rapidamente podem usar uma tolerância mais rigorosa.

Sistemas que convergem lentamente podem exigir uma tolerância mais relaxada para limitar o número de iterações.

O critério de tolerância é uma condição usada para determinar quando interromper as iterações. Ele define a precisão desejada para a solução aproximada do sistema de equações lineares $\large Ax = b$.

A cada nova iteração do método iterativo, é verificado se o critério de tolerância foi atingido.


Existem várias fórmulas para calcular o critério de tolerância, as principais são:

Norma do Erro Relativo:

É a principal fórmula para medir o critério de tolerância. Este critério verifica a diferença relativa entre as estimativas de duas iterações consecutivas e divide o resultado pela estimativa atual.

Pelos cálculos e teste executados, apresenta a menor colocação entre os critérios, em termos de número de iterações.

Fórmula:
$$\large E_{r} = \dfrac{| x^{(k+1)} – x^{(k)} |}{| x^{(k+1)}|} < \epsilon$$

Sendo:

  • $| \cdot |:$ Norma vetorial, geralmente a norma $L2$.
  • $x^{(k+1)}:$ Vetor de aproximações na $k+1$-ésima iteração.
  • $x^{(k)}:$ Vetor de aproximações na $k$-ésima iteração.
  • $\epsilon:$ Tolerância definida pelo usuário.

Python:

Er = float(np.sqrt(sum((xK - x)**2)) / np.sqrt(sum(xK**2)))

Julia:

Er = sqrt(sum((xK - x).^2)) / sqrt(sum(xK.^2))



Norma do Erro Absoluto:

Este critério verifica a diferença relativa entre as estimativas de duas iterações consecutivas.

Fórmula:
$$\large E_{a} = | x^{(k+1)} – x^{(k)} | < \epsilon$$
Sendo:

  • $| \cdot |:$ Norma vetorial, geralmente a norma $L2$.
  • $x^{(k+1)}:$ Vetor de aproximações na $k+1$-ésima iteração.
  • $x^{(k)}:$ Vetor de aproximações na $k$-ésima iteração.
  • $\epsilon:$ Tolerância definida pelo usuário.

Python:

Er = float(np.sqrt(sum((xK - x)**2)))

Julia :

Ea = sqrt(sum((xK - x) .^2))

Resíduo do Sistema:

Este critério verifica o resíduo do sistema, ou seja, a diferença entre o lado direito e o lado esquerdo das equações quando substituímos a solução aproximada.

Fórmula:
$$\large Res = | Ax^{(k)}-b | < \epsilon$$
Sendo:

  • $| \cdot |:$ Norma vetorial, geralmente a norma $large L2$.
  • $A:$ Matriz A com os componentes do sistema
  • $x^{(k)}:$ Vetor de aproximações na $large k$-ésima iteração.
  • $b:$ Vetor dos resultados do sistema
  • $\epsilon:$ Tolerância definida pelo usuário.

Python:

Er = float(np.sqrt(sum((np.dot(A, xK) - b)**2)))

Julia :

Res = sqrt(sum((A*xK - b) .^2))

Fórmula de Diferença Relativa Máxima:

A fórmula representa a mudança ou variação relativa máxima na sequência de duas iterações consecutivas.

Essa fórmula não é muito usual e nem aceita por uma ala matemática mas é amplamente usada por vários profissionais.

Pelos cálculos e teste executados, apresenta a segunda menor colocação entre os critérios, em termos de número de iterações.

Fórmula:
$$\large E_{m} = \dfrac{Max(x^{(k+1)}) – Max(x^{(k)})}{Max(x^{(k+1)})} \Large < \epsilon$$
Sendo:

  • $Max(x^{(k+1)}):$ Valor máximo do vetor das aproximações na $k+1$-ésima iteração.
  • $Max(x^{(k)}):$ Valor máximo do Vetor de aproximações na $k$-ésima iteração.
  • $\epsilon:$ Tolerância definida pelo usuário.

Python:

Er = float(max(xK - x) / max(xK))

Julia :

Em = maximum(xK1-xK) / maximum(xK1)

 É importante salientar que as fórmulas terão comportamentos e resultados diferentes, de acordo com a matriz e o método utilizado.