当前位置: 代码迷 >> C语言 >> 谁能给我个积分程序的样本?!!急急急
  详细解决方案

谁能给我个积分程序的样本?!!急急急

热度:225   发布时间:2005-11-30 14:43:00.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;
//输出计算结果
}
----------------解决方案--------------------------------------------------------
哎^给你编的程序这么长时间了也没个消息,不知道看到了没有?也不给个消息,真没劲!以后不理你了,浪费我的时间啊,你在线也不回复我?
----------------解决方案--------------------------------------------------------
请问接下积2重怎么做,谢谢

----------------解决方案--------------------------------------------------------
有点像JAVA.
----------------解决方案--------------------------------------------------------
  相关解决方案