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,或者使用其他更高阶的数值积分方法。
这个方法适用于各种需要数值积分的情况,尤其是在无法解析求解积分时,辛普森法则是一种非常有效的工具。
热门推荐
旧家具废物利用 家里的旧家具创意DIY教程
世卫组织披露中国疫苗数据,事关全球群体免疫成效
项目立项完整流程:如何确保每一步都不出错?
五代头孢使用指南:作用有何不同?该如何选择?
产品包装设计趋势与创新
赛微电子行业分析
"锒铛入狱":一个成语里的法律与道德警示
成交量萎缩是什么?成交量萎缩对市场有何指示作用?
95号与92号汽油,你真的加对了吗?抗爆性、油耗大揭秘!
成人大专和全日制大专的区别在哪里
中国新能源车 自信“出海” “圈粉”世界
喝咖啡失眠了怎样尽快入睡?快速入睡的小技巧!
孩子抑郁厌学都是原生家庭的错?理解父代与子代之间的“不可理解性”
龙鸣集团诈骗案件曝光:揭示网络陷阱警惕欺诈行为
精美4K全屏手机壁纸:高清画质与120帧流畅体验的完美结合
100比58大胜日本完成复仇,中国男篮晋级亚洲杯正赛
情绪管理:成就积极人生的关键钥匙
天府入田宅宫:财富与居住的深远影响
梦见和亲戚吵架打架是什么预兆
酱香型白酒存放方法
白眼球上有白色凸起物怎么治疗
公司法务的职业发展路径:从基础到高层的挑战与机遇
AI艺术创作实战经验与感悟:探索人工智能在艺术领域的应用与影响
在家锻炼身体的9种有效方法
太极劲法之奥妙“摸劲”和“顺劲”,附30年练功心得
铁皮石斛怎么繁殖栽培?
揭秘!"原始学历"到底是什么?一文解惑你的学历困惑
如何确保商标的独创性,关键步骤与策略解析
健康科普丨小小推拿,大大学问
《自然》研究显示AI可“读心”:确定性格和面部特征关系