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

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

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Решение полиномиальной СНУ
СообщениеДобавлено: 05 апр 2016, 19:48 
Не в сети
Продвинутый
Зарегистрирован:
26 авг 2013, 17:06
Сообщений: 95
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, 08:19 
Не в сети
Продвинутый
Зарегистрирован:
26 авг 2013, 17:06
Сообщений: 95
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

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

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

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Наибольший коэффициент в полиномиальной формуле

в форуме Комбинаторика и Теория вероятностей

Maxim_543

5

413

01 фев 2021, 00:33

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

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

Swissboy

5

762

06 май 2014, 19:13

Решение

в форуме Дифференциальное исчисление

youi

2

294

07 авг 2016, 09:01

Решение ДУ

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

Marika+

6

503

27 окт 2014, 15:55

Решение д.у

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

Illusiveman

9

612

05 ноя 2015, 14:43

Решение в уме

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

Supaplex

9

925

30 июн 2014, 23:06

Решение

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

mashenkaafanaseva

1

401

03 апр 2014, 11:50

Решение ДУ

в форуме MATLAB

Andrey82

2

322

19 фев 2022, 18:46

Решение ДУ

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

Gorynychzmey

2

340

01 дек 2014, 00:17

Решение ДУ

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

thomas

4

372

13 ноя 2014, 01:38


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



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

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


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

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

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

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