2014-10-14 4 views
1

Я хочу проверить численную устойчивость QR-алгоритма, для этого мне нужно создать матрицу, как это:MATLAB точности с плавающей точкой

S = diag(2.^(-1:-1:-80)); 

Но это имеет ранг 46, я думаю, что это из-за отсутствия точности. Но в книге, которую я читаю, это полная ранжированная матрица. Как я могу повысить точность вычислений?

+3

@lakesh, 'формат long' о точности вывода не является внутренним. – Yola

ответ

1

Вы можете использовать vpa (переменная точность ariuthmetic):

>> S = diag(2.^vpa((-1:-1:-80)), 100); %// 100 here is number of precision digits 
>> rank(S) 
ans = 
    80 

Обратите внимание, что результат имеет тип sym. Преобразовать в double, если необходимо:

>> double(rank(S)) 
ans = 
    80 
Смежные вопросы