2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 решить систему алгебраических уравнений
Сообщение12.05.2017, 16:25 


02/11/12
86
Требуется помощь решения данной системы:
A_1x^2 + B_1y^2 + C_1z^2 + D_1xy + E_1xz + F_1yz + G_1x + H_1y + I_1z + N_1 = 0
A_2x^2 + B_2y^2 + C_2z^2 + D_2xy + E_2xz + F_2yz + G_2x + H_2y + I_2z + N_2 = 0
x^2 + y^2 + z^2 + R = 0
Система имеет 8 решений. Реализовал на cpp решение с помощью базиса Грёбнера. Но проблема в том, что решение не всегда находится из-за ограниченной длинны мантиссы чисел double. Использую библиотеку mpfr для преодоления данной проблемы, но всё равно не всегда находится решение получившегося ур-ия 8 степени из-за погрешности и не точности коэффициентов при неизвестных. Если удаётся решить ур-ие 8 степени, то использую его корни в качестве начального приближения в методе Ньютона.
Есть ли другой способ решить приведённую выше систему, т.е. без Грёбнера. Начальных приближений, как вы поняли у меня нет.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение12.05.2017, 17:42 
Заслуженный участник
Аватара пользователя


23/07/08
10662
Crna Gora
Abraziv в сообщении #1215988 писал(а):
Но проблема в том, что решение не всегда находится из-за ограниченной длинны мантиссы чисел double.
Может быть, ещё потому, что решений не всегда восемь? Два параболоида (как пример) и сфера могут вообще не пересекаться.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение12.05.2017, 18:58 
Заслуженный участник


13/12/05
4519
Видимо, рассматриваются комплексные решения

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 02:08 


21/05/16
4292
Аделаида
Сначала решаем первое уравнение относительно x:
$A_1x^2+(D_1y+E_1z+G_1)x+(B_1y^2+C_1z^2+F_1yz+H_1y+I_1z+N_1)=0$
$D=D^2_1y^2+E^2_1z^2+G^2_1+2D_1E_1yz+2E_1G_1z+2D_1G_1y-4A_1B_1y^2-4A_1C_1z^2-4A_1F_1yz-4A_1H_1y-4A_1I_1z-4A_1N_1
$x=\frac{-D_1y-E_1z-G_1\pm \sqrt{D^2_1y^2+E^2_1z^2+G^2_1+2D_1E_1yz+2E_1G_1z+2D_1G_1y-4A_1B_1y^2-4A_1C_1z^2-4A_1F_1yz-4A_1H_1y-4A_1I_1z-4A_1N_1}}{2}$
Внимание!: В формуле для $x$ последний член дискриминанта не отображается!
Как вернусь, продолжу!

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 02:26 
Заслуженный участник


27/04/09
28128
kotenok gav
Удачи в решении уравнения четвёртой степени! :D

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 05:44 


02/11/12
86
Цитата:
Может быть, ещё потому, что решений не всегда восемь? Два параболоида (как пример) и сфера могут вообще не пересекаться.

Чисто формально да, не всегда, но их может быть 8. Из-за погрешности коэффициентов при неизвестных поверхности могут не пересекаться, нужно как-то скорректировать (усреднить мнимую и реальную часть например), т.е. эта система описывает некоторый физический процесс, известно что решение должно быть, но из-за погрешности поверхности могут проходить очень рядом друг с другом, так и не коснувшись друг друга, нужно как-то подобрать наиболее вероятную точку пересечения, в случае если все решения комплексные.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 16:39 


04/07/15
137
Если численно, то с такими системами легко справляются пакеты компьютерной графики с помощью своих функций. Именно на основе базисов Грёбнера находятся все решения. Количество значащих цифр ограничено временем, выделенным на счёт, на что, конечно, влияет мощность машины.
Никакой метод потом не нужен, тем более метод Ньютона.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 16:59 


02/11/12
86
Цитата:
Если численно ... на основе базисов Грёбнера находятся все решения.
Что?
Метод Ньютона в конце нужен как раз для уточнения корней, т.к. в процессе нахождение БГ накапливается методическая ошибка. Как я уже говорил, я использую библиотеку GMP. Ничего нового вы не сказали, зачем вообще было писать ? Тем более как видно нужна программная реализация, а не пользование матпакетов.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 17:31 
Заслуженный участник


20/08/14
11171
Россия, Москва
Если глупость, сильно не бейте.
Может быть решать по отдельности, первое с третьим, потом второе с третьим, а потом проверить совпадают (близки) ли корни? При этом если не ошибаюсь первое (и второе) уравнение можно существенно упростить (занулить коэффициенты при смешанных произведениях координат) поворотом системы координат, на сферу это не повлияет.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 17:32 
Заслуженный участник


03/01/09
1683
москва
Ваша система легко сводится к системе из двух полиномиальных уравнений с двумя неизвестными. Затем можно найти результант полиномов, входящих в систему, приравнять его нулю и получить таким образом уравнение от одной неизвестной. Вряд ли при этих преобразованиях накопится сколько-нибудь заметная ошибка в коэффициентах.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 18:04 


02/11/12
86
Dmitriy40 в сообщении #1216171 писал(а):
Если глупость, сильно не бейте.
Может быть решать по отдельности, первое с третьим, потом второе с третьим, а потом проверить совпадают (близки) ли корни? При этом если не ошибаюсь первое (и второе) уравнение можно существенно упростить (занулить коэффициенты при смешанных произведениях координат) поворотом системы координат, на сферу это не повлияет.

Повлияет, нужен не просто факт пересечения.

-- 14.05.2017, 01:06 --

mihiv в сообщении #1216172 писал(а):
Ваша система легко сводится к системе из двух полиномиальных уравнений с двумя неизвестными. Затем можно найти результант полиномов, входящих в систему, приравнять его нулю и получить таким образом уравнение от одной неизвестной. Вряд ли при этих преобразованиях накопится сколько-нибудь заметная ошибка в коэффициентах.

Можно подробнее, должно быть 8 решений (в общем случае)

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 18:16 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Вот статья по теме: https://www.semanticscholar.org/paper/E ... 6a59db6eda

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 18:18 


02/11/12
86
Я понял мысль насчёт приведения к двум полиномам 4 степени. А что мне потом с ними делать? Выразить мне кажется будет нереально сложно.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 18:35 


04/07/15
137
Abraziv, так вот в чём дело: Вы просто хотите переплюнуть пакеты, даже не зная их возможностей, и, наверно, поэтому уже в течение нескольких лет осаждаете форумы этим вопросом.
Видно, упрямство Вам сильно помогло. Как говорится, метод Ньютона без методических ошибок Вам в помощь.

 Профиль  
                  
 
 Re: решить систему алгебраических уравнений
Сообщение13.05.2017, 18:50 


02/11/12
86
Осаждаю форумы? В течение нескольких лет? Как я уже говорил я решил данную систему и реализация успешно работает. Но есть несколько нюансов которые заставили меня пересмотреть подход с использованием БГ, поэтому обратился к профи сюда, предлагаю прекратить флуд. Пожалуйста.

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group