void train_network(int num) { int i, h, o; unsigned int n; for(n = 0; n < num; n++) { init_pattern(); calculate_network(); calculate_errors(); for(h=0; h < NUM_HIDDEN; h++) for(o=0; o < NUM_OUTPUT; o++) W_HIDDEN_OUT(h, o) += (((learn * N_HIDDEN(h)) / 1024) * E_OUT(o)) / 1024; for(i=0; i < NUM_INPUT; i++) for(h=0; h < NUM_HIDDEN; h++) W_IN_HIDDEN(i, h) += (((learn * N_IN(i)) / 1024) * E_HIDDEN(h)) / 1024; } return; }
int main(int argc, char const *argv[]) { printf("Sigma: %f\n", SIGMA); if (SIGMA > 0.5 ) { printf("Sigma must be not greater than 0.5 \n"); exit(1); } double** numerical_result = calculate_numerical_result(); double** exact_result = calculate_exact_result(); double** errors = calculate_errors(numerical_result, exact_result); double avg = calculate_average_error(errors); printf("\nNUMERICAL\n\n\n"); // print_matrix(numerical_result, T_GRID_SIZE, X_GRID_SIZE); printf("\nEXACT\n\n\n"); // print_matrix(exact_result, T_GRID_SIZE, X_GRID_SIZE); printf("\nERRORS\n\n\n"); // print_matrix(errors, T_GRID_SIZE, X_GRID_SIZE); printf("\nAVERAGE ERROR: %lf\n\n", avg); free_matrix(&numerical_result, T_GRID_SIZE); free_matrix(&exact_result, T_GRID_SIZE); free_matrix(&errors, T_GRID_SIZE); return 0; }