试图找出如何实现左和。已经做了几个小时了,不知道,请帮忙。我从左边的和得到0.0。middleSum是可以的,我使用它来检查leftSum是否工作。但是它不是。*编辑 leftSum方法不是真的,我还在弄清楚,如果有人能帮我解释如何做leftSum,那就太好了
public static double middleSum(Function fct, double a, double b, int n) {
double deltaX = (b - a) / n;
double x = a + deltaX / 2.0;
double sum = 0.0;
for (int i = 0; i < n; i++) {
sum = sum + fct.f(x);
x = x + deltaX;
}
return sum * deltaX;
}
public static double lefSum(Function fct, double a, double b, int n) {
double deltaX = (b - a) / n;
double x=0.0;
double sum = 0.0;
for (int i = 0; i < n; i++) {
x=(i-1)/n;
sum += fct.f(x) * deltaX;
}
return sum;
}发布于 2014-02-21 21:55:56
我从左边的和得到0.0
我想是因为这里
x=(i-1)/n;你在这里执行整数除法。将一侧改为双边,以执行浮点计算。
x=(i-1.0)/n;发布于 2014-02-21 21:58:50
我不明白为什么您的左代码看起来与右代码不同。我代表你写的权利:
double x = a + deltaX / 2.0;
for (int i = 0; i < n; i++)
{
sum = sum + fct.f(x);
x = x + deltaX;
}
return sum * deltaX;你为什么不写信
public static double lefSum(Function fct, double a, double b, int n)
{
double deltaX = (b - a) / n;
double x=a + deltaX / 2.0;
double sum = 0.0;
for (int i = 0; i < n; i++)
{
sum = sum + fct.f(x);
x = x + deltaX;
}
return sum*deltaX;
}左边的那笔钱?这是相同的代码,我从x=a开始,而不是移位。
此处的代码写返回:
Java Main2Integrate
2.666600000000003
2.666600000000003在我的机器上。
发布于 2014-02-21 22:05:16
左黎曼和
对于左Riemann和,在左端点用它的值来逼近函数,得到多个矩形,基Δx和高度f(a + iΔx)。对i= 0,1,.,n−1执行此操作,并将结果区域相加
Sum
public static double lefSum(Function fct, double a, double b, int n)
{
double deltaX = (b - a) / n;
double x=0.0;
double sum = 0.0;
for (int i = 0; i < n; i++)
{
x = a + i * deltaX;
sum += fct.f(x) * deltaX;
}
return sum;
}https://stackoverflow.com/questions/21945940
复制相似问题