Я столкнулся с некоторой проблемой при использовании Matlab. Я делаю некоторые вычисления в отношении внебиржевых инструментов (ценообразование, построение кривой скидок и т. Д.), Во-первых, в Excel, а затем в Matlab (для сравнения). Хотя я на 100% уверен, что вычисления в Excel хороши (по сравнению с рыночными данными), похоже, что Matlab производит некоторые различия (т. Е. -4,18-05E). Алгоритм Matlab выглядит отлично. Мне было интересно - может быть, это потому, что Matlab округляет некоторые вычисления - я слышал об этом немного. Я пытаюсь преобразовать двойные числа в float по функции vpa(), но похоже, что он не работает с двойными номерами. Любые другие идеи?Сравнение с Matlab vs Excel в вычислениях
ответ
Excel использует 64-битные числа с плавающей запятой двойной точности, соответствующие спецификации с плавающей точкой IEEE 754.
То, как Excel обрабатывает результаты, как и =1/5
появляется вычислить их точно (хотя этот пример не является двоично-рациональным) является чисто вплоть до форматирования. Аналогичным образом он обрабатывает =1/3 + 1/3 + 1/3
. Это очень умно, если вы думаете об этом: разработчики Excel не имели реального выбора, учитывая, что средний пользователь Excel не является au fait с точками арифметики с плавающей запятой и просто презирает пакет электронных таблиц, который «не мог даже получите 1/5
правильно ".
Что все сказано, вам очень не повезло, если вы получаете разницу в -4,18-05E между двумя системами. Это связано с тем, что двойная плавающая точка соответствует примерно 15 значимым цифрам. Ваши алгоритмы будут очень плохо реализованы, если условия ошибки будут пузыряться до этой величины, если вы последовательно используете типы с плавающей точкой двойной точности.
Скорее всего (и я тоже работаю в сфере финансов), разница будет в том, как вы интерполируете свою кривую скидок. Вот где я буду выглядеть первым, если бы я был вами.
Учитывая значение ошибки по сравнению с настройками по умолчанию format
, это почти наверняка связано с использованием по умолчанию format short
и сравнением вывода в командной строке с реальным значением.
x = 5.4444418
Выход:
х =
5.4444
Тогда:
x-5.4444
Выход:
ANS =
4.1800e-05
Значение, сохраненное в x
остается на 5.4444418
, то только выходной мерой в командную строку, которая изменяет.
- 1. `float` vs` double` в случайных одиночных вычислениях?
- 2. Сравнение шума в MATLAB
- 3. Разница в вычислениях Matlab и Octave
- 4. MATLAB: Как разделить HashMap в параллельных вычислениях
- 5. Сравнение файлов с MATLAB
- 6. Сравнение изображений с MATLAB
- 7. matlab сравнение разница
- 8. Сравнение скорости Matlab vs C++ в этом коде
- 9. Сравнение ячеек в matlab
- 10. специальное сравнение в MATLAB
- 11. Численное сравнение в MATLAB
- 12. сравнение изображений в matlab
- 13. Соответствие и сравнение Excel
- 14. MatLab сравнение с плавающей точкой
- 15. Сравнение изображений с использованием Matlab
- 16. Сравнение строк с localeCompare vs ===?
- 17. Javascript: Сравнение с null -! == vs! =
- 18. Сравнение столбцов с использованием MATLAB
- 19. Сравнение текста в Excel
- 20. Сравнение данных в Excel?
- 21. Есть ли разница в вычислениях для Numpy vs Pandas?
- 22. Сравнение списков в Excel
- 23. Число рабочих, которые будут использоваться в параллельных вычислениях Matlab
- 24. MATLAB: Генерация случайных чисел в парфюмерных или параллельных вычислениях
- 25. Сравнение диапазонов в Excel
- 26. Сравнение столбцов в excel
- 27. Сравнение между векторами в matlab
- 28. MATLAB Compiler vs MATLAB Coder
- 29. Сравнение ячейки с вектором в Matlab
- 30. Сравнение массива с различными типами в Matlab
Я сомневаюсь, что Excel внутренне использует больше точности, чем 'double' Matlab –
Ну, похоже, что это ... –
В любом случае, трудно сказать, если вы не разместите код; предпочтительно небольшой пример, который воспроизводит проблему точности –