Estou resolvendo um sistema de equações lineares, , numericamente. Eu fiz isso usando os métodos populares de Euler e Runge-Kutta (RK). Percebi uma grande diferença entre os dois em precisão na solução analítica. Qual é a razão para isto?
Estou resolvendo um sistema de equações lineares, , numericamente. Eu fiz isso usando os métodos populares de Euler e Runge-Kutta (RK). Percebi uma grande diferença entre os dois em precisão na solução analítica. Qual é a razão para isto?
Respostas:
A primeira coisa, você poderia ter mencionado, qual método RK você usou. Aqui está uma breve introdução aos métodos RK e Euler, trabalhando, existem méritos e deméritos.
Método de Euler
O método de Euler é o método de primeira ordem. É um método direto que estima o próximo ponto com base na taxa de mudança no ponto atual e é fácil de codificar. É um método de etapa única. Notavelmente, o método do Forward Euler é incondicionalmente instável para sistemas oscilantes sem amortecimento (como um sistema de mola de mola ou equações de onda) na desctretização do espaço. Para problemas complexos e / ou condições de contorno, pode falhar. Pode ser usado para análise numérica básica. Este método não é comumente usado para discretização espacial, mas algumas vezes usado na discretização temporal. Este esquema não é recomendado para a equação diferencial hiperbólica, porque é mais difusiva. A ordem de convergência desse esquema com o refinamento da grade é muito baixa. Estender o método de Euler para o método de ordem superior é fácil e direto.
Métodos RK:
Os métodos Runge-Kutta são na verdade uma família de esquemas derivados de um estilo específico. Você pode consultar este link para ter uma idéia básica dos métodos RK: http://web.mit.edu/10.001/Web/Course_Notes/Differential_Equations_Notes/node5.html
O método Euler avançado é realmente o método RK mais simples (1 estágio, primeira ordem). Os métodos RK precisos de ordem superior são multiestágio porque envolvem cálculos de inclinação em várias etapas no ou entre os valores de tempo discretos atuais e seguintes. O próximo valor da variável dependente é calculado tomando uma média ponderada desses vários estágios com base em uma aproximação da solução de série de Taylor. Os pesos nesta média ponderada são obtidos através da resolução de equações algébricas não lineares que são formadas exigindo o cancelamento de termos de erro na série de Taylor. O desenvolvimento de métodos RK de ordem superior é tedioso e difícil sem o uso de ferramentas simbólicas para computação.
O método RK mais popular é o RK4, pois oferece um bom equilíbrio entre ordem de precisão e custo de computação. RK4 é o método Runge-Kutta explícito de ordem mais alta que requer o mesmo número de etapas que a ordem de precisão (por exemplo, RK1 = 1 estágio, RK2 = 2 estágios, RK3 = 3 estágios, RK4 = 4 estágios, RK5 = 6 estágios ,. ..) Além da quarta ordem, os métodos RK tornam-se relativamente mais caros de calcular.
Responda
Geralmente, o erro no método Euler é mais alto que o método RK de ordem superior (RK2, RK3 etc.), porque o erro de truncamento nos métodos de ordem superior é menos comparado ao método Euler.
Em algumas literaturas de nível iniciante em métodos numéricos, é pouco mencionado que os métodos de ordem superior (digamos, RK4) geram menos erro que o método de ordem inferior (digamos, método de Euler). Na maioria das vezes isso é verdade, mas não o tempo todo. Essa propriedade depende da malha, condição inicial e equações diferenciais que você considerou.
O "erro absoluto de diferença máxima absoluta" inicial no método RK4 é igual (ou) maior que o método de Euler para a grade grossa e reduz com a grade de refino os problemas com ondas mais curtas em relação à grade . Porque a taxa de convergência do método RK4 é maior que Euler. Observe que a grossura ou finura da grade é completamente baseada na equação diferencial, condição inicial e esquema numérico. Consulte o link a seguir para mais detalhes. Embora isso se baseie na diferenciação, podemos fazer uma comparação relativa entre integração numérica no tempo e diferenciação, desde que a "integração numérica" seja estável.
@Dou...
e ele deve oferecer o preenchimento automático para você. Publiquei uma resposta em sua outra pergunta .
O método de Euler não leva em consideração a curvatura da solução e, portanto, tende a fornecer resultados diferentes, dependendo do tamanho da etapa. RK, dependendo da ordem, leva em consideração a curvatura. E isso torna o "próximo passo" estimado mais preciso. Basicamente, se você está fingindo que uma linha reta é uma boa aproximação de uma curva (Euler), estará sempre superando sua solução. Mas se você considerar a curvatura (RK), poderá seguir a curva.
Compare com a famosa citação do hóquei (Gretzky): Euler patina até onde está o disco; Runge-Kutta patina para onde o disco vai estar.
Eu recomendo que você leia sobre esses algoritmos. Você pode começar com os artigos da Wikipedia aqui e aqui .
Perdoe-me por adicionar uma resposta eu também, mas não resisti em incluir esta página da Press et al: "Receitas Numéricas em C":
Basicamente, a razão pela qual eles têm diferentes níveis de precisão está na maneira como são derivados. O método Euler (suponho que adiante) é de primeira ordem e pode ser derivado de várias maneiras. Mais facilmente do teroem de Taylor. Nesse método, apenas o termo de segunda ordem é retido, cometendo o erro de primeira ordem.
Os métodos runge kutta, por outro lado, são organizados e têm coeficientes escolhidos muito especificamente para "cancelar" várias ordens de termos de erro. Rk4 é de quarta ordem, já que os termos de erro de primeira, segunda, terceira ordem são cancelados pela escolha dos coeficientes do estágio. A derivação desses coeficientes não é muito difícil e provavelmente pode ser encontrada na wikipedia, se você estiver interessado em vê-lo.