#include "stdio.h"
#include <math.h>
const double e = 2.7182818;
int main(void)
{
double input[] = {0.35,0.9};
double matrix_1[2][2]={
{0.1,0.4},
{0.8,0.6},
};
double matrix_2[] = { 0.3,0.9 };
for(int s= 0; s<1000; ++s)
{
double tmp[] = {0.0,0.0};
double value = 0.0;
{
for(int i = 0;i<2;++i)
{
for(int j = 0;j<2;++j)
{
tmp[i] += input[j]*matrix_1[j][i];
}
tmp[i] = 1/(1+pow(e,-1*tmp[i]));
}
for(int i = 0;i<2;++i)
{
value += tmp[i]*matrix_2[i];
}
value = 1/(1+pow(e,-1*value));
}
double RMSS = (0.5)*( value - 0.5)*(value-0.5);
printf("%f,%f\n",value,RMSS);
if(value - 0.5 < 0.01)
{
break;
}
double E = value - 0.5;
matrix_2[0] = matrix_2[0] - E*value*(1-value)*tmp[0];
matrix_2[1] = matrix_2[1] - E*value*(1-value)*tmp[1];
//printf("##%f,%f\n",matrix_2[0],matrix_2[1]);
matrix_1[0][0] = matrix_1[0][0] - E*value*(1-value)*matrix_2[0]*tmp[0]*(1-tmp[0])*matrix_1[0][0];
matrix_1[1][0] = matrix_1[1][0] - E*value*(1-value)*matrix_2[0]*tmp[0]*(1-tmp[0])*matrix_1[1][0];
matrix_1[0][1] = matrix_1[0][1] - E*value*(1-value)*matrix_2[0]*tmp[0]*(1-tmp[1])*matrix_1[0][1];
matrix_1[1][1] = matrix_1[1][1] - E*value*(1-value)*matrix_2[0]*tmp[0]*(1-tmp[1])*matrix_1[1][1];
//printf("##%f,%f\n",matrix_1[0][0],matrix_1[1][0]);
//printf("##%f,%f\n",matrix_1[0][1],matrix_1[1][1]);
}
return 0;
}
bp算法C语言实现
最新推荐文章于 2021-05-23 06:31:45 发布