C语言实现辛普森法则(附带源码)
创作时间:
作者:
@小白创作中心
C语言实现辛普森法则(附带源码)
引用
CSDN
1.
https://m.blog.csdn.net/m0_61840987/article/details/145023835
辛普森法则(Simpson's Rule)是一种用于数值积分的方法,它比梯形法则更加精确,特别是在积分函数较为平滑的情况下。辛普森法则基于将积分区间划分为偶数个小区间,利用二次插值的方式来近似计算积分。其公式如下:
辛普森法则公式
对于区间 [a,b],分割为 n 个小区间(要求 n 为偶数),辛普森法则的公式为:
其中:
- h=b−a ,即每个小区间的宽度。
- xi=a+i⋅h,表示区间中的每个点。
- f(x)是被积函数。
C语言实现辛普森法则
我们将使用辛普森法则来实现一个数值积分函数,来计算给定区间 [a,b] 上函数 f(x)的积分。假设我们需要计算 f(x) = x^2 在某个区间上的积分。
代码实现
#include <stdio.h>
#include <math.h>
// 定义需要积分的函数 f(x) = x^2
double f(double x) {
return x * x;
}
// 辛普森法则进行数值积分
double simpsons_rule(double (*func)(double), double a, double b, int n) {
if (n % 2 != 0) {
n++; // n 必须为偶数
}
double h = (b - a) / n; // 每个小区间的宽度
double sum = func(a) + func(b); // 初始值:两端点的贡献
// 累加奇数索引(权重为 4)
for (int i = 1; i < n; i += 2) {
sum += 4 * func(a + i * h);
}
// 累加偶数索引(权重为 2)
for (int i = 2; i < n - 1; i += 2) {
sum += 2 * func(a + i * h);
}
// 计算最终的积分值
return sum * h / 3;
}
int main() {
double a, b;
int n;
// 输入积分的区间 [a, b] 和分割数 n(要求 n 为偶数)
printf("请输入积分的下限 a: ");
scanf("%lf", &a);
printf("请输入积分的上限 b: ");
scanf("%lf", &b);
printf("请输入划分区间的数量 n(必须为偶数): ");
scanf("%d", &n);
// 调用辛普森法则进行积分
double result = simpsons_rule(f, a, b, n);
// 输出结果
printf("积分结果是: %.6f\n", result);
return 0;
}
代码解析
- 定义被积函数:
- 我们定义了一个函数
f(double x)
,它返回 x^2,这是我们需要进行积分的函数。
- 辛普森法则函数:
simpsons_rule
函数用于计算给定区间 [a,b] 上函数的积分。- 如果用户输入的
n
不是偶数,程序会将其增加 1 以确保符合辛普森法则的要求。 h
是每个小区间的宽度,计算方式为h=b−a
。- 我们计算两端点的函数值,接着加上奇数索引的项(系数为 4),再加上偶数索引的项(系数为 2),最终根据辛普森法则公式计算积分值。
- 输入输出:
main
函数提示用户输入积分区间的上下限以及分割区间的数量 n(必须为偶数)。然后调用simpsons_rule
进行积分并输出结果。
运行结果
假设我们要求解 f(x) = x^2 在区间 [0,1] 上的积分,即:
用户输入:
- a=0
- b=1
- n=6(选择偶数的分割数)
程序输出的结果应接近 1/3≈0.333333。
请输入积分的下限 a: 0
请输入积分的上限 b: 1
请输入划分区间的数量 n(必须为偶数): 6
积分结果是: 0.333333
总结
- 辛普森法则是一种精度较高的数值积分方法,尤其适用于平滑的函数。
- 我们通过将区间 [a,b] 分成偶数个小区间,利用二次插值的思想,计算给定区间上函数的积分。
- 辛普森法则的精度通常高于梯形法则,因此对于相同的分割数,辛普森法则提供的结果更为精确。
- 如果你想提高精度,可以增加分割区间数 n,或者使用其他更高阶的数值积分方法。
这个方法适用于各种需要数值积分的情况,尤其是在无法解析求解积分时,辛普森法则是一种非常有效的工具。
热门推荐
广州大学全国排名和最强专业解析
618省钱攻略!家常蒸菜轻松做,夏日炎炎也不怕
腐乳的历史渊源与制作工艺探究
何谓“生态”,如何“文学”
泉州一日游畅游城市之美
保持健康生活的20个小秘诀
你不知道的汽油知识大揭秘!一次搞懂92、95、98汽油的差别
鱼露调料,一瓶鲜香的魔法,解锁美食新境界
【燕妮】德国“舞会皇后”嫁给马克思,就像中国仙女嫁给了穷小子
全国首例!北京航天总医院完成Accusafe穿刺导丝房间隔穿刺手术
电动三轮车、四轮车上路新规:五项违法行为将被严查
如何理解遂心存的利息计算方式?这种利息计算方式有哪些特点?
律师必读:居住证信息查询指南
睡觉总是不自觉地张开嘴?可能是这7个原因引起的!
动物园何以成网红打卡地?
一文读懂:寺、庙、祠、观、庵的区别,中国古建筑的文化瑰宝!
如何用PubMed数据库官网
眼睛出血怎么判断是眼表还是眼底出血?
清朝政治制度的发展和对世界历史的影响以及对在现代中国的影响
网络小说版权归属与侵权案例解析
德意志“狂飙突进”运动:一场影响深远的文化革命
猎头是什么意思?全面解析猎头服务及其应用
【健康科普】东方睡果——酸枣仁
敏捷项目管理培训中的模拟项目怎么做?
如何搭建知识库:从零开始建立高效的知识管理系统
电视机声音不正常的原因及解决方法
别让高血压在秋冬季“兴风作浪”!
一文读懂蓝思值:小托福成绩单中的阅读能力指标
识别和处理垃圾邮件的方法
第一性原理:“最伟大的真理最简单”