static void Main(string[] args)
        {
            double[][] input = new double[][]
            {
                new double[] { 1, 1, 0, 1, 1, 0, 1, 0, 1 },
                new double[] { 0, 0, 1, 0, 1, 1, 1, 1, 1 },
                new double[] { 0, 1, 0, 1, 0, 1, 1, 0, 0 },
                new double[] { 0, 1, 1, 0, 1, 0, 1, 0, 1 },
                new double[] { 1, 1, 0, 1, 0, 0, 1, 1, 0 }
            };

            double[] output = new double[] { 1, 0, 1 };

            PerceptronNetwork network = new PerceptronNetwork(input[0].Length);
            PerceptronTeacher teacher = new PerceptronTeacher(network, 0.05D);

            for (int x = 0; x < 1000; x++)
            {
                for (int i = 0; i < output.Length; i++)
                {
                    double error = teacher.Teach(input[i], output[i]);
                    Console.WriteLine(error);
                }
            }

            Console.ReadLine();
        }
 public PerceptronTeacher(PerceptronNetwork network, double alpha)
 {
     Network = network;
     Alpha   = alpha;
 }