各列がそれぞれ対応する1 つのベクトルd byである配列を作成したいので、この投稿を見ていました。うまくいけば、これは理にかなっています。x
arange
dx
dx
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)
ただし、x
for 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
ます。