函数为y=x^2+2x+1
,域名为0到10.如果输入间隔数,程序将打印结果。完成功能MeasurationByDivision()
。
我在C代码下面做了,但是我得到了错误的结果.. 我想我错了一些错误..
应该是这个结果:
10
505.000000
35
460.612245
我的代码:
#include <stdio.h>
#include <math.h>
void MeasurationByDivision( double* result, int intervals );
float f(float t) { return( pow(t,3) + 2 ); }
int main(void) {
int intervals ;
double result=0;
scanf("%d", &intervals ) ;
MeasurationByDivision(&result, intervals ) ;
printf( "%lf\n", result ) ;
fflush(stdin);
getchar();
}
void MeasurationByDivision(double* result, int intervals)
{
int i,a=0;
double x = 10/(double)intervals;
float y[100];
for(i=1; i<=intervals; i++) {
y[i]=a+i*x;
*result += x*f(y[i]);
}
}
此代码结果为:
10
3045.000000
答案 0 :(得分:2)
该功能为
y=x^2+2x+1
那为什么你的功能呢?
float f(float t) { return( pow(t,3) + 2 ); }
更改它以匹配给定的功能,您应该得到预期的结果。
我还要摆脱100个元素的阵列:你根本不需要一个数组,如果你尝试超过100个间隔,事情会发生严重错误。
答案 1 :(得分:2)
float f(float t) { return( pow(t,3) + 2 ); }
到
float f(float t) { return((t + 1)*(t + 1) ); }
ADD to 应该是460.612245 ..为什么我得到这个结果?
使用
double f(double t) { return((t + 1)*(t + 1) ); }
...
double y[100];