-2

我想编写一个计算序列的 C 程序:

1/x + 1/2*x^2 + 1/3*x^3 + 1/4*x^4 + ...

最多五位小数。

该程序将x作为输入并将(系列的值)打印f(x)到小数点后五位。你能帮助我吗?

4

2 回答 2

1

为了评估多项式,Horner 形式通常比扩展形式具有更好的数值稳定性参见http://reference.wolfram.com/legacy/v5/Add-onsLinks/StandardPackages/Algebra/Horner.html

如果第一项是拼写错误,那么(((((1/4 )* x + 1/3) * x ) + 1/2) * x + 1) * x
如果第一项真的是 1/x,请尝试 Else(((((1/4 )* x + 1/3) * x ) + 1/2) * x*x + 1/x

当然,您仍然必须分析 Eric Postpischil 回答中提出的收敛性和数值稳定性。

最后一件事,您作为示例提交的系列真的会收敛到某个 x 的有限值吗?

于 2012-08-28T17:36:03.600 回答
0

为了知道您计算的总和在系列极限的所需距离内,您需要证明误差源小于所需距离。

以数值方式评估系列时,有两个错误来源。一是数值计算的局限性,例如浮点舍入。另一个是剩余项的总和,没有被添加到部分总和中。

数值误差取决于所做的计算。对于您要评估的每个系列,必须执行错误的自定义分析。对于您显示的示例系列,可以轻松计算出数值误差的粗略但足够的界限。这是您主要感兴趣的系列,还是有其他系列?

剩余项的总和也需要自定义分析。通常,给定一个序列,我们可以找到一个表达式,该表达式可以被证明至少与所有剩余项的总和一样大,但更容易计算。

在确定这两个错误的界限后,您可以对序列的项求和,直到两个界限的总和小于所需的距离。

于 2012-08-28T11:32:29.917 回答