Skip to content

19.6.4 调和分析

以公式或经验给出的以 2π 为周期的周期函数 f(x) ,应以三角多项式或傅里叶和逼近:

(19.210)g(x)=a02+k=1n(akcoskx+bksinkx),

其中系数 a0,ak,bk 是未知实数. 确定这些系数正是调和分析的课题.

19.6.4.1 三角插值公式

1. 傅里叶系数公式

因为函数系 1,coskx,sinkx(k=1,2,,n) 在区间 [0,2π] 内关于权函数 ω= 1 是正交的, 根据 (19.172) 应用连续最小二乘法得到系数公式

ak=1π02πf(x)coskxdx,bk=1π02πf(x)sinkxdx(k=0,1,2,,n).

(19.211)

由公式 (19.211) 计算得到的系数 ak,bk 称为周期函数 f(x) 的傅里叶系数 (参见第 633 页 7.4).

若 (19.211) 中的积分复杂或函数 f(x) 仅在离散点上已知,则傅里叶系数只可由数值积分近似确定.

使用有 N+1 个等距节点的梯形公式 (参见第 1253 页 19.3.2.2)

(19.212)xν=νh(ν=0,1,,N),h=2πN

得近似公式

aka~k=2Nν=1Nf(xν)coskxν,bkb~k=2Nν=1Nf(xν)sinkxν(k=0,1,2,,n).

(19.213)

在周期函数的情况下梯形公式变为非常简单的矩形公式. 如下事实使它有更高的精度: 若 f(x) 是周期函数且 2m+2 次可微,则梯形公式的误差阶为 O(h2m+2) .

2. 三角插值

a~k,b~k 为近似系数的某些特殊的三角多项式有重要的性质. 这里介绍其中的两个性质.

(1) 插值 假设 N=2n 成立. 系数由 (19.123) 给出的特殊的三角多项式

(19.214)g~1(x)=12a~0+k=1n1(a~kcoskx+b~ksinkx)+12a~ncosnx

在插值点 xv(19.212) 满足插值条件

(19.215)g~1(xν)=f(xν)(ν=1,2,,N).

f(x) 的性质,成立 f(x0)=f(xN) .

(2)平均近似假设 N=2n 成立. 特殊的三角多项式

(19.216)g~2(x)=12a~0+k=1m(a~kcoskx+b~ksinkx),

对于 m<n ,系数 (19.123) 按离散二次平均关于 N 个节点 xν (19.212) 逼近函数 f(x) ,即残量平方和

(19.217)F=ν=1N[f(xν)g~2(xν)]2

取得极小. 公式 (19.213) 正是用不同方法有效计算傅里叶系数的出发点.

19.6.4.2 快速傅里叶变换 (FFT)

1. 计算傅里叶系数的计算量

公式 (19.213) 中的求和也与离散傅里叶变换相关联, 例如在电工学、脉冲和图像处理中. 这里 N 可能非常大,因为计算傅里叶系数的 N 个近似值 (19.213) 需要大约 N2 个加法和乘法运算,所以必须以合理的方法计算求和.

对于 N=2p 的特殊情况,借助所谓快速傅里叶变换 (FFT),乘法运算的计算量可由 N2(=22p) 减少为 pN(=p2p) . 该减少量可以由右边的例子说明.(19.218)该方法如此有效地减少计算量和计算时间, 使得在重要的应用领域小型计算机也够用了.

N2

pN

10

106

104

FFT 将 N 单位根,即方程 zN=1 的解的性质应用于 (19.213) 中的逐次求和.

2. 傅里叶和的复数表达

若在傅里叶和 (19.210) 中代入如下公式:

(19.219)coskx=12(eikx+eikx),sinkx=i2(eikxeikx),

则 FFT 的原理可以相当简单地表述为复数形式

g(x)=12a0+k=1n(akcoskx+bksinkx)(19.220)=12a0+k=1n(akibk2eikx+ak+ibk2eikx).

通过代换

(19.221a)ck=akibk2,

由 (19.211), 有

(19.221b)ck=12π02πf(x)eikxdx,

故 (19.220) 化为傅里叶和的复数表达式

(19.222)g(x)=k=nnckeikx,其中 ck=c¯k.

若复系数 ck 已知,则要求的实傅里叶系数可以由下面简单的方法得到

(19.223)a0=2c0,ak=2Re(ck),bk=2Im(ck)(k=1,2,,n).

3. 复傅里叶系数的数值计算

为数值确定 ck ,类似于 (19.212) 和 (19.213),可对 (19.221b) 应用梯形公式,从而得到离散复傅里叶系数 c~k :

(19.224a)c~k=1Nν=0N1f(xν)eikxν=ν=0N1fνωNkν(k=0,1,2,,n),(19.224b)fν=1Nf(xν),xν=2πνN(ν=0,1,2,,N1),ωN=e2πiN.

关系式 (19.224a) 和 (19.224b) 称为数值 fν(ν=0,1,2,,N1) 的长度为 N 的离散复傅里叶变换.

指数 wNν=z(ν=0,1,2,,N1) 满足方程 zN=1 ,称之为 N 次单位根. 因 e2πi=1 ,故

(19.225)ωNN=1,ωNN+1=ωN1,ωNN+2=ωN2,.

长度为 N=2n 的离散复傅里叶变换可以按下列方式化为两个长度为 N2=n 的变换, 利用这一事实可有效计算 (19.224a):

a) 对于每个偶数指标的系数 c~k ,即 k=2l ,成立

c~2l=ν=02n1fνωN2lν=ν=0n1[fνωN2lν+fn+νωN2l(n+ν)]=ν=0n1[fν+fn+ν]ωN2lν,

(19.226)

这里用到等式 wN2l(n+ν)=wNl2nwN2lν=wN2lν .

代入

(19.227)yν=fν+fn+ν(ν=0,1,2,,n1),

并考虑到 wN2=wn ,和式

(19.228)c~2l=ν=0n1yνωnlν(ν=0,1,2,,n1)

便是以 N2 为长度的数值 yν(ν=0,1,2,,n1) 的离散复傅里叶变换.

b) 对每个奇数指标的系数 c~k ,即 k=2l+1 ,类似可得

(19.229)c~2l+1=ν=02n1fνωN(2l+1)ν=ν=0n1[(fνfn+ν)ωNν]ωN2lν,

代入

(19.230)yn+ν=(fνfn+ν)ωNν(ν=0,1,2,,n1)

并考虑到 wN2=wn ,则和式

(19.231)c~2l+1=ν=0n1yn+νωnlν(ν=0,1,2,,n1)

是以 N2 为长度的数值 yn+ν(ν=0,1,2,,n1) 的离散复傅里叶变换.

N 为 2 的幂次,即 N=2p ( p 为自然数),则根据 a) 和 b) 的归化,即将离散复傅里叶变换化为两个一半长度的离散复傅里叶变换, 是可以继续下去的. 应用 p 次归化后则称 FFT.

根据 (19.230) 每步归化要求 N/2 次复乘法运算, FFT 方法的计算量为

(19.232)N2p=N2log2N

4.FFT 的格式

对于特殊情况 N=8=23 ,根据 (19.227) 和 (19.230), FFT 的三个相应的归化步骤由如下格式 1 说明.

格式 1

第 1 步

第 2 步

第 3 步

f0

y0=f0+f4

y0:=y0+y2

y0:=y0+y1 y1:=(y0y1)ω20 y2:=y2+y3 y3:=(y2y3)ω20 y4:=y4+y5 y5:=(y4y5)ω20 y6:=y6+y7 y7:=(y6y7)ω20

=c~0

f1

y1=f1+f5

y1:=y1+y3

=c~4

f2

y2=f2+f6

y2:=(y0y2)ω40

=c~2

f3

y3=f3+f7

y3:=(y1y3)ω41

=c~6

f4

y4=(f0f4)ω80

y4:=y4+y6

=c~1

f5

y5=(f1f5)ω81

y5:=y5+y7

=c~5

f6

y6=(f2f6)ω82

y6:=(y4y6)ω40

=c~3

f7

y7=(f3f7)ω83

y7:=(y5y7)ω41

=c~7

N=8,n:=4 , ω8=e2πi8

N:=4,n:=2, ω4=ω82

N:=2,n:=1 , ω2=ω42

可以注意到偶数及奇数指标项是如何出现的. 在格式 2 中 (19.233) 阐述了该方法的结构.

格式 2

(19.233)c~k{c~2k{c~2k{c~8kc~8k+4c~8k+2c~8k+2c~8k+6c~8k+6c~2k+1{c~8k+1{c~8k+1c~8k+5c~8k+5c~8k+6c~8k+3(k=0,1,,7)(k=0,1,2,3)(k=0,1)(k=0).

若将系数 c~k 代入格式 1,并在第 1 步前和第 3 步后考虑指标的二进制形式,则易知通过简单反转二进制形式指标的位数顺序, 可得要求的系数的阶. 这显示在格式 3 中.

格式 3

标志

第 1 步

第 2 步

第 3 步

标志

c~0

000

c~0

c~0

c~0

000

c~1

00L

c~2

c~4

c~4

L00

c~2

0L0

c~4

c~2

c~2

0L0

c~3

0LL

c~6

c~6

c~6

LL0

c~4

L00

c~1

c~1

c~1

00L

c~5

L0L

c~3

c~5

c~5

L0L

c~6

LLO

c~5

c~3

c~3

0LL

C~7

LLL

C~7

C7

C~7

LLL

考虑以 2π 为周期的函数 f(x)={2π2,x=0,x2,0<x<2π, 将 FFT 用于离散傅里叶变换. 选取 N=8,xν=2π8,fν=18f(xν)(ν=0,1,2,,7),w8=e2πi8= 0.707107(1i),w82=i,w83=0.707107(1+i) . 得到格式 4 .

格式 4

第 1 步

第 2 步

第 3 步

f0=2.467401

y0=3.701102

y0=6.785353

y0=13.262281=c~0

f1=0.077106

y1=2.004763

y1=6.476928

y1=0.308425=c~4

f2=0.308425

y2=3.084251

y2=0.616851

y2=0.616851 +2.467402i=c~2

f3=0.693957

y3=4.472165

y3=2.467402i

y3=0.616851 2.467402i=c~6

f4=1.233701

y4=1.233700

y4=1.233700 +2.467401 i

y4=2.106058 +5.956833i=c~1

f5=1.927657

y5=1.308537(1i)

y5=0.872358 +3.489432 i

y5=0.361342 1.022031i=c~5

f6=2.775826

y6=2.467401i

y6=1.233700

y6=0.361342

-2.467401 i

+1.022031 i =c~3

f7=3.778208

y7=2.180895(1+i)

y7=0.872358 +3.489432 i

y7=2.106058 5.956833i=c~7

通过三步归化, 根据 (19.233) 得到要求的实傅里叶系数 (见 (19.234)).

a0=26.524562a1=4.212116b1=11.913666(19.234)a2=1.233702b2=4.934804a3=0.722684b3=2.044062a4=0.616850b4=0

在该例中, 可注意到离散复傅里叶系数的一般性质

c~Nk=c~k.

k=1,2,3 时,即有 c~7=c~1,c~6=c~2,c~5=c~3 .

version 1.24.0