2013-06-23 6 views
0

У меня есть данные небольших чисел, которые имеют небольшие отличия. Поскольку matlab сокращает числа с первых 4 цифр, все числа кажутся равными. Не могли бы вы рассказать мне, как более разумно рассчитать? Например:небольшие различия между большими или крошечными номерами

10000000000 

ans = 

    1.0000e+10 

>> 10000000001 

ans = 

    1.0000e+10 
+0

Эти цифры совсем не маленькие ... вы знакомы с [_scientific нотация_] (http://en.wikipedia.org/wiki/Scientific_notation#E_notation)? В этих обозначениях MATLAB отображает только самые значащие цифры, это никак не влияет на вычисления, цифры остаются неизменными. Используйте ['формат long'] (http://www.mathworks.com/help/matlab/ref/format.html), чтобы изменить формат отображения (см. [Этот связанный вопрос] (http://stackoverflow.com/q/12035559)). –

ответ

1

Matlab просчитывает со всеми значащими цифрами вы даете его (до 16 цифр). Он просто отображает только самые значащие цифры. По умолчанию он равен format short (или format short e для номеров, которые слишком велики для отображения с format short), который отображает 5 значащих цифр. Как отметил @Eitan T, format long или format long e отобразит 15 цифр.

+0

Благодарим вас за ответ. Как я могу позволить Matlab вычислить более 16 цифр? Можно ли вычислить 50 цифр? – pcepkin

+1

Конечно. Вы можете использовать [арифметику с переменной точностью] (http://www.mathworks.com.au/help/symbolic/vpa.html) из Symbolic Math Toolbox. – Simon

+0

@ Simon, спасибо большое, что мне нужно :) – pcepkin