自然正交函数分析(EOF)程序.docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5・3自然正交函数分析(EOF)程序
近年來,自然正交函数(乂称经验正交函数)展开在气象上应用比较广泛。这种正交函数展开不彖三角函数展开、球函数展开那样有固定的展开形式。它无固定的函数形式,不是事先人为地给定典型场函数,图形是由场木身来决定的,它具有收敛快又能更好地反映岀场的基木结构的特征。它可以在有限的区域屮进行,既可以取空间不同站点进行分解,也可以对同一站点的不同吋间、不同高度的多种要素进行综和分析。因此它在气彖中具有广泛的应用,可用于气象要素场分析、大气垂直结构分析、动力模型垂直分层等。
5. 3.1功能
计算要素场的自然正交函数分解。
5. 3. 2方法说明
口然止交函数分解是针对气彖要素场进行的,它的基本思想是把包含P个空间点(或P个变
量)的n个时次的观测场随时间进行分解,即将某一区域的气象要素场序列Fq (i=l, 2,・・・,p;
j=l,2,…,n,即p个空间点的n个时次的观测资料)分解成相互正交的时间函数与相互正交的空间函
数的乘积Z和,常把空间函数VW看作典型场,时间函数看作典型场的权重系数,则不同时间
的要素场是若干个典型场按不同权重线性叠加的结果,各个场之间的差别就在于各典型场的系
数不同。则气象耍素场可以表示为
P
Ej =》%tkj = Vig+Vj2t2j+・・・+Viptpj (5. 3. 1)
k=l
英中Fq表示第i个场中的第j个测点的观测值。
可将(5.3.1)是写为矩阵的形式
F =VT( 5 . 3 . 2 )
式中F为pxn阶的均值为0的资料阵,V为pxp阶的空间函数阵,卩为pxn阶的时间函数阵。
由于V和0是根据场的资料阵F进行分解而得到的,分解的函数没有固定的函数形式,因而称为“经验”的,另外,我们还要求这种分解具有“正交”性,即要求满足下式
P
Vk V, =X v ik v n =0 (kHl)
i=1(5. 3. 3 )
n
兀齐-£,kjtij =0 (k H 1)
冃
事实上,我们对(5. 3. 2)式右乘厂可得
FF =VTTV r( 5 . 3 . 4 )
因FF'是pxp阶对称阵,其元素为距平变量的交义积。根据实对称矩阵的分解定理有
FF =VAV f(5. 3. 5 )
其小A是FF'矩阵的特征值组成的对角阵,V是对应的特征向量为列向量组成的矩阵。比较(5.
3. 4)和(5. 3. 5 )式可知
TT r = A(5 . 3. 6 )
乂根据特征向量的性质有
VV =W=I
式中为I单位矩阵。显然(5 . 3 . 6 )和(5 . 3. 7 )式满足(5 . 3 . 3 )式的要求。由此町知空间函数矩阵可从FF'矩阵的特征向量求得,而时间函数则可利用(5. 3. 2)式左乘V'得到,即
T =VF( 5. 3. 8)
5. 3. 3子程序语句
CALL EOF (X, P, N, XF)
5. 3. 4哑元说明
X——输入变量,二维实型数组,大小为PxN,存放原始观测值。
P——输入整型变量,空间格点数。
N——输入整型变量,序列的时间长度。
XF——输出变量,二维实型数组,人小为PxN,存放恢复值。
5. 3. 5子程序
SUBROUTINE EOF(X,P,N,LW,XF)
INTEGER::P
INTEGER: :N
INTEGER::LW
REAL(8),DIMENSION(P,N)::X,XF
REAL(8),DIMENSION(P,P):: A, V, V1
REAL ⑻,DIMENSIONS,N)::T
REAL ⑻,DIMENSION(P)::B,GM,GA
REAL(8),DIMENSIONS,LW)::VF
REAL(8),DIMENSION(LW,N)::TF
! 求X乘以X的转置,即A=XX '
DO 1=1,P
DO J=1,P
A(I,J)=0
DO K=1,N
A(I,J)=A(I,J)+X(I,K)*X(J,K)
END DO
END DO
END DO
! 用Jacobi法求A的特征值和特征向屋
!返回时B存放矩阵的全部特征值,V存放特征向量为列组成的矩阵
CALL JCB(A,P, 1.0E・6,V,B,L)
DO 1= 1 ,P
GA(I)=()
DO J=1,I
GA(I)=GA(I)+B(J)
END DO
END DO
DO 1=1,P
GM(I)=GA(I)/GA(P)
END DO
DO 1=1,P
DO J=1,P
V1(I,J)=V(J,I)
END DO
END DO
T=MATMUL(V1,X)
WRITE(12;(H特征值”))
WRITE( 12;(
I10)')(I,I= 1 ,P)
WRITE( 12;(3X,
D 10.4)*)B
WRITE(12;(H解释的方差(%)u n
WRITE( 12;(
I7),)(I,I= 1 ,P)
WRIT E( 12;(3X,
F7.2)')GM* 100
WRITE(12,(“特征向量为列组成的矩阵,即空间函数V?)
WRITE(12;(
F7.4),)((V(I,J)J= 1 ,P),I= 1 ,P)
WRITE( 12,(“ 时间函数T")1)
WRITE( 12;(
F10.4),)((T(I,J),J=1 ,P),I= 1 ,N)
DO 1=1,P
DO J=1,LW
VF(I,J)=V(IJ)
END DO
END DO
DO 1=1,LW
DO J=1,N
TF(I,J)=T(I,J)
END DO
END DO
XF=MATMUL(VF,TF)
END
SUBROUTINE JCB(A,N,EPS,V,B,L)
! A:调用时存放实对称矩阵
! B:返回时存放矩阵的全部特征值
! V:存放特征向量,其中笫i列为与第i个特征值相对应的特征向屋! EPS:存放精度要求
REAL(8),D1MENS1ON(N,N)::A,V
REAL(8),DIMENSION(N)::B
REAL ⑻::FM,CN,SN,OMEGA,X,Y
INTEGER:: P,Q
L=1
V=0
DO 1= 1 ,N
V(I,I)=1