求解区间(0, π)内的方程$x = \cot(x/2)$
求解区间(0, π)内的方程$x = \cot(x/2)$
你碰到的这个问题很典型——这个方程其实是超越方程,没办法用初等函数写出精确的解析解,只能通过数值方法来逼近它的近似解。先帮你理清楚为什么你觉得恒等变换“没用”,再一步步教你怎么算出具体数值~
首先咱们可以把$\cot(x/2)$用更基础的三角函数展开,根据半角公式:
$$\cot(x/2) = \frac{1+\cos x}{\sin x}$$
原方程可以转化为:
$$x = \frac{1+\cos x}{\sin x}$$
整理后是$x\sin x - \cos x = 1$,形式上更简洁,但本质还是超越方程——变量$x$同时出现在三角函数内部和外部,没法通过初等代数操作把$x$单独解出来,这就是你觉得“恒等变换没用”的核心原因。
那怎么得到具体数值呢?最常用的是牛顿-拉夫逊迭代法,收敛速度快,步骤也清晰:
- 定义目标函数:$f(x) = x - \cot(x/2)$,我们要找的就是$f(x)=0$的根;
- 求导得到迭代所需的导函数:$f'(x) = 1 + \frac{1}{2}\csc2(x/2)$(推导:$\cot(x/2)$的导数是$-\frac{1}{2}\csc2(x/2)$,所以$f'(x)=1 - (-\frac{1}{2}\csc^2(x/2))$);
- 确定初始值范围:试算几个点,$x=1$时$f(1)≈-0.83$,$x=2$时$f(2)≈1.36$,说明根在$(1,2)$之间,选$x_0=1.5$作为初始值;
- 代入迭代公式$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$,一步步计算:
- 第一次迭代:$x_1 = 1.5 - \frac{1.5 - \cot(0.75)}{1 + 0.5\csc^2(0.75)}≈1.5 - \frac{0.646}{2.08}≈1.189$
- 第二次迭代:$x_2 = 1.189 - \frac{1.189 - \cot(0.5945)}{1 + 0.5\csc^2(0.5945)}≈1.189 + \frac{0.181}{2.59}≈1.259$
- 第三次迭代:$x_3 = 1.259 - \frac{1.259 - \cot(0.6295)}{1 + 0.5\csc^2(0.6295)}≈1.259 - \frac{0.029}{2.435}≈1.247$
- 第四次迭代:$x_4 = 1.247 - \frac{1.247 - \cot(0.6235)}{1 + 0.5\csc^2(0.6235)}≈1.247 - \frac{-0.001}{2.41}≈1.247$
到这一步已经收敛得非常好了,所以方程的近似解是$x≈1.247$弧度(换算成角度大概是71.5度)。
如果觉得求导麻烦,也可以用二分法:不断缩小根所在的区间,比如已知根在$(1,2)$,取中点1.5,发现$f(1.5)$为正,就把区间缩小到$(1,1.5)$;再取中点1.25,$f(1.25)$为正,区间缩小到$(1,1.25)$;继续重复这个过程,每次把区间减半,多算几次也能得到近似解,只是收敛速度比牛顿法慢一些。
总结一下:这类超越方程没有初等解析解,数值方法是唯一可行的路径,你用Desmos画图找根的思路其实也是数值方法的一种可视化体现哦~
备注:内容来源于stack exchange,提问作者Roost1513




