求定积分的程序,跟大家分享一下,有错的话请指出,谢谢!
2011-04-22 23:44
417 查看
/*题 目:编写利用矩形法计算定积分的通用函数。然后利用它分
别计算以下3个数学函数的定积分:
(1)f(x)=x*x-5*x+1
(2)f(x)=x*x*x+2*x*x-2*x+3
(3)f(x)=x/(2+x*x)
*/
//**********************************************************
#include < stdio.h >
//******求第一个公式的积分值******
double funtion1( double x )
{
double fx ;
fx = x * x - 5 * x + 1;
return fx ;
}
//******求第二个公式的积分值******
double funtion2( double x )
{
double fx ;
fx = x * x * x + 2 * x * x - 2 * x + 3 ;
return fx ;
}
//******求第三个公式的积分值******
double funtion3( double x )
{
double fx ;
fx = x / ( 2 + x * x ) ;
return fx ;
}
// 调用函数求通用积分公式
void def_integral( double x1,double x2,int n , double (*p)( double x ))
{
double y1,y2 ; //积分区间X1、X2对应的函数值
double per_len ,height ;
double area , fx = 0.0 ;
int i ;
per_len = ( x2 - x1 ) / n ; //等分成n分
y1 = (*p)( x1 ) ;
for( i = 1 ; i <= n ; i++ )
{
x2 = x1 + per_len ; //单位区间长度
y2 = (*p)(x2) ;
height = (y1 + y2 ) / 2.0 ; //高
area = per_len * height ; //每一等份长度对应的面积
x1 = x2 ; //下限右移
y1 = y2 ; //右移
fx = fx + area ; //面积之和为积分的值
}
printf("所求积分的值为:/n");
printf("%.3f/n" , fx ) ;
}
//*****主函数**************
void main()
{
double a,b; //a、b分别为积分区间的上下限
int n ; //n为要输入的等份 即 区间分成的份数
int selection ;
printf("请输入区间的等分数:/n");
scanf("%d" , &n );
printf("请输入积分区间的上下限(中间用空格隔开):/n");
scanf("%lf%lf", &a, &b );
printf("请输入你的选择(1、2、3):/n");
scanf("%d" , &selection );
if ( selection == 1 )
def_integral( a,b, n , funtion1 );
else if( selection == 2 )
def_integral( a,b, n , funtion2 );
else
def_integral( a,b, n , funtion3 );
}
别计算以下3个数学函数的定积分:
(1)f(x)=x*x-5*x+1
(2)f(x)=x*x*x+2*x*x-2*x+3
(3)f(x)=x/(2+x*x)
*/
//**********************************************************
#include < stdio.h >
//******求第一个公式的积分值******
double funtion1( double x )
{
double fx ;
fx = x * x - 5 * x + 1;
return fx ;
}
//******求第二个公式的积分值******
double funtion2( double x )
{
double fx ;
fx = x * x * x + 2 * x * x - 2 * x + 3 ;
return fx ;
}
//******求第三个公式的积分值******
double funtion3( double x )
{
double fx ;
fx = x / ( 2 + x * x ) ;
return fx ;
}
// 调用函数求通用积分公式
void def_integral( double x1,double x2,int n , double (*p)( double x ))
{
double y1,y2 ; //积分区间X1、X2对应的函数值
double per_len ,height ;
double area , fx = 0.0 ;
int i ;
per_len = ( x2 - x1 ) / n ; //等分成n分
y1 = (*p)( x1 ) ;
for( i = 1 ; i <= n ; i++ )
{
x2 = x1 + per_len ; //单位区间长度
y2 = (*p)(x2) ;
height = (y1 + y2 ) / 2.0 ; //高
area = per_len * height ; //每一等份长度对应的面积
x1 = x2 ; //下限右移
y1 = y2 ; //右移
fx = fx + area ; //面积之和为积分的值
}
printf("所求积分的值为:/n");
printf("%.3f/n" , fx ) ;
}
//*****主函数**************
void main()
{
double a,b; //a、b分别为积分区间的上下限
int n ; //n为要输入的等份 即 区间分成的份数
int selection ;
printf("请输入区间的等分数:/n");
scanf("%d" , &n );
printf("请输入积分区间的上下限(中间用空格隔开):/n");
scanf("%lf%lf", &a, &b );
printf("请输入你的选择(1、2、3):/n");
scanf("%d" , &selection );
if ( selection == 1 )
def_integral( a,b, n , funtion1 );
else if( selection == 2 )
def_integral( a,b, n , funtion2 );
else
def_integral( a,b, n , funtion3 );
}
相关文章推荐
- 一个自己编写的象棋程序,可实现走棋谱(如炮二平五),工程完成度%96,跟大家分享一下,下一步要做残局,欢迎交流
- 再跟大家分享一下AT24C01~AT24C256的读写程序
- 由于嵌入式项目版本较多不好管理,于是笔者写了一个“版本小助手”,和大家分享一下,附上程序
- 那位朋友帮忙给我写一下C语言的程序.谢谢了.. 大家好
- 今天看到了一款mini小画板的程序,看起来不错,跟大家分享一下
- 刚学51单片机 写了个小程序 分享一下(初学者能力有限,望大家多多指导,懂得布置个作业给我也行,呵呵)
- 今天在写程序中遇到的问题与大家分享一下
- VisualStudio2005 用C# 写的程序,Release版本和Debug版本有什么区别,大家讨论一下好吗?
- 大家常用的logg4j整理出来分享一下
- 一个不错的Silverlight展示网站反编译后的源码和大家分享一下(http://www.microsoft.com/taiwan/student/Good.htm),很简单的
- 与大家分享一下常用的Linux命令
- tomcat 启动报内存溢出问题!今天遇到的找到答案了!和大家分享一下
- 继续为大家分享一下自己的js小插件,方便大家学习交流
- 7种外贸网站常用推广方法,给大家分享一下
- 开发,维护asp.net网站的实用工具,大家都来分享一下
- 今天新学习的函数,和大家分享一下
- 程序员不能坐太久哦!终于了断了多年的痔疮困扰! 和大家分享一下经验!
- 机子中毒了,一点小经验和大家分享一下!
- 服务之间的http调用越来越多,下面把使用http连接池的注意事项及运遇到的坑和大家分享一下