再讲一个,小学四五年级的时候,我们学习三位数乘三位数,但我考试的时候总会粗心算错。
后来偶尔的机会读到一个方法,叫九余数法。就是一个数的九余数 乘以 另外一个数的九余数 等于这两个大数乘积的九余数, 比如 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的话,我发现初始值要很靠近最后解才行,当时我也不知道为什么,就觉得特别的好玩,特别是用最高项这个技巧。到了高三,我们也没学牛顿法,就学了点微分。当然这到了大学二年级读了应用数学就知道为什么了。。。。。(大一在读生物。。。。)等到了研究生,发现很多数学证明都在用这种思想。。。。