梯形法求定积分
假设
- 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;
}