与Riemann Sum Midpoint Java集成

时间:2017-03-03 13:24:19

标签: java eclipse

我在寻找Riemann Sum(Midpoint)时坚持使用Java。我的问题是,我总是得到一个错误的答案,应该是。

例如:

  

a = -5,b = 12,n = 40,结果应为:608.9107812499999(但我得到:535.0809101562498)

     

a = -5,b = 12,n = 200,结果应为:609.1564312500013(但我得到:555.8486222812485)

     

功能是:^ 2 - + 3

这是我的代码:

public static double intReiman(double a, double b, double n){
    double width = (b - a) / n;
    double sum = 0.0;


    for (int i = 0; i <= n; i++) {
        double first_mid_p=a + width / 2.0;
        sum = sum + (first_mid_p*first_mid_p-first_mid_p+3);
    }

    return sum * width;
}


public static void main(String[] args){

    System.out.println(
            intReiman(-5.0,12.0,40.0)

            );
}

感谢您的回复!

2 个答案:

答案 0 :(得分:3)

试试这个。此外,它是黎曼,而不是雷曼。最后,n应该是整数,而不是双精度。

你错过了将first_mid_p更新到正确位置的部分(也就是“+ i * width”部分)

Rextester链接:http://rextester.com/FMI50088

public static double intRiemann(double a, double b, double n){
    double width = (b - a) / n;
    double sum = 0.0;

    for (int i = 0; i < n; i++) {
        double first_mid_p=a + (width / 2.0) + i * width;
        sum = sum + (first_mid_p*first_mid_p-first_mid_p+3);
    }

    return sum * width;
}


public static void main(String[] args){
    System.out.println( intRiemann(-5.0,12.0,40.0));
}

答案 1 :(得分:0)

使用Java中的函数编程可以更有效地解决此问题。 您可以按以下方式将积分定义为1个变量的Riemman逼近函数,其中迭代次数为100,000:

create_guide($id)

使用以下语法传递函数^ 2 − + 3

<?php

require 'path/to/create_guide.php';

//rest of cron job code.

$data = create_guide($id);

?>

它应该打印结果为609.1579967485502