关于虚数i 的高次幂快速口算求法及其原理说明
第二小队队长
2019年03月05日 15:56

       

            一直在B站学习  感谢各位博学热心的大牛 尤其是大神3blue1brown  故心血来潮的把以前的一点小心得发上来作为回馈 不足之处望指正:

     几年前在看网易公开课可汗学院的复数视频部分中,有一节是专门对应的虚数i的幂指数的求法,可汗给出了一套正规的且有规律可循的算法,但在我经过思考和分析后得出一个更简单更快的算法,应用口算就可得出任何次幂指数的虚数i的对应值。由于不了解是否已经存在这样的算法,我搜索了网上并没有查到,并询问我一位对数学了解颇多的“某理想”网友,他也给出了一个简单算法,依旧是拆分虚数幂,得到一个偶数(可快速得出结果)和剩下的部分,也非常的好用。不过,对照起来我的方法更加简便实用,而且不容易在过程中出错。故此省略不讲他的方法,直接给出我的方法,并给出这方法的简单证明。

可汗在求虚数幂的时候,给出了一个规律性的东西,都是虚数的变化次数以4为周期,也就是说虚数幂的结果只有四个数“1,i,-1,-i”。不论怎样变化,多高的次幂,虚数的幂的结果不会跑出这四个当中。

故因为虚数i=√-1    (以下*代表数字为幂指数)

i*0=1        i*4=1

i*1=i*        i*5=i

i*2=-1       i*6=-1

i*3=-i        i*7=-i          等等结果以此类推….

好了这样我们可以得到:i*500=1   ;i*24657801=i   ;   i*99=-i  ;

以上这些是可以直接求出的连口算都不需要,

然后是稍微麻烦一点的:i*1421=i ;i*66=-1  i*523437=i

如果之前稍加仔细并根据这几个算式就可能直觉地看出计算麻烦与否是跟幂指数的大小无关而是跟它的十位数和个位数有关。

原理说明:根据可汗列出的这个虚数规律性(其实这个规律性通过计算都可获得),我们发现虚数i的变化周期呈现4的变化。这样可以直觉的得到不论多大的幂指数个位数的数字和只是个位数数字的结果相同,如i*1=i*501=i。

但这种情况只适用于十位数是0的情况下。如上例i*1=i*501=i,但511不等于i。而是-i。所以关键看十位和个位二位的数字,如果是99我们可以先得到100的结果然后根据上面的规律想前退一个数字结果就得到:i* 100=1故i*99=-i。

98,97,甚至96都可以利用此种小技巧,但如果碰到诸如2423或23这类数字就不容易利用上述技巧了。而是运用除同余的概念,因为周期变化呈现4的规律,所以这种变化的限制要集中在百位,因为十位数(例如4)这个数字是是不能整除4的,也就是除4得到整数的最小位数是百位(对应看100/4=整除和10/4=不整除,)。所以不论多大的数字只要到百位上都可以被4整除99900,或112312312400,而113或157,则不可。这样我们就得到了此方法的真谛,不论何种大的幂指数,十位不为零的情况下,用十位和个位的数字(例如53)除以4,余下的数字(只有一位)即和我们一位数字对应的虚数幂结果相同。如果整除则按余数为0的标准对照,是和i*0=1对应一致的。

以i*53为例53/4=13余1,则余下的指数1和i*1结果是一致的=i,我曾整理了幂指数100以内的所以虚数i*的值,经过核算和我用这种规律得出的结果一致。

当然如上述,如果十位为0,那只看个位部分的话,不论多大的数都是一个独立的个位数的结果一致了,例如:i*300=i*234700=i*0=1

明白了方法以及它所依据的原理,我们就不用可汗那种稍显麻烦的计算得出的结果了。不妨自己动手试试以下计算:

i*44;  i*7793264602;  i*123498;    它们的结果分别为:1,-1,-1。

熟练的话,相信这3个计算不会用掉你超过30秒的时间。