IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Сложная задача, Полином 5 - го порядка , нахождение корней
сообщение
Сообщение #1


Гость






здравствуйте !
вот задали задание , такой темы ещё не проходили поэтому прошу помощи у вас .

нужно написать программу которая ищет корни из полинома 5 - го порядка с комплексными коэффициентами задаваемыми пользователями.

полином (или попросту многочлен) представляет собой алгебраическую сумму " (a+bi)x^5 + (a+bi)x^4+ ... (a+bi)x^n-1"

(a+bi) - комплексный коэффициент с мнимой еденицей "i" , a и b нужно задавать самому и для каждого "х" они будут разные ... фактически при раскрытия скобок получается что нужно решить 2 полинома , мнимый и действительный.

n - степень полинома (в данном случае степень n=5)

в книжке читал что для полиномов степени выше 4 нету формулы по которой он высчитывается , поэтому прошу помощи ... мб кто сталкивался с ними и знает методы по которому они решаются или хотябы алгаритм решения , потому что я даже незнаю с чего начать sad.gif

мб кто знает где в инете описывается как решать полиномы , неоткажусь от любой помощи !
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Значит, смотри, что получилось...

В аттаче - основной модуль, весь проект аттачить не стал, потому что не знаю, какой версией Delphi ты пользуешься, у меня BDS 2007, на более ранних проект не откроется (собственно программа должна работать на любой версии, начиная с D7 - именно там, насколько я помню, ввели модуль VarCmplx для поддержки комплексных чисел).

Теперь о программе: она находит корни любых полиномов (автор оригинала утверждает, что работает до полиномов 40-й степени). Я тестировал на таком:

(2 + i)*z2 - (7 + i)*z + (15 + 10i) = 0
Для этого в процедуре Test коэффициенты задаются:
  coeffs^[2] := VarComplexCreate(2.0, 1.0);
coeffs^[1] := -1 * VarComplexCreate(7.0, 1.0);
coeffs^[0] := VarComplexCreate(15.0, 10.0);
(именно в таком порядке, индекс коэффициента должен совпадать со степенью переменной, не наоборот), Я надеюсь, понятно, что также, как я "зашил" данные в программе, из можно и ввести?

В результате получил 2 корня, как и положено:
Цитата(Output)
root # 1 = (2 - 3i)
root # 2 = (1 + 2i)
, что является правильным ответом... Искать примеры полиномов более высоких порядков с известными корнями не стал, но поскольку для второй степени программа работает, то логично предположить, что будет она работать и для более высоких степеней. Тестируй, если что не так - говори, на каких исходных данных ошибается, какие должны быть результаты, и что выводит. Если уже есть составленные тесты для этого задания - вообще прекрасно, проверяй... Время у тебя еще есть smile.gif

Вот модуль:
Прикрепленный файл  Unit1.pas ( 9.65 килобайт ) Кол-во скачиваний: 587
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-Student-   Сложная задача   11.07.2008 15:06
volvo   Есть программа, реализующая твое задание с использ…   11.07.2008 18:30
diehard   подожду , практику надо 14 здавать   11.07.2008 19:52
volvo   Значит, смотри, что получилось... В аттаче - осно…   12.07.2008 2:33
diehard   огромное спасибо за перевод программы , но она поч…   12.07.2008 13:26
volvo   Во-первых, сразу вопрос: ты файлы проекта с D2007 …   12.07.2008 13:46
diehard   вот , щас почемуто стал выдавать ошибку "Inva…   12.07.2008 14:22
volvo   Вот результат работы твоего проекта под BDS: Не …   12.07.2008 14:47
diehard   проделал вышенаписанную процедуру ... как вы и гов…   12.07.2008 16:00
volvo   Так. Уже лучше. Теперь еще 2 вещи: во-первых, у те…   12.07.2008 17:01
diehard   Во вкладке Events , по событию OnCreate (вроде это…   12.07.2008 17:18
volvo   , понимаю, что в процессе обработки... Я и спрашив…   12.07.2008 17:50
diehard   в процедуре Test при тесте с брейкпоинтом не вылет…   12.07.2008 18:12
volvo   Не понимаю я, что там у тебя происходит, и каким о…   12.07.2008 19:14
diehard   если честно не понял как это сделать :( ... язык и…   12.07.2008 20:38
volvo   Начинать - вот так: type TComplex = record R…   12.07.2008 21:48
diehard   ну с делением вроде так : function ComplexDiv(a,…   12.07.2008 23:32
volvo   Вот это попробуй: Просто скопируй содержимое это…   13.07.2008 0:58
diehard   Огромное спасибо ! программа работает ... Спас…   13.07.2008 3:07
volvo   Погоди... Рано радуешься... В программе был найден…   13.07.2008 3:39
diehard   хорошо :good:   13.07.2008 12:43


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 4:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name