李尚志
(北京航空航天大學 100083)
例1雞兔同籠共30 個頭, 84 只腳.雞兔各多少只?
解每只雞1個頭,2只腳,排成數組(1,2)來表示.同理,兔=(1,4)表示每只兔1個頭,4只腳.雞的總數乘(1,2)得到雞頭和雞腳的總數,兔的總數乘(1,4)得到兔頭與兔腳的總數.二者相加得到雞與兔的頭總數與腳總數,我們的目標是讓總數等于(30,84).
解法1先用30只雞得到30(1,2)=(30,60).離目標還差(30,84)-(30,60)=(0,24).
還需補充24只腳,頭數不能改變.有什么動物只有腳沒有頭?

30雞+12(兔-雞)=30(1,2)+12(0,2)=(30,60)+(0,24)=(30,84).
雞兔個數為:30雞+12(兔-雞)=30雞+12兔-12雞=18雞+12兔.
解法2先將目標分解:(30,84)=(30,0)+(0,84).分別組合(30,0),(0,84)再相加.
2雞-兔=2(1,2)-(1,4)=(1,0),乘30得(30,0)=30(2雞-兔)=60雞-30兔.
兔-雞=(1,4)-(1,2)=(0,2),乘42得42(0,2)=(0,84)=42(兔-雞)=42兔-42雞.
相加得(30,84)=(30,0)+(0,84)=60雞-30兔+42兔-42雞=18雞+12兔.
答.共18只雞,12只兔.
例2宇宙某星球有外星雞兔.每只外星雞a個頭,c只腳;每只外星兔b個頭,d只腳.現有外星雞兔同籠共m個頭n只腳.外星雞、兔各多少只?
解法1依樣畫葫蘆照搬例1:外星雞兔分別用數組表示為:雞=A1=(a,c),兔=A2=(b,d).希望將它們乘適當倍數x,y再相加得xA1+yA2=(m,n).
先用A1,A2組合出E1=(1,0),E2=(0,1),再分別乘m,n再相加得mE1+nE2=(m,0)+(0,n)=(m,n).
為了用A1=(a,c),A2=(b,d)組合E1=(1,0),先將A1,A2中的腳數c,d抵消成0.
為此,只要將c,d分別乘d,c再相減:
dA1-cA2=d(a,c)-c(b,d)=(ad-bc,0).
當D=ad-bc≠0,除以D得
還需用A1,A2組合E2=(0,1).這就需要先消去A1,A2中的第一坐標(頭數)a,b.為此,將(a,b)的b倍減(b,d)的a倍:bA1-aA2=b(a,c)-a(b,d)=(0,bc-ad)=(0,-D).
再除以-D≠0得
于是
(m,n)=m(1,0)+n(0,1)


解法2(矩陣解法) 設有x只外星雞,y只外星兔.按頭數、腳數列方程組

寫成矩陣形式


答案與解法1相同.
中學生當然不懂矩陣解法.但翻譯成初等數學的“白話文”就可以懂.
矩陣運算的“白話”翻譯
(1)矩陣乘一列——線性組合


解方程組AX=xA1+yA2=B就是用適當系數x,y乘矩陣各列A1,A2再相加得到常數項列B.這與例2解法1用A1=(a,c),A2=(b,d)組合B=(m,n)是同樣的目標.只不過沒有把A1,A2,B豎起來排成列.
(2)矩陣求逆——組合自然基



解法1由外星雞兔頭數與腳數組成的坐標A1=(a,c),A2=(b,d)組合了
dA1-cA2=(ad-bc,0)=(D,0),
-bA1+aA2=(0,D),D=ad-bc.




例2解法1是由例1的初等數學解法照抄來的.不需要用到線性代數高等代數知識,不需要懂矩陣乘法、附屬方陣、矩陣求逆.靠線性組合解決問題,卻不知不覺算出了附屬方陣和逆矩陣.就好比小孩子不懂古文,讀不懂《三國演義》,可以讀白話譯文懂赤壁大戰.
中學生不懂逆矩陣,更不知道逆矩陣對于求解雞兔問題有什么用處.但能夠懂只要把(1,0),(0,1)組合出來:
就能將它們分別乘m,n再相加得出(m,n)的組合式
=(m,n),

啟示1.什么是“初等數學研究”?讀懂大學數學,再翻譯成“白話文”教中小學生.
2.什么是“讀懂”大學數學?以線性代數為例:不能只懂矩陣乘法的現成算法,必須懂指揮這些算法的簡單想法.矩陣乘法的法則是為了表示線性映射而定義成這個樣子的,表示線性映射就要表示線性組合.按分塊運算來理解矩陣乘法,才能理解矩陣與線性組合之間的關系.線性組合、線性映射是“源”,矩陣乘法法則是“流”.只講流不講源,矩陣乘法法則就顯得莫名其妙,大學生都覺得困難.利用分塊運算追本索源,中學生都可以學會.
例3100個人吃100個饅頭.大人每人吃3個,小孩每3人吃1個,大人小孩各多少?
解大=(1,3),3小=(3,1)分別表示1個大人、3個小孩的人數與饅頭數.
則,大+3小=(1,3)+(3,1)=(4,4).乘25得25(大+3小)=25(4,4)=(100,100).
人數為25(大+3小)=25大+75小.
答共25個大人,75個小孩.
以上算法25[(1,3)+(3,1)]=25(4,4)=(100,100)可以通俗解釋為:

例3利用了目標數組(100,100)的特殊性質100=100,沒有去組合(1,0),(0,1),而是直接組合了(1,3)+(3,1)=(4,4)使4=4.再乘25就到位了.其實,我最先想到的是例3這個解法.然后想推廣到例1的雞兔同籠.那就需要先湊出數組中兩個數的比例為30∶84再同時擴大.這比較困難,缺乏通用性.其中原因是只想到原始數組(1,2),(1,4)作加法與乘法,沒敢用減法.后來想到可以用減法(1,4)-(1,2)=(0,2),一切都迎刃而解了.
例3也可以按通法先組合自然基:3(3,1)-(1,3)=(8,0),3(1,3)-(3,1)=(0,8).請你自己完成這個算法.

解大=(1,10),中=(1,1),16小=(16,1)表示各種魚的條數與斤數.目標是將它們分別乘適當正整數得到(100,100).
大-中=(1,10)-(1,1)=(0,9),
16小-中=(16,1)-(1,1)=(15,0).
為了組合出“條數=斤數”的(100,100),將(15,0),(0,9)分別乘適當正整數,使15,9擴大成它們的最小公倍數45:
3(16小-中)+5(大-中)
=3(15,0)+5(0,9)=(45,45).
再加55中=55(1,1)=(55,55)就得到
3(16小-中)+5(大-中)+55中
=(45,45)+(55,55)=(100,100),
其中
3(16小-中)+5(大-中)+55中
=48小-3中+5大-5中+55中
=5大+47中+48小.
答共5條大魚,47條中魚,48條小魚.
例5(中國剩余定理)求最小的正整數除以3,5,7的余數分別是2,3,1.
解每個正整數x除以3,5,7分別得到余數r1,r2,r3,排成數組f(x)=(r1,r2,r3)=r1(1,0,0)+r2(0,1,0)+r3(0,0,1).先求正整數x1,x2,x3滿足f(x1)=E1=(1,0,0),f(x2)=E2=(0,1,0),f(x3)=(0,0,1).則x=r1x1+r2x2+r3x3滿足f(x)=(r1,r2,r3).x除以3×5×7=105的余數r=x-105q是滿足f(r)=f(x)=(r1,r2,r3)的最小非負整數.
f(x1)=(1,0,0)表示x1除以5,7的余數都是0,是5,7的公倍數,因而是最小公倍數5×7=35的整數倍.f(35)=(2,0,0),35×2=70滿足f(70)=(1,0,0).
類似地得到3×7=21滿足f(21)=(0,1,0),3×5=15滿足f(15)=(0,0,1).
f(70r1+21r2+15r3)=(r1,r2,r3).
本題x=70×2+21×3+15×1=218除以105的余數8滿足f(8)=(2,3,1).
答8是滿足條件的最小正整數.
例6平面直角坐標系中,點P(x,y)繞原點沿逆時針方向旋轉90°到P′,求P′的坐標.
解法1如圖,P(x,y)的橫坐標就是P到x軸的垂線PA的垂足A(x,0)在x軸上代表的數x.P的縱坐標是P到y軸的垂線PB的垂足B(0,y)在y軸上代表的數y.
將整個平面繞原點O沿逆時針方向旋轉90°.

則x軸轉到與y軸重合,方向相同.x軸正半軸轉到y軸正半軸重合,x軸負半軸轉到y軸負半軸.x軸上代表實數x的點A(x,0)轉到y軸上代表同一實數x的點A′(0,x).
y軸轉到與x軸重合,但方向相反.y軸正半軸轉到x軸負半軸,y軸負半軸轉到x軸正半軸.y軸上代表實數y的點B(0,y)轉到x軸上代表相反數-y的點B′(-y,0).
P到x軸、y軸的垂線PA,PB分別變成P′到y軸、x軸的垂線P′A′,P′B′.垂足B′(-y,0)的橫坐標-y就是P′的橫坐標,A′(0,x)的縱坐標x就是P′的縱坐標.
因此,P′的坐標等于(-y,x).
解法2每個點P由它的坐標(x,y)代表.記為P=(x,y).并且記P=A+B表示P的坐標(x,y)=(x,0)+(0,y)等于A,B的坐標之和.
進一步記A=(x,0)=x(1,0)=xE,B=(0,y)=y(0,1)=yE′表示A,B的坐標分別是E=(1,0),E′=(0,1)的坐標的x倍、y倍.
則P=(x,y)=x(1,0)+y(0,1)=xE+yE′的坐標分解為自然基E=(1,0),E′=(0,1)的實數倍之和.
將平面上繞原點O沿逆時針方向旋轉90°的動作記為i.則P′=i(P)=i(x,y)是P(x,y)被i旋轉到的點P′的坐標.假如i的旋轉作用
P′=i(x,y)=i(x(1,0)+y(0,1))
=xi(1,0)+yi(0,1)
=xi(E)+yi(E′),
可以看成一個數i乘坐標(x,y)=x(1,0)+y(0,1),按分配律和交換律展開,只需求自然基(1,0),(0,1)為坐標的點E,E′(也就是x軸、y軸上代表實數1的點)旋轉之后的坐標,i(E),i(E′),分別乘x,y再相加就得到P′的坐標.
易見x軸正方向的E=(1,0)轉到y軸正方向上i(1,0)=(0,1).y軸正方向上(0,1)轉到x軸負方向上i(0,1)=(-1,0).
因此P′=i(x,y)=xi(1,0)+yi(0,1)=x(0,1)+y(-1,0)=(-y,x).
代數運算律的幾何白話
解法2為什么正確?必須解釋為什么幾何旋轉i滿足代數運算律:
(1)分配律i(A+B)=i(A)+i(B),
(2)交換律i(xE)=xi(E).
一般地,設σ將平面上所有的點繞原點旋轉同一個角度α,證明它滿足運算律:
(1)分配律σ(A+B)=σ(A)+σ(B),
(2)交換律σ(xE)=xσ(E).
旋轉動作σ是幾何變換,聽不懂代數語言,只懂幾何語言,需要將代數運算律翻譯成幾何性質,才知道它是否滿足.
旋轉動作兩條重要幾何性質是:1.保持圖形的形狀大小不變.2.保持原點O不動.
第二條什么意思?就是σ(O)=O.也就是σ乘0等于0.任何數乘0都必須等于0.如果沒有這一條,就沒有資格充當數的乘法.不過可以充當數的加法.所以,平移動作不能充當乘法,但可以充當加法.


σ(P)=σ(A+B)=σ(A)+σ(B),
分配律成立.
再將坐標E的實數倍A=xE翻譯成幾何語言,證明交換律σ(xE)=xσ(E)成立.

再考慮x=-|x|<0的情形.此時A=-|x|E=(-1)|x|E由E乘|x|再乘-1得到.已經證明乘σ與乘|x|交換.乘-1就是旋轉180°,與乘σ旋轉角α也交換:先乘-1后乘σ是旋轉180°+α,先乘σ再乘-1是旋轉α+180°,效果當然相同.于是
σ(xE)=σ(-1)|x|E=(-1)σ|x|E
=(-1)|x|σ(E)=xσ(E).
這證明了:平面上繞原點O旋轉任意角α的動作σ可以看成數與坐標(x,y)=x(1,0)+y(0,1)相乘,按分配律和交換律展開,得到
σ(x,y)=xσ(1,0)+yσ(0,1),
求出E=(1,0),E′=(0,1)旋轉后的坐標σ(E),σ(E′)代入,就得到P′=σ(P)的坐標.仍用i表示逆時針方向旋轉90°的動作.則E′=(0,1)=i(1,0)本身也是(1,0)旋轉的結果,看成(1,0)的i倍.i(0,1)=i2(1,0)則是從(1,0)開始被i旋轉兩次,每次旋轉90°,兩次就是180°,所有的(x,y)都旋到相反方向的(-x,-y)=(-1)(x,y),相當于乘-1.
因此i2=-1.這個i滿足的運算律允許我們把它看成數.但它不是實數,因為實數的平方不能為負數.而且,實數x乘(1,0)得到的x(1,0)=(x,0)都在x軸上,而i(1,0)=(0,1)離開x到y軸上了.i不是實數,稱為虛數.不過,i代表的旋轉90°的動作并不虛幻,而是實實在在的動作,可以畫出圖來觀察.我們生活的現實空間不止一條直線,也不止一個平面,而是天高地廣.人類一開始沒有認識到它的實際意義和用途,取名為虛數.
每個坐標(x,y)=x(1,0)+yi(1,0)=(x+yi)(1,0)是E=(1,0)的x+yi倍.當y=0,x是實數,x(1,0)=(x,0)在x軸上.當y≠0,(x+yi)(1,0)=(x,y)都不在x軸上,x+yi都稱為虛數.實數與虛數統稱復數.每個復數x+yi代表平面上一個點(x+yi)(1,0)=(x,y).兩個點的坐標相加,只需將復數相加.每個點P(x,y)沿逆時針方向旋轉90°,只需將(x,y)=(x+yi)(1,0)乘i.為此,只需將(1,0)前面的倍數x+yi乘i.
例6解法3將P(x,y)用復數x+yi表示.乘i得
i(x+yi)=xi+yi2=xi+y(-1)=-y+xi,
表示了(x,y)逆時針旋轉90°到(-y,x).
例7平面直角坐標系中的點P(x,y)繞原點O旋轉角到P′.求P′的坐標.
解記σα為平面上繞原點O旋轉角α的動作.點P(x,y)用復數x+yi表示,則
σα(x+yi)=σα(x+yi)1=(x+yi)σα1,
實數1代表點E=(1,0)如下圖.σα1=σα(E)=E′為E旋轉角α到達的點.由|OE′|=|OE|=1及∠XOE′=α得E′的坐標(cosα,sinα)及復數σα1=cosα+isinα.

σ(P)=(x+yi)(cosα+isinα)
=xcosα+yicosα+xisinα+i2ysinα
=(xcosα-ysinα)+(xsinα+ycosα)i.
P′坐標為(xcosα-ysinα,xsinα+ycosα).
和角公式與倍角公式
設σα=cosα+isinα,σβ=cosβ+isinβ分別為平面上繞原點旋轉角α,β的動作.則它們的乘積σασβ就是先旋轉β,再旋轉α,總效果是旋轉α+β.因此
σα+β=cos(α+β)+isinα(α+β)
=σασβ=(cosα+isinα)(cosα+isinβ)
=(cosαcosβ-sinαsinβ)+i(sinαcosβ+
cosαsinβ),
cos(α+β)=cosαcosβ-sinαsinβ,
sin(α+β)=sinαcosβ+cosαsinβ.
這就是和角公式.以上推理沒有用到和角公式,而是只用到旋轉的幾何性質以及運算律.因此是對和角公式的獨立證明.這個證明可以翻譯成幾何語言,得到純粹的幾何證明.

如圖,|OE|=|OA|=|OB|=1.
∠EOA=α,∠AOB=β.則∠EOB=α+β.








=(cosβ)(cosα+isinα)
=cosβcosα+icosβsinα


=(isinβ)(cosα+isinα)
=isinβcosα-sinβsinα


(cosβ+isinβ)(cosα+isinα)
=cosβcosα+icosβsinα+isinβcosα-sinβsinα,

等于兩項實數之和,等于和角余弦.
即使不用復數,也可以從B作垂線BK⊥OE得垂足K,得到cos(α+β)=OK,sin(α+β)=KB.從B作垂線BD⊥OA得垂足D,從D作DH⊥OE得垂足H,從B作BT⊥DH得垂足T.同樣得到OH,HD,DT,TB這些線段,并且算出它們的長度:
由OD=cosβ得到OH=ODcosα=cosβcosα,HD=ODsinα=cosβsinα.
由∠TDB=180°-∠ODB-∠ODH=90°-∠ODH=α及DB=sinβ得到
DT=DBcosα=sinβcosα,TB=DBsinα=sinβsinα.于是得到
sin(α+β)=KB=HD+DT
=cosβsinα+sinβcosα,
cos(α+β)=OK=OH-TB
=cosβcosα-sinβsinα.
這就是在引入向量之前高中數學課本對于和角公式采用的純粹幾何方法的證明.但是我們看到,用復數乘法得出的證明實質上與它相同.這兩個證明都是獨立的證明,但它們實質上相同.純幾何證明作了很多輔助線,尤其是很多垂線.復數證明為什么不需要作垂線?關于垂線的幾何性質,它都用表示旋轉90°的虛數i的運算代替了.復數證明貌似沒有用到幾何定理,其實是將一些基本的幾何定理化身為運算律用進去了.為了將旋轉看成數參加運算,我們利用幾何定理證明了它滿足分配律和交換律.表示旋轉的數大部分是虛數,需要將幾何定理化身為運算律.實數乘坐標滿足分配律也用了相似三角形的幾何定理.


這個結論不需要用到和角公式.將左邊用牛頓二項式定理展開,就得到n倍角公式.