再講一個,小學四五年級的時候,我們學習三位數乘三位數,但我考試的時候總會粗心算錯。後來偶爾的機會讀到一個方法,叫九餘數法。
就是一個數的九餘數 乘以 另外一個數的九餘數 等於這兩個大數乘積的九餘數, 比如 mod(145, 9)*mod(643, 9)=mod(145*643, 9).
九餘數又有快速的演算法,就是每個位數相加mod 9就是那個數的九餘數。
這樣就可以用來檢驗我有沒有算錯,比如剛才那個例子,mod(145, 9)=mod(1+4+5,9)=1, mod(643,9)=mod(6+4+3,9)=4. 這樣我乘積的結果肯定得是mod 9 以後為4.
這樣就大概有8/9的機率能快速判斷有沒有算錯,如果算錯的話,可以在每次小乘裡繼續使用九餘數找到錯在哪裡。結果用了這一方法以後,我每次都在乘法後面小注它的九餘數,基本上考試考大數乘法我就沒錯過。當時我想了兩個問題,第一為什麼位數相加的九餘數等於原來的九餘數,第二為什麼用九,不用其他數字。第一個我發現,3也對,但用3的話,只能 保證2/3機會是對的,肯定 沒9好。用其他數字的話,又沒有一個快速計算餘數的辦法。
沒想到這就是工程訊號分析裡的error correcting code 的雛形。
mod(145, 9)高一的時候“獨立”發現的一個神奇的數學結論。用計算器數值解任意階的多項式方程。
高中老師上課聽得太無聊,就開始玩計算器,然後發現計算器可以拿來算迭代方程,比如你要迭代X(n)=X(n-1)+X(n-1)^2, X(1)=1; 那就按1,然後按ANS, 然後再寫ANS+ANS^2, 不停的按ANS, 每次出來的就是迭代方程的解。
後來高一上物理競賽,某些力學題目要數值解三次方程或者解cos(x)=x之類,老師都是用二分法,一次次去驗證,感覺特別的麻煩。 我當時就隨便在玩計算器,發現一個神奇的演算法,
比如要算x^3+x^2+3x+1=0, 我把方程變形成, x=(-1-3x-x^2)^(1/3),
然後猜x=1, 按(-1-3*ANS-ANS^2)^(1/3), 開始迭代,最後都會收斂到一個解,如果不符合物理意義,重新猜,繼續迭代。不停的按ANS,比二分要快很多,我就比其它人算得要快了。
我也嘗試了不同的變形,比如把x^2挪過去,x=(-1-3x-x^3)^(1/2), 發現有時候不收斂,解就沒意義了,或者變成了虛數了,比如把x項挪過去,x=(-1-2x-x^2-x^3), 基本不可能收斂。
一般來說把最高項放在右邊,然後兩邊開最高項次方,再開始迭代,就一般能數值解出這個方程。如果是cos的話,我發現初始值要很靠近最後解才行,當時我也不知道為什麼,就覺得特別的好玩,特別是用最高項這個技巧。
到了高三,我們也沒學牛頓法,就學了點微分。
當然這到了大學二年級讀了應用數學就知道為什麼了。。。。。(大一在讀生物。。。。)
等到了研究生,發現很多數學證明都在用這種思想。。。。
再講一個,小學四五年級的時候,我們學習三位數乘三位數,但我考試的時候總會粗心算錯。後來偶爾的機會讀到一個方法,叫九餘數法。
就是一個數的九餘數 乘以 另外一個數的九餘數 等於這兩個大數乘積的九餘數, 比如 mod(145, 9)*mod(643, 9)=mod(145*643, 9).
九餘數又有快速的演算法,就是每個位數相加mod 9就是那個數的九餘數。
這樣就可以用來檢驗我有沒有算錯,比如剛才那個例子,mod(145, 9)=mod(1+4+5,9)=1, mod(643,9)=mod(6+4+3,9)=4. 這樣我乘積的結果肯定得是mod 9 以後為4.
這樣就大概有8/9的機率能快速判斷有沒有算錯,如果算錯的話,可以在每次小乘裡繼續使用九餘數找到錯在哪裡。結果用了這一方法以後,我每次都在乘法後面小注它的九餘數,基本上考試考大數乘法我就沒錯過。當時我想了兩個問題,第一為什麼位數相加的九餘數等於原來的九餘數,第二為什麼用九,不用其他數字。第一個我發現,3也對,但用3的話,只能 保證2/3機會是對的,肯定 沒9好。用其他數字的話,又沒有一個快速計算餘數的辦法。
沒想到這就是工程訊號分析裡的error correcting code 的雛形。
mod(145, 9)高一的時候“獨立”發現的一個神奇的數學結論。用計算器數值解任意階的多項式方程。
高中老師上課聽得太無聊,就開始玩計算器,然後發現計算器可以拿來算迭代方程,比如你要迭代X(n)=X(n-1)+X(n-1)^2, X(1)=1; 那就按1,然後按ANS, 然後再寫ANS+ANS^2, 不停的按ANS, 每次出來的就是迭代方程的解。
後來高一上物理競賽,某些力學題目要數值解三次方程或者解cos(x)=x之類,老師都是用二分法,一次次去驗證,感覺特別的麻煩。 我當時就隨便在玩計算器,發現一個神奇的演算法,
比如要算x^3+x^2+3x+1=0, 我把方程變形成, x=(-1-3x-x^2)^(1/3),
然後猜x=1, 按(-1-3*ANS-ANS^2)^(1/3), 開始迭代,最後都會收斂到一個解,如果不符合物理意義,重新猜,繼續迭代。不停的按ANS,比二分要快很多,我就比其它人算得要快了。
我也嘗試了不同的變形,比如把x^2挪過去,x=(-1-3x-x^3)^(1/2), 發現有時候不收斂,解就沒意義了,或者變成了虛數了,比如把x項挪過去,x=(-1-2x-x^2-x^3), 基本不可能收斂。
一般來說把最高項放在右邊,然後兩邊開最高項次方,再開始迭代,就一般能數值解出這個方程。如果是cos的話,我發現初始值要很靠近最後解才行,當時我也不知道為什麼,就覺得特別的好玩,特別是用最高項這個技巧。
到了高三,我們也沒學牛頓法,就學了點微分。
當然這到了大學二年級讀了應用數學就知道為什麼了。。。。。(大一在讀生物。。。。)
等到了研究生,發現很多數學證明都在用這種思想。。。。