python:生成一个arang数组

2024-06-13 02:48:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究thispost,因为我想创建一个数组,其中每个列分别是一个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值的数组。 当我只使用一个dx时,我将x向量设置如下:

^{pr2}$

但是,我需要为每个dx分配一个x,但我不确定如何做到这一点。我看了我在开头提到的那篇文章,我想,这篇文章提供了一些见解。不过,我似乎不能根据我的需要调整它——也许这甚至不是正确的方法。在

也许我需要一个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-kutta4积分的伪谱方法来数值确定非线性KdV方程的{}。我想在不同的dx值上运行代码,这样我就可以找到错误并绘制1/dx与错误的对比,其中1/dx是x轴上的。在

我希望这有助于实现我的目标。在


既然我想找出错误,我需要相同的步长吗?我知道错误将以exp(-c * dx)的形式绘制,其中c是任意常数。我知道这一点是因为伪谱方法的误差是exp(-c / dx),但我将根据{}绘制。在


Tags: 方法代码importfor错误np绘制数组
1条回答
网友
1楼 · 发布于 2024-06-13 02:48:17

我不知道你想如何处理@Joel提出的问题,因为就目前的情况来看

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

对于不同的dx将给出不同大小的数组,这些数组无法堆叠。您可以使用建议的for循环创建此类阵列的列表:

^{pr2}$

那么,xs是:

^{3}$

N.B.:我从上限(L/2 - dx=>;L/2)中删除了-dx,因为arange已经排除了最后一个点,这是因为结果永远不会以L/2结尾,即5

如果希望在保持相同边界的同时增加步长,这是不可避免的。在


如果您可以更改边界并希望增加步长,但保持相同的元素数量,那么我建议使用如下方法,允许边界增加。在

x = np.arange(-L/2, L/2)
x
#array([-5, -4, -3, -2, -1,  0,  1,  2,  3,  4])

x * dxs[...,None]
#array([[ -5,  -4,  -3,  -2,  -1,   0,   1,   2,   3,   4],
#       [-10,  -8,  -6,  -4,  -2,   0,   2,   4,   6,   8],
#       [-15, -12,  -9,  -6,  -3,   0,   3,   6,   9,  12]])

相关问题 更多 >