原文:Brett Berry ? ? ? / ? ?譯文:藏精閣
估計(jì)你們都看過這個(gè)好像是段子的新聞了。為什么題目里的算法是錯(cuò)的强霎?這是好問題佣谐。
5 x 3 = 5 + 5 + 5 居然不對(duì)规伐,這看起來很荒誕做盅,不是嗎?
可以歸結(jié)為一個(gè)理由
相等 VS 等價(jià)
原因僅僅在于分扎,兩個(gè)相等的東西并不意味著它們是等價(jià)的澄成。
根據(jù)定義,相等的意思是畏吓,“在數(shù)量墨状,大小,深度庵佣,或者價(jià)值方面一樣歉胶。”而等價(jià)巴粪,則是“在價(jià)值通今,數(shù)量,功能肛根,或者意義方面的對(duì)等辫塌。”
上文中的5x3和5+5+5相等派哲,但它們并不必然等價(jià)臼氨。等價(jià)與意義有關(guān),它取決于乘法的意義芭届,正如方位的指向储矩。
我做了件之前從未做過的事,我查閱了乘法的定義褂乍。
正如我懷疑的那樣,乘法中的第一個(gè)“值”是倍數(shù)逃片,第二個(gè)“值”是被乘數(shù)屡拨。
所以根據(jù)定義,5x3和5個(gè)3褥实,或者那個(gè)老師標(biāo)注的3+3+3+3+3是等價(jià)的呀狼。5x3和5+5+5的算術(shù)結(jié)果相等,但并不等價(jià)损离。因?yàn)?個(gè)5是另外一回事哥艇。
舉個(gè)例子,3組每5個(gè)為一組的香蕉跟5組3個(gè)為一組的香蕉不一樣僻澎,盡管香蕉的總數(shù)一樣她奥,都是15瓮增。二者的結(jié)構(gòu)不同。
再舉個(gè)例子哩俭,30 ÷ 2也等于15。但30 ÷ 2能代表乘法嗎拳恋?
? ? ? ? ? ? ? ? ? ? ? 30 ÷ 2 = 15
顯然不能凡资,它表示的含義是分割。因此谬运,5+5+5和30 ÷ 2的算術(shù)結(jié)果相等隙赁,但二者并不等價(jià)。
我弄清區(qū)別了梆暖,但這是不是有點(diǎn)過于苛刻伞访?
這得看情況。如果老師已經(jīng)教了乘法交換律(a x b = b x a)轰驳,那么這種變換就無傷大雅厚掷。
如果老師還沒有教,那么讓學(xué)生繼續(xù)那種想法就不太明智级解。
為什么冒黑?
一個(gè)常見現(xiàn)象是,對(duì)于初學(xué)者來說勤哗,在二元運(yùn)算里抡爹,當(dāng)不同層級(jí)的價(jià)值可以互換的時(shí)候,他們很容易產(chǎn)生困惑芒划。
我們知道以下算式并不相等:
小孩子發(fā)現(xiàn)有些時(shí)候互換數(shù)值沒錯(cuò)冬竟,有些時(shí)候卻不對(duì),這很容易讓他們感到不解民逼。通過把關(guān)注點(diǎn)放在這些運(yùn)算的含義上泵殴,并跟上下文對(duì)應(yīng)起來的手段,老師試圖讓學(xué)生遠(yuǎn)離這種低級(jí)錯(cuò)誤缴挖。
可是那個(gè)答案沒錯(cuò)啊袋狞,為什么數(shù)值的意義稍有區(qū)別,就變得十分要緊映屋?
如今苟鸯,對(duì)學(xué)生而言,從小就理解“結(jié)果上的相等”和“意義上的等價(jià)”的區(qū)別比過去的任何時(shí)代都更重要棚点。因?yàn)檫@是計(jì)算機(jī)科學(xué)的基本概念早处。
在編程當(dāng)中,兩個(gè)東西相等或等價(jià)(同一瘫析、完全一致)砌梆,二者區(qū)別很大默责。
相等意味著它們的數(shù)值一樣,比如5+5+5
= 30 ÷ 2 = 15 咸包。
等價(jià)不僅意味著數(shù)值上的相等桃序,還意味著它們是相同的數(shù)據(jù)類型。
換句話說烂瘫,它們表示的的同一個(gè)東西媒熊。
基于不同的語言,看起來一樣的數(shù)值和表達(dá)式并不總是同一個(gè)東西坟比。
比如芦鳍,在JavaScript中,如果我們用操作符 == 作相等測(cè)試:
·“4”== 4 returns True
因?yàn)槎叨贾傅氖菙?shù)字4葛账。但是如果我們用操作符===再來一次柠衅,結(jié)果是這樣:
·“4”=== 4 returns False
因?yàn)樗鼈儾皇峭粋€(gè)元素。左邊的是string字符串籍琳,而右邊的是一個(gè)數(shù)字菲宴。
(注:如果你想更深入地討論JavaScript里的==和===,請(qǐng)點(diǎn)擊此鏈接查看巩割。)
矩陣乘法該有的思維模式
注意到了么裙顽,上面的第二個(gè)例子也被標(biāo)為錯(cuò)誤。為什么用4列6代替6列4那么重要宣谈?
這不僅源于乘法的定義愈犹,它還教給學(xué)生圖解矩陣的正確指令,即列數(shù)乘以行數(shù)闻丑。
保持列與行的線性在矩陣乘法中相當(dāng)重要漩怎。矩陣用行符列符m x n來標(biāo)記。
把矩陣乘起來嗦嗡,你用第一個(gè)矩陣的行數(shù)乘以第二個(gè)矩陣的列數(shù)勋锤。第一個(gè)矩陣的列數(shù)必須跟第二個(gè)矩陣的行數(shù)相等,否則侥祭,你沒法將它們相乘叁执。
比如,我們可以用一個(gè)2 x 3 的矩陣乘以一個(gè) 3 x 4 的矩陣矮冬。然而如果我們交換指令用一個(gè)3 x 4矩陣乘以一個(gè)2 x 3 矩陣谈宛,那么就沒有足夠的列和行,運(yùn)算就沒法完成胎署。
學(xué)生學(xué)習(xí)正確的乘法定義和圖解異常重要吆录,之后他們就不會(huì)被搞暈了。
我知道這令人沮喪琼牧,但是尊重那些老師吧恢筝。
他們?cè)诤⑼逃矫媸呛细竦膶<野馈?duì)于學(xué)生,他們心中有著最良好的心愿撬槽。如果你感到困惑此改,在你抨擊他們并曬到網(wǎng)上之前,先去問問他們?yōu)槭裁茨敲醋觥?/p>