Q5) A pressão de poros
ao longo de uma estaca pode ser modelada por:
onde:
- Escreva o problema na forma
.
- Verifique numericamente a convergência.
- Determine
usando o Método do Ponto Fixo.
- Implemente o método em MATLAB.
Passo 1
O enunciado dá a equação da pressão de poros ao longo da estaca e pede quatro coisas:
- Escrever o problema na forma de ponto fixo
. - Verificar numericamente a convergência do método do ponto fixo.
- Determinar numericamente
usando o Método do Ponto Fixo. - Implementar o método em MATLAB.
Dados fornecidos (peguei estes valores do enunciado):
-
. -
. -
.
Observação de unidades:
tem unidades
, então toda a pressão abaixo será expressa em
.
Passo 2
Colocar a equação na forma
.
A equação dada é
Logo a forma de ponto fixo é simplesmente definir
Com os valores numéricos:
portanto
Passo 3
Análise das soluções e existência de pontos fixos (ideia para saber o que o método encontra).
Defina a função de diferença
Observações simples:
-
. Logo é um ponto fixo (solução trivial). - Calcule
. Usando , obtemos . - Calcule
.
Como
é contínua, existe pelo menos uma raíz positiva
tal que
. Assim existem pelo menos dois pontos fixos:
e um
(não trivial). O objetivo prático é encontrar o ponto fixo não nulo.
Passo 4
Condição teórica de convergência local para o método do ponto fixo e verificação numérica.
Para o esquema
, uma condição suficiente para convergência local é que
no ponto fixo
(contracção local). Vamos derivar
:
Substituindo os valores:
Avaliações importantes:
- Em
: . Portanto não é um ponto atraente localmente (é instável para a iteração: se começar exatamente em fica em , mas pequenas perturbações tendem a afastar-se). - A equação
dá o limiar em que a derivada passa de maior que 1 para menor que 1:
Tomando logaritmo,
Logo para
tem-se
, isto é,
é localmente contraente para pressões acima de cerca de
.
Como a solução não-trivial
que esperávamos fica bem maior que
(veremos numericamente), então no entorno de
a condição
vale e o método do ponto fixo convergirá localmente. Vamos também calcular
depois de achar
para confirmar numericamente que é pequeno.
Resumo numérico da verificação de convergência:
- Há dois pontos fixos:
(instável) e um que é localmente atraente. - Portanto, com escolha adequada de chute inicial (por exemplo
não exatamente zero, tipicamente ou melhor ou ), a iteração converge para a solução não trivual.
Passo 5
Descrição prática do Método do Ponto Fixo e escolha de parâmetros.
Algoritmo:
Critério de parada típico (que vou usar aqui):
- tolerância absoluta:
com , - ou número máximo de iterações, por segurança (por exemplo 200).
Observações sobre escolha de
:
- Se
a iteração fica em (solução trivial). - Se
for um pequeno valor positivo (ex.: ) a iteração rapidamente cresce e tende para a solução não-nula (isso mostra que 0 é instável). - Um chute razoável e simples é
ou . Vou usar porque acelera a convergência para a solução .
Passo 6
Execução manual (iteração numérica) do ponto fixo até convergência — mostro as primeiras iterações com arredondamento adequado para aprender a manobra:
Fórmula usada a cada passo:
Tomando
:
-
-
-
-
-
já difere de em menos de (diferença da ordem ou menor nos passos finais). Calculando mais algumas iterações com precisão padrão, a sequência converge para
Cálculo de
no ponto fixo (verificação final da contração local):
Portanto a convergência local é fortemente garantida (
).
Interpretação prática: o método do ponto fixo converge para
desde muitos chutes iniciais positivos (exceto o exatamente
, que é uma solução trivial e instável para iterações).
Passo 7
Implementação MATLAB (exemplo de código comentado). Este código realiza a iteração do ponto fixo com tolerância e devolve a solução.
% fixed_point_poros.m
% Método do Ponto Fixo para u = gamma_w * z * (1 - exp(-lambda * u))
function [u, iter] = fixed_point_poros(u0, tol, maxiter)
if nargin < 1, u0 = 100; end % chute inicial (kPa)
if nargin < 2, tol = 1e-6; end
if nargin < 3, maxiter = 200; end
gamma_w = 9.81; % kN/m^3
z = 18; % m
lambda = 0.035; % kPa^{-1}
C = gamma_w * z; % 176.58 kPa
u_old = u0;
for iter = 1:maxiter
u_new = C * (1 - exp(-lambda * u_old));
if abs(u_new - u_old) < tol
u = u_new;
return
end
u_old = u_new;
end
% Se chegar aqui, não convergiu dentro de maxiter
warning('Não convergiu em %d iterações', maxiter);
u = u_old;
end
Exemplo de uso no MATLAB:
[u, iter] = fixed_point_poros(100, 1e-6, 200);
fprintf('u = %.6f kPa em %d iterações\n', u, iter);
Comentário prático sobre o código:
- O valor de entrada padrão
funciona bem. Chutes pequenos positivos também tendem a convergir, mas fica preso na solução trivial . - O código calcula
em . - Ao final pode-se também calcular
para checar .
Resposta
Convergência: existem dois pontos fixos