三次方程的三角函数解法
By 苏剑林 | 2010-08-08 | 96097位读者 |对于解方程,代数学家希望能够从理论上证明解的存在性以及解的求法,所以就有了1到4次方程的求根公式、5次及以上的代数方程没有根式可解等重要理论;然而,通常的学者(如物理学家、天文学家)都不需要这些内容,他们只关心如何尽可能快地求出指定方程的根(尤其是实数根),所以他们通常关注的是方程的数值算法,当然,如果能有一个相对简单的求根公式,也是他们所希望的。而接下来所要介绍的内容,则是满足了这一需要的三次方程的求根公式,其中用到的相当一部分的理论,是与三角函数相关的。
储备 #
\begin{equation}\frac{2}{\tan 2A}=\frac{1}{\tan A}-\tan A\end{equation}
\begin{equation}\frac{2}{\sin 2A}=\frac{1}{\tan A}+\tan A\end{equation}
\begin{equation}\cos(3A)=4\cos^3 A-3\cos A\end{equation}
思路 #
在这里我们只是讨论三次方程x^3+ax^2+bx=c的解法,原因在于这种三次方程在实际应用中更具有代表性。任意的这样的一道三次方程可以通过变换变成y^3+mx=n的形式,接着变成z^3\pm 3z=p的形式,z^3\pm 3z=p能够有相对简单的解法,所以就把三次方程的根相对简单地解出来(记住,这里一直强调“相对”,因为三次方程的解法再简单也不可能比二次方程的求根公式简单...)
变换 #
一、x^3+ax^2+bx=c \to y^3+mx=n
其实很简单,只要设x=y-a/3,代入原方程,得到:
y^3+(b-\frac{a^2}{3})y=c+\frac{ab}{3}-\frac{2a^3}{27}
对比y^3+mx=n,不难发现:
m=b-\frac{a^2}{3},n=c+\frac{ab}{3}-\frac{2a^3}{27}
变换完成。
二、y^3+mx=n \to z^3\pm 3z=p
这里的“\pm ”与m的符号相同。令y=\lambda z,代入并整理,得到z^3+\frac{m}{\lambda^2}=\frac{n}{\lambda^3},对比z^3\pm 3z=p,就可以得到:
\begin{aligned}\frac{m}{\lambda^2}=\pm 3&,\frac{n}{\lambda^3}=p\\
\lambda=|m/3|^{(1/2)}&,p=n|\frac{3}{m}|^{(3/2)}\end{aligned}
变换完成。
解答 #
现在问题集中到解z^3\pm 3z=p类型的方程上了,我们需要分开来讨论。
首先考虑z^3+3z=p,令z=A^{-1}-A,代入方程后整理得到A^{-3}-A^3=p,通过换元可以将其变为一元二次方程。但我们不这样做,令A^3=\tan B,利用“知识储备”的公式(1),变成\frac{2}{\tan 2B}=\frac{1}{\tan B}-\tan B=p,即\tan 2B=\frac{2}{p},反推得A=(\tan \frac{\arctan \frac{2}{p}}{2})^{(1/3)}。至此,解答完毕。从图像可以看出,对于所有的p,该方程都有且只有一个实数根。
接着考虑z^3-3z=p,令z=A^{-1}+A,代入方程后整理得到A^{-3}+A^3=p,同样通过换元可以将其变为一元二次方程。而我们模仿上述做法,令A^3=\tan B,利用“知识储备”的公式(2),变成\frac{2}{\sin 2B}=\frac{1}{\tan B}+\tan B=p,即\sin 2B=\frac{2}{p},反推得A=(\tan \frac{\arcsin\frac{2}{p}}{2})^{(1/3)}。
也许有朋友认为到此已经解答完成了。然而我们注意到,上一步中的A表达式中有一项是\arcsin\frac{2}{p},这仅仅对|p|> 2奏效。但从图像可以看出,当|p|\leq 2时,该方程并非无实数根,而是有2~3个实数根。这样就需要我们寻找另一种方法来解决这个特殊情况。这一次,我们利用到了知识储备中的公式(3)。方程z^3-3z=p可以改写成4(z/2)^2-3(z/2)=p/2,这样每一项的系数都与公式(3)对应,这样我们就有\cos 3A=p/2,2\cos A=z,反推得到z=2\cos(\frac{\arccos (p/2)+2k\pi}{3}),(k=0,1,2),这样就得到了三个实数根了。至此,三次方程的求解基本完成。
汇总 #
在这里把上面的过程整理一下:
对于一般的三次方程x^3+ax^2+bx=c,先做以下计算
m=b-\frac{a^2}{3},n=c+\frac{ab}{3}-\frac{2a^3}{27},p=n|\frac{3}{m}|^{(3/2)}
m是正数或0表明该方程只有1个实数根,执行第(I)步;m是负数,且p>2则说明该方程的有1个实数根,p=2则说明该方程有2个实数根,p<2说明该方程有3个实数根,执行第(II)步;当m=0时候,该方程有1个实数根,执行第(III)步
(I).(m>0)
\begin{aligned}A=(\tan \frac{\arctan \frac{2}{p}}{2})^{(1/3)},z=A^{-1}-A \\ x=|m/3|^{(1/2)}z-a/3\end{aligned}
(II).1.(m<0,|p|>2)
\begin{aligned}A=(\tan \frac{\arcsin\frac{2}{p}}{2})^{(1/3)},z=A^{-1}+A \\ x=|m/3|^{(1/2)}z-a/3\end{aligned}
(II).2.(m<0,|p|<2)
\begin{aligned}z=2\cos(\frac{\arccos (p/2)+2k\pi}{3}),(k=0,1,2) \\ x=|m/3|^{(1/2)}z-a/3\end{aligned}
(III).(m=0)
x=\sqrt[3]{n}-\frac{a}{3}
结论 #
经过上述变换和求解,我们可以发现,任何实系数三次方程都可以变换成z^3\pm 3z=p的形式(p是实数),而z^3\pm 3z=p总有一个实数根,也就是说我们藉此也证明了任何三次方程都有不少于一个实数根。
也许有人问,我想求出非实数根要怎样做呢?这其实可以利用韦达定理,对于三次方程x^3+ax^2+bx=c的三个根,有以下关系:
x_1 x_2 x_3=c;x_1+x_2+x_3=-a
如果已经知道一个实数根,那么上式就成为了一个二元二次方程组,可以轻松地求出。在此不再详述。
把三角函数与三次方程求根相结合,这思路来源已久,只是一直未能将其一般化。通过研究《天体力学引论》,我得到了灵感,并且通过网络,我找到了相关公式,把这些搜寻到的资料整理起来,就得到了眼前的这一套求三次方程根的解法。由于所用到的公式之中,没有任何一条是我自己“独创”的,因此不敢狂妄地称“自创”了新解法。灵感也只是来源于对解方程的执着以及网络以及书籍的帮助,所以实在不值一提。但是仍然希望读者阅读或转载时能够链接一下科学空间,让更多的人认识科学空间^_^。
转载到请包括本文地址:https://spaces.ac.cn/archives/831
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Aug. 08, 2010). 《三次方程的三角函数解法 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/831
@online{kexuefm-831,
title={三次方程的三角函数解法},
author={苏剑林},
year={2010},
month={Aug},
url={\url{https://spaces.ac.cn/archives/831}},
}
August 9th, 2010
强大,比我在数学手册这样的书上看到的简单多了
August 9th, 2010
先顶了。
August 9th, 2010
膜拜卡丹鼻祖
卡丹只不过是因为公开了三次方程的求根公式而出名,而创始人是塔塔利亚和费罗(塔塔利亚比费罗更深入),只不过因为那时候的坏风气,他们都秘而不宣。卡丹向塔塔利亚请教,并且违背诺言地公开了,并且注明了是塔塔利亚发现的。但是最终还是闹起了一场纷争,并且三次方程的求根公式最终却以“卡丹公式”命名。历史再次重演了“阿拉伯数字”的错误,应该叫“塔塔利亚公式”才对...
想不到你也知道哈。
我在数学演义上看到的。
June 27th, 2011
先顶一个
把两个三角万能公式变形一下 挺有新意
但是阁下百密一疏
那就是没有考虑到p=0的情况(非常简单的一个特例)
因为p=0时 tan2θ sin2θ都没有意义了
楼主再完善一下就更好了
谢谢指出,我的确疏忽了,不过p=0时可以用(II)公式吧?
June 27th, 2011
此外
顺便跟楼主提一下
我也研究过用三角函数解三次方程的方法
其实只需用一个公式(楼主的第三个公式 余弦三倍角公式)就可以概括任意一元三次方程
在第二步化简中,楼主正负号取舍与m值有关,其实大可不必,只要让λ在复数范围内取值,通通可以化为Z*Z*Z-3z=p的形式
然后通通用余弦三倍角公式
楼主考虑到cos3θ>1或cos3θ
提出这种方法就是为了避免出现复数运算,因为在相当多的情况下我们都只需要针对特定的方程求出实数的根。最直接的例子就是天体力学的二体问题中有一个抛物线轨道的方程,需要求解三次方程的。
July 7th, 2011
盛金公式好算
October 22nd, 2016
啥玩意 有个地方变换错了
November 28th, 2020
这位先生,请问sin2B=2/p会大于1吗?P小于2怎么办?什么角度正弦会大于一呀。
p可能小于2,本文后面已经写了p小于2怎么处理了
July 11th, 2023
写的挺好的。 对于平移变换、伸缩变换转化成z^3\pm3z=p都挺好理解的,不太能理解的是z=A^{-1}\pm A, 这个变换是怎么想到的。
确实我也没什么直觉的思路。事实上就当时那个年代而言,任何的事后解释都是马后炮了。
May 18th, 2024
直接沿用上次代数解方程的结果推导更简单:
基本思想:使用变量替换消除平方项,令x = y + \alpha ,则得到
(y + \alpha)^3 + b (y + \alpha)^2 = \cdots + 3 \alpha y^2 + b y^2 + \cdots 立即得到\alpha = - b/(3a)
对于方程y^3 + py + q = 0 ,重要的是使用三次展开式(使用A + B也可以)
(A - B)^3 = A^3 - 3 A^2 B + 3 A B^2 - B^3
(A - B)^3 + 3AB (A - B) - A^3 + B^3 = 0
令y = A - B,p = 3AB 和 - q = A^3 - B^3
将B = \frac{p}{3A} 代入方程-q = A^3 - B^3 得到
A^3 - \frac{(p/3)^3}{A^3} + q = 0
令A=\lambda y 代入得到
\lambda^3 y^3 - \frac{(p/3)^3/\lambda^3}{y^3} + q = 0
令\lambda^3 = \frac{p^3}{(3\lambda)^3} 则得到\lambda = \pm \sqrt{p/3}
当\lambda = \sqrt{p/3} ,则有
(p/3)^{3/2}(y^3 - y^{-3})=-q
y^{-3} - y^{3} = q(p/3)^{-3/2}
令y^3 = \tan\theta 根据1/\tan \theta - \tan \theta = 2/\tan(2\theta)
则2/\tan(2\theta) = q(p/3)^{-3/2}
\tan (2\theta) = 2(p/3)^{3/2}/q