首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

matlab中的函数norminv可否用C语言实现

2012-09-03 
matlab中的函数norminv可不可以用C语言实现?对于matlab中的函数norminv,C语言中有没有函数可以完成类似的

matlab中的函数norminv可不可以用C语言实现?
对于matlab中的函数norminv,C语言中有没有函数可以完成类似的功能?没有的话,用C语言要如何实现呢?

matlab中的函数norminv
X = NORMINV(P,MU,SIGMA),其中,P取概率。MU取均值。SIGMA取方差。然后返回值X就是指满足均值为MU,方差为SIGMA的高斯分布的累计概率密度值。即F(a)=P,返回值就是a。
至于F的含义:对连续函数,所有小于等于a的值,其出现概率的和为F(a)=P(x<a)
 
C语言如何实现类似功能?

[解决办法]
好像没有
[解决办法]
先把思路整理清楚,再动手编程序,这样不容易乱。
[解决办法]
需要迭代,在数值上可以解决的

C/C++ code
#include <stdio.h>#include <math.h>#include <stdlib.h>#define SMALL (-100)#define LARGE (100)#define DETA 0.00001#define PREC 0.00001#define E 2.718281828459 #define PI 3.1415926double func(double x, double u, double o){    double temp1 = (x-u) / o;    double temp2 = -1 * temp1 * temp1 / 2;    double temp3 = pow(E, temp2) / o;    double temp4 = 1/ pow(2*PI, 0.5) * temp3;    return temp4;}void main(){    double P = 0.5;    double u = 1;    double o = 1;    double const dLowLimit = SMALL;    double const dHighLimit = LARGE;    double const dDeta = DETA;        double dSum = 0;    double di = -100000000;        for(double i=dLowLimit; i+dDeta <= dHighLimit; i+=dDeta){        dSum += func(i, u, o) * dDeta;        if(fabs(dSum - P) <= PREC){            di = i;            break;        }    }        printf("%lf\n", di);    system("pause");} 

热点排行