Beispiel #1
0
 static void Main(string[] args)
 {
     Console.WriteLine("Исходные полиномы");
     Console.WriteLine(P.ToString());
     Console.WriteLine(P2.ToString());
     Polinome.Polinome NewP = P;
     Console.WriteLine("Умножение");
     NewP.Mul(P2);
     Console.WriteLine(NewP.ToString());
     NewP = P;
     Console.WriteLine("Сложение");
     NewP.Add(P2);
     Console.WriteLine(NewP.ToString());
     NewP = P;
     Console.WriteLine("Вычитание");
     NewP.Sub(P2);
     Console.WriteLine(NewP.ToString());
     NewP = P;
     NewP.Div(P2, out Polinome.Polinome Remainder);
     Console.WriteLine("Деление");
     Console.WriteLine(NewP.ToString());
     Console.WriteLine("Остаток от деления");
     Console.WriteLine(Remainder.ToString());
     for (; ;)
     {
         ;
     }
 }
Beispiel #2
0
 /// <summary>
 /// Умножение двух полиномов
 /// </summary>
 /// <param name="P2">Второй множитель</param>
 public void Mul(Polinome P2)
 {
     double[] NewX = new double[Order + P2.Order + 1];
     for (int i = 0; i < Order + 1; i++)
     {
         for (int j = 0; j < P2.Order + 1; j++)
         {
             NewX[i + j] += this.X[i] * P2.X[j];
         }
     }
     X = NewX;
 }
Beispiel #3
0
 /// <summary>
 /// Вычитание двух полиномов
 /// </summary>
 /// <param name="P2">Вычитаемое</param>
 public void Sub(Polinome P2)
 {
     if (Order < P2.Order)
     {
         Array.Resize <double>(ref this.X, P2.X.Length);
         for (int i = Order + 1; i < P2.Order + 1; i++)
         {
             X[i] = 0;
         }
     }
     for (int i = 0; i < P2.Order + 1; i++)
     {
         this.X[i] -= P2.X[i];
     }
 }
Beispiel #4
0
        /// <summary>
        /// Деление одного полинома на другой
        /// </summary>
        /// <param name="P2">Деление</param>
        /// <param name="Remainder">Остаток от деления</param>
        public void Div(Polinome P2, out Polinome Remainder)
        {
            Remainder = new Polinome(this.X);
            Polinome Quotient = new Polinome(new double[Remainder.X.Length - P2.X.Length + 1]);

            for (int i = 0; i < Quotient.X.Length; i++)
            {
                double coeff = Remainder.X[Remainder.X.Length - i - 1] / P2.X[P2.X.Length - 1];
                Quotient.X[Quotient.X.Length - i - 1] = coeff;
                for (int j = 0; j < P2.X.Length; j++)
                {
                    Remainder.X[Remainder.X.Length - i - j - 1] -= coeff * P2.X[P2.X.Length - j - 1];
                }
            }
            this.X = Quotient.X;
        }