Beispiel #1
0
        private void button4_Click(object sender, EventArgs e)
        {
            double[,] m1 ={{Convert.ToDouble(textBox5.Text),Convert.ToDouble(textBox6.Text),Convert.ToDouble(textBox8.Text),Convert.ToDouble(textBox7.Text),Convert.ToDouble(textBox12.Text),Convert.ToDouble(textBox11.Text),Convert.ToDouble(textBox10.Text),Convert.ToDouble(textBox9.Text)},
                              {Convert.ToDouble(textBox20.Text),Convert.ToDouble(textBox19.Text),Convert.ToDouble(textBox18.Text),Convert.ToDouble(textBox17.Text),Convert.ToDouble(textBox16.Text),Convert.ToDouble(textBox15.Text),Convert.ToDouble(textBox14.Text),Convert.ToDouble(textBox13.Text)},
                              {Convert.ToDouble(textBox36.Text),Convert.ToDouble(textBox35.Text),Convert.ToDouble(textBox34.Text),Convert.ToDouble(textBox33.Text),Convert.ToDouble(textBox32.Text),Convert.ToDouble(textBox31.Text),Convert.ToDouble(textBox30.Text),Convert.ToDouble(textBox29.Text)},
                              {Convert.ToDouble(textBox28.Text),Convert.ToDouble(textBox27.Text),Convert.ToDouble(textBox26.Text),Convert.ToDouble(textBox25.Text),Convert.ToDouble(textBox24.Text),Convert.ToDouble(textBox23.Text),Convert.ToDouble(textBox22.Text),Convert.ToDouble(textBox21.Text)},
                              {Convert.ToDouble(textBox68.Text),Convert.ToDouble(textBox67.Text),Convert.ToDouble(textBox66.Text),Convert.ToDouble(textBox65.Text),Convert.ToDouble(textBox64.Text),Convert.ToDouble(textBox63.Text),Convert.ToDouble(textBox62.Text),Convert.ToDouble(textBox61.Text)},
                              {Convert.ToDouble(textBox60.Text),Convert.ToDouble(textBox59.Text),Convert.ToDouble(textBox58.Text),Convert.ToDouble(textBox57.Text),Convert.ToDouble(textBox56.Text),Convert.ToDouble(textBox55.Text),Convert.ToDouble(textBox54.Text),Convert.ToDouble(textBox53.Text)},
                              {Convert.ToDouble(textBox52.Text),Convert.ToDouble(textBox51.Text),Convert.ToDouble(textBox50.Text),Convert.ToDouble(textBox49.Text),Convert.ToDouble(textBox48.Text),Convert.ToDouble(textBox47.Text),Convert.ToDouble(textBox46.Text),Convert.ToDouble(textBox45.Text)},
                              {Convert.ToDouble(textBox44.Text),Convert.ToDouble(textBox43.Text),Convert.ToDouble(textBox42.Text),Convert.ToDouble(textBox41.Text),Convert.ToDouble(textBox40.Text),Convert.ToDouble(textBox39.Text),Convert.ToDouble(textBox38.Text),Convert.ToDouble(textBox37.Text)}};

            double[,] m2 ={{Convert.ToDouble(textBox132.Text),Convert.ToDouble(textBox131.Text),Convert.ToDouble(textBox130.Text),Convert.ToDouble(textBox129.Text),Convert.ToDouble(textBox128.Text),Convert.ToDouble(textBox127.Text),Convert.ToDouble(textBox126.Text),Convert.ToDouble(textBox125.Text)},
                              {Convert.ToDouble(textBox124.Text),Convert.ToDouble(textBox123.Text),Convert.ToDouble(textBox122.Text),Convert.ToDouble(textBox121.Text),Convert.ToDouble(textBox120.Text),Convert.ToDouble(textBox119.Text),Convert.ToDouble(textBox118.Text),Convert.ToDouble(textBox117.Text)},
                              {Convert.ToDouble(textBox116.Text),Convert.ToDouble(textBox115.Text),Convert.ToDouble(textBox114.Text),Convert.ToDouble(textBox113.Text),Convert.ToDouble(textBox112.Text),Convert.ToDouble(textBox111.Text),Convert.ToDouble(textBox110.Text),Convert.ToDouble(textBox109.Text)},
                              {Convert.ToDouble(textBox108.Text),Convert.ToDouble(textBox107.Text),Convert.ToDouble(textBox106.Text),Convert.ToDouble(textBox105.Text),Convert.ToDouble(textBox104.Text),Convert.ToDouble(textBox103.Text),Convert.ToDouble(textBox102.Text),Convert.ToDouble(textBox101.Text)},
                              {Convert.ToDouble(textBox100.Text),Convert.ToDouble(textBox99.Text),Convert.ToDouble(textBox98.Text),Convert.ToDouble(textBox97.Text),Convert.ToDouble(textBox96.Text),Convert.ToDouble(textBox95.Text),Convert.ToDouble(textBox94.Text),Convert.ToDouble(textBox93.Text)},
                              {Convert.ToDouble(textBox92.Text),Convert.ToDouble(textBox91.Text),Convert.ToDouble(textBox90.Text),Convert.ToDouble(textBox89.Text),Convert.ToDouble(textBox88.Text),Convert.ToDouble(textBox87.Text),Convert.ToDouble(textBox86.Text),Convert.ToDouble(textBox85.Text)},
                              {Convert.ToDouble(textBox84.Text),Convert.ToDouble(textBox83.Text),Convert.ToDouble(textBox82.Text),Convert.ToDouble(textBox81.Text),Convert.ToDouble(textBox80.Text),Convert.ToDouble(textBox79.Text),Convert.ToDouble(textBox78.Text),Convert.ToDouble(textBox77.Text)},
                              {Convert.ToDouble(textBox76.Text),Convert.ToDouble(textBox75.Text),Convert.ToDouble(textBox74.Text),Convert.ToDouble(textBox73.Text),Convert.ToDouble(textBox72.Text),Convert.ToDouble(textBox71.Text),Convert.ToDouble(textBox70.Text),Convert.ToDouble(textBox69.Text)}};
            matp M1 = new matp(m1);
            matp M2 = new matp(m2);

            mul.Clear();
            mulStrass.Clear();

            mul.AppendText(opr.mul(M1, M2).ToString());
            mulStrass.AppendText(P3.mulStrass(M1, M2, 4).ToString());
        }
Beispiel #2
0
        private void button4_Click(object sender, EventArgs e)
        {
            double[,] m1 = { { Convert.ToDouble(textBox5.Text),  Convert.ToDouble(textBox6.Text),  Convert.ToDouble(textBox8.Text),  Convert.ToDouble(textBox7.Text),  Convert.ToDouble(textBox12.Text), Convert.ToDouble(textBox11.Text), Convert.ToDouble(textBox10.Text), Convert.ToDouble(textBox9.Text)  },
                             { Convert.ToDouble(textBox20.Text), Convert.ToDouble(textBox19.Text), Convert.ToDouble(textBox18.Text), Convert.ToDouble(textBox17.Text), Convert.ToDouble(textBox16.Text), Convert.ToDouble(textBox15.Text), Convert.ToDouble(textBox14.Text), Convert.ToDouble(textBox13.Text) },
                             { Convert.ToDouble(textBox36.Text), Convert.ToDouble(textBox35.Text), Convert.ToDouble(textBox34.Text), Convert.ToDouble(textBox33.Text), Convert.ToDouble(textBox32.Text), Convert.ToDouble(textBox31.Text), Convert.ToDouble(textBox30.Text), Convert.ToDouble(textBox29.Text) },
                             { Convert.ToDouble(textBox28.Text), Convert.ToDouble(textBox27.Text), Convert.ToDouble(textBox26.Text), Convert.ToDouble(textBox25.Text), Convert.ToDouble(textBox24.Text), Convert.ToDouble(textBox23.Text), Convert.ToDouble(textBox22.Text), Convert.ToDouble(textBox21.Text) },
                             { Convert.ToDouble(textBox68.Text), Convert.ToDouble(textBox67.Text), Convert.ToDouble(textBox66.Text), Convert.ToDouble(textBox65.Text), Convert.ToDouble(textBox64.Text), Convert.ToDouble(textBox63.Text), Convert.ToDouble(textBox62.Text), Convert.ToDouble(textBox61.Text) },
                             { Convert.ToDouble(textBox60.Text), Convert.ToDouble(textBox59.Text), Convert.ToDouble(textBox58.Text), Convert.ToDouble(textBox57.Text), Convert.ToDouble(textBox56.Text), Convert.ToDouble(textBox55.Text), Convert.ToDouble(textBox54.Text), Convert.ToDouble(textBox53.Text) },
                             { Convert.ToDouble(textBox52.Text), Convert.ToDouble(textBox51.Text), Convert.ToDouble(textBox50.Text), Convert.ToDouble(textBox49.Text), Convert.ToDouble(textBox48.Text), Convert.ToDouble(textBox47.Text), Convert.ToDouble(textBox46.Text), Convert.ToDouble(textBox45.Text) },
                             { Convert.ToDouble(textBox44.Text), Convert.ToDouble(textBox43.Text), Convert.ToDouble(textBox42.Text), Convert.ToDouble(textBox41.Text), Convert.ToDouble(textBox40.Text), Convert.ToDouble(textBox39.Text), Convert.ToDouble(textBox38.Text), Convert.ToDouble(textBox37.Text) } };

            double[,] m2 = { { Convert.ToDouble(textBox132.Text), Convert.ToDouble(textBox131.Text), Convert.ToDouble(textBox130.Text), Convert.ToDouble(textBox129.Text), Convert.ToDouble(textBox128.Text), Convert.ToDouble(textBox127.Text), Convert.ToDouble(textBox126.Text), Convert.ToDouble(textBox125.Text) },
                             { Convert.ToDouble(textBox124.Text), Convert.ToDouble(textBox123.Text), Convert.ToDouble(textBox122.Text), Convert.ToDouble(textBox121.Text), Convert.ToDouble(textBox120.Text), Convert.ToDouble(textBox119.Text), Convert.ToDouble(textBox118.Text), Convert.ToDouble(textBox117.Text) },
                             { Convert.ToDouble(textBox116.Text), Convert.ToDouble(textBox115.Text), Convert.ToDouble(textBox114.Text), Convert.ToDouble(textBox113.Text), Convert.ToDouble(textBox112.Text), Convert.ToDouble(textBox111.Text), Convert.ToDouble(textBox110.Text), Convert.ToDouble(textBox109.Text) },
                             { Convert.ToDouble(textBox108.Text), Convert.ToDouble(textBox107.Text), Convert.ToDouble(textBox106.Text), Convert.ToDouble(textBox105.Text), Convert.ToDouble(textBox104.Text), Convert.ToDouble(textBox103.Text), Convert.ToDouble(textBox102.Text), Convert.ToDouble(textBox101.Text) },
                             { Convert.ToDouble(textBox100.Text), Convert.ToDouble(textBox99.Text),  Convert.ToDouble(textBox98.Text),  Convert.ToDouble(textBox97.Text),  Convert.ToDouble(textBox96.Text),  Convert.ToDouble(textBox95.Text),  Convert.ToDouble(textBox94.Text),  Convert.ToDouble(textBox93.Text)  },
                             { Convert.ToDouble(textBox92.Text),  Convert.ToDouble(textBox91.Text),  Convert.ToDouble(textBox90.Text),  Convert.ToDouble(textBox89.Text),  Convert.ToDouble(textBox88.Text),  Convert.ToDouble(textBox87.Text),  Convert.ToDouble(textBox86.Text),  Convert.ToDouble(textBox85.Text)  },
                             { Convert.ToDouble(textBox84.Text),  Convert.ToDouble(textBox83.Text),  Convert.ToDouble(textBox82.Text),  Convert.ToDouble(textBox81.Text),  Convert.ToDouble(textBox80.Text),  Convert.ToDouble(textBox79.Text),  Convert.ToDouble(textBox78.Text),  Convert.ToDouble(textBox77.Text)  },
                             { Convert.ToDouble(textBox76.Text),  Convert.ToDouble(textBox75.Text),  Convert.ToDouble(textBox74.Text),  Convert.ToDouble(textBox73.Text),  Convert.ToDouble(textBox72.Text),  Convert.ToDouble(textBox71.Text),  Convert.ToDouble(textBox70.Text),  Convert.ToDouble(textBox69.Text)  } };
            matp M1 = new matp(m1);
            matp M2 = new matp(m2);

            mul.Clear();
            mulStrass.Clear();

            mul.AppendText(opr.mul(M1, M2).ToString());
            mulStrass.AppendText(P3.mulStrass(M1, M2, 4).ToString());
        }
Beispiel #3
0
        static public matp[] genC(matp[] P)
        {
            matp[] C = new matp[4];

            C[0] = opr.add(opr.sub(opr.add(P[0], P[3]), P[4]), P[6]);
            C[1] = opr.add(P[2], P[4]);
            C[2] = opr.add(P[1], P[3]);
            C[3] = opr.add(opr.sub(opr.add(P[0], P[2]), P[1]), P[5]);

            return(C);
        }
Beispiel #4
0
        static public matp[] genC(matp[] P)
        {
            matp[] C = new matp[4];

            C[0] = opr.add(opr.sub(opr.add(P[0], P[3]), P[4]), P[6]);
            C[1] = opr.add(P[2], P[4]);
            C[2] = opr.add(P[1], P[3]);
            C[3] = opr.add(opr.sub(opr.add(P[0], P[2]), P[1]), P[5]);

            return C;
        }
Beispiel #5
0
        static public matp mulStrass(matp m1, matp m2,int n_min)
        {
            if (n_min > m1.n || n_min < 1)
            {
                Console.WriteLine("Wrong n-min !");
                return new matp(1);
            }
            if (m1.n <= n_min)
                return opr.mul(m1, m2);

            matp[] P = genP(m1, m2, n_min);
            matp[] C = genC(P);
            matp rez = opr.remake(C);

            return rez;
        }
Beispiel #6
0
        static public matp mul(matp m1, matp m2)
        {
            if (m1.n != m2.n)
            {
                Console.WriteLine("Wrong mul!");
                return new matp(1);
            }

            int n = m1.n;
            matp rez = new matp(n);

            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    for (int k = 0; k < n; k++)
                        rez.m[i, j] += (m1.m[i, k] * m2.m[k, j]);
            return rez;
        }
Beispiel #7
0
        public matp[] section()
        {
            matp[] blocs = new matp[4];
            for (int i = 0; i < 4; i++)
                blocs[i] = new matp(this.n / 2);

            for (int i = 0; i < n / 2; i++)
                for (int j = 0; j < n / 2; j++)
                {
                    blocs[0].m[i, j] = this.m[i, j];
                    blocs[1].m[i, j] = this.m[i, j + n / 2];
                    blocs[2].m[i, j] = this.m[i + n / 2, j];
                    blocs[3].m[i, j] = this.m[i + n / 2, j + n / 2];
                }

            return blocs;
        }
Beispiel #8
0
        static public matp[] genP(matp m1, matp m2, int n_min)
        {
            matp[] m1bl = m1.section();
            matp[] m2bl = m2.section();

            matp[] P = new matp[7];

            P[0] = mulStrass(opr.add(m1bl[0], m1bl[3]), opr.add(m2bl[0], m2bl[3]), n_min);
            P[1] = mulStrass(opr.add(m1bl[2], m1bl[3]), m2bl[0], n_min);
            P[2] = mulStrass(m1bl[0], opr.sub(m2bl[1], m2bl[3]), n_min);
            P[3] = mulStrass(m1bl[3], opr.sub(m2bl[2], m2bl[0]), n_min);
            P[4] = mulStrass(opr.add(m1bl[0], m1bl[1]), m2bl[3], n_min);
            P[5] = mulStrass(opr.sub(m1bl[2], m1bl[0]), opr.add(m2bl[0], m2bl[1]), n_min);
            P[6] = mulStrass(opr.sub(m1bl[1], m1bl[3]), opr.add(m2bl[2], m2bl[3]), n_min);

            return(P);
        }
Beispiel #9
0
        static public matp remake(matp[] ms)
        {
            int  n  = ms[0].n * 2;
            matp mr = new matp(n);

            for (int i = 0; i < n / 2; i++)
            {
                for (int j = 0; j < n / 2; j++)
                {
                    mr.m[i, j]                 = ms[0].m[i, j];
                    mr.m[i, j + n / 2]         = ms[1].m[i, j];
                    mr.m[i + n / 2, j]         = ms[2].m[i, j];
                    mr.m[i + n / 2, j + n / 2] = ms[3].m[i, j];
                }
            }
            return(mr);
        }
Beispiel #10
0
        static public matp[] genP(matp m1, matp m2,int n_min)
        {
            matp[] m1bl = m1.section();
            matp[] m2bl = m2.section();

            matp[] P = new matp[7];

            P[0] = mulStrass(opr.add(m1bl[0], m1bl[3]), opr.add(m2bl[0], m2bl[3]),n_min);
            P[1] = mulStrass(opr.add(m1bl[2], m1bl[3]), m2bl[0], n_min);
            P[2] = mulStrass(m1bl[0], opr.sub(m2bl[1], m2bl[3]), n_min);
            P[3] = mulStrass(m1bl[3], opr.sub(m2bl[2], m2bl[0]), n_min);
            P[4] = mulStrass(opr.add(m1bl[0], m1bl[1]), m2bl[3], n_min);
            P[5] = mulStrass(opr.sub(m1bl[2], m1bl[0]), opr.add(m2bl[0], m2bl[1]), n_min);
            P[6] = mulStrass(opr.sub(m1bl[1], m1bl[3]), opr.add(m2bl[2], m2bl[3]), n_min);

            return P;
        }
Beispiel #11
0
        static public matp mulStrass(matp m1, matp m2, int n_min)
        {
            if (n_min > m1.n || n_min < 1)
            {
                Console.WriteLine("Wrong n-min !");
                return(new matp(1));
            }
            if (m1.n <= n_min)
            {
                return(opr.mul(m1, m2));
            }

            matp[] P   = genP(m1, m2, n_min);
            matp[] C   = genC(P);
            matp   rez = opr.remake(C);

            return(rez);
        }
Beispiel #12
0
        static public matp sub(matp m1, matp m2)
        {
            if (m1.n != m2.n)
            {
                Console.WriteLine("Wrong sub!");
                return(new matp(1));
            }
            int  n   = m1.n;
            matp rez = new matp(n);

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    rez.m[i, j] = m1.m[i, j] - m2.m[i, j];
                }
            }
            return(rez);
        }
Beispiel #13
0
        public matp[] section()
        {
            matp[] blocs = new matp[4];
            for (int i = 0; i < 4; i++)
            {
                blocs[i] = new matp(this.n / 2);
            }

            for (int i = 0; i < n / 2; i++)
            {
                for (int j = 0; j < n / 2; j++)
                {
                    blocs[0].m[i, j] = this.m[i, j];
                    blocs[1].m[i, j] = this.m[i, j + n / 2];
                    blocs[2].m[i, j] = this.m[i + n / 2, j];
                    blocs[3].m[i, j] = this.m[i + n / 2, j + n / 2];
                }
            }

            return(blocs);
        }
Beispiel #14
0
        static public matp mul(matp m1, matp m2)
        {
            if (m1.n != m2.n)
            {
                Console.WriteLine("Wrong mul!");
                return(new matp(1));
            }

            int  n   = m1.n;
            matp rez = new matp(n);

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    for (int k = 0; k < n; k++)
                    {
                        rez.m[i, j] += (m1.m[i, k] * m2.m[k, j]);
                    }
                }
            }
            return(rez);
        }
Beispiel #15
0
        static public matp add(matp m1, matp m2)
        {
            if (m1.n != m2.n)
            {
                Console.WriteLine("Wrong add!");
                return new matp(1);
            }
            int n = m1.n;
            matp rez = new matp(n);

            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    rez.m[i, j] = m1.m[i, j] + m2.m[i, j];
            return rez;
        }
Beispiel #16
0
        static public matp remake(matp[] ms)
        {
            int n = ms[0].n * 2;
            matp mr = new matp(n);

            for (int i = 0; i < n / 2; i++)
                for (int j = 0; j < n / 2; j++)
                {
                    mr.m[i, j] = ms[0].m[i, j];
                    mr.m[i, j + n / 2] = ms[1].m[i, j];
                    mr.m[i + n / 2, j] = ms[2].m[i, j];
                    mr.m[i + n / 2, j + n / 2] = ms[3].m[i, j];
                }
            return mr;
        }