首页 > 编程语言 > 详细

【学习笔记】【函数指针做参数案例】C语言习题:写一个用矩形法求定积分的通用函数

时间:2020-05-02 01:06:02      阅读:147      评论:0      收藏:0      [点我收藏+]

题目要求:

 技术分享图片

用矩阵法求定积分算法较为简单,其中传递不同函数用到的方法是函数指针。

在C语言中,函数名就是函数的首地址,所以将函数作为函数参数的思路是将函数地址传入,形参是一个指针类型的变量,形参的基类型为函数原型。
参数原型为:

ElemType(*FunctionName)(ElemType, ElemType,······)

因此此题中,声明定积分近似值计算通用函数为:

double integrate(double (*f)(double),double down,double up);

其中,(*f)(double)为函数指针,down为下标,up为上标。

于是有代码如下:

#include<stdio.h>
#include<math.h>
#define dx 0.001 //dx越小,精度越大

double integrate(double (*f)(double),double down,double up){
    double sum=0,step;
    for(step=down;step<up;step+=dx)
        sum+=(*f)(step)*dx;
    return sum;
}

int main(){
    printf("%.4f\n",integrate(sin,0,1));
    printf("%.4f\n",integrate(cos,0,1));
    printf("%.4f\n",integrate(exp,0,1));
    system("pause");
}

输出结果为:

0.4593
0.8417
1.7174

用 Mathematica 12 计算三个定积分得到的值是 0.459698,0.841471,1.71828,精度还行。

——————完——————

【学习笔记】【函数指针做参数案例】C语言习题:写一个用矩形法求定积分的通用函数

原文:https://www.cnblogs.com/adesoe/p/12815494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!