Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2016, 12:53   #1
Viraj
 
Регистрация: 15.10.2014
Сообщений: 5
По умолчанию Поиск корней уравнения.

Есть уравнение произвольной степени (например, n ).

Надо сделать программу, отыскивающую все его корни,

включая комплексные.
Т.е., задаем вначале степень уравнения, затем его коэффициенты,

запускаем - решаем.

Очень нужна помощь!
(если можно, то в Pascal(c# или c++)
Viraj вне форума Ответить с цитированием
Старый 30.05.2016, 16:45   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Уважаемый Viraj, хочу Вас огорчить, но это невозможно. Может над Вами просто пошутили - выдав такое задание.

Дело в том, что ещё древние математики знали, что можно решить уравнение 1-й и 2-й степени. В средние века было найдено решение уравнений 3-й и 4-й степени. И всё.

А 200 лет назад математик Галуа доказал, что уравнение более высоких порядков не решаемы. Более подробно можете посмотреть здесь (1:40 мин - 13:00 мин):

https://www.youtube.com/watch?v=slaH2Gu7Nn0

Но если Вам все таки удатца найти общенную формулу для решения уравнений n-степени, то это произведет революцию в математике.

Последний раз редактировалось ura_111; 30.05.2016 в 16:47.
ura_111 вне форума Ответить с цитированием
Старый 30.05.2016, 20:49   #3
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Цитата:
Уважаемый Viraj, хочу Вас огорчить, но это невозможно.
...
Но если Вам все таки удатца найти общенную формулу для решения уравнений n-степени, то это произведет революцию в математике.
А что мешает все сделать численно, без революций?
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 30.05.2016, 22:57   #4
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Мы такое учили когда-то.

Нужно выделять квадратный трёхчлен (x^2+px+q). Потом делить на него исходный, подбирая p и q, пока не получим точный делитель.
Решить квадратное уравнение.
Оставшееся уравнение (частное от деления) опять делить на новый трёхчлен.

В общем прилично писанины и разбирательств алгоритмов.
FPaul вне форума Ответить с цитированием
Старый 31.05.2016, 00:22   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Плохо вас учили. Не трехчлены нужно выделять, а (x - корень). И вся проблема в подборе корня... Можно попытаться подобрать целый корень среди делителей свободного члена и т.д. Но в общем случае (без приближения корней, без спец. вида и т.д.) - это полный перебор от -бесконечности до +бесконечности, а потом комплексные...
p51x вне форума Ответить с цитированием
Старый 31.05.2016, 08:20   #6
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Нет.
Для исходного многочлена подбирался делитель в виде D(x)=(x^2+px+q) такой, чтобы без остатка (с минимальным остатком) делить исходный многочлен. Для этого делителя находили корни (возможно, комплексные). Потом исходный многочлен делили на делитель D(x), получая новый многочлен. И для нового многочлена всё повторялось.

Для подбора p и q пользовались теоремой Виета, и какими-то итерационными методами. Всё быстро сходилось.

Полагаю, что именно такое решение и требуется ТС.
-----------------------------------------------

А что мы спорим? Кому нужен этот топик?
Если ТС нужна программа, пусть рассказывает больше о способах решения, прикладываем методичку.
Если же ТСу на лекциях ничего не объясняли, препод тупой, методичек нет, то предлагаю взять любой код с форума и выдавать за решение.

Последний раз редактировалось FPaul; 31.05.2016 в 08:34. Причина: пространные рассуждения о смысле жизни, лайфхаках и всём таком...
FPaul вне форума Ответить с цитированием
Старый 31.05.2016, 08:48   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну что вы придумываете? Чтобы найти ваш многочлен (по той же Виете) надо знать 2 корня + какой смысл усложнять себе задачу и делить на трехчлен, когда можно поделить на простейшие (х - корень1) и (х - корень2)?

http://www.cleverstudents.ru/equatio...er_degree.html
http://festival.1september.ru/articles/314216/
http://festival.1september.ru/articles/646258/
p51x вне форума Ответить с цитированием
Старый 31.05.2016, 09:17   #8
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Не согласен. Но спорить не буду.
FPaul вне форума Ответить с цитированием
Старый 31.05.2016, 10:06   #9
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Да численным методом - это просто. Поиск нулей, например методом половинного деления.
Вот только , во-первых :
Цитата:
Сообщение от Viraj Посмотреть сообщение
..включая комплексные.
с этим придется повозиться. Создавать комплексный тип, и т.д.
И во- вторых - как-то надо определяться с диапазоном поиска. Не искать же от - ∞ до +∞ .
type_Oleg вне форума Ответить с цитированием
Старый 31.05.2016, 11:00   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То во-вторых и с учетом во-первых и будет основной проблемой для любого итерационного метода - как определиться с оценкой диапазона расположения корня.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождения корней уравнения на си Nalia.dolpfin Помощь студентам 3 16.06.2013 16:02
нахождения корней уравнения Veryn4ik1993 C# (си шарп) 1 17.03.2013 12:38
определение корней уравнения Dellinger Помощь студентам 0 11.10.2011 19:51
поиск корней уравнения шурег Общие вопросы Delphi 8 15.12.2010 11:41
Методы нахождения корней уравнения werser Помощь студентам 8 20.02.2008 22:41