0

函数是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 
4

2 回答 2

2

功能是y=x^2+2x+1

那么为什么你的功能是这个?

float f(float t) { return( pow(t,3) + 2 ); }

更改它以匹配给定的函数,您应该会得到预期的结果。

我也想去掉 100 个元素的数组:你根本不需要一个数组,如果你尝试超过 100 个间隔,事情会变得非常糟糕。

于 2013-05-05T17:17:15.617 回答
2
float f(float t) { return( pow(t,3) + 2 ); } 

float f(float t) { return((t + 1)*(t + 1) ); } 

添加到它应该是 460.612245.. 为什么我得到这个结果?

利用

double f(double t) { return((t + 1)*(t + 1) ); } 
...
double y[100];
于 2013-05-05T17:19:49.523 回答