Pessoal-
Boa tarde. Decidi fazer uma implementação rápida do Método de Crank-Nicolson para a equação do calor num quadrado (código em Scilab em anexo - www.scilab.org). Não objetivei eficiência e sim rapidez e clareza (não é um código de produção e sim um código de "exploração" com fins didáticos). Alguns de vcs com quem conversei, tiveram soluções infinitamente melhores e partes da implementação.
Ao contrário de vcs, que são tímidos, sem vergonhamente resolvi compartilhá-lo. Foram duas horas de trabalho e alguns dias rodando (Scilab é *muito lento*, mas serve ao propósito de desenvolver e testar relativamente rápido). O código é fácil de ler. Quem quiser experimentar, instale o Scilab - não irá se arrepender.
Foram mais ou menos executados os seguintes passos de desenvolvimento:
[1] Estudo de convergência numérica para a Regra do Trapézio para uma edo para uma variável escalar (2a ordem)
[2] Idem para a Regra do Trapézio para uma função apenas do tempo definida em cada nó de uma malha espacial (a mesma função em cada nó).
[3] Introdução de variáveis espaciais, x e depois y, uma por vez, mas sem derivações (como se fossem parâmetros)
[4] derivação só em x e depois só em y.
Fiz alguns testes com o critério de parada do G-S. Funcionou bem com 2*DX^4. Obtive razão entre erros de O(DX^2) pegando DT=DX (não se esquçam que C-N é de 2a ordem no tempo e no espaço!). Precisamos estudar melhor a convergência de G-S para este tipo de matriz (fica feio escolher o critério só na base da "engenharia reversa").
Vou fazer minha lição de casa e rever os velhos resultados sobre isto e falamos sobre isto mais adiante. Agora, é a vez de vcs. Bom proveito e bons desenvolvimentos.
Atenciosamente
Alexandre