梯形法求定积分;牛顿迭代法求a的平方根(C)

梯形法求定积分


假设

  • f(x) = x2 + 5x + 7
  • 定积分下限为0,上积分上限为1
  • 梯形法求定积分就是一种面积计算法,将定积分以某个标准划分成很多部分,把每个小部分的面积计算出来,然后累加
  • 我这里,将定积分以x轴划分了1000份(划分的越多,所得值越精确),所以在积分下限和积分上限的基础上,将划分的单位宽度n = 0.001
  • 然后,每个划分单位的宽度都为0.001,高度取左右边界高度的平均值
  • 计算高度:就是将变量带入函数 f 中即可
#include<stdio.h>
int main(){
	float de_integral(float a, float b, float (*p)(float));
	float f(float x); 
	printf("%f", de_integral(0, 1, f));
	return 0;
}

float f(float x){
	return (x*x + 5*x + 7);
}

float de_integral(float b, float a, float (*p)(float)){//积分下限b,积分上限a
	int i, l;        //梯形法求定积分
	float n = 0.001, s = 0;//n表示划分的单位宽度,n是矩形的宽度 
	l = (a - b) / n;    //l表示有多少个单位宽度 
	for(i = 0; i < l; i++) s += ( (*p)(b + n*i) + (*p)(b + n*(i+1)) ) * n / 2;
	return s;
}

牛顿迭代法求a的平方根


#include<stdio.h>
#include<math.h> 
int main()
{
	double x0, x1, a;
	printf("请输入a的值:");
	scanf("%lf", &a);
	
	printf("a的值为%lf\n",a);
	if(a < 0) printf("a必须是整数"); 
	else {
		x1 = a/2.0;
		do{
			x0 = x1;
			x1 = (1 / 2.0) * (x0 + a/x0);
		}while(fabs(x0-x1) >= 0.00001);
		printf("a的平方根为%lf\n", x1); 
	} 
	return 0;																																																																				
}
发布了150 篇原创文章 · 获赞 267 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Zhangguohao666/article/details/88969655