我正在看这篇文章,因为我想创建一个数组,其中每一列是一个x
向量arange
d bydx
和对应的dx
,分别。希望这是有道理的。
import numpy as np
L = 80.0
N = 2 ** np.arange(-4, 10, dtype = np.float64)
dx = L / N
使用我的原始代码,我正在查看一个dx
现在我有一组dx
值的地方。当我只使用 onedx
时,我将 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
循环来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
值上运行代码,这样我就可以找到错误并绘制1/dx
与错误在1/dx
x 轴上的位置。
我希望这对我想要完成的事情有所帮助。
既然我想找到错误,我需要相同的步长吗?exp(-c * dx)
我知道错误将以wherec
是任意常数的形式绘制。我知道这一点,因为伪光谱方法有错误,exp(-c / dx)
但我将针对1 / dx
.