我试图找到一种方法来创建一个像下面那样的数字模式
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
我应该采取另一种方式吗?
答案 0 :(得分:6)
(-1)^x
只需使用线性增量运算符从0
转到200000
并将序列乘以(-1)^(x+1)
以允许序列的符号交替:
x = 0:200000;
y = ((-1).^(x+1)) .* x;
添加+1
非常重要,以便偶数位置得到正号,而奇数位置得到负号。
或者,您可以从0
到200000
声明相同的数组,索引到每个偶数位置并取消符号:
x = 0:200000;
x(2:2:end) = -x(2:2:end);
再加上一个混合体。您知道对于cos(x*pi)
,当x
为奇数时输出为-1,而x
为偶数时输出为1。我们需要针对您的情况进行翻转,并最终使用此交替序列乘以从0
到200000
的相同数组,因此:
x = 0:200000;
y = (-cos(x*pi)).*x;
有趣的是,对于(-1)^x
的所有整数值,exp(i*pi*x)
也等于x
。我们可以使用Euler公式来验证这一点,其中:exp(i*pi*x) = cos(pi*x) + i*sin(pi*x)
。由于属于整数的所有i*sin(pi*x) = 0
的{{1}},我们确实得到x
。替换偶数exp(i*pi*x) = cos(pi*x)
将给我们1,而奇数x
将给我们-1,因此x
对于属于整数的所有exp(i*pi*x) = cos(pi*x) = (-1)^x
。
此外,对于属于整数的所有x
,(-1)^(x+1) = -(-1)^x = -cos(x*pi)
因此第一种方法实际上与第三种方法完全相同!
答案 1 :(得分:1)
尝试
f_num= @(x) x * (-1)^(x+1);