原文地址:http://blog.csdn.net/alfredtofu/article/details/6386336
这题不难,就是如何减少运算时间以及精度保证,如果没hint我估计也做不出了,有了f(1),那直接用f(x) - f(1) = sum((1 - x) / (k * (k + 1) * (k + x))),分母变成k的立方,则只需要10000次就可以达到e-12的精度,比原来平方降低了100倍运算- -。。。。余项则用等式三可计算
- #include <stdio.h>
- int main() {
- double sum = 0;
- double x;
- int k;
- for(x = 0.000; x <= 2.000; x += 0.001) {
- sum = 0;
- for(k= 1; k < 10000; k++) {
- sum += (1.0 - x) / (k * (k + 1) * (k + x));
- }
- sum = sum + (1 - x) / (2 * 10000 * 10000) + 1.0;
- printf("%5.3f %16.12f/n", x, sum);
- }
- return 0;
- }