Exemple #1
0
        public static void Main()
        {
            Console.WriteLine("введите степень первого многочлена");
            var order = Convert.ToInt32(Console.ReadLine());
            var coefficentsFirstPolynomial = InputCoefficients(order);

            Console.WriteLine("введите степень второго многочлена");
            order = Convert.ToInt32(Console.ReadLine());
            var coefficentsSecondPolynomial = InputCoefficients(order);
            var polynomialNamberOne         = new Polynomial(coefficentsFirstPolynomial);
            var polynomialNamberTwo         = new Polynomial(coefficentsSecondPolynomial);

            Console.WriteLine(polynomialNamberOne.ToString());
            Console.WriteLine($"степень первого многочлена = {polynomialNamberOne.Degree}");
            Console.WriteLine(polynomialNamberTwo.ToString());
            Console.WriteLine($"степень второго многочлена = {polynomialNamberTwo.Degree}");

            Console.WriteLine("получение коеффицента при i-ой степени");
            Console.WriteLine("введите степень i");
            var degreeCoefficient = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine(
                polynomialNamberOne.GetCoefficient(degreeCoefficient) != null
                    ? $"коэффицент при {degreeCoefficient}-й степени первого многочлена равен {polynomialNamberOne.GetCoefficient(degreeCoefficient)}"
                    : "такого коэффицента не существует у первого многочлена");
            Console.WriteLine(
                polynomialNamberTwo.GetCoefficient(degreeCoefficient) != null
                    ? $"коэффицент при {degreeCoefficient}-й степени второго многочлена равен {polynomialNamberTwo.GetCoefficient(degreeCoefficient)}"
                    : "такого коэффицента не существует у второго многочлена");

            Console.Write("сумма многочленов :");
            Console.WriteLine((polynomialNamberOne + polynomialNamberTwo).ToString());

            Console.Write("разность многочленов :");
            Console.WriteLine((polynomialNamberOne + (-polynomialNamberTwo)).ToString());

            Console.Write("перемножение многочленов :");
            Console.WriteLine((polynomialNamberOne * polynomialNamberTwo).ToString());

            Console.WriteLine("унарный минус для первого многочлена");
            var polynomialUnaryMinus = -polynomialNamberOne;

            Console.WriteLine("-(" + polynomialUnaryMinus + ")");
            Console.WriteLine("унарный минус для второго многочлена");
            polynomialUnaryMinus = -polynomialNamberTwo;
            Console.WriteLine("-(" + polynomialUnaryMinus + ")");

            Console.WriteLine(
                polynomialNamberOne.Compare(polynomialNamberTwo)
                    ? "многочлены равны"
                    : "многочлены не равны");

            Console.WriteLine("введите значение переменной х для обоих многочленов");
            var variableX = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine(
                $"значение первого многочлена при х = {variableX} равно {polynomialNamberOne.Calculate(variableX)}");
            Console.WriteLine(
                $"значение второго многочлена при х = {variableX} равно {polynomialNamberTwo.Calculate(variableX)}");

            Console.WriteLine("вычисление значений многочлена могих переменных");
            Console.WriteLine("введите количество переменных");
            var numberVariables  = Convert.ToInt32(Console.ReadLine());
            var values           = InputValues(numberVariables);
            var valuesPolynomial = polynomialNamberOne.CalculatePolynomialSeveralVariables(values);
            var iteration        = 1;

            OutputSetValuesPolynomial(values, valuesPolynomial, iteration);
            iteration++;
            valuesPolynomial = polynomialNamberTwo.CalculatePolynomialSeveralVariables(values);
            OutputSetValuesPolynomial(values, valuesPolynomial, iteration);

            Console.WriteLine("Нахождение корней на интервале");
            Console.WriteLine("введите левую границу интервала");
            var leftBorder = Convert.ToDouble(Console.ReadLine());

            Console.WriteLine("введите правую границу интервала");
            var rightBorder = Convert.ToDouble(Console.ReadLine());

            Console.WriteLine("введите точность");
            var epsilon         = Convert.ToDouble(Console.ReadLine());
            var rootsPolynomial = polynomialNamberOne.FindRoot(leftBorder, rightBorder, epsilon);

            Console.WriteLine(
                rootsPolynomial != null
                    ? $"корень первого многочлена равен {rootsPolynomial}"
                    : "у первого многочлена нет корней на данном интервале");
            rootsPolynomial = polynomialNamberTwo.FindRoot(leftBorder, rightBorder, epsilon);
            Console.WriteLine(
                rootsPolynomial != null
                    ? $"корень второго многочлена равен {rootsPolynomial}"
                    : "у второго многочлена нет корней на данном интервале");
        }