2014-01-17 5 views
0

У меня есть две двойные переменные:Отдел двойной точности

a > 0 
b >= 0 

, которые могут быть крошечные номера. «a» представляет собой сингулярные значения матрицы, а «b» представляет собой константу Tikhonov regularization. В рамках решения наименьших квадратов Тихонова, необходимо вычислить количество:

c = a*a/(a*a + b) 

Однако, если это действительно маленький (то есть малые сингулярные значения матрицы), a*a не может быть представима в двойной точности. Как я могу вычислить этот фактор c с численным устойчивостью для заданных диапазонов a, b?

ответ

0

Лучшее, что я могу придумать это:

c = 1/(1 + b/a/a) 

Чтобы получить эту эквивалентность, обратите внимание, что 1/с является (^2 + б)/с, а затем разложим фракцию. Эта форма может быть более численно устойчивой, так как она не требует a^2 для расчета в любой точке. Он все равно потеряет точность, если оба b и a очень маленькие. Если этот случай также нужно обработать, вы можете посмотреть расширение серии Taylor (может или не может работать для этого случая).

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