24小时热门版块排行榜    

CyRhmU.jpeg
查看: 976  |  回复: 9
本帖产生 1 个 程序强帖 ,点击这里进行查看

muqiuyan

木虫 (小有名气)

[交流] 【求助】计算积分的程序已有3人参与

有哪位高手帮忙编个程序,C语言的,C++也可,可以同时计算两个积分,两个都是一重积分,积分变量也不同。谢谢诸位。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

simthhuang

木虫 (小有名气)

首先声明:不是高手


muqiuyan(金币+1):谢谢参与
//被积函数
float f1(float x);
float f2(float x);
//积分函数
// * r1,存放第一个函数的积分结果
// * r2,存放第二个函数的积分结果
// s:积分下限,e:积分上线
// pf1,pf2,待积函数指针,
//如不用函数指针.删除这两个参数,并把函数体内的pf1,pf2改为f1,f2即可。
void  ff( float * r1,float * r2, float s,float e ,float ( * pf1 )(float),float (*pf2)(float) )
{
     //d积分步长
    float d = 0.01, x;  
    *r1 = 0;
     *r2 = 0;
    for( x = s + d; x <= e; x += d )
     {
          *r1 += d * pf1( x );
          *r2 += d * pf2( x );
     }
}

[ Last edited by simthhuang on 2010-6-8 at 13:22 ]
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
2楼2010-06-08 13:21:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

simthhuang

木虫 (小有名气)


wangen994(金币+1):感谢你热心的帮助大家 2010-06-08 17:03:18
刚回头看了下你5月发的那个问题,跟这个问题是相似的吧。没想到还没搞定。很遗憾.....
根据你的帖子看,问题很简单,但给出的答案未必能满足您的原始要求,如果方便,可以把你的原始问题呈现出来,更方便解答。
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
3楼2010-06-08 13:51:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)

余泽成:还是上图吧,可以抓屏,以jpeg格式上传,小木虫的图片系统现在比较好用! 2010-06-08 23:24:02
如果大家认为我说的不清楚,我乐意在详细的介绍下。
我在编一个复杂计算过程的程序,计算公式中有两个一重定积分,在不同的地方,且上下限也不同,积分变量不同。或者说两个完全不同的积分。因此我希望有一个计算积分的子程序,在计算到积分时能分别调用。

PS:公式很复杂,不知道怎么贴过来

[ Last edited by muqiuyan on 2010-6-8 at 17:35 ]
4楼2010-06-08 17:21:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)

引用回帖:
Originally posted by simthhuang at 2010-06-08 13:51:44:
刚回头看了下你5月发的那个问题,跟这个问题是相似的吧。没想到还没搞定。很遗憾.....
根据你的帖子看,问题很简单,但给出的答案未必能满足您的原始要求,如果方便,可以把你的原始问题呈现出来,更方便解答。

谢谢

[ Last edited by muqiuyan on 2010-6-8 at 17:23 ]
5楼2010-06-08 17:22:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)

引用回帖:
Originally posted by simthhuang at 2010-06-08 13:21:00:
//被积函数
float f1(float x);
float f2(float x);
//积分函数
// * r1,存放第一个函数的积分结果
// * r2,存放第二个函数的积分结果
// s:积分下限,e:积分上线
// pf1,pf2,待积函数指针,
//如不用函 ...

谢谢您的帮助。
6楼2010-06-08 17:22:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

simthhuang

木虫 (小有名气)

★ ★
余泽成(金币+2):谢谢参与应助! 2010-06-08 23:24:28
wangen994(程序强帖+1):授予程序强帖一个,欢迎常来 2010-06-11 17:55:05
引用回帖:
Originally posted by muqiuyan at 2010-06-08 17:21:38:
如果大家认为我说的不清楚,我乐意在详细的介绍下。
我在编一个复杂计算过程的程序,计算公式中有两个一重定积分,在不同的地方,且上下限也不同,积分变量不同。或者说两个完全不同的积分。因此我希望有一个计算 ...

那我就再给你写个吧:

//被积函数原型
double f( double );

//积分函数,返回值为积分结果
//s,e分别为积分上下限
//pf为被积函数指针.

double ff( const double s, const double e, double ( *pf )( double ) )
{
   //计算积分,可以采用别的快速算法
   double d = 0.01, x, r, l, h;
   if( s > e )
   {
        l = e;
        h = s;
    }
   else
   {
        l = s;
        h = e;
    }
   r = 0;
   for( x = l + d; x <= h; x += d )
   {
         r += d * pf( x );
   }
   return (s > e ? - r : r ) ;
}
该函数的使用方法如下:
首先定义被积函数,如:
double sqr( double x )
{
      return x * x;
}

然后调用积分函数,即可得积分结果:

double result = ff( 12.3, -22, sqr );

望能释疑。
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
7楼2010-06-08 20:58:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alexissp

金虫 (正式写手)

干活的


muqiuyan(金币+1):谢谢参与
应该不难写,你要运算的是啥函数?
简单充实
8楼2010-06-11 12:28:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)


余泽成(金币+1):谢谢参与应助! 2010-06-11 20:58:02
引用回帖:
Originally posted by alexissp at 2010-06-11 12:28:29:
应该不难写,你要运算的是啥函数?

被积函数就是一般的计算式,只是很复杂,手算积分不出来,我想把式子贴过来可是粘贴不上。
一个是关于T积分的,被积函数是V/R/T*(dP/dT)其中P是关于T的一个函数,就是类似这样的。
9楼2010-06-11 20:38:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alexissp

金虫 (正式写手)

干活的

你把word的公式存成pdf然后以图片格式贴出来就是
简单充实
10楼2010-06-12 12:44:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 muqiuyan 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见