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

大哥们帮个忙编写一个求积分的代码,加上注释行吗?谢谢了

搜索更多相关主题的帖子: 注释 积分 代码 编写 
2005-12-16 11:11
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
用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;
//输出计算结果
}
我的QQ:303770957

♂ 死后定当长眠,生前何须久睡。♀
2005-12-16 12:59
快速回复:[求助]
数据加载中...
 
   



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

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