Exemplo n.º 1
0
        void dataToHPT(List <List <double> > data)
        {
            var A = new List <List <double> >();
            var B = new List <List <double> >();

            foreach (var line in data)
            {
                var lineA = new List <double>();
                var lineB = new List <double>();
                for (int i = 0; i < line.Count; i++)
                {
                    if (i == line.Count - 1)
                    {
                        lineB.Add(line[i]);
                    }
                    else
                    {
                        lineA.Add(line[i]);
                    }
                }
                A.Add(lineA);
                B.Add(lineB);
            }
            MT        = new MaTran(A);
            MT.MTGhep = new MaTran(B);
        }
Exemplo n.º 2
0
 static void Main(string[] args)
 {
     var a = new MaTran(@"MaTran\a.txt");
     var b = new MaTran(@"MaTran\b.txt");
     Console.WriteLine((a * b).ToString());
     Console.ReadKey();
 }
Exemplo n.º 3
0
 public DaThuc NewtonTongQuat()
 {
     var length = bangSo.N;
     var bangTiHieu = new MaTran(length, length);
     for (int i = 0; i < length; i++)
     {
         bangTiHieu[i, 0] = bangSo[1, i];
     }
     for (int i = 1; i < length; i++)
     {
         for (int j = 0; j < length - i; j++)
         {
             var tuSo = bangTiHieu[j + 1, i - 1] - bangTiHieu[j, i - 1];
             var mauSo = bangSo[0, j + i] - bangSo[0, j];
             bangTiHieu[j, i] = tuSo / mauSo;
         }
     }
     var ketQua = new DaThuc();
     ketQua[0] = bangTiHieu[0, 0];
     for (int i = 0; i < length - 1; i++)
     {
         var temp = new DaThuc();
         temp[0] = 1;
         for (int j = 0; j < i+1; j++)
         {
             var temp2 = new DaThuc();
             temp2[1] = 1;
             temp2[0] = -bangSo[0, j];
             temp = temp.NhanVoiDaThucBac1(temp2);
         }
         temp = temp * bangTiHieu[0,i+1];
         ketQua = ketQua + temp;
     }
     return ketQua;
 }
Exemplo n.º 4
0
                public MaTran Tong()

                {
                    MaTran t = new MaTran();

                    for (int i = 0; i < somt; i++)
                    {
                        t = t.Tong(ds[i]);
                    }

                    return(t);
                }
Exemplo n.º 5
0
        public Nghiem LapJacobi(double dkDung)
        {
            var mt = MT.Copy();

            if (mt.M != mt.N)
            {
                throw new Exception("Không phải ma trận vuông");
            }
            if (!mt.isMaTranCheoTroi)
            {
                throw new Exception("Không phải ma trận chéo trội");
            }
            var a = new MaTran(mt.M, mt.N);
            var b = new MaTran(mt.M, 1);

            for (int i = 0; i < a.M; i++)
            {
                for (int j = 0; j < a.N; j++)
                {
                    if (j == i)
                    {
                        a[i, j] = 0;
                        continue;
                    }
                    a[i, j] = -mt[i, j] / mt[i, i];
                }
                b[i, 0] = mt.MTGhep[i, 0] / mt[i, i];
            }
            var cstt = Function.ChuSoTinTuong(dkDung);

            dkDung = dkDung - 0.5 * Math.Pow(10, -cstt);
            double cvc       = a.ChuanVoCung;
            var    x         = new Nghiem(Status.NghiemDuyNhat, mt.M);
            var    x0        = x.Copy();
            var    x1        = a * x0 + b;
            var    soPhepLap = Math.Ceiling(
                Math.Log(dkDung * (1 - cvc) / (x1 - x0).ChuanVoCung)
                /
                Math.Log(cvc)
                );

            for (int i = 0; i < soPhepLap; i++)
            {
                x  = new Nghiem(a * x1 + b);
                x1 = x.Copy();
            }
            for (int i = 0; i < x.M; i++)
            {
                x[i, 0] = Math.Round(x[i, 0], cstt);
            }
            return(x);
        }
Exemplo n.º 6
0
 public Nghiem(MaTran mt) : base(mt)
 {
     if (mt.M != 0)
     {
         if (mt.N > 1)
         {
             status = Status.VoSoNghiem;
         }
         else
         {
             status = Status.NghiemDuyNhat;
         }
     }
 }
Exemplo n.º 7
0
 public Nghiem(MaTran mt)
     : base(mt)
 {
     if (mt.M != 0)
     {
         if (mt.N > 1)
         {
             status = Status.VoSoNghiem;
         }
         else
         {
             status = Status.NghiemDuyNhat;
         }
     }
 }
Exemplo n.º 8
0
            public MaTran Tong(MaTran t2)

            {
                MaTran t = new MaTran();



                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        t.a[i, j] = this.a[i, j] + t2.a[i, j];
                    }
                }

                return(t);
            }
Exemplo n.º 9
0
 public MaTranHieu(MaTrant2)
 {
     if (this.sh == t2.sh && this.sc == t2.sc)
     {
         MaTran t = new MaTran(this.sh, this.sc);
         for (int i = 0; i < sh; i++)
         {
             for (int j = 0; j < sc; j++)
             {
                 t.a[i, j] = this.a[i, j] - t2.a[i, j];
             }
         }
         return(t);
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 10
0
        public DaThuc Lagrange()
        {
            var length = bangSo.N;
            var D1y    = new MaTran(1, length);

            for (int i = 0; i < length; i++)
            {
                D1y[0, i] = 1;
            }
            for (int i = 0; i < length; i++)
            {
                for (int j = 0; j < length; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }
                    D1y[0, i] *= bangSo[0, i] - bangSo[0, j];
                }
                D1y[0, i] = bangSo[1, i] / D1y[0, i];
            }
            var ketQua = new DaThuc();

            for (int i = 0; i < length; i++)
            {
                var temp = new DaThuc();
                temp[0] = 1;
                for (int j = 0; j < length; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }
                    var temp2 = new DaThuc();
                    temp2[1] = 1;
                    temp2[0] = -bangSo[0, j];
                    temp     = temp.NhanVoiDaThucBac1(temp2);
                }
                temp   = temp * D1y[0, i];
                ketQua = ketQua + temp;
            }
            return(ketQua);
        }
Exemplo n.º 11
0
 public DaThuc Lagrange()
 {
     var length = bangSo.N;
     var D1y = new MaTran(1, length);
     for (int i = 0; i < length; i++)
     {
         D1y[0, i] = 1;
     }
     for (int i = 0; i < length; i++)
     {
         for (int j = 0; j < length; j++)
         {
             if (i == j)
             {
                 continue;
             }
             D1y[0, i] *= bangSo[0, i] - bangSo[0, j];
         }
         D1y[0, i] = bangSo[1, i] / D1y[0, i];
     }
     var ketQua = new DaThuc();
     for (int i = 0; i < length; i++)
     {
         var temp = new DaThuc();
         temp[0] = 1;
         for (int j = 0; j < length; j++)
         {
             if (i == j)
             {
                 continue;
             }
             var temp2 = new DaThuc();
             temp2[1] = 1;
             temp2[0] = -bangSo[0, j];
             temp = temp.NhanVoiDaThucBac1(temp2);
         }
         temp = temp * D1y[0, i];
         ketQua = ketQua + temp;
     }
     return ketQua;
 }
Exemplo n.º 12
0
                public void Nhap()

                {
                    Console.Write("Nhap cap ma tran: ");

                    MaTran.N = int.Parse(Console.ReadLine());

                    Console.Write("Nhap so ma tran: ");

                    somt = int.Parse(Console.ReadLine());

                    ds = new MaTran[somt];

                    for (int i = 0; i < somt; i++)

                    {
                        Console.WriteLine("Nhap ma tran thu " + i);

                        ds[i] = new MaTran();

                        ds[i].Nhap();
                    }
                }
Exemplo n.º 13
0
        public DaThuc NewtonTongQuat()
        {
            var length     = bangSo.N;
            var bangTiHieu = new MaTran(length, length);

            for (int i = 0; i < length; i++)
            {
                bangTiHieu[i, 0] = bangSo[1, i];
            }
            for (int i = 1; i < length; i++)
            {
                for (int j = 0; j < length - i; j++)
                {
                    var tuSo  = bangTiHieu[j + 1, i - 1] - bangTiHieu[j, i - 1];
                    var mauSo = bangSo[0, j + i] - bangSo[0, j];
                    bangTiHieu[j, i] = tuSo / mauSo;
                }
            }
            var ketQua = new DaThuc();

            ketQua[0] = bangTiHieu[0, 0];
            for (int i = 0; i < length - 1; i++)
            {
                var temp = new DaThuc();
                temp[0] = 1;
                for (int j = 0; j < i + 1; j++)
                {
                    var temp2 = new DaThuc();
                    temp2[1] = 1;
                    temp2[0] = -bangSo[0, j];
                    temp     = temp.NhanVoiDaThucBac1(temp2);
                }
                temp   = temp * bangTiHieu[0, i + 1];
                ketQua = ketQua + temp;
            }
            return(ketQua);
        }
Exemplo n.º 14
0
 void dataToHPT(List<List<double>> data)
 {
     var A = new List<List<double>>();
     var B = new List<List<double>>();
     foreach (var line in data)
     {
         var lineA = new List<double>();
         var lineB = new List<double>();
         for (int i = 0; i < line.Count; i++)
         {
             if (i == line.Count - 1)
             {
                 lineB.Add(line[i]);
             }
             else
             {
                 lineA.Add(line[i]);
             }
         }
         A.Add(lineA);
         B.Add(lineB);
     }
     MT = new MaTran(A);
     MT.MTGhep = new MaTran(B);
 }
Exemplo n.º 15
0
 public Nghiem LapJacobi(double dkDung)
 {
     var mt = MT.Copy();
     if (mt.M != mt.N)
     {
         throw new Exception("Không phải ma trận vuông");
     }
     if (!mt.isMaTranCheoTroi)
     {
         throw new Exception("Không phải ma trận chéo trội");
     }
     var a = new MaTran(mt.M, mt.N);
     var b = new MaTran(mt.M, 1);
     for (int i = 0; i < a.M; i++)
     {
         for (int j = 0; j < a.N; j++)
         {
             if (j == i)
             {
                 a[i, j] = 0;
                 continue;
             }
             a[i, j] = -mt[i, j] / mt[i, i];
         }
         b[i, 0] = mt.MTGhep[i, 0] / mt[i, i];
     }
     var cstt = Function.ChuSoTinTuong(dkDung);
     dkDung = dkDung - 0.5 * Math.Pow(10, -cstt);
     double cvc = a.ChuanVoCung;
     var x = new Nghiem(Status.NghiemDuyNhat, mt.M);
     var x0 = x.Copy();
     var x1 = a * x0 + b;
     var soPhepLap = Math.Ceiling(
         Math.Log(dkDung * (1 - cvc) / (x1 - x0).ChuanVoCung)
         /
         Math.Log(cvc)
         );
     for (int i = 0; i < soPhepLap; i++)
     {
         x = new Nghiem(a * x1 + b);
         x1 = x.Copy();
     }
     for (int i = 0; i < x.M; i++)
     {
         x[i, 0] = Math.Round(x[i, 0], cstt);
     }
     return x;
 }
Exemplo n.º 16
0
 public DaThucNoiSuy(string file)
 {
     bangSo = new MaTran(file);
 }
Exemplo n.º 17
0
 public DaThucNoiSuy(string file)
 {
     bangSo = new MaTran(file);
 }