Проверка отмены вычитания (точность с плавающей точкой)

Когда вы читаете о численных методах, то отмена вычитания часто является темой.

Простой пример отмены:

a = 1;
b = 1e-16;
a-(a+b) = 0

следовательно, мы теряем всю информацию о б.

Тем не менее, я редко читаю о том, как проверить эту проблему. Разве мы не можем использовать простую функцию для вычитания числа, которая также предупреждает нас о проблемах? Пример:

function c = subtract(a,b)
    c = a-b;
    if abs(c) < 1e-14*a
       disp('Warning: Low precision on subtraction');
    end
end

Вероятно, есть некоторые недостатки этой простой функции - это была только моя первая идея. Во всяком случае, что-то вроде этой работы? И почему это не сделано? (т.е. я никогда раньше не видел / не слышал о таких проверках).

0 ответов

Другие вопросы по тегам