先上最原始的式子(模nn意义下):
变形一下:
ci=∑j∑kaj∗bk∗[−i+j+k==0](1)ci=∑j∑kaj∗bk∗[−i+j+k==0](1)
考虑怎么判断一个数是否等于0,观察下面的式子:
[p==0]=∑n−1i=0wipn(w是单位复数根)[p==0]=∑i=0n−1wipn(w是单位复数根)
现在要证明它是对的
1.当p=0p=0时,i∗p=0i∗p=0,所以wip=1wip=1,而总共有nn项,除后恰好等于1。
2.当p≠0p≠0时,直接用等比数列求和。
Sn=a1∗1−qn1−q,代数进去Sn=w0∗1−wpn1−wp,由于wn=1,所以Sn=0Sn=a1∗1−qn1−q,代数进去Sn=w0∗1−wpn1−wp,由于wn=1,所以Sn=0
得证。
那么把[p==0]=∑n−1i=0wipn[p==0]=∑i=0n−1wipn代入(1)(1)
ci=∑j∑kaj∗bk∗[−i+j+k==0]ci=1n∑j∑kaj∗bk∑l=0n−1w−il∗wjl∗wklci=1n∑l=0n−1w−il∗(∑j=0n−1aj∗wjl)∗(∑k=0n−1bk∗wkl)ci=∑j∑kaj∗bk∗[−i+j+k==0]ci=1n∑j∑kaj∗bk∑l=0n−1w−il∗wjl∗wklci=1n∑l=0n−1w−il∗(∑j=0n−1aj∗wjl)∗(∑k=0n−1bk∗wkl)
对应到dft上,∑n−1l=0∑n−1j=0aj∗wjl∑l=0n−1∑j=0n−1aj∗wjl和∑n−1l=0∑n−1k=0bk∗wkl∑l=0n−1∑k=0n−1bk∗wkl相当于对a,ba,b数组各做一次dft,而为了最后得到cici还要把a,ba,b对应的点值乘起来,设dl=(∑n−1j=0aj∗wjl)∗(∑n−1k=0bk∗wkl)dl=(∑j=0n−1aj∗wjl)∗(∑k=0n−1bk∗wkl),即
ci=1n∑l=0n−1w−il∗dlci=1n∑l=0n−1w−il∗dl
这就是我们熟悉的逆dft!这样就证明了逆dft的由来。%fzr大爷!