| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 642 人关注过本帖
标题:有高手在么???求一积分程序!!!!
只看楼主 加入收藏
g5g5g5
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-30
收藏
 问题点数:0 回复次数:1 
有高手在么???求一积分程序!!!!

用双精度求一级分!!!

搜索更多相关主题的帖子: 积分 
2005-11-30 14:34
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
Re:g5g5g5
用c++编的不知道能否解决你的问题?希望对你有启发!
//用变步长梯形积分法求解函数的定积分。
#include <iostream.h>
#include <math.h>
#include "iomanip.h"
class F
{
public:
virtual double operator() (double x) const=0;//纯虚函数重载运算符()
};
class Fun:public F
{
public:
double operator() (double x) const//虚函数的内联实现
{
return log(1.0+x)/(1.0+x*x);//被积函数
}
};
class Integ
{
public:
virtual double operator() (double a,double b,double eps) const=0;
};
class Trapz:public Integ
{
public:
Trapz(const F&pf):f(pf){ }
double operator() (double a,double b,double eps) const;
private:
const F &f;
};
//类成员函数的实现
double Trapz::operator() (double a,double b,double eps) const
{
int done(0);
int n;
double h,Tn,T2n;
n=1;
h=b-a;
Tn=h*(f(a)+f(b))/2.0;//计算n=1时的积分值
while(!done)
{
double temp(0.0);
for(int k=0;k<n;k++)
{
double x=a+(k+0.5)*h;
temp+=f(x);
}
T2n=(Tn+h*temp)/2.0;//变步长梯形积分法
if(fabs(T2n-Tn)<eps) done=1;//判断积分误差
else //进行下一步计算
{
Tn=T2n;n*=2;h/=2;}
}
return T2n;
}
//主函数
void main()
{
Fun f1;
Trapz trapz1(f1);
cout<<"函数f=log(1+x)/(1+x*x)在区间[1,2]上的定积分为:"<<setprecision(15)<<trapz1(0,2,1e-7)<<endl;
//输出计算结果
}

♂ 死后定当长眠,生前何须久睡。♀
2005-12-01 20:56
快速回复:有高手在么???求一积分程序!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015089 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved