私はm x n
配列を持っています: a
、整数m > 1E6
、およびn <= 5
.
関数FとGがあり、これらは次のように構成されています: F ( u , G ( u , t))。uは1 x n
配列、t はスカラー、FとGは配列を返し1 x n
ます。
Fでそれぞれを評価しrow
、a
前に評価した行を次の評価のu配列として使用する必要があります。そういう評価をする必要があります。m
これは非常に高速でなければなりません。以前、配列全体の評価に感銘を受けましscitools.std
StringFunction
たが、この問題では、前に計算された配列を次の計算の引数として使用する必要があります。StringFunction がこれを実行できるかどうかはわかりません。
例えば:
a = zeros((1000000, 4))
a[0] = asarray([1.,69.,3.,4.1])
# A is a float defined elsewhere, h is a function which accepts a float as its argument and returns an arbitrary float. h is defined elsewhere.
def G(u, t):
return asarray([u[0], u[1]*A, cos(u[2]), t*h(u[3])])
def F(u, t):
return u + G(u, t)
dt = 1E-6
for i in range(1, 1000000):
a[i] = F(a[i-1], i*dt)
i += 1
上記のコードの問題は、非常に遅いことです。これらの計算を数ミリ秒単位で実行する必要があります。
どうすればやりたいことができますか?
ありがとうございました。
敬具、
マリウス