Loops 迭代计算的公式替换

Loops 迭代计算的公式替换,loops,math,iteration,formula,taylor-series,Loops,Math,Iteration,Formula,Taylor Series,我陷入了一个简单的计算中,我过去常常在for循环中迭代计算。但现在我不想再用循环计算了 // What I know double x0 = p*J; double x1 = p*J - p*J*J; double x2 = p*J - p*J*J - p*J*J*J; double x3 = p*J - p*J*J - p*J*J*J - p*J*J*J*J; // What I want to know double xi = ?; 强>不使用循环时如何计算席?< >

我陷入了一个简单的计算中,我过去常常在for循环中迭代计算。但现在我不想再用循环计算了

// What I know
double x0 =  p*J;
double x1 =  p*J -  p*J*J;
double x2 =  p*J -  p*J*J - p*J*J*J;
double x3 =  p*J -  p*J*J - p*J*J*J - p*J*J*J*J;

// What I want to know
double xi =  ?;
<>强>不使用循环时如何计算席?< <强> > /p> < p>简化:< /P>
xi = pJ - pJ^2 - ... - pJ^(i+1)
   = pJ(1 - J - ... - J^i)
   = pJ(2 - 1 - J - ... - J^i)
   = pJ(2 - (1 + J + ... + J^i))
Wolfram Alpha给出了
1+J+…+的部分和J^i
;它是
(J^(i+1)-1)/(J-1)
。我们将其替换为我们的公式:

xi = pJ(2 - (J^(i + 1) - 1) / (J - 1))

你可以尝试简化代数,但是你已经有了席的表达式。< / P >你到底想做什么?code>xi将收敛到

p*J-p*J*J/(1-J)
如果
|J<1
则发散,但是你所说的问题没有什么意义。@tmyklebu为什么计算序列的部分和没有意义呢?顺便说一句,即使已经回答了,这个问题也离主题太远了。下次用。@Ordous:这就是他想要的吗?我说不出来。@tmyklebu很明显,他拥有的是一个系列(这是一个简单的几何系列)。他在问如何计算没有循环的序列的一个成员(即闭式表达式)。不是很重要,但对于一个简单的数学程序来说是有意义的。这只适用于i=0..1。对于值i>=2,它返回的负值永远不正确。例如,如果p=1000,J=0.8,它应该返回[800,160,32,4.8],但它确实返回[800,160,-352,-761,6]。你能确认这一点吗?@ LuftgWeeRidiaNER在你的例子中,考虑<代码> i=3 < /代码>。你给出的表达式是
p*J-p*J*J-p*J*J*J*J-p*J*J*J*J
。当我在计算器中这样做时,我得到:
1000*0.8-1000*0.8*0.8-1000*0.8*0.8*0.8-1000*0.8*0.8*0.8=800-640-512-409.6=-761.6
。对于
i=2
,它将给出
-352
。所以,我要说的是:你们提供的公式给出的值和我的表达式相同。不管你的公式是否正确,我不能说。@luftgewehrindianer(正如tmyklebu在对你的问题的评论中正确指出的,你的表达式收敛到
p*J-p*J*J/(1-J)
对于
J<1
,或者在您的示例中关于
-2400
,所以很可能会出现负值。您当然是对的。我在问题中的公式上犯了错误,没有注意到。我的错。这一点属于您!