1. Podemos detectar numericamente a rigidez apenas aplicando métodos explícitos?
Suponha que você tenha um problema de valor inicial para algum ODE em . Você adota um tamanho de passo consideravelmente grande τ = 1 e um método explícito de Euler, faz seus cálculos com tamanho de passo constante τ e obtém os seguintes pontos:[ 0 , 10 ]τ= 1 τ
τ= 0,1
τ= 0,1[ 0 , 10 ]⋆
Então, o problema é rígido? A resposta é NÃO ! É necessário um pequeno tamanho de etapa aqui para reproduzir corretamente as oscilações da solução .
y′( t ) = - 2 cosπt ,y( 0 ) = 1.
τ= 1
τ= 0,1
τ= 0,1[ 0 , 10 ]⋆
Esse problema é rígido? SIM ! Demos pequenos passos para reproduzir a solução que está mudando muito lentamente. Isso é irracional! A magnitude do intervalo de tempo aqui é limitada pelas propriedades de estabilidade de Euler explícito .
Esse problema é
y′( t ) = - 2 anos( t ) + pecadot / 2 ,y( 0 ) = 1.
⋆
Conclusão: as informações sobre timesteps e erros correspondentes não são suficientes para detectar rigidez. Você também deve olhar para a solução obtida. Se variar lentamente e o tamanho da etapa for muito pequeno, é mais provável que o problema seja rígido. Se a solução oscilar rapidamente e você confiar na sua técnica de estimativa de erros, esse problema não será rígido.
2. Como determinar o tamanho máximo de uma etapa que permite integrar um problema rígido a um método explícito?
Se você usar algum solucionador explícito de caixa preta com controle automático de etapas, não precisará fazer nada: o software terá o tamanho da etapa necessário de forma adaptativa.
[ Λ , 0 ]Λ = - 1000
[ - 2 , 0 ]τΛ τ
τ≤ 2| Ganhe muitos |.
τ≤ 1| Ganhe muitos |,
1 / | Ganhe muitos | < τ≤ 2 / | Ganhe muitos |
É claro que essa análise é principalmente aplicável a problemas lineares com espectro conhecido. Para problemas mais práticos, devemos confiar em métodos numéricos de detecção de rigidez (consulte referências e comentários em outras respostas).