Это немного сложно. Вам нужно знать больше о том, как ведут себя e1 и e2.
Во-первых, некоторые обозначения: я буду использовать переменную a = theta-pi/4, так что нас интересует a-> 0 и запишем e1 = E + d1, e2 = E + d2. Пусть F = ваше время выражение SQRT (2)
С точки зрения этого мы имеем
F = ((E+d1)*(cos(a) - sin(a)) - (E+d2)*(cos(a) + sin(a)))/- sin(2*a)
= (-(2*E+d1+d2)*sin(a) + (d1-d2)*cos(a))/(-2*sin(a)*cos(a))
= (E+(d1+d2)/2)/cos(a) - (d1-d2)/(2*sin(a))
Предполагая, что D1-> 0 и Д2> 0 при а-> 0, то первое слагаемое будет стремиться к Е Однако второй термин может иметь тенденцию к чему-либо или взорваться - например, если d1 = d2 = sqrt (a).
Нам нужно больше предположить, например, что d1-d2 имеет производную D при a = 0. В этом случае мы будем
F-> E - D/2 as a->0
Чтобы иметь возможность вычислить F для значений а, близких к 0, мы должны знать еще больше. Один подход заключается в такой код:
if (fabs(a) < small) { F = E-D/2 + C*a; } else { F = // normal code }
Таким образом, мы должны понять, что «маленький» и C должно быть. Частично это зависит от того, какую (относительную) точность вы требуете. Наиболее строгим требованием было бы то, что при a = + - малой разница между аппроксимацией и нормальным кодом должна быть слишком мала, чтобы представлять в двойном (если это то, что вы используете). Но обратите внимание, что мы не должны делать «маленьким» слишком мало, или существует опасность того, что в качестве удвоений нормальный код будет оцениваться до 0/0 при + = малом. Один из подходов состоял бы в том, чтобы развернуть числитель и знаменатель F (или только второго члена) в виде степенных рядов (например, второго порядка), делить каждый на a, а затем делить эти ряды, сохраняя члены до второго порядка; первый член в этом дает вам C выше, а второй член позволит вам оценить ошибку в этом приближении и, следовательно, оценить «малый».
Для этого вам, вероятно, понадобится правило L'Hospitals (http://mathworld.wolfram.com/LHospitalsRule.html). Но это скорее вопрос математики, чем вопрос о стеке. –
Этот вопрос не соответствует теме, потому что речь идет о математике не о программировании. –
Не в теме? то почему там выходит ключевое слово «математика»? – x64