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.
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.
Deixe um comentário