4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
1 | |
Теряется точность при вычислении с double21.08.2015, 08:17. Показов 6507. Ответов 77
Метки нет (Все метки)
Доброго времени суток.
В процессе решения кубического уравнения, у меня теряется точность переменной типа double. Пробовал использовать TTmath.h результата не прибавило (возможно я её криво использовал). Короче говоря вещественный корень получается равный: z0 = 880256255399783.00 В matlab тот же самый алгоритм, так же даёт 880256255399783.00 А должен быть: z0 = 880256255399784.42497741663615572; - Этот корень получился в matlab с помощью функции solve() Я так понимаю это произошло из-за переполнение мантиссы double ? Которая для double не может превышать 2^53 - 1;
0
|
21.08.2015, 08:17 | |
Ответы с готовыми решениями:
77
При переводе string в long double теряется дробная часть Теряется точность Куда теряется точность? Теряется точность в сравнении с exel |
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 16:21 [ТС] | 42 |
Спасибо castaway, буду пробовать.
Действительно были немного не те данные, в матлабе с помощью solve получил: 880077597617982.68914501842987757 это для a3 = 1 b3 = -8.800775976179623e+014 c3 = -1.794402976530432e+016 d3 = -9.331775087260467e+016 На плюсах около того но не то. Так что вы как раз кстати. это на плюсах: 880077597617981.50
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 16:28 [ТС] | 44 |
Не хилый у тебя ноутбук )))) i7 нынче под 30 стоит (сам проц)
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 16:33 [ТС] | 46 |
Беда.
0
|
21.08.2015, 16:34 | 47 |
Не по теме: i7 разные бывают) У меня Core i3. Просто компилятор/MSYS2 сам определяет нужную архитектуру при компиляции GMP и MPFR. GCC/MSYS2 определил у меня архитектуру corei7. У него нет понятия архитектуры "corei3". Добавлено через 1 минуту У меня с математикой "не важно", думай в чём может быть проблема а я проверю у себя.
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 16:53 [ТС] | 48 |
Хорошо, спасибо за ответы. Буду думать. Как найду в чём беда отпишусь сразу же.
Добавлено через 17 минут Короче я думаю, что ошибка накапливается ещё до решения кубического уравнения. А матлаб может выдавать неправильно, т.к. скорее всего уравнение там решает численным методом. Но возможно я ошибаюсь, т.к. при подстановке "матлабовского значения", решение получается немного ближе к 0. Надо короче переделываться всё программу на плюсах (под GMP) и смотреть.
0
|
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,396
|
|
21.08.2015, 16:59 | 49 |
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 17:28 [ТС] | 51 |
880077597617982.68914501842987757 - скопипастил из матлаба. Выходит что не ошибся
880077597617981.50 -скопипастил из плюсов Что не так было в твоей реализации?
0
|
21.08.2015, 17:38 | 52 | |||||
Я заменил возведение в степень 1/3 на кубический корень.
Кликните здесь для просмотра всего текста
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 17:39 [ТС] | 53 |
John Prick
Толку то, матлаб то тоже не правильно считает. castaway Я повторюсь, возможно у тебя правильно.
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 18:20 [ТС] | 55 |
Поддерживаю, просто сейчас доступа к компу нету. Мне тоже безумно любопытно, как разберусь так сразу же напишу сюда. Так что господа, наберёмся терпения =))) Ну или кому интересно матлабовский код есть, исходные данные - самые поздние,
решение системы: x должен быть равен 0, z тоже = 0.
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
21.08.2015, 18:43 [ТС] | 57 |
0
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
22.08.2015, 14:27 [ТС] | 59 |
castaway
Привет. Вот только сел делать, весь день был занят. Сейчас собираю gmp. Добавлено через 46 минут беда с этой mpfr нету #include <cstdint>
0
|
22.08.2015, 14:32 | 60 |
Abraziv__, какая среда/компилятор? Как выгладит сообщение об ошибке?
0
|
22.08.2015, 14:32 | |
22.08.2015, 14:32 | |
Помогаю со студенческими работами здесь
60
Точность в double Точность вычислений у double Точность.Тип double Точность типа double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |