2014-09-25 3 views
0

Я столкнулся с некоторой проблемой при использовании Matlab. Я делаю некоторые вычисления в отношении внебиржевых инструментов (ценообразование, построение кривой скидок и т. Д.), Во-первых, в Excel, а затем в Matlab (для сравнения). Хотя я на 100% уверен, что вычисления в Excel хороши (по сравнению с рыночными данными), похоже, что Matlab производит некоторые различия (т. Е. -4,18-05E). Алгоритм Matlab выглядит отлично. Мне было интересно - может быть, это потому, что Matlab округляет некоторые вычисления - я слышал об этом немного. Я пытаюсь преобразовать двойные числа в float по функции vpa(), но похоже, что он не работает с двойными номерами. Любые другие идеи?Сравнение с Matlab vs Excel в вычислениях

+0

Я сомневаюсь, что Excel внутренне использует больше точности, чем 'double' Matlab –

+0

Ну, похоже, что это ... –

+1

В любом случае, трудно сказать, если вы не разместите код; предпочтительно небольшой пример, который воспроизводит проблему точности –

ответ

4

Excel использует 64-битные числа с плавающей запятой двойной точности, соответствующие спецификации с плавающей точкой IEEE 754.

То, как Excel обрабатывает результаты, как и =1/5появляется вычислить их точно (хотя этот пример не является двоично-рациональным) является чисто вплоть до форматирования. Аналогичным образом он обрабатывает =1/3 + 1/3 + 1/3. Это очень умно, если вы думаете об этом: разработчики Excel не имели реального выбора, учитывая, что средний пользователь Excel не является au fait с точками арифметики с плавающей запятой и просто презирает пакет электронных таблиц, который «не мог даже получите 1/5 правильно ".

Что все сказано, вам очень не повезло, если вы получаете разницу в -4,18-05E между двумя системами. Это связано с тем, что двойная плавающая точка соответствует примерно 15 значимым цифрам. Ваши алгоритмы будут очень плохо реализованы, если условия ошибки будут пузыряться до этой величины, если вы последовательно используете типы с плавающей точкой двойной точности.

Скорее всего (и я тоже работаю в сфере финансов), разница будет в том, как вы интерполируете свою кривую скидок. Вот где я буду выглядеть первым, если бы я был вами.

1

Учитывая значение ошибки по сравнению с настройками по умолчанию format, это почти наверняка связано с использованием по умолчанию format short и сравнением вывода в командной строке с реальным значением.

x = 5.4444418 

Выход:

х =

5.4444 

Тогда:

x-5.4444 

Выход:

ANS =

4.1800e-05

Значение, сохраненное в x остается на 5.4444418, то только выходной мерой в командную строку, которая изменяет.

Смежные вопросы