![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
-Student- |
![]()
Сообщение
#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 нету формулы по которой он высчитывается , поэтому прошу помощи ... мб кто сталкивался с ними и знает методы по которому они решаются или хотябы алгаритм решения , потому что я даже незнаю с чего начать ![]() мб кто знает где в инете описывается как решать полиномы , неоткажусь от любой помощи ! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Значит, смотри, что получилось...
В аттаче - основной модуль, весь проект аттачить не стал, потому что не знаю, какой версией Delphi ты пользуешься, у меня BDS 2007, на более ранних проект не откроется (собственно программа должна работать на любой версии, начиная с D7 - именно там, насколько я помню, ввели модуль VarCmplx для поддержки комплексных чисел). Теперь о программе: она находит корни любых полиномов (автор оригинала утверждает, что работает до полиномов 40-й степени). Я тестировал на таком: (2 + i)*z2 - (7 + i)*z + (15 + 10i) = 0 Для этого в процедуре Test коэффициенты задаются: coeffs^[2] := VarComplexCreate(2.0, 1.0);(именно в таком порядке, индекс коэффициента должен совпадать со степенью переменной, не наоборот), Я надеюсь, понятно, что также, как я "зашил" данные в программе, из можно и ввести? В результате получил 2 корня, как и положено: Цитата(Output) root # 1 = (2 - 3i) , что является правильным ответом... Искать примеры полиномов более высоких порядков с известными корнями не стал, но поскольку для второй степени программа работает, то логично предположить, что будет она работать и для более высоких степеней. Тестируй, если что не так - говори, на каких исходных данных ошибается, какие должны быть результаты, и что выводит. Если уже есть составленные тесты для этого задания - вообще прекрасно, проверяй... Время у тебя еще есть root # 2 = (1 + 2i) ![]() Вот модуль: ![]() |
![]() ![]() |
![]() |
Текстовая версия | 11.07.2025 12:06 |