|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
Теряется точность при вычислении с double21.08.2015, 08:17. Показов 7853. Ответов 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 теряется дробная часть Теряется точность Куда теряется точность? |
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 13:04 [ТС] | |
|
Решение куб уравнения, это промежуточный этап аналитического решения систему нелинейных уравнений.
А практический смысл какой? Если порядок числа переваливает за 10^10, зачем нужна 15я (условно) цифра после запятой? Такова математика. Вот к примеру: для точности 880256255399783 получаю значение одной из переменных: -15734422.4491056 для точности 880256255399784 получаю значение одной из переменных: -9084272.68745487 для точности 880256255399784.424 получаю значение одной из переменных: 0.674031173230142 для точности 880256255399784.4 получаю значение одной из переменных: 0.674031173230142 А должно быть 0. castaway a3 = 1 b3 = -880256255399764 c3 = -1.79792141373932e+016 d3 = -9.24139523145728e+016 При заданных выше нач условиях, матлаб вычислил: 880256255399784.42497741663615572;
0
|
|
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 21.08.2015, 13:10 | |
|
Abraziv__, нам нужен код,который можно запустить.Заодно и matlab код приведите.
0
|
|
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
||||||
| 21.08.2015, 13:15 [ТС] | ||||||
|
Извините ребята, не посчитайте за предубеждение, но код целиком дать не могу. Мне контора не простит, если всплывёт.
Добавлено через 1 минуту Хотя вот матлбовский код:
0
|
||||||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 21.08.2015, 13:24 | |
|
Abraziv__, нам не нужен код целиком.Просто маленький кусок,демонстрирующий проблему.
Хорошо,запустил matlab код.Получил ряд значений,какое из них соответствует(не соответствует) C++-аналогу(требуемому значению).
0
|
|
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 13:31 [ТС] | |
|
Я вас уверяю, на полюсах тоже самое, я проверял там везде дабл. Можете сампосмотреть в матлабе и в режиме отладки посмотреть
0
|
|
|
|
|||||||
| 21.08.2015, 13:34 | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 13:36 [ТС] | |
|
Да я про тоже, надо библиотеку длин арифметики подымать.
0
|
|
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 21.08.2015, 13:37 | |
|
Abraziv__, ...
я вас не об этом спрашиваю.Вы говорите,что расчетное значение одно,хотя требуется получить другое и что решатель matlab solve - подходит. Вы привели один код,но не прокомментировали его .Я так понимаю, приведенный код - полный аналог C++ кода,хорошо. Нужен другой,правильный код с solve.Чтобы форумчане могли запустить,сравнить и понять в чем именно проблема.
0
|
|
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 13:47 [ТС] | |
|
В приведенном выше коде есть функция solve решения куб уравнения. Интересующий код дублирует код на c++, точнее наоборот. Я повторюсь, матлаб код работает аналогично плюсовому, я проверял все. В матлабе легче разобраться, но я знаю что не так. Инициал данные слишком длинные, так получается просто, так надо.
Добавлено через 1 минуту castaway, если получится сможете поделиться либами?
0
|
|
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
||||||
| 21.08.2015, 13:55 | ||||||
|
Abraziv__,все понял.
Вот это - решение вашего уравнения:
0
|
||||||
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 13:59 [ТС] | |
|
Спасибо всем. Я весь день сегодня кодил, температура снизилась, пойду 11 км пробегу.
0
|
|
| 21.08.2015, 14:02 | |
|
0
|
|
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 14:03 [ТС] | |
|
castaway, эмм. Лучше не стоит тогда тратить время. Я сам справлюсь, просто посидеть надо ещё. Извините если что не так.
0
|
|
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 15:45 [ТС] | |
|
Эммм. Ща буду гуглить.
Добавлено через 15 минут Хм.. Можно схитрить: x = a^b; тогда справедливо: x=exp(b*ln(a), где a > 0
1
|
|
|
|
|||||||
| 21.08.2015, 15:58 | |||||||
|
Хм...
Abraziv__, у тебя точно одинаковы методы вычисления в C++ и Mathlab? Кликните здесь для просмотра всего текста
Не по теме: Abraziv__, за сколько 11 км пробегаешь?
1
|
|||||||
|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
| 21.08.2015, 16:02 [ТС] | |
|
castaway, Спасибо за то что помогаете, глядишь, как нибудь и я вам помогу.
Код "идентичен", сейчас ещё раз всё проверю, возможно исходные данные не те. 11 км, сильно не перенапрягаясь примерно за 50 минут (+-). Спасибо за ссылку, сейчас всё проверю и отпишусь.
1
|
|
| 21.08.2015, 16:02 | |
|
Теряется точность в сравнении с exel Точность в double Точность вычислений у double Точность.Тип double Точность типа double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|