2

各列がそれぞれ対応する1 つのベクトルd byである配列を作成したいので、この投稿を見ていました。うまくいけば、これは理にかなっています。xarangedxdx

import numpy as np
L = 80.0
N = 2 ** np.arange(-4, 10, dtype = np.float64)
dx = L / N

元のコードでは、値dxの配列があるコードを見ていました。dxを 1 つしか使用していなかったときはdx、次のように x ベクトルを設定しました。

x = np.arange(-L / 2., L / 2. - dx, dx)

ただし、xfor eachdxが必要ですが、これを行う方法がわかりません。冒頭で言及した投稿を見て、いくつかの洞察が得られたと思います。ただし、それを自分のニーズに合わせて調整することはできないようです-おそらくそれは正しいアプローチでさえありません。

多分私はforループが必要ですか?

for i in len(dx):
    x[i] = np.arange(-L / 2., L / 2. - dx, dx)

次に、反復ごとforにループを 1 つ選択するために、おそらく別のループをネストする必要があります。dx

ただし、何が正しいアプローチであるか、最も効率的であるかはわかりません。


混乱を明確にするために、あるdx状況では、次のように設定しました。

x = np.arange(-L / 2.0, L / 2.0 - dx, dx)                                         
k = np.hstack((np.arange(0, N / 2.0 - 1.0),                                       
               np.arange(-N / 2.0, 0))).T * 2.0 * np.pi / L                       
k1 = 1j * k                                                                       
k3 = (1j * k) ** 3                                                                
u = 2 * (2 / (np.exp(x + 20.0) + np.exp(-x - 20.0))) ** 2                                   
udata = u                                                                         
tdata = 0.0 

Integration here

次に、Runge Kutta 4 積分を使用した疑似スペクトル法を実行してu、非線形 KdV 方程式を数値的に決定しました。さまざまな値でコードを実行してdx、エラーを見つけて、x 軸上の 1/dxエラーとプロットできるようにしたいと思います。1/dx

これが私が達成しようとしていることに役立つことを願っています。


エラーを見つけたいので、同じステップ サイズが必要ですか? 私は、エラーが任意の定数であるexp(-c * dx)場所の形でプロットされることを知っています。c疑似スペクトル法には の誤差があるため、これはわかっていますがexp(-c / dx)、 に対してプロットし1 / dxます。

4

1 に答える 1