矩形法求定积分【C语言版】
问题描述:
采用矩形法求定积分
分析:
利用矩形法可以求定积分其原理如图(9-1)所示。求函数f在(a,b)区间的定积分公式为:
所需数据与算法如下。
数据要求
问题的输入:double a; /*积分区间下限*/;double b; /*积分区间上限*/
问题的输出:double fx; /*积分结果*/
程序设计:
初始算法
1. 初始化积分区间(a,b)。
2. 如果把积分区间划分为100个格,则h=fabs(a-b)/100;
3. 因为区间划分为100个格,因此循环过程如下:
for(i=0;i<100;i++)
{
fx=f (x+i*h+h/2);
… …
}
C语言程序代码如下:
#include "stdio.h"
#include "math.h"
double f (double x)
{
return sin(x);
}
double Jifen(double a,double b)
{
double h;
double fx;
double x;
int i;
double sum=0;
h=fabs(a-b)/100;
x=a;
for(i=0;i<100;i++)
{
fx=f (x+i*h+h/2);
sum=sum+fx;
}
return sum*h;
}
void main()
{
double a;
double b;
double fx;
a=0;
b=3.1415926;
fx=Jifen(a,b);
printf("Ji Fen Y=%f" ,fx);
}
运行结果 Ji Fen Y=2.000082
测试:
如果将积分区间划分为1000个格,则循环条件改为i<1000,得到结果为2.00001。该测试说明积分区间划分越多,越能够接近正确结果。
采用矩形法求定积分
分析:
利用矩形法可以求定积分其原理如图(9-1)所示。求函数f在(a,b)区间的定积分公式为:
所需数据与算法如下。
数据要求
问题的输入:double a; /*积分区间下限*/;double b; /*积分区间上限*/
问题的输出:double fx; /*积分结果*/
程序设计:
初始算法
1. 初始化积分区间(a,b)。
2. 如果把积分区间划分为100个格,则h=fabs(a-b)/100;
3. 因为区间划分为100个格,因此循环过程如下:
for(i=0;i<100;i++)
{
fx=f (x+i*h+h/2);
… …
}
C语言程序代码如下:
#include "stdio.h"
#include "math.h"
double f (double x)
{
return sin(x);
}
double Jifen(double a,double b)
{
double h;
double fx;
double x;
int i;
double sum=0;
h=fabs(a-b)/100;
x=a;
for(i=0;i<100;i++)
{
fx=f (x+i*h+h/2);
sum=sum+fx;
}
return sum*h;
}
void main()
{
double a;
double b;
double fx;
a=0;
b=3.1415926;
fx=Jifen(a,b);
printf("Ji Fen Y=%f" ,fx);
}
运行结果 Ji Fen Y=2.000082
测试:
如果将积分区间划分为1000个格,则循环条件改为i<1000,得到结果为2.00001。该测试说明积分区间划分越多,越能够接近正确结果。