Gemäß meiner Sprachkenntnisse ist mein Code korrekt geschrieben. Aber es gibt mir keine richtige Lösung (Handlung). Als ich das gleiche System von ODEs in Mathematica gelöst hatte, habe ich die richtige Lösung und beide Lösungen sind völlig verschieden. Ich schreibe ein Forschungsprojekt, also brauche ich einen richtigen Code in Python. Könnten Sie mir bitte den Fehler meines Codes mitteilen? python code solution Mathematica solutionErgebnis der gekoppelten ODE in Python-Code unterscheidet sich von Mathematica
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as si
##Three system
def func(state, T):
H = state[0]
P = state[1]
R = state[2]
Hd = -(16./3.)*np.pi*P
Pd = -4.*H*P
Rd = H*R
return Hd,Pd,Rd
T = np.linspace(0.1,0.9,50)
state0 = [1,0.0001, 0.1]
s = si.odeint(func, state0, T)
h = np.transpose(s)
plt.plot(T,h[0])
plt.show()
Mathematica Code
Clear[H,\[Rho],a]
Eq1=(H'[t] == -16 \[Pi] \[Rho][t]/3)
Eq2= (\[Rho]'[t] == -4 H[t] \[Rho][t])
Eq3 = (a'[t] == H[t] a[t])
sol=NDSolve[{Eq1,Eq2, Eq3,
H[0.1]==0.1, \[Rho][0.1]==0.1, a[0.1]==0.1},
{H[t],\[Rho][t],a[t]}, {t,0.1, 0.9}]
Plot[Evaluate[{H[t]}/.sol],{t,0.1,0.9}]
für Anfänger haben Sie eine andere Ausgangsbedingung und eine andere Zeit zu tun main, und dann bin ich mir sicher, dass du mehr als 10 Punkte brauchst, um irgendeine Art von Genauigkeit zu erhalten. Sie haben auch einen anderen Ausdruck für H '.. die Python-Version hat eine zusätzliche' 1/R^2 'Begriff – agentp
Vertrauen Sie mir, ich habe es für 1000 Punkte sogar, und mit und ohne 1/R ** 2 –
Ist es möglich um die Frage zu bearbeiten, kann ich Ihnen genau das gleiche wie Mathematica zeigen (es ist irrtümlicherweise falsch!) –