发表新帖
帖子 投票 活动
回复本帖

一般复系数三次方程的谢国芳求根公式——最棒的三次方程求根公式  [复制]

阅读[-----] 回复[107]

发表于2012/12/1 16:35:00 只看楼主  

楼主

分享到: qq sina kaixin renren



 

 

   转载自 独立语言学者和数学研究者谢国芳(Roy Xie)的网站

 

   http://www.xieguofang.cn/Maths/Cubic/cubic_Xie_Formula1.htm

[本帖最后由:roixie 最后编辑于 2012-12-01 16:36:34]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 9:54:00 只看该用户

沙发

卡丹公式也不错

-关注 -粉丝 129帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 14:48:00 只看楼主

板凳

卡丹公式作为三次方程的求根公式,存在很多缺陷:

第一,它仅仅是针对没有二次项的特殊三次方程 x^3 + px + q = 0 的求根公式,对于一般形式的三次方程 a^3 +b x^2 + cx + d = 0 ,需要经过变换先从a, b, c, d 求出相应参数 p, q 的值后才能套用公式求解,显然,这在实际应用中是很不方便的。拿二次方程的情形作类比,卡丹公式相当于只是没有一次项的二次方程 x^2 + p = 0 的求根公式,而对于一般形式的二次方程 ax^2 + bx + c = 0,你必须自行设法变换到 x^2 + p = 0 的形式后才能求解。(而二次方程的求根公式之所以有用,正是因为自动实现了这一变换)

第二,即使限于没有二次项的三次方程 ,卡丹公式的复杂结构和冗长笨重的表达式也令人望而生畏,特别是对于比较复杂的数值,由于需要反复地乘方开方,计算相当繁复。

第三,对于实系数的三次方程,当 (p/3)^3 + (q/2)^2 < 0 时,虽然方程的三个根全都为实数,但卡丹公式却是通过复数的立方根来表示这三个实根,为了求出三个实数值,不得不进行复数的开方运算,这是一件相当别扭和麻烦的事情(专门针对实系数三次方程的谢国芳求根公式(http://www.xieguofang.cn/Maths/Cubic/cubic_Xie_formulae_real_form1.htm)很好地解决了这个问题)。

第四,卡丹公式中两个立方根的取值并不是自由的,必须加上乘积等于 -p/3 这个条件( 很多人不知道卡丹公式的这个“陷阱”,包括一个审阅我的论文的数学教授,唉!中国的大学数学教授就是这个水平),倘若没有这个约束条件,因为在复数域内每个立方根有三个值,卡丹公式总共就会给出九个值,必须依靠该约束条件才能从中选出方程的三个根。卡丹公式的这个弊端在求解实系数三次方程的时候可能还不容易被人察觉,但在求解复系数三次方程的时候就会凸显出来。你试着用卡丹公式解一个复系数的三次方程试试看就会明白这一点。

[本帖最后由:roixie 最后编辑于 2012-12-03 15:05:36]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 15:38:00 只看楼主

地板

卡丹(Cardan,也译作卡当、卡尔达诺)公式在理论上解决了三次方程的求解问题,可以说是一个在数学史上赫赫有名、意义非凡的公式,但在实际应用中却遭受“冷遇”,虽然它是一个精确的求根公式,但在实际应用中人们往往宁可采用其他近似的数值方法(如二分法、牛顿切线法和各种迭代法等)而不愿意用它来解三次方程,造成这一“怪状”的原因在很大程度上不能不归咎于卡丹公式本身的缺陷(如上所陈)。

[本帖最后由:roixie 最后编辑于 2012-12-03 15:42:43]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 15:40:00 只看楼主

4

但对于复系数三次方程,传统的数值方法(如二分法、牛顿切线法)是无能为力的。

[本帖最后由:roixie 最后编辑于 2012-12-03 15:41:37]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 16:47:00 只看该用户

5

解一元二次方程用配方法太麻烦了,请看最棒的求根公式x=(-b±△)/2a
第一,传统的一元三次方程是有直接用abcd来求根的公式的,http://baike.baidu.com/view/460155.htm,

百度上已经贴了很多年了。你的公式只不过是用换元法,偷换了几个式子而已!

第二,你的公式并不简单,只是把卡丹先生的公式换了个形式而已。

第三,难道你的那个最棒的公式不需要开复数的三次方根?你再仔细看看?

第四,你所讲的完全没有任何意义,求出第一个立方根显然是代入mn的值来求另外一个,不可能有人会解出

9个来。


论坛里的大师们都太低调了,这样会让初学者看到之后真的以为这个公式是谢国芳发明的。

-关注 -粉丝 0帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:07:00 只看楼主

6

你懂不懂复数的立方根?

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:08:00 只看该用户

7

补:卡丹公式确定第一个实根不需要开复数三次方,确定了第一个之后正常人都是用一元二次方程来求另外2个的。

-关注 -粉丝 0帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:09:00 只看楼主

8

实践是检验真理的唯一标准,请解几道实际的复系数三次方程例题试试!

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:13:00 只看楼主

9

例题1 解复系数三次方程 (6+3i)x^3 + (3+3i)x^2 + 2x + 1 = 0

我的解法见这里 http://www.xieguofang.cn/Maths/Cubic/cubic_Xie_Formula1.htm#examp2

[本帖最后由:roixie 最后编辑于 2012-12-03 17:21:04]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:15:00 只看楼主

10

更快的解法见这里 http://www.xieguofang.cn/Maths/Cubic/cubic_Xie_Complex_Formula1.htm#examp2

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:16:00 只看楼主

11

你用卡丹公式或任何其他公式解给我看看!

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:23:00 只看楼主

12

答案可以用韦达定理或用几何画板或用Mathematica验证

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:54:00 只看该用户

13




除了你的计算软件比较强力外,看不出那里快?如果用软件来计算,卡丹先生的公式只需要3步而已。

又或者说你是手动计算的?

-关注 -粉丝 0帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 17:57:00 只看该用户

14

而且你的公式只不过稍微把卡丹先生的公式换元一下而已。

-关注 -粉丝 0帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/3 19:26:00 只看楼主

15

卡丹公式是我的公式中当a=1, b=0, c=p, d=q时的特殊情形,按卡丹公式计算当然也可以得解,但计算非常繁复(比较你的公式和我的公式就一目了然),会做很多无用功,当然,问题并不仅仅在于计算,从我的公式得到的精确解,可以看清三次方程解的本质,今天有事暂且到此,明天再跟你讨论如何

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 9:53:00 只看该用户

16

卡丹公式只不过多了步变式

-关注 -粉丝 129帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 13:33:00 只看楼主

17

 

 

首先声明一下,解这些方程我并没有使用任何计算软件(一年多前发现该求根公式的时候我手头还没有Mathematica),只是借用了我的念初中的外甥的一个便携科学计算器,后来才晓得每个电脑的附件里面都藏着一个很好的计算器(我的那个有32位的精度),再后来才从外甥那里copy了一个几何画板,上面有解四次以下代数方程的功能,但不怎么好用,精度很低。最近才化大钱购买了一个Mathematica软件,功能强大得让人叹服,可以把方程的解算到任意精度,但代价也不小(正版的要两千多美元),原来我还用韦达定理验证解的正确性,有了Mathematica,大大方便了验证,但也仅此而已,我并不靠它计算(所有计算早在一年前完成了)。顺便指出一下,Mathematica给出的三次方程的数值解无话可说,但精确解的形式是非常笨拙臃肿难看的,用我的公式可以得到漂亮得多的解析表达式。

 

比较两个求根公式的优劣,必须规定不得使用专门的计算软件(这道理不用我解释吧,无论多么复杂的公式——包括维基百科上三次方程页上那个臃肿不堪的一般三次方程的求根公式,计算软件都能瞬间给你算出结果),所以,PK的规则是限定只能用手算或者使用普通的计算器,讲清楚这一规则,那么我的公式和卡丹公式孰优孰劣,你只要随便拿一道一般性的例题就能判别,为了计算方便不妨选取实系数的例题(我的专门对付实系数的更简单的公式见http://www.xieguofang.cn/Maths/Cubic/cubic_Xie_formulae_real_form1.htm,它可以从本帖顶上的那个公式轻松导出),例如下面这两题:

 

例题2  解三次方程 27X^3 - 10 X^2 – 10X – 10 = 0

 

 

例题3  解三次方程 x^3 + 0.683x^2 – 0.1973x – 0.00000144 = 0

 

 

我的解法见 http://www.xieguofang.cn/Maths/Cubic/cubic_Xie_formulae_real_form1.htm

 

相关计算全部可以在普通的科学计算器或电脑自带计算器上迅速完成,你还会享受到计算的乐趣,看到自己是怎样清清爽爽、明明白白地把方程的根亲手算出来的!(it’ll give you a certain sense of achievement, and a sense of empowerment!

 

另外,我的专门对付实系数的公式不要求计算者懂复数(一个普通的初中生就能用它解所有的实系数三次方程),而用卡丹公式解例题3必须会开复数的立方根。

 

[本帖最后由:roixie 最后编辑于 2012-12-04 14:25:45]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 13:41:00 只看楼主

18

 

  顺便说一下,我有十多年和数学彻底绝缘了,一年多前才慢慢开始恢复对数学的兴趣(其中一个因素是要辅导外甥外甥女们的数学作业,另一个因素是为了学拉丁语研读牛顿的拉丁文原著《自然哲学的数学原理》,还有一个因素是偶然看到了失去音讯多年的好友卢昌海的个人网页,他的《黎曼猜想漫谈》系列在网上很出名,现在已经出版了)。之前一直在做外语方面的工作,学英法日德俄等多国外语和研究外语学习法,对外语有兴趣的朋友可以去我的个人网站看看。想要学好数学,达到一流水平,必须学好外语,光懂英语还不够,最好是多国外语(陈景润就是一个好例子),特别是法语和德语,因为近现代数学基本上是法国和德国的数学家们创造的。

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 13:50:00 只看楼主

19

 

 

言归正传,说到参数变换,你说得没错,我的公式和卡丹公式之间就差一个参数变换,这个变换把解析表达式和计算变简单了(这一点似乎上楼的 DannyPassante 也承认,他在上面说,“卡丹公式只不过多了步变式”),难道不好吗?

 

数学的本质正在于变换,不断地通过巧妙的变换把复杂笨重的东西变得简单轻灵。

 

例如,从一个三维转动的转轴转角参数到四元数就是一个美妙的参数变换,它大大方便了相关计算。

 

再以五次方程为例,一个一般形式的五次方程 aX^5+bX^4+cX^3+dX^2+eX + f = 0 都可以通过参数变换化为 X^5 + X +λ= 0 的形式(当然这是一个非常复杂的匪夷所思的参数变换,叫做 Bring-Jerrard 变换),整个方程只有一个特征参数λ。

 

实际上,我所引入的三次方程的关键比χ正相当于五次方程的这个特征参数λ。

 

卡丹公式用两个特征参数 p, q 描述三次方程,而我的公式中真正本质的参数只有一个,那就是关键比χ,你说是一个参数简单还是两个参数简单?

 

[本帖最后由:roixie 最后编辑于 2012-12-04 14:02:29]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 15:11:00 只看楼主

20

用卡丹公式,三次方程 aX^3 + bX^2 + cX + d = 0 的解的表达式的核心是两个变量 p, q 的函数, 而在我的公式中,三次方程的解的表达式的核心(可称之为“解核”)仅仅是一个变量 χ 的函数,你说是两个变量的函数简单还是一个变量的函数简单?

 

用卡丹公式,三次方程的解核函数(kernel function

 

f(p, q) =  (-q/2 +((p/3)^3+(q/2)^2))^(1/3) - p/3(-q/2 +((p/3)^3+(q/2)^2))^(1/3)       1.0

 

我的公式中的解核函数

 

                        f(χ) = k + 1/k = (χ+(χ^2-1))^(1/3) + (χ+(χ^2-1))^(-1/3)         1.1

 

三次方程a^3 +b x^2 + cx + d = 0 的解为

 

                             x  =  ( - b +D f(χ))/3a                        1.2

 

你看到了吗,它和二次方程的求根公式 x =  (- b ±√Δ )/2a 何其相似之甚!只多了一个解核函数f(χ)

 

注意 Δ = b^2- 4ac,  D = b^2- 3ac 又何其相似之甚!这是多么地方便记忆啊!

 

对于实系数的三次方程aX^3 + bX^2 + cX + d = 0D = b^2- 3ac 可以称为第一判别式(First Discriminant, or you can take D to be the first letter of Delta)。当D<0时,你马上可以判定方程只有一个实根,另两个根为共轭虚根。

[本帖最后由:roixie 最后编辑于 2012-12-04 15:17:30]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 15:32:00 只看楼主

21

 

无论在实际计算还是在理论分析上,解核函数 f(χ)(见上楼的(1-1)式)显然都大大优越于卡丹公式解核函数 f(p, q)(见上楼的(1-0)式),这实在是一目了然的事。计算先不谈吧,现在来说点理论方面的问题。

 

倘若我们要研究方程的根和系数之间的依赖关系(当方程的系数发生微小变化时根的微扰,或者怎样从系数的精度误差推求根的精度误差),用我的公式只需求 f(χ) 的导数(这很容易,往下看便知),而用卡丹公式则要分别求对 p,q 的偏导数,你把卡丹公式(上楼的(1-0)式)对 p,q  求偏导数试试看,得到的将是多么复杂笨重的表达式!

 

更妙的是,解核函数 f(χ) 即上楼的(1-1)式中定义的那个函数通过参数变换(又是变换!)又可以化为一个非常简单的函数,你能猜到是什么函数吗?

 

三角余弦(或正弦)函数!

 

我们先来看当关键比 χ 为实数且| χ|1 的情形,这时候令 χ = cosθ,

 

χ +(χ^2-1)  =  cosθ + ((cosθ)^2 - 1)  =  cosθ+ isinθ = exp (iθ)

 

(χ +(χ^2-1))^(1/3)  =  exp (iθ/3)

 

 

代入解核函数 f(χ) 的表达式(上楼的(1-1)式)即得

 

f(χ)  =  exp (iθ/3) + exp (-iθ/3)  = 2cos(θ/3),          其中 θ = arccosχ

 

   f(χ)  =  2cos((arccosχ)/3)

 

代入上楼的(1-2)式即得

 

                               x  =  ( - b  + 2D cos((arccosχ)/3))/3a                     (1.4)

 

这是一个多么简洁美妙的公式!

 

注意上述公式中的 arccosχ 应该理解为多值的(即所有满足 cos y = χ 的 y ),设它的主值即在 [0, π] 间的值为θ,记作 cos-1χ, 因为余弦函数的周期性,容易看出式(1.4)所能取到的值只有三个,分别对应于 arccosχ = θ, θ+2π, θ-2π它们正好给出方程的三个根:

 

    x1  =  ( - b  + 2D cos(θ/3))/3a  

 

    x2  =  ( - b  + 2D cos(θ/3 + 2π/3))/3a                            (1.5)

 

    x3  =  ( - b  + 2D cos(θ/3 - 2π/3))/3a 

 

其中 θ = cos-1χ   cos-1(x) 为标准的单值反余弦函数,也就是计算器上的反余弦函数)

 

 

该公式就是我的实系数求根公式中的三角求根公式。

 

如果采用角度而不是弧度,上面的三角公式即

 

    x1  =  ( - b  + 2D cos(θ/3))/3a  

 

    x2  =  ( - b  + 2D cos(θ/3 + 120°))/3a                             (1.6)

 

    x3  =  ( - b  + 2D cos(θ/3 - 120°))/3a 

 

其中 θ = cos-1χ.

 

 

但在实际计算中,用弧度计算的精度要优于角度,以后再解释为什么(你可以先思考一下这个问题,答案在前面已经埋下了)。

 

当然,如果你不在乎解的精度或者有效数字的问题,那么用式(1.6)也可以,这在计算器上操作更方便一些。

 

为了考察采用弧度和角度对计算精度或者说有效数字的影响,你不妨做一下17楼中的例题3, 即

 

例题3   解三次方程 x^3 + 0.683x^2 – 0.1973x – 0.00000144 = 0

 

易算得该方程的关键比 

                   χ - 0.8495148695069017

 

然后分别用弧度和角度计算θ = cos-1χ,  再分别代入式(1.5)和(1.6)求解,如果你眼明心细的话,你会观察到细微的差别。

 

 

 

 

 

 

 

 

 

[本帖最后由:roixie 最后编辑于 2012-12-05 13:11:04]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 15:35:00 只看楼主

22

 

倘若你有一点复变函数的知识,你马上会想到,上楼中的式(1.4)可以推广到任意的复 χ 值,只要把其中的三角余弦函数及其反函数理解为复变函数。

 

(复三角余弦函数由欧拉公式给出:cosz  =  ( exp(iz) + exp (-iz))/2

 

在复平面上,从上楼的式(1.4)即

 

       x = ( - b + 2D cos((arccosχ)/3))/3a

 

你可以清晰地“看见”方程的根是怎样由关键比 χ 产生的!

 

[本帖最后由:roixie 最后编辑于 2012-12-04 15:57:07]

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 18:42:00 只看该用户

23

我用计算器解了几个三次方程 用谢国芳公式得确比卡丹公式快得多。 好公式!!!

-关注 -粉丝 1帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 18:46:00 只看该用户

24

楼主很厉害!!学到了好多东西 感谢

[本帖最后由:数学爱好者11 最后编辑于 2012-12-04 18:48:41]

-关注 -粉丝 4帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/4 19:07:00 只看该用户

25

顶,很喜欢楼主的网站

-关注 -粉丝 2帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/5 0:02:00 只看该用户

26

看到楼主的3个马甲,压力山大…………

-关注 -粉丝 68帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/5 10:44:00 只看该用户

27

楼主是学什么专业的? 这个公式很深刻, 不是业余的的人能写的

-关注 -粉丝 129帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/5 11:54:00 只看该用户

28

http://euler.tn.edu.tw/20121007%E8%A7%A3%E4%B8%80%E5%85%83%E4%B8%89%E6%AC%A1%E6%96%B9%E7%A8%8B%E5%BC%8F.pdf顺便给个联结 参考

-关注 -粉丝 129帖子

积分:
经验:
威望:

发私信 关注TA

发表于2012/12/5 11:58:00 只看楼主

29

原来学理论物理

-关注 -粉丝 143帖子

积分:
经验:
威望:

发私信 关注TA

使用高级回复(可批量传图、插入视频等)

快速回复

写好了,发布 Ctrl + Enter 快速发布 手机验证

页面执行时间: 0.1248 second(s)speed test 电脑版 | 极速版 | 触屏版| 客户端

意见反馈

返回顶部