Proofs without words

本文列举了十个无需语言解释的数学证明案例,包括勾股定理、反正切恒等式、算术与几何平均值不等式等,通过直观图形展示数学之美。

 http://www.guokr.com/article/58106/

当谈到复杂数学定理的证明时,很多人常常为之色变,认为这只是一个枯燥的公式堆砌和深奥的数学推导过程。这当然是一个让笔者感到纠结的误解。因为数学证明中包含的美丽与精巧实在是一道亮丽的风景线,而这种亮丽甚至不需要用语言来描述。所以我在这里盘点了数学里十大不需要语言的证明(proofs without words)。让读者在领略数学所包含的无与伦比的精巧之外,更从此爱上数学。

0. 勾股定理

这个大家小学就学过的古老定理,有着无数传奇故事。我可以很随意的写出她的10个不同的证明方法。而路明思(Elisha Scott Loomis)在 《毕达哥拉斯命题》( Pythagorean Proposition)提到这个定理的证明方式居然有367种之多,实在让人惊讶。这里给出一个不需要语言的证明方法。

http://img1.guokr.com/gkimage/59/o8/w6/59o8w6.png

实际上勾股定理是余弦定理的一种特殊情况,而余弦定理的证明,同样可以不用语言。

http://img1.guokr.com/gkimage/pj/e8/f1/pje8f1.png

1. 关于反正切的恒等式

关于反正切,有如下两个很精彩的等式:

arctan1/2+arctan1/3=π/4

acrtan1+arctan2+arctan3=π

它们的证明方法也同样精彩

http://img1.guokr.com/gkimage/zg/jr/w3/zgjrw3.png http://img1.guokr.com/gkimage/nw/qe/01/nwqe01.png

2. 几何平均值小于算术平均值

这是不等式中最重要和基础的等式:

http://img1.guokr.com/gkimage/71/gi/w6/71giw6.png

它也可以通过图形来证明。

http://img1.guokr.com/gkimage/72/u4/3y/72u43y.png

注意到△ABC∽△DBA ,可以很轻松地得到AB=√ab。剩下的就显而易见了。


3. 1+3+5+…+(2n-1)= n 2

这是奇数的求和公式,下图是当n=8时的情形

http://img1.guokr.com/gkimage/cq/1e/b5/cq1eb5.png

4. 平方数的求和公式

http://img1.guokr.com/gkimage/om/n0/yt/omn0yt.png http://img1.guokr.com/gkimage/a6/ur/th/a6urth.png

5. 立方数的求和公式

http://img1.guokr.com/gkimage/y7/9s/66/y79s66.png http://img1.guokr.com/gkimage/le/dl/i2/ledli2.png

6. 斐波那契数列的恒等式

可谓家喻户晓的斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21 ……

这个数列从第三项开始,每一项都等于前两项之和, F n+1 = F n + F n-1

它的通项公式是

http://img1.guokr.com/gkimage/js/vi/u3/jsviu3.png

有趣的是,这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。而且当n无穷大时 F n-1 / F n 越来越逼近黄金分割数0.618。正因为它的种种神奇性质,美国数学会甚至从1960年代起出版了《斐波纳契数列》季刊。关于斐波那契数列,有一个恒等式是这样的

http://img1.guokr.com/gkimage/3h/le/o8/3hleo8.png

这个等式很漂亮,不需要借助复杂的数学推导,它有一个很直观的证明方法

http://img1.guokr.com/gkimage/7u/0w/4i/7u0w4i.png

7. 结果为1/3的一组分子式

下面是一组分子式,他们的结果都等于1/3 :

http://img1.guokr.com/gkimage/3b/ec/8j/3bec8j.png http://img1.guokr.com/gkimage/4s/m4/v7/4sm4v7.png

8. 最受数学家喜爱的无字证明

1989 年的《美国数学月刊》(American Mathematical Monthly)上有一个貌似非常困难的数学问题:下图是由一个个小三角形组成的正六边形棋盘,现在请你用右边的三种(仅朝向不同的)菱形把整个棋盘全部摆满(图中只摆了其中一部分),证明当你摆满整个棋盘后,你所使用的每种菱形数量一定相同。

http://img1.guokr.com/gkimage/vf/of/8m/vfof8m.png

《美国数学月刊》提供了一个非常帅的“证明”。把每种菱形涂上一种颜色,整个图形瞬间有了立体感,看上去就成了一个个立方体在墙角堆叠起来的样子。三种菱形分别是从左侧、右侧、上方观察整个立体图形能够看到的面,它们的数目显然应该相等。

http://img1.guokr.com/gkimage/et/ix/dx/etixdx.png

它把一个纯组合数学问题和立体空间图形结合在了一起,实在让人拍案叫绝。这个问题及其鬼斧神工般的“证明”流传甚广,深受数学家们的喜爱。死理性派曾经讨论过 这个问题 。同时它还是死理性派logo的出处。

9. 棋盘上的数学证明

在一个8×8的国际象棋棋盘上,我们可以用32张多米诺骨牌(是两个相连正方形的长方形牌)覆盖整个棋盘上的64个方格。如果将对角线上的两个方格切掉,剩下来的62个格子还能用31张骨牌覆盖住吗?

http://img1.guokr.com/gkimage/ia/e7/ky/iae7ky.png

答案是不能的。每一张骨牌在棋盘上必是覆盖住两个相邻方格,一白一黑。所以31张骨牌应该可以盖住31个黑格和31个白格。而这被切了角的棋盘上的方格有32个是一种颜色,另一种颜色是30个,因此是不能被31张骨牌覆盖的。

但是如果我们切掉的不是颜色相同的两个呢?假如我们从棋盘的任何部位切掉两个颜色不同的方格,那么剩下来的62格是否一定能被31张骨牌完全盖住?我可以告诉你这是一定能做到的,并且关于这个结论,存在一个非常漂亮的证明。建议读者在继续往下阅读前,可以先自行思考如何证明这个结论。

http://img1.guokr.com/gkimage/lr/i8/l8/lri8l8.png

上图就是那个漂亮的证明。不妨对它再赘述两句。粗黑线条将整个棋盘转变为一条首尾相连、黑白格相间的封闭路线。从这棋盘上切掉任何两个颜色不同的方格,会让这个封闭线路变成两段线路(如果切掉的方格是相连的,那就是一条线路)。在这两段(或一段)线路中,两种颜色的格子数量都是偶数,故分别都可以被若干张骨牌覆盖。从而证明整个棋盘可以被31张骨牌完全覆盖。

这个著名的棋盘问题是数学游戏大师马丁•加德纳提出的,而上述精妙绝伦的证明则是数学家哥莫瑞(Ralph Gomory)找到的。它们后来被收录在《意料之外的绞刑和其他数学娱乐》这本书里。

 

zkLLM(针对大语言模型的零知识证明)是一种将零知识证明技术应用于大语言模型的方案。在论文“zkLLM: Zero Knowledge Proofs for Large Language Models”中,其核心目标是在保护大语言模型隐私的同时,证明模型计算的正确性。 从原理上来说,零知识证明允许一方(证明者)向另一方(验证者)证明某个陈述是正确的,而无需透露除了该陈述为真之外的任何额外信息。在大语言模型的场景下,证明者可以是运行大语言模型推理的一方,验证者可以是需要确认推理结果正确性但又不希望获取模型内部参数和中间计算过程的一方。 在应用方面,zkLLM具有重要价值。例如在数据隐私保护上,对于一些敏感数据输入到模型进行推理时,使用zkLLM可以确保数据的隐私性,同时让验证者相信模型输出的结果是基于正确的计算得出的。在模型知识产权保护上,模型所有者可以在不泄露模型具体参数的情况下,向客户证明模型推理结果的正确性,避免模型被盗用。 在技术实现上,可能需要解决一些挑战。大语言模型的计算复杂度高,生成零知识证明需要处理大量的计算和数据,这对计算资源和时间成本提出了很高要求。同时,如何高效地将零知识证明算法与大语言模型的架构进行集成也是一个需要解决的问题。 ```python # 这里只是一个简单示意,并非实际可运行的zkLLM代码 # 假设我们有一个简单的模型推理函数 def simple_llm_inference(input_data): # 模拟大语言模型的推理过程 return input_data * 2 # 模拟生成零知识证明 def generate_zk_proof(input_data, output_data): # 这里应该是复杂的零知识证明生成算法 # 实际中需要使用专门的密码学库 return "proof" # 模拟验证零知识证明 def verify_zk_proof(proof): # 这里应该是复杂的零知识证明验证算法 return True input_data = 5 output_data = simple_llm_inference(input_data) proof = generate_zk_proof(input_data, output_data) is_valid = verify_zk_proof(proof) print(f"Proof is valid: {is_valid}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值