C语言计算log和信息熵

#include <math.h>
#include <stdio.h>

double logn(int n, double x);
double log2(double x);
double self_info(int n, double p);
double self_info2(double p);

void main(){
    double p1,p2,k,h;
    p1 = 0.01;
    p2 = 1 - p1;
    h = self_info2(p1)+self_info2(p2);
    printf("result is :%f",h);
   
}

//求以n为底x的对数
double logn(int n, double x){
    return log(x)/log(n);
}

//求以2为底x的对数
double log2(double x){
    return log(x)/log(2);
}

//求底为n,概率为p的自信息
double self_info(int n, double p){
    return -p*logn(n,p);

}

//求底为2,概率为p的自信息
double self_info2(double p){
    return -p*log2(p);
       
}

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

posted @ 2009-09-13 17:41  莫忆往西  阅读(833)  评论(0)    收藏  举报