Ejemplo n.º 1
0
        public DaThuc NhanVoiDaThucBac1(DaThuc B)
        {
            if (B.N > 1)
            {
                throw new Exception("Bậc của đa thức nhân lớn hơn 1");
            }
            if (B[1] == 0)
            {
                return(this * B[0]);
            }
            var goc = this.Copy();

            if (B[1] != 1)
            {
                goc = goc * B[1];
                B   = B / B[1];
            }
            var ketQua = new DaThuc();

            ketQua[0] = B[0] * goc[0];
            for (int i = 1; i < goc.N + 1; i++)
            {
                ketQua[i] = goc[i - 1] + B[0] * goc[i];
            }
            ketQua[goc.N + 1] = goc[goc.N];
            return(ketQua);
        }
Ejemplo n.º 2
0
        public DaThuc DaoHam()
        {
            var ketQua = new DaThuc();

            for (int i = 0; i < N; i++)
            {
                ketQua[i] = this[i + 1] * (i + 1);
            }
            return(ketQua);
        }
Ejemplo n.º 3
0
 static void Main(string[] args)
 {
     var a = new DaThuc(@"DaThuc\a.txt");
     var b = new DaThuc(@"DaThuc\b.txt");
     Console.WriteLine((a).ToString());
     Console.WriteLine((b).ToString());
     Console.WriteLine("============================");
     Console.WriteLine((a+b).ToString());
     Console.ReadLine();
 }
Ejemplo n.º 4
0
        public DaThuc Copy()
        {
            var B = new DaThuc();

            for (int i = 0; i < N + 1; i++)
            {
                B[i] = this[i];
            }
            return(B);
        }
Ejemplo n.º 5
0
        public DaThuc DoiDau()
        {
            var C = new DaThuc();

            for (int i = 0; i < N + 1; i++)
            {
                C[i] = -this[i];
            }
            return(C);
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            var a = new DaThuc(@"DaThuc\a.txt");
            var b = new DaThuc(@"DaThuc\b.txt");

            Console.WriteLine((a).ToString());
            Console.WriteLine((b).ToString());
            Console.WriteLine("============================");
            Console.WriteLine((a + b).ToString());
            Console.ReadLine();
        }
Ejemplo n.º 7
0
        static DaThuc PhepTinhVoiSo(DaThuc A, phepTinhVoiSo phepTinh)
        {
            var B = A.Copy();

            for (int i = 0; i < A.N + 1; i++)
            {
                double temp = B[i];
                phepTinh(ref temp);
                B[i] = temp;
            }
            return(B);
        }
Ejemplo n.º 8
0
 void kiemTraCapDo(DaThuc A, DaThuc B, ref DaThuc lon, ref DaThuc be)
 {
     if (A.N > B.N)
     {
         lon = A;
         be  = B;
     }
     else
     {
         lon = B;
         be  = A;
     }
 }
Ejemplo n.º 9
0
        public DaThuc Cong(DaThuc B)
        {
            DaThuc lon = null;
            DaThuc be  = null;

            kiemTraCapDo(this, B, ref lon, ref be);
            DaThuc C = lon.Copy();

            for (int i = 0; i < be.N + 1; i++)
            {
                C[i] += be[i];
            }
            return(C);
        }
Ejemplo n.º 10
0
 public void Horner(double c, ref DaThuc KetQua, ref double SoDu)
 {
     if (N < 2)
     {
         throw new Exception("Bậc của đa thức nhỏ hơn 2");
     }
     KetQua        = new DaThuc();
     KetQua[N - 1] = this[N];
     for (int i = KetQua.N - 1; i >= 0; i--)
     {
         KetQua[i] = c * KetQua[i + 1] + this[i + 1];
     }
     SoDu = c * KetQua[0] + this[0];
 }
Ejemplo n.º 11
0
        public DaThuc Tru(DaThuc B)
        {
            DaThuc lon = null;
            DaThuc be  = null;

            kiemTraCapDo(this, B, ref lon, ref be);
            DaThuc C;

            if (lon == this)
            {
                C = this.Copy();
                C = C.Cong(B.Copy().DoiDau());
            }
            else
            {
                C = B.Copy().DoiDau();
                C = C.Cong(this);
            }
            return(C);
        }
Ejemplo n.º 12
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;
 }
Ejemplo n.º 13
0
        public DaThuc ChiaChoDaThucBac1(DaThuc B, ref double soDu)
        {
            if (B.N > 1)
            {
                throw new Exception("Bậc của đa thức chia lớn hơn 1");
            }
            if (B[1] == 0)
            {
                return(this / B[0]);
            }
            var biChia = this.Copy();

            if (B[1] != 1)
            {
                biChia = biChia / B[1];
                B      = B / B[1];
            }
            DaThuc ketQua = null;

            biChia.Horner(-B[0], ref ketQua, ref soDu);
            return(ketQua);
        }
Ejemplo n.º 14
0
 public DaThuc Copy()
 {
     var B = new DaThuc();
     for (int i = 0; i < N + 1; i++)
     {
         B[i] = this[i];
     }
     return B;
 }
Ejemplo n.º 15
0
 public DaThuc DaoHam()
 {
     var ketQua = new DaThuc();
     for (int i = 0; i < N; i++)
     {
         ketQua[i] = this[i + 1] * (i + 1);
     }
     return ketQua;
 }
Ejemplo n.º 16
0
 public DaThuc DoiDau()
 {
     var C = new DaThuc();
     for (int i = 0; i < N + 1; i++)
     {
         C[i] = -this[i];
     }
     return C;
 }
Ejemplo n.º 17
0
 public DaThuc Tru(DaThuc B)
 {
     DaThuc lon = null;
     DaThuc be = null;
     kiemTraCapDo(this, B, ref lon, ref be);
     DaThuc C;
     if (lon == this)
     {
         C = this.Copy();
         C = C.Cong(B.Copy().DoiDau());
     }
     else
     {
         C = B.Copy().DoiDau();
         C = C.Cong(this);
     }
     return C;
 }
Ejemplo n.º 18
0
 public DaThuc Cong(DaThuc B)
 {
     DaThuc lon = null;
     DaThuc be = null;
     kiemTraCapDo(this, B, ref lon, ref be);
     DaThuc C = lon.Copy();
     for (int i = 0; i < be.N + 1; i++)
     {
         C[i] += be[i];
     }
     return C;
 }
Ejemplo n.º 19
0
 public void Horner(double c, ref DaThuc KetQua, ref double SoDu)
 {
     if (N < 2)
     {
         throw new Exception("Bậc của đa thức nhỏ hơn 2");
     }
     KetQua = new DaThuc();
     KetQua[N - 1] = this[N];
     for (int i = KetQua.N - 1; i >= 0; i--)
     {
         KetQua[i] = c * KetQua[i + 1] + this[i + 1];
     }
     SoDu = c * KetQua[0] + this[0];
 }
Ejemplo n.º 20
0
 void kiemTraCapDo(DaThuc A, DaThuc B, ref DaThuc lon, ref DaThuc be)
 {
     if (A.N > B.N)
     {
         lon = A;
         be = B;
     }
     else
     {
         lon = B;
         be = A;
     }
 }
Ejemplo n.º 21
0
 static DaThuc PhepTinhVoiSo(DaThuc A, phepTinhVoiSo phepTinh)
 {
     var B = A.Copy();
     for (int i = 0; i < A.N + 1; i++)
     {
         double temp = B[i];
         phepTinh(ref temp);
         B[i] = temp;
     }
     return B;
 }
Ejemplo n.º 22
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;
 }
Ejemplo n.º 23
0
 public DaThuc ChiaChoDaThucBac1(DaThuc B, ref double soDu)
 {
     if (B.N > 1)
     {
         throw new Exception("Bậc của đa thức chia lớn hơn 1");
     }
     if (B[1] == 0)
     {
         return this / B[0];
     }
     var biChia = this.Copy();
     if (B[1] != 1)
     {
         biChia = biChia / B[1];
         B = B / B[1];
     }
     DaThuc ketQua = null;
     biChia.Horner(-B[0], ref ketQua, ref soDu);
     return ketQua;
 }
Ejemplo n.º 24
0
 public DaThuc NhanVoiDaThucBac1(DaThuc B)
 {
     if (B.N > 1)
     {
         throw new Exception("Bậc của đa thức nhân lớn hơn 1");
     }
     if (B[1] == 0)
     {
         return this * B[0];
     }
     var goc = this.Copy();
     if (B[1] != 1)
     {
         goc = goc * B[1];
         B = B / B[1];
     }
     var ketQua = new DaThuc();
     ketQua[0] = B[0] * goc[0];
     for (int i = 1; i < goc.N + 1; i++)
     {
         ketQua[i] = goc[i - 1] + B[0] * goc[i];
     }
     ketQua[goc.N + 1] = goc[goc.N];
     return ketQua;
 }