24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1927  |  回复: 15
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

muqiuyan

木虫 (小有名气)

[交流] 【求助】求积分程序中被积函数问题已有5人参与

我用Simpson方法计算定积分。在程序中有两个地方用到积分,而被积分函数作为子程序调用,在计算积分的程序中该怎么定义被积函数呢?

这是 辛普森算法 的程序:
double fsimp(a,b,eps) /*辛普森算法*/  
double a,b,eps; /*a为积分下限,b为积分上限,eps是希望达到的精度*/  
{  
    int n,k;  
    double h,t1,t2,s1,s2,ep,p,x;  
    n=1; h=b-a;  
    t1=h*(fsimpf(a)+fsimpf(b))/2.0;  /*用梯形公式求出一个大概的估值*/  
    s1=t1;  
    printf("s1=%e\n",s1);
        ep=eps+1.0;  
    while (ep>=eps)  
{  
p=0.0;  
for (k=0;k<=n-1;k++)  
{  
x=a+(k+0.5)*h;  
p=p+fsimpf(x);  
}  
t2=(t1+h*p)/2.0;  
s2=(4.0*t2-t1)/3.0;  
printf("s2=%e\n",s2);
ep=fabs(s2-s1);  
t1=t2; s1=s2; n=n+n; h=h/2.0;  
}  
    return(s2);  
}



这是被积函数的程序:

double fsimpf(r)
double r; /* 被积分的函数*/

{  double y;
    y=被积函数f(x)的表达式;
  return(y);
}


两个被积函数不能都用fsimpf()表示吧,可不用它,计算积分时调用被积函数又是用fsimpf()表示的:


怎么区分啊
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
muqiuyan(金币+1):谢谢参与
resonant(金币+1):感谢应助:-) 2010-06-02 19:03:48
muqiuyan(金币+1): 2010-06-03 10:15:13
最近比较忙,没有怎么回帖。

简单地说一下吧,建议你使用函数指针,不然程序照你这样写以后又要修改积分的函数那你还得改。
double fsimp(double (*f)(double ),double a, double b, double eps) /  /*a为积分下限,b为积分上限,eps是希望达到的精度,f为函数指针*/
在fsimp 的实现中,你就写f(a),f(b) 就是了。
前面申明double fsimpf(double)
然后在调用 fsimp时就直接
xx=fsimp(fsimpf, double a, double b, double eps) ;就是了
建议你看看the c programming language
10楼2010-06-02 18:44:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 16 个回答

simthhuang

木虫 (小有名气)

★ ★
muqiuyan(金币+1):谢谢参与
resonant(金币+1):感谢积极参与:-) 2010-05-21 17:38:39
哪里有两个被积函数啊?明明就一个嘛!
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
2楼2010-05-21 17:04:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)

引用回帖:
Originally posted by simthhuang at 2010-05-21 17:04:29:
哪里有两个被积函数啊?明明就一个嘛!

主程序里有两个被积函数,我只列了两个子程序,一个是计算积分的,一个是被积函数的子程序,想问问第二个被积函数怎么弄,积分子程序里的f(a) f(b) f(x) 之类的需要调要被积函数子程序的地方要不要调整。
3楼2010-05-21 21:46:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

simthhuang

木虫 (小有名气)


resonant(金币+1):感谢参与:-) 2010-05-22 21:01:25
第二个被积函数就是被积函数啊,就是积分号和dx之间那部分啊。f(a) f(b) f(x) 分别是用初值a,终值b和中间迭代的数x调用被积函数。MM,我的理解对吗?
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
4楼2010-05-22 19:41:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见