Дано уравнение tg x = 2x на отрезке (-pi/2, pi/2). Обсудите методы доказательства наличия ровно одного корня и численные стратегии его точного нахождения, учитывая особенности функции tg x
Кратко: на отрезке (−π/2,π/2)(-\pi/2,\pi/2)(−π/2,π/2) уравнение tanx=2x\tan x=2xtanx=2x имеет ровно три корня: тривиальный x=0x=0x=0 и две ненулевые симметричные точки ±x0\pm x_0±x0, где x0∈(0,π/2)x_0\in(0,\pi/2)x0∈(0,π/2). При этом в полукруге (0,π/2)(0,\pi/2)(0,π/2) ровно один положительный корень. Далее — доказательство единственности положительного корня и рекомендации по численному поиску. Доказательство единственности положительного корня - Ввожу функцию h(x)=tanxx,x∈(0,π/2).
h(x)=\frac{\tan x}{x},\qquad x\in(0,\pi/2). h(x)=xtanx,x∈(0,π/2).
Тогда ненулевые решения соответствуют уравнению h(x)=2h(x)=2h(x)=2. - Покажем, что hhh строго возрастающая на (0,π/2)(0,\pi/2)(0,π/2). Рассмотрим g(x)=ln(tanx)−lnxg(x)=\ln(\tan x)-\ln xg(x)=ln(tanx)−lnx. Тогда g′(x)=sec2xtanx−1x=1sinxcosx−1x.
g'(x)=\frac{\sec^2 x}{\tan x}-\frac{1}{x}=\frac{1}{\sin x\cos x}-\frac{1}{x}. g′(x)=tanxsec2x−x1=sinxcosx1−x1.
Но для x∈(0,π/2)x\in(0,\pi/2)x∈(0,π/2) имеет место неравенство sin2x<2x\sin 2x<2xsin2x<2x, значит sinxcosx=12sin2x<x,
\sin x\cos x=\tfrac12\sin 2x< x, sinxcosx=21sin2x<x,
откуда g′(x)>0g'(x)>0g′(x)>0. Следовательно ggg (а значит и h=expgh=\exp gh=expg) строго возрастает. - Значения на концах: limx→0+h(x)=1\lim_{x\to0+}h(x)=1limx→0+h(x)=1, limx→π/2−h(x)=+∞\lim_{x\to\pi/2-}h(x)=+\inftylimx→π/2−h(x)=+∞. Поскольку hhh непрерывна и строго возрастает от 111 до +∞+\infty+∞, уравнение h(x)=2h(x)=2h(x)=2 имеет ровно одно решение в (0,π/2)(0,\pi/2)(0,π/2). - Используя нечетность tan(−x)=−tanx\tan(-x)=-\tan xtan(−x)=−tanx и линейности правой части, получаем симметричное значение в (−π/2,0)(-\pi/2,0)(−π/2,0), а x=0x=0x=0 — очевидный корень. Итого три корня на (−π/2,π/2)(-\pi/2,\pi/2)(−π/2,π/2). Численные стратегии для нахождения положительного корня x0x_0x0
1. Предварительное отсеивание и бруксировка (bracketing) - Найдите отрезок [a,b]⊂(0,π/2)[a,b]\subset(0,\pi/2)[a,b]⊂(0,π/2) с изменением знака для f(x)=tanx−2xf(x)=\tan x-2xf(x)=tanx−2x. Например, f(1)=tan1−2<0f(1)=\tan1-2<0f(1)=tan1−2<0, f(1.2)=tan1.2−2.4>0f(1.2)=\tan1.2-2.4>0f(1.2)=tan1.2−2.4>0, значит корень в [1,1.2][1,1.2][1,1.2]. - Метод половинного деления (bisection) даёт гарантированную сходимость и легко реализуется; скорость линейная, но надёжна. 2. Метод Ньютона (быстрая локальная сходимость) - Итерация: xn+1=xn−tanxn−2xnsec2xn−2.
x_{n+1}=x_n-\frac{\tan x_n-2x_n}{\sec^2 x_n-2}. xn+1=xn−sec2xn−2tanxn−2xn.
- Замечания: прямое применение может быть плохо, если знаменатель близок к нулю. Действительно, f′(x)=sec2x−2f'(x)=\sec^2 x-2f′(x)=sec2x−2 обращается в ноль при x=±π/4x=\pm\pi/4x=±π/4; поэтому не начинать итерацию слишком близко к π/4\pi/4π/4. Лучше сначала сузить интервал методом бисекции, а затем перейти на Ньютон, когда гарантировано, что итерации не пройдут через критическую точку. 3. Метод секущих / регула falsi - Пригоден, если нет удобного производного или опасаетесь деления на малое значение; сходимость супрэмлинейная (секущие) или медленно-надёжная (regula falsi), можно комбинировать с бруксировкой. 4. Гибридные методы - Комбинировать бисекцию на первых шагах для гарантии, затем Ньютон для квадратичной сходимости (как в реализации библиотек типа scipy’s brentq/Brent). Практические замечания и осторожности - Избегайте попадания итераций вблизи вертикальной асимптоты x→π/2x\to\pi/2x→π/2, где tanx\tan xtanx и sec2x\sec^2 xsec2x растут очень быстро и вычисления теряют точность. - Проверяйте, что итерации остаются в допустимой ветви (−π/2,π/2)(-\pi/2,\pi/2)(−π/2,π/2) и не перескакивают через разрыв. - Для требуемой точности ε\varepsilonε можно сначала выполнить достаточное число бруксирований, чтобы интервал длины Δ≤ε\Delta\le\varepsilonΔ≤ε, либо довести до машинной точности с Ньютоном, контролируя изменение шага. - Пример численного результата: положительный корень примерно x0≈1.165561185…
x_0\approx 1.165561185\ldots x0≈1.165561185…
(тогда остальные корни на данном отрезке — −x0-x_0−x0 и 000). Краткий алгоритм на практике - Найти брусок [a,b][a,b][a,b] с f(a)⋅f(b)<0f(a)\cdot f(b)<0f(a)⋅f(b)<0 (например [1,1.2][1,1.2][1,1.2]). - Провести несколько шагов бисекции (или Brent) до достаточно малого отрезка. - Перейти на Ньютон с начальным приближением из полученного интервала для быстрого уточнения. - Контролировать, чтобы знаменатель в Ньютоне sec2xn−2\sec^2 x_n-2sec2xn−2 не был слишком мал; при этом возвращаться к бисекции/секанту при необходимости. Это всё кратко и достаточно для строгого доказательства единственности положительного корня и практического его нахождения с высокой точностью.
Доказательство единственности положительного корня
- Ввожу функцию
h(x)=tanxx,x∈(0,π/2). h(x)=\frac{\tan x}{x},\qquad x\in(0,\pi/2).
h(x)=xtanx ,x∈(0,π/2). Тогда ненулевые решения соответствуют уравнению h(x)=2h(x)=2h(x)=2.
- Покажем, что hhh строго возрастающая на (0,π/2)(0,\pi/2)(0,π/2). Рассмотрим g(x)=ln(tanx)−lnxg(x)=\ln(\tan x)-\ln xg(x)=ln(tanx)−lnx. Тогда
g′(x)=sec2xtanx−1x=1sinxcosx−1x. g'(x)=\frac{\sec^2 x}{\tan x}-\frac{1}{x}=\frac{1}{\sin x\cos x}-\frac{1}{x}.
g′(x)=tanxsec2x −x1 =sinxcosx1 −x1 . Но для x∈(0,π/2)x\in(0,\pi/2)x∈(0,π/2) имеет место неравенство sin2x<2x\sin 2x<2xsin2x<2x, значит
sinxcosx=12sin2x<x, \sin x\cos x=\tfrac12\sin 2x< x,
sinxcosx=21 sin2x<x, откуда g′(x)>0g'(x)>0g′(x)>0. Следовательно ggg (а значит и h=expgh=\exp gh=expg) строго возрастает.
- Значения на концах: limx→0+h(x)=1\lim_{x\to0+}h(x)=1limx→0+ h(x)=1, limx→π/2−h(x)=+∞\lim_{x\to\pi/2-}h(x)=+\inftylimx→π/2− h(x)=+∞. Поскольку hhh непрерывна и строго возрастает от 111 до +∞+\infty+∞, уравнение h(x)=2h(x)=2h(x)=2 имеет ровно одно решение в (0,π/2)(0,\pi/2)(0,π/2).
- Используя нечетность tan(−x)=−tanx\tan(-x)=-\tan xtan(−x)=−tanx и линейности правой части, получаем симметричное значение в (−π/2,0)(-\pi/2,0)(−π/2,0), а x=0x=0x=0 — очевидный корень. Итого три корня на (−π/2,π/2)(-\pi/2,\pi/2)(−π/2,π/2).
Численные стратегии для нахождения положительного корня x0x_0x0 1. Предварительное отсеивание и бруксировка (bracketing)
- Найдите отрезок [a,b]⊂(0,π/2)[a,b]\subset(0,\pi/2)[a,b]⊂(0,π/2) с изменением знака для f(x)=tanx−2xf(x)=\tan x-2xf(x)=tanx−2x. Например, f(1)=tan1−2<0f(1)=\tan1-2<0f(1)=tan1−2<0, f(1.2)=tan1.2−2.4>0f(1.2)=\tan1.2-2.4>0f(1.2)=tan1.2−2.4>0, значит корень в [1,1.2][1,1.2][1,1.2].
- Метод половинного деления (bisection) даёт гарантированную сходимость и легко реализуется; скорость линейная, но надёжна.
2. Метод Ньютона (быстрая локальная сходимость)
- Итерация:
xn+1=xn−tanxn−2xnsec2xn−2. x_{n+1}=x_n-\frac{\tan x_n-2x_n}{\sec^2 x_n-2}.
xn+1 =xn −sec2xn −2tanxn −2xn . - Замечания: прямое применение может быть плохо, если знаменатель близок к нулю. Действительно, f′(x)=sec2x−2f'(x)=\sec^2 x-2f′(x)=sec2x−2 обращается в ноль при x=±π/4x=\pm\pi/4x=±π/4; поэтому не начинать итерацию слишком близко к π/4\pi/4π/4. Лучше сначала сузить интервал методом бисекции, а затем перейти на Ньютон, когда гарантировано, что итерации не пройдут через критическую точку.
3. Метод секущих / регула falsi
- Пригоден, если нет удобного производного или опасаетесь деления на малое значение; сходимость супрэмлинейная (секущие) или медленно-надёжная (regula falsi), можно комбинировать с бруксировкой.
4. Гибридные методы
- Комбинировать бисекцию на первых шагах для гарантии, затем Ньютон для квадратичной сходимости (как в реализации библиотек типа scipy’s brentq/Brent).
Практические замечания и осторожности
- Избегайте попадания итераций вблизи вертикальной асимптоты x→π/2x\to\pi/2x→π/2, где tanx\tan xtanx и sec2x\sec^2 xsec2x растут очень быстро и вычисления теряют точность.
- Проверяйте, что итерации остаются в допустимой ветви (−π/2,π/2)(-\pi/2,\pi/2)(−π/2,π/2) и не перескакивают через разрыв.
- Для требуемой точности ε\varepsilonε можно сначала выполнить достаточное число бруксирований, чтобы интервал длины Δ≤ε\Delta\le\varepsilonΔ≤ε, либо довести до машинной точности с Ньютоном, контролируя изменение шага.
- Пример численного результата: положительный корень примерно
x0≈1.165561185… x_0\approx 1.165561185\ldots
x0 ≈1.165561185… (тогда остальные корни на данном отрезке — −x0-x_0−x0 и 000).
Краткий алгоритм на практике
- Найти брусок [a,b][a,b][a,b] с f(a)⋅f(b)<0f(a)\cdot f(b)<0f(a)⋅f(b)<0 (например [1,1.2][1,1.2][1,1.2]).
- Провести несколько шагов бисекции (или Brent) до достаточно малого отрезка.
- Перейти на Ньютон с начальным приближением из полученного интервала для быстрого уточнения.
- Контролировать, чтобы знаменатель в Ньютоне sec2xn−2\sec^2 x_n-2sec2xn −2 не был слишком мал; при этом возвращаться к бисекции/секанту при необходимости.
Это всё кратко и достаточно для строгого доказательства единственности положительного корня и практического его нахождения с высокой точностью.