Quero resolver a equação isotérmica de Lane-Emden [PDF, eq. 15.2.9]
com as condições iniciais
usando SciPyodeint()
, mas, como pode ser visto, a equação é singular na origem. A documentação afirma que usa ODEPACK.
Eu já conheço a série de potências da solução em um bairro de ( ref ):
Tentei configurar tcrit
a np.array([0.0])
, mas não funcionou: eu recebo um aviso sobre valores inválidos e, em seguida, a minha solução é tudo NaN
. Devo integrar a partir de 0,01, talvez? Ou existe alguma outra solução?
Respostas:
Tudo bem, essa resposta é um tiro no escuro, mas aqui vai.
Primeiro, transforme o ODE de segunda ordem em um sistema de dois ODEs. Deixei
onde os pontos no topo das funções correspondem à diferenciação em relação à variável independente (neste caso, ).ξ
Em seguida, a ODE implícita de segunda ordem
pode ser expresso como o ODE explícito de primeira ordem
A princípio, parece que não podemos avaliar o lado direito desse sistema ODE explícito em , como exige um integrador numérico. Se existe uma solução para esse sistema, ele deve ser diferenciável. Supondo que exista uma solução, considere o limite do lado direito como .ξ → 0ξ=0 ξ→0
Primeiro, sabemos que
porque assumimos que existe uma solução, então é diferenciável, o que significa que deve ser contínuo. O limite de uma função contínua em um ponto é o seu valor nesse ponto, e sabemos o valor de porque é uma condição inicial. φ 2 ( 0 )φ2 φ2(0)
Também sabemos que
por razões semelhantes; assumimos que é diferenciável, por isso é contínuo e porque é uma condição inicial. φ 1 ( 0 ) = 0φ1 φ1(0)=0
Finalmente,
usando a regra de L'Hôpital no formulário indeterminado .0/0
Para prosseguir, precisamos fazer outra suposição: é contínuo em . Então segue-se queξ=0φ˙2 ξ=0
Revisitando a ODE de primeira ordem e avaliando o lado direito em , podemos ver que temos:ξ=0
a partir do qual se segue que .φ˙2(0)=1/3
Usando esta análise, você pode conectar umaξ=0
if
instrução que retorne esses valores da função do lado direito em , o que deve levar você além da singularidade. Dito isto, essa análise requer algumas suposições sobre a continuidade que podem ou não se sustentar; portanto, tome a solução resultante com um grão de sal.fonte
if
if
cláusula simples . Obrigado!Se você quiser mais opções para o seu solucionador de ODE, consulte o pacote Assimulo que implementa as ligações ao pacote CVODE (e o RADAU e alguns integradores simples para esse assunto).
fonte
if
instrução para preencher o limite adequado do lado direito como ?