C程序设计案例(矩形法求定积分问题)

矩形法求定积分问题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码实现:

#include<stdio.h>
#include<math.h>

float fsin(float x);
float func(float (*p)(float),float a,float b,int n);

int main(){
	float a,b;	//积分上下限
	int n;	//将积分区域划分为n个格(n越大,精确度越高)

	printf("请输入积分下限、上限:");
	scanf("%f %f",&a,&b);
	printf("请输入n:");
	scanf("%d",&n);

	float result=func(fsin,a,b,n);
	printf("积分结果为:%f\n",result);

	return 0;
}

float func(float (*p)(float),float a,float b,int n){
	float sum=0;
	float dis=(a-b)/n;//n越大,精确度越高
	float x=a;
	for(int i=0;i<n;i++){
		sum+=(*p)(x+(i-1)*dis+dis/2)*dis;
	}
	return sum;
}

float fsin(float x){
	return sin(x);
}
代码注解:
  1. 求解定积分的原理其实和数学里面极限的思想是一样的,将积分区域分为很多的非常小的区域,这样这些区域就可以近似的看成一个点,然后用这个区域的长度乘以它对应的这点的函数值,最后进行累加就可以解决。
  2. n的值越大,分的区域越多,精度越高。
  3. 矩形法 S ( i ) = f ( a + i − 1 h + h 2 ) 其 中 ( h = b − a 2 ) S(i)=f(a+\frac{i-1}{h}+\frac{h}{2}) 其中(h=\frac{b-a}{2}) Si=f(a+hi1+2h)h=2ba
  4. 同理,梯形法求积分:
    • 第一个: S 1 = f ( a ) + f ( a + h ) 2 ∗ h S_1=\frac{f(a)+f(a+h)}{2}*h S1=2f(a)+f(a+h)h
    • i i i 个: S i = f ( a + ( i − 1 ) ∗ h ) + f ( a + i h ) 2 ∗ h S_i=\frac{f(a+(i-1)*h)+f(a+ih)}{2}*h Si=2f(a+(i1)h)+f(a+ih)h

参考文章:

  1. https://wenku.baidu.com/view/1dca9d1ffc4ffe473368aba4.html
  2. https://blog.csdn.net/l769255844/article/details/50792072
    补充:
  3. CSDN中如何插入数学公式:https://blog.csdn.net/the_lastest/article/details/73350493
  4. 关于如何修改CSDN中的字体大小和颜色:https://blog.csdn.net/xminyang/article/details/80341707
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值