我有一个方程式可以找到黎曼和的中点值,但是在输入系数3, 4, 0
以及-1
和{的上限和下限时,它没有为中点提供正确的值。 {1}}有10个矩形。
1
我不确定为什么我没有为sumMidPoint获取正确的值。测试用例的sumMidPoint = 1.980000平方单位
答案 0 :(得分:-1)
两个问题:
(final - initial)/ rectangle = 2/20 = 0.1 in float但0 in int
要更正,请将其中至少一个设置为float,但两者都更好:
float final, float initial
您的第二个错误在公式中:3x ^ 2是3 * pow(x,2)。你写了(3x)^ 2.
另外,为了安全起见,请不要忘记在使用之前初始化sumMidPoint变量:
float sumMidPoint = 0;
这是我的最终版本代码:
#include <stdio.h>
#include <math.h>
float getMidPoint(float final, int initial, int rectangle, int coefficient1, int coefficient2, int coefficient3) {
float deltaX = (final - initial) / rectangle;
float sumMidPoint = 0;
float f_X;
float x = initial + deltaX / 2;
for(int i=0; i< rectangle; i++)
{
f_X = (coefficient1 * pow( x, 2)) + (coefficient2 * x) + coefficient3;
sumMidPoint += f_X * deltaX;
x = x + deltaX;
}
return(sumMidPoint);
}
int main() {
printf("Result: %f\n", getMidPoint(1, -1, 10, 3, 4, 0));
return(0);
}
输出: 结果:1.980000