注册 登录
编程论坛 C语言论坛

利用变步长梯形求积法或其他方法计算定积分

郭阳yang 发布于 2020-11-29 11:28, 1928 次点击
写一个函数,利用变步长梯形求积法或其他方法计算定积分
只有本站会员才能查看附件,请 登录

程序代码:
#include<stdio.h>
#include<math.h>
#define left 5
#define right 7
#define precision 0.0001 //定义精度
#define e 2.7182
double f(double x)
{
double p=e, q=5*x;
double z=pow(p,q);
    double m=z*(x*x*x*x)-(3*x);
    return m;
}
int main()
{
    int i;
    int step=100;  //初始化步数
    double steplength=(right-left)/step; //步长
    double T=f(left)+f(right);//积分的值
    for(i=1;i<=step-1;i++)
    {
        double x=left+i*steplength;
        T+=2*f(x);
     }
     T=steplength/2*T;
    printf("初始化步长得到的积分值为:%lf 所分的区间个数:%d\n",T,step);


 }

结果怎么是000000?
2 回复
#2
rjsp2020-11-29 18:17
程序代码:
#include <stdio.h>
#include <math.h>

double f( double x )
{
    return exp(5*x)*x*x*x*x - 3*x;
}

int main( void )
{
    const int left = 5;
    const int right = 7;
    const unsigned step = 100;

    const double steplength = (right-left)*1.0/step;
    double t = f(left) + f(right);
    for( unsigned i=1; i<step; ++i )
        t += 2*f( left+i*steplength );
    t *= steplength/2;
    printf( "积分值为:%e, 所分的区间个数:%u\n", t, step );

 }
#3
郭阳yang2020-11-29 21:44
回复 2楼 rjsp
我那个程序哪里出现错误了?
1