Математический форум Math Help Planet
Обсуждение и решение задач по математике, физике, химии, экономике Теоретический раздел |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
новый онлайн-сервис число, сумма и дата прописью |
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Страница 1 из 1 |
[ Сообщений: 2 ] |
|
Автор | Сообщение | |
---|---|---|
Abraziv |
|
|
Код: [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 и решить их численно. Есть у кого нибудь идеи или совет, как победить, башка уже не варит просто, слишком сложно. Спасибо заранее. |
||
Вернуться к началу | ||
Abraziv |
|
|
Уважаемые модераторы, зачем переместили в раздел matlab ? Мне не нужно решение системы в matlab, matlab её очень хорошо решает. Нужна реализация на С/С++, а точнее нужен путь решения. Уберите пожалуйста обратно в раздел Алгебра.
|
||
Вернуться к началу | ||
[ Сообщений: 2 ] |
Похожие темы | Автор | Ответы | Просмотры | Последнее сообщение |
---|---|---|---|---|
Наибольший коэффициент в полиномиальной формуле
в форуме Комбинаторика и Теория вероятностей |
5 |
413 |
01 фев 2021, 00:33 |
|
Частное решение дифференциального уравнения\общее решение | 5 |
762 |
06 май 2014, 19:13 |
|
Решение
в форуме Дифференциальное исчисление |
2 |
294 |
07 авг 2016, 09:01 |
|
Решение ДУ | 6 |
503 |
27 окт 2014, 15:55 |
|
Решение д.у | 9 |
612 |
05 ноя 2015, 14:43 |
|
Решение в уме
в форуме Алгебра |
9 |
925 |
30 июн 2014, 23:06 |
|
Решение | 1 |
401 |
03 апр 2014, 11:50 |
|
Решение ДУ
в форуме MATLAB |
2 |
322 |
19 фев 2022, 18:46 |
|
Решение ДУ | 2 |
340 |
01 дек 2014, 00:17 |
|
Решение ДУ | 4 |
372 |
13 ноя 2014, 01:38 |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |