Страница 1 из 1

Теорема Виетта и коэффиценты многочлена

Добавлено: 04 дек 2009, 09:00
doom1k
Задача сводиться к тому, чтобы найти коэффиценты многочлена (x-a1)(x-a2)...(x-5), если даны чвещественные(real) числа a1,a2...a5.

Насколько я понял, коэффиценты ищутся по теореме виетта:
Изображение


Очень простой найти первый и последний коэффицент, там просто сумма и произведение всех a.

Но a2-a4, т.к там идут суммы всевозможных комбинаций произведений по 2, по 3, по 4 числа. Совсем не ясен алгоритм реализации теоремы в паскале .



P.s Просто вбить для каждего коэффицента свою формулу нельзя.

Re: Теорема Виетта и коэффиценты многочлена

Добавлено: 04 дек 2009, 20:09
Newbie
doom1k писал(а):Задача сводиться к тому, чтобы найти коэффиценты многочлена (x-a1)(x-a2)...(x-5), если даны чвещественные(real) числа a1,a2...a5.

Насколько я понял, коэффиценты ищутся по теореме виетта:
Изображение


Очень простой найти первый и последний коэффицент, там просто сумма и произведение всех a.

Но a2-a4, т.к там идут суммы всевозможных комбинаций произведений по 2, по 3, по 4 числа. Совсем не ясен алгоритм реализации теоремы в паскале .



P.s Просто вбить для каждего коэффицента свою формулу нельзя.

сделаю за небольшое вознагражденние) решается рекурсией
590445302

могу даже дать подсказку)

подобным образом считается определитель матрицы(кусок на шарпе)

Код: Выделить всё

 public static CMatrix minor(CMatrix value, int row, int col)
        {
            CMatrix result = new CMatrix(value.nRow - 1, value.nCol - 1);
            for (int i = 0; i < result.nRow; i++)
                for(int j = 0; j < result.nCol; j++)
                {
                    int k = (i >= row) ? i + 1 : i;
                    int l = (j >= col) ? j + 1 : j;
                    result[i,j] = value[k, l];
                }
            return result;
        }

        public static double det(CMatrix value)
        {
            double sum = 0;
            double val = 0;
            if((value.nCol == 1) || (value.nRow) == 1)
                return value[0,0];
            for(int i = 0; i < value.nCol; i++ )
            {
                CMatrix temp = CMatrix.minor(value, 0, i);
                val = CMatrix.det(temp);
                sum += (2*((i + 1) % 2) - 1) * value[0,i] * val;
            }
            return sum;
        }

Re: Теорема Виетта и коэффиценты многочлена

Добавлено: 05 дек 2009, 18:59
dr.Jekill
Newbie, почитайте это. Обратите особое внимание на 3 пункт.

Re: Теорема Виетта и коэффиценты многочлена

Добавлено: 05 дек 2009, 20:59
Newbie
dr.Jekill писал(а):Newbie, почитайте это. Обратите особое внимание на 3 пункт.
ок, больше не буду)