我在寻找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)
);
}
感谢您的回复!
答案 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