Упростите выражение sin^2 x / (1 - cos x) и обсудите, какие преобразования допустимы при приближённых вычислениях для малых x; какие алгебраические тождества и численные приёмы (например, использование формул приведения или разложения в ряд) следует предпочесть, чтобы избежать потери точности и деления на числа, близкие к нулю?

22 Окт в 14:53
5 +1
0
Ответы
1
Упрощение. Используя формулы половинного угла:
1−cos⁡x=2sin⁡2x2,sin⁡x=2sin⁡x2cos⁡x2, 1-\cos x=2\sin^2\frac{x}{2},\qquad \sin x=2\sin\frac{x}{2}\cos\frac{x}{2},
1cosx=2sin22x ,sinx=2sin2x cos2x ,
получаем
sin⁡2x1−cos⁡x=4sin⁡2x2cos⁡2x22sin⁡2x2=2cos⁡2x2, \frac{\sin^2 x}{1-\cos x}=\frac{4\sin^2\frac{x}{2}\cos^2\frac{x}{2}}{2\sin^2\frac{x}{2}}=2\cos^2\frac{x}{2},
1cosxsin2x =2sin22x 4sin22x cos22x =2cos22x ,
при условии sin⁡x2≠0\sin\frac{x}{2}\neq0sin2x =0 (т. е. x∉2πZx\notin 2\pi\mathbb{Z}x/2πZ). Для точек x∈2πZx\in2\pi\mathbb{Z}x2πZ исходное выражение имеет вид 0/00/00/0, но предел при x→0x\to0x0 даёт значение 222, так что расширение по непрерывности даёт тот же результат.
Допустимые преобразования и замечания для приближённых вычислений
- Алгебраическая отмена общих множителей допустима только если они не равны нулю; при вычислениях в конечной арифметике лучше применять тождественную замену на 2cos⁡2x22\cos^2\frac{x}{2}2cos22x , чтобы избежать деления на малое число.
- Численная проблема: выражение 1−cos⁡x1-\cos x1cosx при малых xxx страдает от вычитания близких величин (катастрофическое сокращение точности). Поэтому НЕ рекомендуется вычислять sin⁡2x1−cos⁡x\frac{\sin^2 x}{1-\cos x}1cosxsin2x как есть для малых xxx.
- Рекомендуемые приёмы:
1. Использовать тождественную замену
sin⁡2x1−cos⁡x=2cos⁡2x2, \frac{\sin^2 x}{1-\cos x}=2\cos^2\frac{x}{2},
1cosxsin2x =2cos22x ,
— численно устойчиво, ибо вычисление cos⁡x2\cos\frac{x}{2}cos2x для малого xxx даёт число близкое к 111, а операция возведения в квадрат и умножения на 222 не приводит к потере значащих цифр.
2. При очень малых xxx можно использовать разложение в ряд для нужной точности. Разложения:
sin⁡x=x−x36+O(x5),cos⁡x=1−x22+x424+O(x6), \sin x=x-\frac{x^3}{6}+O(x^5),\qquad \cos x=1-\frac{x^2}{2}+\frac{x^4}{24}+O(x^6),
sinx=x6x3 +O(x5),cosx=12x2 +24x4 +O(x6),
следовательно
sin⁡2x1−cos⁡x=2−x22+O(x4). \frac{\sin^2 x}{1-\cos x}=2-\frac{x^2}{2}+O(x^4).
1cosxsin2x =22x2 +O(x4).
Для ∣x∣|x|x меньше некоторого порога (например, порядка eps\sqrt{\mathrm{eps}}eps ) можно подставлять конечный член ряда (например 2−x222-\tfrac{x^2}{2}22x2 ) с контролируемой ошибкой.
3. Альтернатива: вычислять через sin⁡x2\sin\frac{x}{2}sin2x sin⁡2x1−cos⁡x=(2sin⁡x2cos⁡x2)22sin⁡2x2=2cos⁡2x2, \frac{\sin^2 x}{1-\cos x}=\frac{(2\sin\frac{x}{2}\cos\frac{x}{2})^2}{2\sin^2\frac{x}{2}}=2\cos^2\frac{x}{2},
1cosxsin2x =2sin22x (2sin2x cos2x )2 =2cos22x ,
— практически то же, но при реализации ввести явную проверку на случай, когда sin⁡x2\sin\frac{x}{2}sin2x под машинный ноль.
- Практический порог: для двойной точности (eps ≈ 2.2⋅10−162.2\cdot10^{-16}2.21016) порог порядка eps∼10−8\sqrt{\mathrm{eps}}\sim10^{-8}eps 108. Для ∣x∣<10−8|x|<10^{-8}x<108 удобнее брать разложение ряда; для более крупных малых xxx безопасно использовать 2cos⁡2x22\cos^2\frac{x}{2}2cos22x .
- Если xxx близко к 2πk2\pi k2πk, предварительно свести аргумент по модулю 2π2\pi2π до небольшого значения (нап., в интервале [−π,π][-\pi,\pi][π,π]), чтобы корректно оценивать малую величину.
Кратко: для точных и устойчивых вычислений замените sin⁡2x1−cos⁡x\dfrac{\sin^2 x}{1-\cos x}1cosxsin2x на 2cos⁡2x22\cos^2\frac{x}{2}2cos22x ; при очень малых xxx можно дополнительно использовать ряд 2−x22+O(x4)2-\tfrac{x^2}{2}+O(x^4)22x2 +O(x4).
22 Окт в 16:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир