|
4 / 4 / 2
Регистрация: 05.02.2013
Сообщений: 441
|
|
Теряется точность при вычислении с double21.08.2015, 08:17. Показов 7790. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|