1
NumpyでPythonを使用して、有限差分法を使って基本方程式を解くことを試みています。コードは、私に正しい最初の値を与えます。つまり、私に[1]を与えます。しかし、その後の他の値はゼロにすぎませんか? 私は間違って何をしているのか分かりません。なぜなら、明らかに最初の値で動作するからです。どうすればこの問題を解決できますか? どんなアイデアも非常に役に立ちます。Pythonで有限差分を使用する
from numpy import *
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.integrate import odeint
def solver(omega_m, dt):
#t_0, H_0, a_0, dt, n, T; always the same; omega's change
t_0 = 0.0004
a_0 = 0.001
H_0 = 1./13.7
T = 13.7
dt = float(dt)
n = int(round((T - t_0)/dt))
x = zeros(n+1)
t = linspace(t_0, T, n+1)
x[0] = a_0
for i in range (0, n):
x[i+1] = x[i] + (H_0 * ((omega_m)**(1./2.)) * ((x[i])**(-1./2.)) * dt)
return x, t
a, t = solver(omega_m =1, dt=0.001)
print a, t
本当にありがとうございました!しかし、これは大きな助けとなり、今のように働きます。 – rcss92
@ rcss92回答があれば受け入れることができます –
完了しました。すみませんでした。 – rcss92