作者pael (就是喜欢)
看板NCTU-STAT97G
标题Re: [心得] 函数指标
时间Thu Mar 26 13:20:21 2009
※ 引述《a5170040 (Piggy)》之铭言:
: 哈~统算写到这个部分来分享一下心得
: 因为pdf有很多
: 总不可能每个pdf都写一个积分吧?
: (也就是底下程式码Integral函数的内容复制好几次)
: 这样程式码会变得非常长
: 所以我找了一下书并且做了实验发现函数指标可以解决这个问题
: 所以来和大家分享一下
不错不错 函数指标很好用 是个蛮漂亮的技巧 ^^
我另外提供一个小小的变身版 或许会有帮助
: double p1,p2//外部变数(也就是以下的程式都可以用)
: double (*pdf)(double); //宣告函数指标 我现在只有要放x而已,所以引数只有一个
// 宣告成函数指标的阵列
double (*pdf[])(double) = {pdf_gamma, pdf_chi_square};
: //定义gamma pdf
: double pdf_gamma(double x){
: return (pow(x,p1-1.0)/g1)*pow(p2,-p1)*exp(-x/p2);//我的g1已经先积好了
: }
: //卡方pdf
: double pdf_chi_square(double x){
: return exp(-0.5*x)*pow(x,0.5*par1-1.0)/(pow(2,0.5*par1)*g1);
: }
: int main(void){
: ...
: pdf = pdf_gamma;//把要的pdf给函数指标
: //或者可以放
: //pdf = pdf_chi_square;
: Integral(); 呼叫积分函数
Integral(iType);
可以直接在 Integral(iType) 里呼叫 pdf[iType] 来代表不同的分配
: ...
: }
: void Integral(void){
void Integral(int iType){
: for(i=0;i<分割数;i++){
: ....
: pdf(x1)+pdf(x2);//这边就可以用函数指标作运算了
pdf[iType](x1)+pdf[iType](x2);
: ....
: }
: }
: 大致上这样
: 哈
--
──│ - Le@p - my way , my dream ..
│ ╭─│ ╭─│
│ ╭─│ ──╯ ┌─╯ Th
e l
im
pi
d k
it
e b
eg
an
to
fl
y
──┘ ┌─╯ ┘
──╯ I wanna be a sky , in my mind ..
→ [email protected] ←
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.114.200
1F:推 a5170040:大推!!! 03/26 19:59
2F:推 hiloin:超级推!!! 03/26 20:28
3F:推 teddd:有看有推... 03/27 19:07