Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

Алгоритм решения полинома высокой степени >100?   Найти похожие ветки 

 
Maxim Suvorov   (2006-10-30 01:46) [0]

Какие существуют алгоритмы поиска решиний полинома высоких степеней  (>100) с указаной точностью?
По возможности с исходником, или хотя бы реализуемый алгоритм практически.


 
Германн ©   (2006-10-30 02:02) [1]

А в твоём распоряжении есть "суперкомпьютер"?
Без него, сама подобная мысль, имхо, конщунственна.


 
Maxim Suvorov   (2006-10-30 02:09) [2]

не всех решений, а тольчо частичных, причем они лежат в рамках -100 и до 10000


 
ЮЮ ©   (2006-10-30 03:30) [3]

Метод половинного деления: если в двух точках знаки разные, значит где-то есть корень.

Значение, естественно, считать не
A[n] * x^n + A[n-1] * x^(n-1) + ... + A[0]
a
((.. (A[n] * x + A[n - 1])  * x ....) * x + A[0]


 
MBo ©   (2006-10-30 07:48) [4]

Корни полиномов такой степени обычно не ищут, т.к. точности не хватит.
Для степеней до 10 обычно хватает простых численных методов (Ньютона-Рафсона, Лагерра и т.п.), до примерно 20-30 - нужны тщательно отлаженные профессиональные библиотеки, использующие методы Дженкинса-Трауба или решающие проблему поиска собственных значений

Откуда вообще такая задача возникла?


 
palva ©   (2006-10-30 10:27) [5]

Наверно, нужно научиться раскладывать полином на сомножители. Скажем 100 степени на два полинома 50 степени и т. д. до 2-й.

Для разложения я бы попытался применить метод многомерной оптимизации минимизируя какую либо норму остатка. Гарантии сходимости нет, поэтому пришлось делать много, попыток выбиратя начальное значение методом Монте-Карло.

Вобщем надо экспериментировать.


 
palva ©   (2006-10-30 10:28) [6]

> много, попыток выбиратя начальное значение методом Монте-Карло.
много попыток, выбирая начальное значение методом Монте-Карло.


 
Вольный Стрелок ©   (2006-10-30 10:58) [7]

схема Горнера?


 
Maxim Suvorov   (2006-10-30 11:34) [8]

> Откуда вообще такая задача возникла?
Финансовый анализ инвестиционых инструментов и облигаций.
Полином есть уровнение такого вида:
K1/(1+r/m1)^t1*m1+K2/(1+r/m2)^t2*m*+....Kn/(1+r/mn)^tn*mn+C=0
Где t*m>100, вот так вот. Если методои перебора значений?


 
Maxim Suvorov   (2006-10-30 11:35) [9]

Ищем r.


 
palva ©   (2006-10-30 11:54) [10]

То есть степень полинома примерно 100 в квадрате?
А что такое частное решение.
А комплексные корни надо искать?


 
Maxim Suvorov   (2006-10-30 12:08) [11]

нет, комлексные не надо.


 
palva ©   (2006-10-30 12:33) [12]

> нет, комлексные не надо.
Тогда лучше искать в соответствии с
ЮЮ ©   (30.10.06 03:30) [3]
без преобразования функции в многочлен. Нетривиально будет понять все ли корни найдены. Сначала можно пройти по области -100 и до 10000 с каким-нибудь небольшим шагом.


 
Axis_of_Evil ©   (2006-10-30 12:36) [13]


> palva ©   (30.10.06 12:33) [12]
> Сначала можно пройти по области -100 и до 10000 с каким-
> нибудь небольшим шагом.

если 2*n корня окажутся в одном интервале разбиения?
ф-ция будет иметь значения одинакового знака на концах.
не так, imho, делать надо.
// не знаю как:>


 
MBo ©   (2006-10-30 12:38) [14]

>если 2*n корня окажутся в одном интервале разбиения?
ф-ция будет иметь значения одинакового знака на концах.

Есть метод Штурма для определения количества корней на интервале


 
palva ©   (2006-10-30 12:41) [15]

> метод Штурма
Тогда придется преобразовывать к многочлену.


 
ЮЮ ©   (2006-10-30 12:52) [16]

K1/(1+r/m1)^t1*m1+K2/(1+r/m2)^t2*m*+....Kn/(1+r/mn)^tn*mn+C=0

И это полином? :)
         k1
-------------------- + ..
( 1 + r/m1) ^(t1*m1)


 
Maxim Suvorov   (2006-10-30 18:18) [17]


> И это полином? :)

Сводиться к полиному.
Есть едеи как решать?


 
Leonid Troyanovsky ©   (2006-10-30 18:47) [18]


> Maxim Suvorov   (30.10.06 18:18) [17]

> > И это полином? :)

        k1
-------------------- + ..
( 1 + r/m1) ^(t1*m1)

> Сводиться к полиному.


Ну, дык и покажи оный полином.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-10-30 18:48) [19]


> Maxim Suvorov   (30.10.06 18:18) [17]

> Есть едеи как решать?


Методом Ньютона, вестимо.

--
Regards, LVT.


 
Maxim Suvorov   (2006-10-31 04:00) [20]

Нет, так не покатит, в даннов случае по-моему (поправте если не прав), это апроксимируется до:
            k1
-------------------- =exp(-r*t1)*k1,
( 1 + r/m1) ^(t1*m1)

тут как бы задача по-проще (?), но всеравно едей как решать у меня нету, может подскажете штонить? (МазКад даний пример с 100 членов решил где-то за 1 мин (!), приэтом нашел около 60 (!) корней, обычных и комлексных :(.


 
Карелин Артем ©   (2006-10-31 08:27) [21]

Я в свое время творил программу, она рисовала годограф функции до 10^3 или 10^4 степени переменной.
Потом по годографу на глазок определялись корни.


 
Maxim Suvorov   (2006-10-31 20:43) [22]

Усе тему можно закрыть я уже сам вывел нужный алгоритм, уже проверил - работает.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.045 c
11-1133784752
Mothertrucker
2005-12-05 15:12
2006.11.19
http://www.kolnmck.ru/


2-1162495674
daser
2006-11-02 22:27
2006.11.19
Что неправильно в запросе?


15-1161960043
manchik
2006-10-27 18:40
2006.11.19
Программирование рабочего стола!


2-1162306965
Sergg
2006-10-31 18:02
2006.11.19
Как сделать переход на новую строку


15-1162362340
Виджет
2006-11-01 09:25
2006.11.19
Апгрейд





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский