Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.5.239] |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста как можно програмно реализовать вычисление
коофицентов по теореме Виета. На пример: даны x1,x2,x3...xn необходимо вычислить коофиценты при x^0 x^1 x^2... x^n, если можно приведите пожалуйста пример программы |
Сообщ.
#2
,
|
|
|
я институт заканчивал уж 4 года назад, а т.Виета была на 2м курсе напомни плиз ее мат часть (формулу) и поконкретнее задачу опиши, а то вводных данных маловато
|
Сообщ.
#3
,
|
|
|
задача просто сводится к разложению
(x-x1)(x-x2)...(x-xn). И Вычислению всех коэфф. при всех степенях x |
Сообщ.
#4
,
|
|
|
Цитата True_Hart, 18.04.03, 01:27:59 Подскажите пожалуйста как можно програмно реализовать вычисление коофицентов по теореме Виета. если надо именно вычислить значения коэффициентов, то посмотри http://alglib.dore.ru/opser/index.html#byroot |
Сообщ.
#5
,
|
|
|
Цитата shadeofgray, 18.04.03, 09:27:47 если надо именно вычислить значения коэффициентов, то посмотри http://alglib.dore.ru/opser/index.html#byroot Там алгоритм ошибочный... Сего помощью можно вычеслить верно только свободный член... |
Сообщ.
#6
,
|
|
|
Всем спасибо Я вроде бы сам догодался....
функция возвращает значение коофицента при x^(NxArg1-i) используя массив с корнями уравнения (x-X[0])(x-X[1])....(x-X[NxArg]), если не сложно напишите что вы думаете о таком решении...... double KoofPolynom (int i, int NxArg1, double X[]) { int C[255]; int Proiz=1; double Sum=0; for (int f=0; f<=NxArg1-1; f++) C[f]=f; while (C[0]!=NxArg1-i) { Proiz=1; if(i==0) //i==0 ?? ?[i]=X1 { for (int m=0; m<=NxArg1-1; m++) Sum += X[m]; Sum*=pow((-1), i+1); return Sum; } for (int m=0; m<=i; m++) Proiz *= X[C[m]]; Sum+=Proiz; C[i]++; //Начиная с этой строки цикл генерирует последовательность //наподобе 0123 0124 0134 0234 1234 if((C[0]==NxArg1-i-1)&&(C[i]==NxArg1))break; for(int w=0; w<=i; w++) { if(C[i-w]==NxArg1-w) { C[i-w-1]++; for(int j=w; j>=0; j--) { C[i-j]=C[i-j-1]+1; } } } } Sum*=pow((-1), i+1); return Sum; } |