0

je dois tracer un graphique montrant 2 variables, avec un second ordre ODE avec RK4, jusqu'à présent je l'ai fait cesecond ordre ODE avec RK4

from numpy import arange 
from pylab import plot,xlabel,ylabel,show 
Qger = 400 
K = 20 
T1 = 150 
T2 = 60 
N = 1000 
h = (T2-T1)/N 
rpoints = arange(6.0,8.0,h) 
xpoints = [] 
x = 423 
def df(s,t): 
    dTdt = -Qger*t/(2*K) + 172.8/t 
    return dTdt 

for r in rpoints: 
    xpoints.append(x) 
    k1 = h*df(x,r) 
    k2 = h*df(x+0.5*k1,r+0.5*h) 
    k3 = h*df(x+0.5*k2,r+0.5*h) 
    k4 = h*df(x+k3,r+h) 
    x += (k1+2*k2+2*k3+k4)/6 
pylab.plot(rpoints,xpoints) 
pylab.xlabel("Raio") 
pylab.ylabel("Temperatura") 
pylab.show 

Mais c'est un RK4 pour une première commande ODE, parce que je ne savais pas et intégré par main, mais je ne peux pas le faire et ni utiliser scipy, donc quelqu'un peut-il m'expliquer comment intégrer cette fonction ou utiliser RK4 avec un second ordre ODE. La fonction est ci-dessous.

C'est la fonction, que T et r sont des variables, le reste est 0

+0

La [documentation de scipy pour 'odeint'] (https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.integrate.odeint.html) contient un exemple détaillé de la solution d'une ODE de 2ème ordre. Étudiez cet exemple et revenez (peut-être dans une autre question ...) pour obtenir de l'aide sur des questions spécifiques. Comme ta question est mauvaise ... – gboffi

Répondre

0

Vous devriez être en mesure de mettre ci-dessus sous une forme « semi-discrète », thats dire dT/dt en termes de dérivées seulement partielles avec respect r. Si vous pouvez alors trouver une approximation numérique ou autre des termes équivalents à dT/dt, c'est-à-dire le RHS de dT/dt = df (r, ...) alors RK4 explicite peut être applicable.

Dans cette approche, votre méthode de progression temporelle (RK4) est uniquement appliquée à votre dérivée de température de premier ordre par rapport au temps.