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

Ответить
doom1k
Сообщения: 1
Зарегистрирован: 04 дек 2009, 08:52
Откуда: Rus

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

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


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

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



P.s Просто вбить для каждего коэффицента свою формулу нельзя.
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

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;
        }
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Newbie, почитайте это. Обратите особое внимание на 3 пункт.
Нет религии выше истины
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

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