在 MATLAB / Octave 中创建递增整数交替序列
Create an increasing integer alternating sequence in MATLAB / Octave
我正在尝试找到一种方法来创建如下所示的数字模式
0,1,-2,3,-4,5
...
请注意:它需要达到 200000,但我会将它们分成 2000 组。
我找到了一个看起来适用于 http://oeis.org/A181983 的公式,但是当我在 MATLAB / Octave 中创建公式时,数字不匹配:
f_num= @(x) x / (1 + x)^2;
numval = f_num(1)
numval = 0.25000
还有其他方法吗?
尝试
f_num= @(x) x * (-1)^(x+1);
方法#1 - 使用(-1)^x
只需使用线性增量运算符从 0
到 200000
并将序列乘以 (-1)^(x+1)
以允许序列的符号交替:
x = 0:200000;
y = ((-1).^(x+1)) .* x;
添加 +1
很重要,这样偶数位置得到正号,而奇数位置得到负号。
方法 #2 - 使用索引
或者,您可以声明从 0
到 200000
的相同数组,索引到每个偶数位置并取反符号:
x = 0:200000;
x(2:2:end) = -x(2:2:end);
方法 #3 - 使用三角函数和整数
再加入一个。您知道对于 cos(x*pi)
,当 x
为奇数时输出为 -1,而当 x
为偶数时输出为 1。我们需要针对您的情况翻转它,并最终使用这个交替序列与从 0
到 200000
的相同数组相乘,因此:
x = 0:200000;
y = (-cos(x*pi)).*x;
放在一边
有趣的是,对于 x
的所有整数值,(-1)^x
也等于 exp(i*pi*x)
。我们可以使用欧拉公式验证这一点,其中:exp(i*pi*x) = cos(pi*x) + i*sin(pi*x)
。由于i*sin(pi*x) = 0
对于所有属于整数的x
,我们真的得到exp(i*pi*x) = cos(pi*x)
。代入偶数 x
将得到 1,而代入奇数 x
将得到 -1,因此 exp(i*pi*x) = cos(pi*x) = (-1)^x
代表所有属于整数的 x
。
此外,(-1)^(x+1) = -(-1)^x = -cos(x*pi)
对于所有属于整数的 x
所以第一种方法实际上等于第三种方法!
我正在尝试找到一种方法来创建如下所示的数字模式
0,1,-2,3,-4,5
...
请注意:它需要达到 200000,但我会将它们分成 2000 组。
我找到了一个看起来适用于 http://oeis.org/A181983 的公式,但是当我在 MATLAB / Octave 中创建公式时,数字不匹配:
f_num= @(x) x / (1 + x)^2;
numval = f_num(1)
numval = 0.25000
还有其他方法吗?
尝试
f_num= @(x) x * (-1)^(x+1);
方法#1 - 使用(-1)^x
只需使用线性增量运算符从 0
到 200000
并将序列乘以 (-1)^(x+1)
以允许序列的符号交替:
x = 0:200000;
y = ((-1).^(x+1)) .* x;
添加 +1
很重要,这样偶数位置得到正号,而奇数位置得到负号。
方法 #2 - 使用索引
或者,您可以声明从 0
到 200000
的相同数组,索引到每个偶数位置并取反符号:
x = 0:200000;
x(2:2:end) = -x(2:2:end);
方法 #3 - 使用三角函数和整数
再加入一个。您知道对于 cos(x*pi)
,当 x
为奇数时输出为 -1,而当 x
为偶数时输出为 1。我们需要针对您的情况翻转它,并最终使用这个交替序列与从 0
到 200000
的相同数组相乘,因此:
x = 0:200000;
y = (-cos(x*pi)).*x;
放在一边
有趣的是,对于 x
的所有整数值,(-1)^x
也等于 exp(i*pi*x)
。我们可以使用欧拉公式验证这一点,其中:exp(i*pi*x) = cos(pi*x) + i*sin(pi*x)
。由于i*sin(pi*x) = 0
对于所有属于整数的x
,我们真的得到exp(i*pi*x) = cos(pi*x)
。代入偶数 x
将得到 1,而代入奇数 x
将得到 -1,因此 exp(i*pi*x) = cos(pi*x) = (-1)^x
代表所有属于整数的 x
。
此外,(-1)^(x+1) = -(-1)^x = -cos(x*pi)
对于所有属于整数的 x
所以第一种方法实际上等于第三种方法!