【发布时间】:2015-02-25 03:00:48
【问题描述】:
我已经编写了一些代码来集成函数 5x^4 + 4x^3 + 3x^2 + 2x + 1。
#include<stdio.h>
#include<math.h>
float func(float x){
float a;
a = 5*pow(x,4) + 4*pow(x,3) + 3*pow(x,2) + 2*x +1;
return a;
}
int main(){
float numberOfXValues;
float a = 0; //lower limit
float b = 1; //upper limit
float numberOfStrips;
float stripSize;
float finalAnswer;
float sumFirstAndLast; //summation of first and last x value
while(1){
printf("Input number of X values:");
scanf("%f", &numberOfXValues);
numberOfStrips = numberOfXValues - 1;
stripSize = (b - a)/(numberOfStrips);
sumFirstAndLast = 0.5*func(a) + 0.5*func(b);
for (float z = stripSize; z < b; z += stripSize ){
sumFirstAndLast += func(z);
}
finalAnswer = sumFirstAndLast * stripSize;
printf("%f\n", finalAnswer);
}
return 0;
}
它适用于大多数值,但 13 和 20 的输出给出了错误的答案。我已经查看了几次,但看不出是什么原因造成的。
Input number of X values:10
5.039070
Input number of X values:11
5.031651
Input number of X values:12
5.026160
Input number of X values:13
6.271982
Input number of X values:14
5.018732
Input number of X values:15
5.016153
Input number of X values:16
5.014071
Input number of X values:17
5.012367
Input number of X values:18
5.010955
Input number of X values:19
5.009773
Input number of X values:20
5.798243
Input number of X values:21
5.007917
【问题讨论】:
-
预期值是多少?
-
什么是正确的值,为什么你认为它们是正确的?
-
它应该只趋向于 5。除了我发布的两个数字之外,还有很多数字不起作用,例如。 24、28、29 和 32。
-
顺便说一句,我认为你的
numberOfXValues应该是整数.. -
我现在已将 numberOfXValues 和 numberOfStrips 都更改为整数,但仍然无法正常工作。
标签: c