您的位置:首页 > 其它

梯形法求定积分(一)设计梯形法求积分的类模板,梯形法

2009-12-10 19:27 218 查看
/*设计梯形法求积分的类模板,梯形法求积分的函数被定义为成员函数,可以求任意函数的定积分,用积分类的模板参数T引入被积函数*/

#include<iostream>

#include<cmath>

#include<iomanip>

using namespace std;

class Mysin{

public:

double fun(double x)

{

return (sin(x));

}

};

class F1{

public:

double fun(double x)

{

return (1+x+2*x*x);

}

};

class F2{

public:

double fun(double x)

{

return (1+x+2*x*x+3*x*x*x);

}

};

template<class T>

class JiFenLei{

private:

double a,b,h,result;

int n;

T cf;

public:

JiFenLei(double x=0,double y=0,int m=100)

{

a=x;

b=y;

n=m;

jifenhanshu();//初始化后就地再类的内部进行积分,

//但是感觉这样一定要注意构造函数的调用情况,千万不可随意调用构造函数

}

void print()

{

cout<<"定积分的值为:"<<result<<endl;

}

void xiugaitiaojian(double x=0,double y=0,int m=100)

{

a=x;

b=y;

n=m;

}

void jifenhanshu();

};

template<class T>

void JiFenLei<T>::jifenhanshu()

{

h=(b-a)/n;

int i;

result=(cf.fun(a)+cf.fun(b))/2;

for(i=1;i<n;i++)

result += cf.fun(a+i*h);

result = result*h;

}

void main()

{

JiFenLei<Mysin>J1(0.0,3.0,100);

J1.print();

JiFenLei<F1>J2(0.0,3.0,100);

J2.print();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: