2014 dxdy logo

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

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


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


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Решение кубического уравнения аналитическим способом.
Сообщение09.04.2015, 18:57 


05/07/13
9
Здравствуйте! Есть вопрос по решению кубического уравнения аналитически.

Допустим есть уравнение вида:
$x^{3}+847.12234684510304x^{2}+36496529769.030357x-0.02470037029184359=$0$

У уравнения два комплексных и один действительный корень равный 6.767868191E-13. Программировал метод (формулу) Кардано, тригонометрическое решение, но ничего не дает требуемую точность, так как что-то там в -11 степени не подходит. Понимаю, что по мере нахождения всяких сопутствующих математических операций и машинной точности, что-то может теряться. Те же maple, wolfram alfa находят корень точно. Mapl'у явно говорил, чтобы решал аналитически, про wolfram alfa ничего не могу сказать, что он там делает. Код из интернетов тоже не дает такого ответа. Предполагалось заменить аналитическим решением численное. И вообще в перспективе решать и четвертую степень аналитически (решение кубического уравнения собственно является частью метода для решения четвертой степени).

Есть какой-нибудь выход?

Спасибо!

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение09.04.2015, 20:21 
Заслуженный участник


04/05/09
4432
Конкретно в этом уравнении если отбросить куб, да и квадрат тоже, решение практически не изменится.

 Профиль  
                  
 
 Posted automatically
Сообщение09.04.2015, 20:23 
Админ форума
Аватара пользователя


19/03/10
8951
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Помогите решить / разобраться (М)»

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение09.04.2015, 20:37 


05/07/13
9
venco в сообщении #1002062 писал(а):
Конкретно в этом уравнении если отбросить куб, да и квадрат тоже, решение практически не изменится.


Спасибо за замечание. Это действительно так. Постараюсь набрать статистики и выявить закономерности, может и поможет.

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение09.04.2015, 20:58 
Аватара пользователя


20/10/12
308
Всё зависит от того, сколько уравнений надо решить и как быстро. Если особых требований по производительности нет, я бы действовал так.
1. Избавился бы от дробей, домножив уравнение на 10^{20}$ и подставив $x = 10^{100}y$
2. Подобрал бы наиболее подходящее целое приближение к корню методом двоичного поиска.
Программу удобно писать на Питоне, где есть целая арифметика неограниченной точности.

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение09.04.2015, 21:01 


19/05/10

3940
Россия
Все-таки, так как на компьютере пофиг линейные уравнения или квадратные решать, я бы выбросил только куб, точность (по сравнению с линейным случаем) выросла бы на несколько порядков. Один из корней конечно надо выбросить. И здесь, тоже наберите статистики.

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение10.04.2015, 17:58 
Заслуженный участник


04/05/09
4432
Формулу Кардано можно преобразовать так, чтобы она была более численно устойчивой в таких случаях:

Исходное уравнение
$$ax^3+bx^2+cx+d=0$$
заменами
$$x=t-\frac b{3a}$$
$$P=\frac{3ac-b^2}{9a^2}$$
$$Q=\frac{2b^3-9abc+27a^2d}{54a^3}$$
переводим к виду
$$t^3+3Pt+2Q=0$$
Затем вычисляем величину
$$S=\sqrt[3]{{\left(Q+\sqrt{Q^2+P^3}\right)}^2}$$
и корень
$$t=\frac{-2QS}{P^2+PS+S^2}$$

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение10.04.2015, 21:19 


05/07/13
9
mihailm в сообщении #1002083 писал(а):
Все-таки, так как на компьютере пофиг линейные уравнения или квадратные решать, я бы выбросил только куб, точность (по сравнению с линейным случаем) выросла бы на несколько порядков. Один из корней конечно надо выбросить. И здесь, тоже наберите статистики.


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

-- 10.04.2015, 22:20 --

Sphinx Pinastri в сообщении #1002082 писал(а):
Всё зависит от того, сколько уравнений надо решить и как быстро. Если особых требований по производительности нет, я бы действовал так.
1. Избавился бы от дробей, домножив уравнение на 10^{20}$ и подставив $x = 10^{100}y$
2. Подобрал бы наиболее подходящее целое приближение к корню методом двоичного поиска.
Программу удобно писать на Питоне, где есть целая арифметика неограниченной точности.


Пока попробовал использовать длинную арифметику без модернизации алгоритма. Результат плохой. Буду пробовать и ваш вариант.

-- 10.04.2015, 22:22 --

venco в сообщении #1002363 писал(а):
Формулу Кардано можно преобразовать так, чтобы она была более численно устойчивой


Применил ваши изменения, результат стал лучше.

-- 10.04.2015, 22:39 --

Более оптимизировал вычисления и результат стал идеальным на тех данных, что у меня были дома, используя формулу venco и длинную арифметику Python. Буду пробовать переносить все на С++ и проверять в общем случае. Спасибо.

 Профиль  
                  
 
 Re: Решение кубического уравнения аналитическим способом.
Сообщение10.04.2015, 22:25 


05/07/13
9
С++ показал, что все-таки "чудо" сделала длинная арифметика. Буду подключить либу gmp или boost, надеюсь производительность упадет не так существенно.

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

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



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

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


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

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