我有一个公式,可以找到黎曼和的中点值,但它在输入系数3, 4, 0以及10个矩形的-1和1的上下限时,没有提供正确的中点值。
float getMidPoint(int final, int initial, int rectangle, int coefficient1, int coefficient2, int coefficient3)
{
float deltaX;
float sumMidPoint;
float f_X;
float x;
x = initial;
deltaX = (final - initial) / rectangle;
while(x < final)
{
f_X = pow((coefficient1 * x), 2) + (coefficient2 * x) + coefficient3;
sumMidPoint += f_X * deltaX;
x = x + deltaX;
}
return (sumMidPoint);
}我不确定为什么我没有得到正确的sumMidPoint值。测试用例的sumMidPoint = 1.980000平方。单位
发布于 2017-03-29 11:10:45
两个问题:
(最终-首字母)/ rectangle = 2/20 = 0.1表示浮点型,0表示整型
要进行更正,请至少将其中一个设置为float,但最好同时设置两个:
float final, float initial你的第二个错误在公式中: 3x^2是3*(x,2)。您写了(3x)^2。
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
https://stackoverflow.com/questions/43083534
复制相似问题