private double runTrainingIteration(ref IdentityNeuron neuron, ref NeuronTrainingPattern[] trainingSet, double trainingStep, int trainingNumber, int inputNumber) { double finalError = 0.0; for (int i = 0; i < trainingNumber; i++) { double[] inputVectors = trainingSet[i].neuronInputVectors; double computedOutputVector = neuron.Compute(inputVectors); double error = trainingSet[i].neuronOutputVector - computedOutputVector; for (int j = 0; j < inputNumber; j++) { neuron.Weights[j] = neuron.Weights[j] + trainingStep * error * inputVectors[j]; } finalError += (error * error); } finalError /= trainingNumber; return finalError; }