|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ [求助]
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
481
人关注过本帖
标题:
[求助]
只看楼主
加入收藏
city505
等 级:
新手上路
帖 子:26
专家分:0
注 册:2005-11-5
楼主
收藏
问题点数:0 回复次数:1
[求助]
大哥们帮个忙编写一个求积分的代码,加上注释行吗?谢谢了
搜索更多相关主题的帖子:
注释
积分
代码
编写
2005-12-16 11:11
举报帖子
使用道具
赠送鲜花
303770957
等 级:
小飞侠
威 望:
6
帖 子:838
专家分:2125
注 册:2005-9-10
第
2
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
2
1/1页
1
快速回复:
[求助]
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.057566 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved