C语言-写一个用矩形法求定积分的通用函数,分别求积分区间为[0,1]sinx,cosx,e的x方的定积分

一、题目要求:

二、思路

①数学方面:矩形法求定积分的公式

将积分图形划分成为指定数量的矩形,求取各个矩形的面积,然后最终进行累加得到结果

1.积分区间:

[num1, num2]

2.分割数量:count

每个矩形的边长:dx=(num2-num1)/count

3.被积分函数:

f(x)(f-对应不同的被积分函数 sin/cos/exp)(x=num1 + dx*n) 计算矩形高度

4.求取每个矩形的面积进行累加:S=S1 +S2 +...+ Sn

②编程方面:函数指针

在代码中,要调用一个函数,其实就是就是让cpu执行指令的时候,跳转到指定的位置加载指令进行执行

三、程序:

c 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>

double integral(double num1, double num2, int count, double (*handler)(double))
{
	double dx = (num2 - num1) / count;
	double res = 0;
	for (int i = 0; i < count; i++)
	{
		double dh = handler(num1 + dx * i);
		res += dx * dh;
	}
	return res;
}
int main()
{
	printf("请输入积分区间[num1,num2]:");
	double num1, num2;
	scanf("%lf%lf", &num1, &num2);
	printf("请输入分割数量:");
	int count;
	scanf("%d", &count);
	printf("请输入被积分函数<1-sin,2-cos,3-exp>:");
	int choice;
	scanf("%d", &choice);

	double(*var[4])(double) = { NULL,sin,cos,exp };
	double res = integral(num1, num2, count, var[choice]);
	printf("定积分结果:%lf\n", res);
	return 0;
}

四、运行结果:

相关推荐
m0_7167652311 小时前
C++提高编程--STL初识、string容器详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
楼田莉子11 小时前
高并发内存池项目:内存池性能分析及其优化
开发语言·c++·后端·学习
是翔仔呐11 小时前
第6章 UART串口通信!掌握单片机与外界的双向数据通道,实现跨设备交互
c语言·开发语言·单片机·嵌入式硬件·gitee
带娃的IT创业者11 小时前
从本地开发到 PyPI发布:WeClaw 的 Python 包标准化之旅
开发语言·python
2201_7586426411 小时前
自定义内存检测工具
开发语言·c++·算法
吠品11 小时前
QEMU Windows虚拟机NAT网络配置指南:实现IP自动获取与外部访问
开发语言·php
fpcc11 小时前
C++编程实践—操作系统调优和内核旁支
开发语言·c++
不想看见40411 小时前
QAbstractItemModel 自定义实现--Qt 模型 / 视图(MVC)
开发语言·qt·mvc
不想看见40411 小时前
Qt 事件循环与事件过滤器讲解【详细】
开发语言·数据库·qt
FL162386312911 小时前
基于yolov8+pyqt5实现的水尺图像识别与水深计算系统
开发语言·qt·yolo