ACT旧帖

卡丹与三次方程

星期一, 3月 16th, 2009

一九九六年,图雅等人在中文网上发起“奥秘工程”,号召大家为中小学生撰写科普文章,结集在国内发表,为孩子们做些事。下面这篇文章就是为“奥秘工程”写的。可惜“奥秘工程”最后不了了之。
图雅又称秃鸦,是中文网一大传奇人物。他好像也是数学出身。他写了一篇关于三次方程的故事,我本来是催他接下去写写卡丹,但是在众网友的怂恿下,自己出手了  两篇文章同时发在新语丝1997年增刊第一期。
 卡丹与三次方程 图雅的文章中讲到,费厄用三次方程向方台纳挑战,方台纳大获全胜。象费厄的老师费罗一样,方台纳发现了三次方程X^3+MX=N的解法后,把它当作秘密武器,秘不示人。各地的信件象雪片一样飞来,向方台纳询问解法,但他一概不理。时间久了,人们见他不肯开口,渐渐地来信少了。但是其中有一个人,仍然一而再、再而三地来信,语气一次比一次恳切,最后说得方台纳也有些心软了。这个人来自米兰,名叫卡丹(Girolamo Cardano)。从此,故事出现了意想不到的转折。
 在继续讲三次方程的故事之前,这里有必要讲一讲卡丹其人。
 卡丹的一生很不平凡,可以算是跌宕起伏,波澜壮阔。他的出生就不一般:卡丹的父母并不想要这个孩子,他们用尽了各种堕胎药,但始终没有奏效。卡丹出生的时候又是难产,用他在自传中的话说,是“被硬生生地从母亲的子宫中拽出来的”。呱呱坠地后又差点夭折,是医生用热酒给他从头到脚洗了一遍,才保住了性命。
 出生就如此艰难,可以想像卡丹一辈子的身体状况都很差。一连七八夜失眠是家常便饭,心脏、肾脏功能不良,还有大大小小的各种其他疾病。实际上他的精神也不完全正常。他经常狠咬自己的嘴唇,狠扭手指或猛掐胳臂上的皮肤,直到疼得流出眼泪。照他自己的说法,这样做是因为停下来时的感觉无比舒畅。
 健康状况不佳,并不是卡丹仅有的困难。他在帕多(Padua)大学读医科,以优异成绩毕业,然而米兰地方政府却不发给他行医执照。很明显,他的古怪性格是不发给他执照的一个主要原因。这段时间是卡丹一生中的一个低谷。于是他只好搬到帕多附近的小城萨可(Sacco),在那里行医。一天夜里,他梦见了一位白衣少女。而时隔不久,他就遇到一位姑娘,和梦中见到的一模一样。卡丹非常相信梦的含义,所以很快就爱上了这位姑娘并和她结了婚。
 卡丹不仅相信梦,还相信占星术,相信可以通过雷雨来预测未来事件。他相信自己有很多保护神,甚至在大庭广众之下和“保护神”说话。
 他的另一个爱好是赌博。他在自传中承认自己是个赌棍,天天都赌。好在他同时利用自己这个坏习惯进行了科学研究,写了一本名叫《机会的游戏》(Book on Games of Chance)的书,在他死后发表了。这是世界上第一本对概率论做严肃的数学探讨的书。
 卡丹在萨可从1526年住到了1532年。他感到在这个小城住下去实在没有发展前途,就带着妻子和一个儿子搬回了米兰。当然,在米兰他依旧被禁止行医。但是在这段时间,幸运之神终于开始向他微笑了。
他举办了很多科普讲座,在贵族中以及在知识界都大受欢迎。他的许多著作,从医学到宗教到数学,都获得了很大的成功。1536年,他发表了一篇揭露意大利医学界种种弊端的文章,引起舆论轰动,从此他正式获得了行医的权利。1539年米兰医学院聘用了卡丹,很快他就声名远播。在十六世纪中叶,卡丹大概是欧洲最有名的一位医生,他所诊治的病人中有著名的红衣主教,甚至教皇。
 可惜好景不长,家庭悲剧接踵而至。1546年,卡丹的妻子去世,年仅31岁,给他留下两儿一女。卡丹对长子蹇巴蒂斯塔(Giambattista)寄托了极大的希望。蹇巴蒂斯塔很聪明,继承了父亲在医学方面的天赋,在帕维亚(Pavia)获得了医学学位。1557年,蹇巴蒂斯塔不顾父亲的反对,和一个女人结了婚。事实证明这是一桩不和谐的婚姻。蹇巴蒂斯塔的妻子生育了三个孩子,但是她说,没有一个是蹇巴蒂斯塔的。蹇巴蒂斯塔愤怒已极,用毒药毒死了妻子。卡丹在儿子以谋杀罪被捕后,四方奔走求告,指望以自己的名望为蹇巴蒂斯塔免去死罪,但终于无济于事,眼睁睁地看着爱子被送上了断头台。祸不单行,不久他的小儿子也学了坏,沦为地痞,迫使卡丹几次亲自将他送进监狱。
 1562年,卡丹离开米兰,接受了波隆纳(Bologna)大学的一个医学职位。他带着蹇巴蒂斯塔的儿子法西奥(Fazio)赴任。法西奥并不是他的亲孙子,但对老年的卡丹来说,这孩子给他带来了他的亲生子女所没能带来的亲情。
 新的环境并没有给卡丹的生活带来安宁。当时意大利的教会正在极力反对欧洲的基督教改革运动,对各种“异端邪说”的惩罚非常严厉。卡丹在1570年被捕入狱,罪名之一是他曾写过一本书,书中介绍了一位反基督教的罗马皇帝。令人惊讶的是,在朋友的努力下,卡丹不仅后来获释出狱,还去了罗马,接受了由教皇亲自颁发的一份养老金。
 1576年9月20日,经历了一波三折、大起大落的一生,卡丹在平静中去世。用现代人的眼光看来,卡丹的一生非常富有传奇性,又充满了自相矛盾。他是个高产的作家,他的著作涵盖了很多方面的内容,有科学,也有非科学。他的思想一方面体现了现代的理性思维方式,另一方面又带有强烈的中世纪迷信色彩。一个世纪以后,著名数学家和哲学家莱布尼兹总结道:“卡丹是一位有很多缺陷的伟人;假如没有这些缺陷,他将是无与伦比的。”
 下面我们回过头来接着讲三次方程的故事。1535年,方台纳击败费厄之后,卡丹一次又一次地给方台纳写信询问解法。方台纳严辞拒绝,并说自己准备将来就这个解法写一本书。卡丹一开始很生气,但后来改变了策略,用恳切的语言请方台纳到米兰作客。1539年,在方台纳作客期间,卡丹以基督教徒的身份起誓,至死也要保守秘密,绝不向他人泄露。方台纳受了感动,于是把方程X^3+MX=N的解法告诉了卡丹。
 不久以后的一天,一个叫费拉里(Ludovico Ferrari)的年轻人来到卡丹家,希望找一份工作。卡丹把他收下做了仆人,但是很快发现这个孩子特别聪明,于是主仆关系迅速转变为师生关系。卡丹给费拉里讲了方台纳的解法,然后两人一起研究,取得了惊人的进展。对最一般的三次方程:X^3+bX^2+cX+d=0,卡丹找出了解法;然而他的解法依赖于把一般方程简化成X^3+MX=N的形式,而由于对方台纳的誓言,卡丹自己的发现也不能发表。同时,费拉里发现了四次方程的解法。这是代数学的一个巨大的进展,但是这个解法需要把四次方程简化为一个相关的三次方程来解,所以碍于卡丹的誓言,仍然不能发表。师徒二人手中掌握着当时代数上最重要的发现,却不能发表,其心情可想而知。
 1543年,卡丹和费拉里来到波隆纳。他们找到了费罗的手稿,其中就有X^3+MX=N形式的方程的解法。对于卡丹来说,这无疑解除了誓言的约束,因为这个解法来自费罗,而不是方台纳。至于费罗的解法和方台纳的解法一模一样这个事实,卡丹就假装不知道。
 1545年,卡丹发表了他的数学名著《伟大的艺术》(Ars Magna)。卡丹认为代数是一门“伟大的艺术”。这本书共有四十章。在书中,他介绍了不同形式的二次和三次等多项式方程的求解方法。第十一章讲的就是X^3+MX=N形式的方程。在这一章的开头,卡丹写道:“三十年前,费罗发现了这个解法并在后来教给了费厄。费厄向塔塔格利亚挑战,使塔塔格利亚有机会也发现了这个解法。他在我的恳求下把解法告诉了我,但没有讲它的证明。依靠这些协助,我证明了这个解法的正确性。这个问题难度极大。”
 塔塔格利亚就是方台纳。方台纳从小面部受伤,说话受影响,因此得了个外号“塔塔格利亚”(Tartaglia),意思是“结巴颏子”。后来他以塔塔格利亚出名,其本名“方台纳”却很少被提起。
 虽然卡丹在书中说明了塔塔格利亚的贡献,塔塔格利亚却不满意。他指责卡丹是个骗子,违背了基督教徒的神圣誓言。卡丹本人对这些指责采取高姿态,并不反驳;但是他的弟子费拉里对塔塔格利亚进行了猛烈的反击。费拉里反过来指责对塔塔格利亚抄袭费罗的结果。双方来来往往地互相指责,对立逐渐升级。1548年,塔塔格利亚来到米兰和费拉里进行公开辩论。卡丹没有出场,塔塔格利亚利用这一点攻击卡丹,说他是因为心虚。这场辩论最后发展到了白热化的程度,双方动了手。费拉里占有地利人和之便,所以最终塔塔格利亚能够得以生还,都属侥幸。
 至此,三次方程的故事算是告一段落。现在,三次多项式方程的根式解的公式,一般称为“卡丹——塔塔格利亚公式”。最后值得一提的是,1824年,年轻的挪威数学家阿贝尔(Niels Abel)证明了五次和五次以上的多项式方程不存在根式解,给多项式方程的求解问题画上了一个完整的句号。
(完)

乱点鸳鸯谱

星期一, 3月 16th, 2009

下面这篇是一九九五年九月在ACT上有人提问,题目是:A、B两个集合各有n个元素,本来有个一一对应的,但是如果随机配对,所有的配对都配错的概率是多少?(原题的描述要有趣一些,但是我不记得了)
乱点鸳鸯谱 (Re: 问题求解)
 这个问题有点意思,通俗地讲讲吧。
 话说月老给n对少男少女牵红线。谁知这位月老是个马大哈,闭着眼睛乱拴一气,到头来不知多少痴男怨女被错配鸳鸯,有情无缘。只不知道他老人家糊涂到什么程度,哪怕只拴对了一对儿也好嘛。下面就来算算连一对儿都拴不对的可能性有多大。
 因为总共有n对男女,一男一女之间拴红线,所有不同的拴法总数是n!(n的阶乘),所以只要数清一对儿都拴不对有多少种拴法,再除以n!就可以得出概率。这是一个计数的问题。
 一对儿都拴不对的拴法并不好数,我们可以先数至少拴对了一对儿的拴法,再从总数n!中减掉就行了。至少拴对了一对儿,怎么数呢?先从n对中任选一对作为拴对了的,这有C(n,1)种选择(C(n,1)是n中选1的组合数);其他红线就随便牵,共有(n-1)!种方法,由此得到一个结果:
 S(1) = C(n,1) * (n-1)!
 您如果细心,就会发现这个结果其实是不对的,因为假如某种拴法拴对了两对儿,那么它在S(1)中就被数了两次。所以需要把这些数过两次的算法减掉一次才对。至少拴对了两对儿,有多少种拴法呢?从n对中选出2对,有C(n,2)种选择;其余的红线随便牵,共(n-2)!种方法,于是:
 S(2) = C(n,2) * (n-2)!
 要算的总数是: S(1) - S(2)
 细心人会发现,类似的问题又来了:假如某种拴法拴对了三对儿,那么它在S(1)中被数了3次,在S(2)中也被数了3次,两数一减就没了,因此我们比须再把它加回来。用和前面同样的办法算出:
 S(3) = C(n,3) * (n-3)!
 要算的总数是: S(1) - S(2) + S(3)
 下面再考虑拴对了四对儿的拴法。仔细数数(也是用组合数来数),它在上面的S(1)中数了4次,S(2)中数了6次,而S(3)中又数了4次,加加减减之后还剩下2次,这多出的一次还是要减掉,所以:
 S(4) = C(n,4) * (n-4)!
 要算的总数是: S(1) - S(2) + S(3) - S(4)
 依此类推,最后算到n对儿全拴对的拴法数:
 S(n) = C(n,n) * 0!
 那么至少拴对了一对儿的拴法数目就是:
 S(1) - S(2) + S(3) - S(4) + … + (-1)^(n-1) * S(n)
 我们要数的是所有的红线都拴错了的拴法数,记为D(n),应该等于n!减去上面算出的这个数,就得出下列公式:
 D(n) = n! - S(1) + […]