Дискуссионный математический форумМатематический форум

Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 4 часа [ Летнее время ]
MathHelpPlanet.com RSS-лента Математического форума

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Решение полиномиальной СНУ
СообщениеДобавлено: 05 апр 2016, 20:48 
Не в сети
Продвинутый
Зарегистрирован:
26 авг 2013, 18:06
Сообщений: 92
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Ребята, выручайте. Необходимо решить следующую систему:
Код:
[math]A1*x^2+B1*y^2+C1*z^2+D1*x+E1*y+F1*z+G1*x*y+H1*x*z+K1*y*z+M1 = 0 \\
A2*x^2+B2*y^2+C2*z^2+D2*x+E2*y+F2*z+G2*x*y+H2*x*z+K2*y*z+M2 = 0 \\
x^2 + y^2 + z^2 - R^2 = 0[/math]

где x,y,z переменные, остальное коэффициенты и слагаемые.

Данная система представляет из себя два двуполосных гиперболоида (1 и 2 уравнение) и уравнение сферы (3).
Решаю данную систему численно следующим образом. Первое и второе уравнение возвожу в квадрат, дальше из третьего выражаю x^2 и подставляю в 1 и 2 (вместо x^2). Получаю два уравнения 4 степени относительно y и z. Если положить z параметром, то оба получившихся уравнения представляют из себя кривые образованные пересечением каждой ветвью гиперболоида и сферы разрезанные плоскостью параллельной XY, т.е. если z параметр и я меняю его от -R до R (R-радиус сферы), то я секу получившуюся кривую плоскостью z = za, где -R <= za <= R.
Как я уже говорил z это параметр и изменяется от -R до R, поэтому в цикле перебираю z и решаю на каждой итерации два уравнения 4 степени, этим нахожу два yi, i=1,2,3,4. Получившиеся yi каждого из уравнений вычитаю по модулю из друг друга и выбираю наименьшую получившуюся разницу для всех z (-R до R), каждого i.
Таким образом я локализовываю до 4 корней и далее уточняю методом Ньютона.
В принципе работает, но не для всех входных коэффициентов (почему-то). Мне необходимо, чтобы корни находились всегда, когда это возможно при заданных коэффициентах.
Пробовал также сложить два получившихся уравнения 4 степени и прогнать получившиеся уравнения для каждой z (целой). По идеи если сложить два уравнения 4th, то и yi должны существовать будут далеко не для всех z. Но и последний способ не всегда ищет корни, более того ещё хуже чем первый.
Проблемы у меня могут быть из-за не корректного решения уравнений 4 степени, т.к. матлабовский код:
Код:

[math]syms y; \\
S1 = solve(P11*y^4 + P12*y^3 + P13*y^2 + P14*y + P15); \\
S2 = solve(P21*y^4 + P22*y^3 + P23*y^2 + P24*y + P25);[/math]


почему то находит гораздо больше корней и локализация корней полученных с помощью решения уравнений 4 степени матлабовской solve практически всегда уточняется методом Ньютона.
Я не понимаю, как такое происходит. Я написал три функции для решения quartic 3 различными алгоритмами, использовал различные библиотеки, но всё равно матлаб находит больше корней для этих двух quartic. Я уже практически отчаялся.
Интересная особенность, то что matlab с помощью функции solve решает систему на ура, причём находит все 8 корней (их и должно быть 8 ), пусть и не всегда вещественные. Я понятия не имею как реализована эта функция, но я бы хотел что нибудь подобное.

Некоторые советовали использовать алгоритм Бухбергера для нахождения других полиномов, более простых и красивых. Но увы больше 3 редукций, у меня сделать не получилось, дальше редуцируется в 0. Хотя конечно идеалом было бы получить 3 уравнения 8 степени относительно x y и z и решить их численно.

Есть у кого нибудь идеи или совет, как победить, башка уже не варит просто, слишком сложно. Спасибо заранее.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Решение полиномиальной СНУ
СообщениеДобавлено: 06 апр 2016, 09:19 
Не в сети
Продвинутый
Зарегистрирован:
26 авг 2013, 18:06
Сообщений: 92
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Уважаемые модераторы, зачем переместили в раздел matlab ? Мне не нужно решение системы в matlab, matlab её очень хорошо решает. Нужна реализация на С/С++, а точнее нужен путь решения. Уберите пожалуйста обратно в раздел Алгебра.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Число слагаемых в полиномиальной формуле?

в форуме Дискретная математика, Теория множеств и Логика

tann6378

6

565

22 дек 2011, 23:43

Частное решение дифференциального уравнения\общее решение

в форуме Дифференциальные и Интегральные уравнения

Swissboy

5

379

06 май 2014, 20:13

Решение ДУ

в форуме Дифференциальные и Интегральные уравнения

ScratC

1

257

16 июн 2013, 11:06

Решение

в форуме Комплексный анализ и Операционное исчисление

mashenkaafanaseva

1

229

03 апр 2014, 12:50

Решение ДУ

в форуме Дифференциальные и Интегральные уравнения

Skubidy

9

109

01 июн 2016, 23:57

Решение ДУ 2

в форуме Дифференциальные и Интегральные уравнения

AbirkulovSherali

3

88

15 май 2017, 21:28

ДУ решение

в форуме Дифференциальные и Интегральные уравнения

artcom76

3

179

09 ноя 2014, 20:52

Решение ДУ

в форуме Дифференциальные и Интегральные уравнения

thomas

4

203

13 ноя 2014, 02:38

Решение в уме

в форуме Алгебра

Supaplex

9

319

01 июл 2014, 00:06

Решение ДУ

в форуме Дифференциальные и Интегральные уравнения

Marika+

6

241

27 окт 2014, 16:55


Часовой пояс: UTC + 4 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2016 MathHelpPlanet.com. All rights reserved