/************************************************ Back Propagation Algorithm ************************************************/ #include "stdio.h" #include "stdlib.h" #include "math.h" /************************************************ The Definition of User Data ************************************************/ #define MAXINPUT 1 #define MAXHIDE 3 #define MAXOUTPUT 1 #define MAX 1 #define MIN -1 #define T 100 #define CA 4 double a=0.8; double b=0.05; double k=0; double error=0; int t=0; double sout[MAXOUTPUT]; double shide[MAXHIDE]; double m=2; double howchange[MAXHIDE][MAXOUTPUT]; double ihwchange[MAXINPUT][MAXHIDE]; double CatalogueOut[CA][MAXOUTPUT]; double CatalogueIn[CA][MAXINPUT]; /************************************************ The Definition of Data Structure ************************************************/ struct theBP { double input[MAXINPUT]; double hide[MAXHIDE]; double output[MAXOUTPUT]; double ihw[MAXINPUT][MAXHIDE]; double how[MAXHIDE][MAXOUTPUT]; }; struct theBP bpa; /************************************************ Definition of Prototype ************************************************/ void WeightInitial(); void InitialError(); void InPutCatalogue(); void CalculateOut(int k); void CalculateError(int k); void ReverseHideError(); void CalculateChange(); void CalculateNewWeight(); void Test(); void TestCalculateOut(); void camain(); void main() { WeightInitial(); // InitialError(); InPutCatalogue(); //do int m=0; while(1) { printf("请选择要进行的操作\n"); printf("0----------------学习\n"); printf("1----------------测试\n"); printf("2----------------退出\n"); scanf("%d",&m); switch(m) { case 0: camain(); break; case 1: Test(); break; case 2: exit(0); }//while((error)>k);; } } void camain() { for(t=0;t