如何摆动列表中的数字?
How can I oscillate numbers in a list?
问题:我怎样才能让这些振荡,使得第一个数字或表达式是 + 下一个是 - 后面的是 + 等等下面提供的列表(不使用特制函数用于振荡,如果存在的话)。
我目前得到的输出如下所示:
x + x^3/6 + x^5/120 + x^7/5040 + x^9/362880
1. {1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69,
73, 77, 81, 85, 89}
预期输出:
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
2. {1, -5, 9, -13, 17, -21, 25, -29, 33, -37, 41, -45, 49, -53, 57, -61, 65, -69, 73, -77, 81, -85, 89}
Sum[x^j/Factorial[j], {j, 1, 9, 2}];
myOsc = Table[i, {i, 1, 89, 4}];
Sum[If[OddQ[(j - 1)/2], -x^j, x^j]/Factorial[j], {j, 1, 9, 2}]
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
myOsc = Table[If[OddQ[(i - 1)/4], -i, i], {i, 1, 89, 4}]
{1, -5, 9, -13, 17, -21, 25, -29, 33, -37, 41, -45, 49, -53, 57, -61, 65, -69, 73, -77, 81, -85, 89}
s = -1; Map[(s *= -1) # &, x + x^3/6 + x^5/120 + x^7/5040 + x^9/362880]
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
注意事项 Mathematica 会首先为您按规范顺序排列您的表达式。例如,如果您这样输入:
s = -1; Map[(s *= -1) # &,x^3/6 + x + x^5/120 + x^7/5040 + x^9/362880]
你得到相同的结果
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
不需要额外 s 变量的小改进:
MapIndexed[(-1)^(1 + #2[[1]])*#1 &, x + x^3/6 + x^5/120 + x^7/5040 + x^9/362880]
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
问题:我怎样才能让这些振荡,使得第一个数字或表达式是 + 下一个是 - 后面的是 + 等等下面提供的列表(不使用特制函数用于振荡,如果存在的话)。
我目前得到的输出如下所示:
x + x^3/6 + x^5/120 + x^7/5040 + x^9/362880
1. {1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69,
73, 77, 81, 85, 89}
预期输出:
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
2. {1, -5, 9, -13, 17, -21, 25, -29, 33, -37, 41, -45, 49, -53, 57, -61, 65, -69, 73, -77, 81, -85, 89}
Sum[x^j/Factorial[j], {j, 1, 9, 2}];
myOsc = Table[i, {i, 1, 89, 4}];
Sum[If[OddQ[(j - 1)/2], -x^j, x^j]/Factorial[j], {j, 1, 9, 2}]
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
myOsc = Table[If[OddQ[(i - 1)/4], -i, i], {i, 1, 89, 4}]
{1, -5, 9, -13, 17, -21, 25, -29, 33, -37, 41, -45, 49, -53, 57, -61, 65, -69, 73, -77, 81, -85, 89}
s = -1; Map[(s *= -1) # &, x + x^3/6 + x^5/120 + x^7/5040 + x^9/362880]
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
注意事项 Mathematica 会首先为您按规范顺序排列您的表达式。例如,如果您这样输入:
s = -1; Map[(s *= -1) # &,x^3/6 + x + x^5/120 + x^7/5040 + x^9/362880]
你得到相同的结果
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880
不需要额外 s 变量的小改进:
MapIndexed[(-1)^(1 + #2[[1]])*#1 &, x + x^3/6 + x^5/120 + x^7/5040 + x^9/362880]
x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880