第十四讲编程例题
1
求定积分
1、用梯形公式计算面积的近似值。
这样计算面积误差太大。
2
2、改进:将区间b-a划分成2n等分。用变步长的梯形法,定义Tn为将积分区间n等分时求出的近似面积。
3
4
(1)为按公式算出的面积的二分之一;
(2)为等分中线的函数值f(x1+h/2)与h的乘积,得出面积的二分之一。
5
(3)代表面积
6
3、用辛普生公式计算积分的近似值
7
#include <> // 预编译命令
#include <> // 预编译命令,数学函数
double f(double x); // 定义被调用函数f
void main() // 主函数
{ // 主程序开始
int k,n=1; // 声明整型变量k,n,并初始化n
double x,x1=0,x2=2; // 声明双精度变量x,和x1,x2
double s,h,tn,t2n,In,I2n;// 声明计算中使用的中间变量
const double eps=1e-6;// 声明双精度变量eps作为阈值
// 计算n=1时的tn和In,为便于编程
// 分别将它们赋给t2n和I2n
h=x2-x1;
t2n=I2n=(h*(f(x1)+f(x2)))/2;
printf("第一次近似计算梯形面积值为%lf\n",t2n);
In=0;
8
while(fabs(I2n-In)>=eps)//当型循环,精度未达要求则继续
{ // 循环体开始,
// 将上一次计算结果转存入tn和In
tn=t2n;
In=I2n;
// 计算k从0至n-1,f(x1+(k+)*h)的和
s=; // 求和变量s清零
for(k=0;k<n;k=k+1) // 循环求和
{ // 循环体开始
x=x1+(k+)*h;
s=s+f(x);
} // 循环体结束
// 计算t2n和I2n
t2n=(tn+h*s)/;
I2n=(4*t2n-tn)/;
9
// 更新n和h,用于下一次计算
n=2*n;
h=h/2;
} // 循环体结束
printf("积分值为%lf\n",I2n); // 输出结果
} // 主函数结束
double f(double x) // 被调用函数f,用于计算积分项
{ // 函数体开始
// 计算并返回积分项
return ( (exp(x)+x*x)/(1+x*x*x));
} // 函数体结束
运行结果:
10
计算机程序设计基础——第十四讲 来自淘豆网m.daumloan.com转载请标明出处.