第3章 函数矩阵及其微分 本章讨论如何将半张量积方法用于非线性计算问题。第2章指出,一个齐次多元多项式可以方便地用半张量积表示,这其实是半张量积对标准积的一大推广。熟知,标准矩阵方法可以处理线性函数和二次型,但面对多元高次多项式几乎无所作为。而作为推广后的矩阵乘法,半张量积能够用来处理多元高次多项式。进一步,一个非线性光滑多元映射又可以通过Taylor展开方便地应用于多项式逼近。这样,多项式的半张量积表示为我们提供了一种解决非线性问题的线性方法,并且相关运算很容易通过计算机实现,这使得半张量积成为实现非线性计算机械化的有力工具。 3.1 多元多项式的矩阵表示 设x=(x1,x2,…,xn)是Rn中的一个坐标。记变元为x的k次齐次多项式全体的集合为Bkn(x)。为方便起见,令B0n=R,它代表“0”次多项式,即常数项全体。记Pkn(n)为n元k次多项式的全体,则有Pkn(x)=B0n(x)B1n(x)…Bkn(x)(3.1)这里表示线性空间的直和。 在第2章曾提到过xk=xx…xk是Bkn的一组生成基,换言之,它是包含Bkn的一组基底的集合,因此f(x)∈Bkn可以表示成f(x)=Fxk, F∈M1×nk(3.2)显见,xk作为生成基是冗余的。也就是说,这组生成基里的元素并不是线性无关的。因此式(3.2)中的F不唯一。 下述性质在多元多项式计算时非常有用。 定理3.1 (1) 设X,Y∈Rm,Z,W∈Rn为四个列向量,则有XTYZTW=XTZTYW(3.3) (2) 设P(x)=Fxs∈Bsn(x),Q(x)=Gxt∈Btn(x),则有P(x)Q(x)=FGxs+t(3.4) 证明 由命题(2.10)知XTYZTW=XT(ImZT)YW=XTZTYW 第二个等式来自命题2.1. 应用式(3.3)到FxsGxt,式(3.4)立得。 〈证毕〉 3.1 多元多项式的矩阵表示第3章 函数矩阵及其微分下面给出几个例子。 例3.1 (1) 设f(x)∈B32,且f(x)=x31-2x21x2+2x1x22+x32(3.5)记x=(x1,x2)T,则有x2=(x21,x1x2,x2x1,x22)T x3=(x31,x21x2,x1x2x1,x1x22,x2x21,x2x1x2,x22x1,x32)T因此f(x)可以表示成f(x)=1-2020001x3(3.6) 由于生成基是冗余的,所以表示不唯一。例如,f(x)的另一个表示形式为f(x)=1-23-2323-2323231x3(3.7) (2) 设f(x)=3+(x1-x2)+(x1-x2)2+(x1-x2)3(3.8)不难看出f(x)=F0+F1x+F2x2+F3x3(3.9)这里F0=3, F1=[1 -1], F2=[1 -1 -1 1]; F3=[1 -1 -1 1 -1 1 1 -1] (3) 设f(x)=ex1-x2将其Taylor展开得f(x)=∑∞i=01i!(x1-x2)i(3.10)注意到x1-x2=[1 -1]x由定理3.1得f(x)=∑∞i=01i!Fixi(3.11)这里Fi=[1 -1]i,i=0,1,2,…. 上面多项式的半张量积表示形式的优点在于半张量积满足结合律,因此在应用中会更加自然和方便。例如,我们可以像类似于一元多项式的乘法公式或因式分解等方法来处理多元多项式。 例3.2 (1) 求F3x3+F5x5的因式分解 由定理3.1可得F3x3+F5x5=F3x3+(F5x2)x3再由分配律可得 F3x3+(F5x2)x3=(F3+F5x2)x3 (3.12)从而实现了因式分解。 (2) 乘法公式 设x∈R3,f(x)=x1+x2-2x3+x21+x22-3x23-x1x2-x2x3 (3.13)试求f(x)k. 记f(x)=F1x+F2x2这里F1=[1 1 -2] F2=[1 -1 0 0 1 -1 0 0 -3]则有f(x)k=∑ki=0k i(F1x)i(F2x2)k-i=∑ki=0k iFi1Fk-i2x2k-i =Ckxk+Ck+1xk+1+…+C2kx2k式中的系数为Cj=k k-jFk-j1Fj2=k jFk-j1Fj2 考察下述齐次多项式的半张量积表达式f(x)=Fxk∈Bkn(3.14) 显然,系数F的表示不唯一是因为xk中有相同的项。例如,在例3.2中我们看到,当x∈R2时,在x2中有x1x2=x2x1;在x3中有x21x2=x1x2x1=x2x21,x1x22=x2x1x2=x22x1. 这些相同项的系数只要满足它们的和与f(x)的相应项系数相等即可。因此,它们的选择有很大的自由度。为此,下面介绍一种可以唯一确定F的表示方法。 回顾在线性代数中f(x)的二次型表示为f(x)=xTFx这里F不唯一。但是如果要求F对称,那它就是唯一的。借鉴这一思想,以下讨论F的一种对称表示方法。 设f(x)∈Bkn,并且F是式(3.14)中f(x)的系数。称F是一组对称系数,如果它对应于相同单项式的系数相等。 为了给对称系数作一个准确描述,需要用到置换群(见2.1节)。置换群Sn是由n个元素的全体置换组成,因此Sn共有n!个置换。例如,S6有6!=720个置换。 现在看F满足什么条件时为对称系数。 如果f(x)是一个二次型,x∈Rn,记f(x)=Fx2=(F11,F12,…,F1n,…,Fn1,Fn2,…,Fnn)x2则F为对称系数,当且仅当Fij=Fji,i,j. 对于一般情况,即f(x)=Fxk,可以将F的元素按Id(i1,i2,…,ik;n,…,n)排列,则Fi1 i2 … ik是xi1xi2…xik的系数。于是有 命题3.1 令f(x)=Fxk,x∈Rn,若将F的元素按Id(i1,i2,…,ik;n,…,n)排列,则F是对称系数,当且仅当Fi1 i2 … ik=Fiσ(1) iσ(2) … iσ(k), σ∈Sk 根据命题3.1,所有基本的代数公式都适用于多元多项式。例如,对于公式(a+b)(a-b)=a2-b2同样也有(F1x+F2x2)(F1x-F2x2)=F21x2-F22x4 进一步,将其应用于单项式分解,可以得到下述结论: 命题3.2 设F∈Rna是一个行向量,t≥a,x∈Rn,则有(GF)xt=FxaGxt-a(3.15)3.2 基 底 变 换3.2 基底变换 从3.1节可以看出,在多元多项式运算中xk作为齐次多项式空间Bkn的一组生成基,在使用上十分方便。但由于xk是Bkn的一组冗余基底,这使得表达式(3.14)中的系数F不唯一。设Nkn为Bkn的自然基底,即Nkn=xd11…xdnn|∑nj=1dj=k 为方便起见,也用Nkn来表示按照字母序排列的有序基底元素矩阵,即若xd11…xdnnxt11…xtnn系指存在一个指标i≤n使得dk=tk,kti. 实际上,上述顺序就是普通意义下的自然顺序,例如N32=(x31 x21x2 x1x22 x32)T 另一方面,Nkn是将xk=[(x1,x2,…,xn)T]k中重复元素去掉后得到的基底,它保持了元素在xk中的前后顺序关系。为方便记,将该基底记作x(k). 例如,当n=3时,可以将x(2)表示成x(2)=(x21,x1x2,x1x3,x22,x2x3,x23)T 下面构造两个矩阵TB(n,k)和TN(n,k),使它们能够实现基底xk和x(k)之间的转换。 考虑xk,它是一个nk维列向量,每个分量为xi1xi2…xik。不难看出,xk是一个用索引Id(i1,…,ik;n,…,nk)defId(I;nk)来标注的数组。记其指标集为I={I={(i1,i2,…,ik)|1≤is≤n;s=1,2,…,n}}定义映射c:I→Zn即c:I=(i1,i2,…,ik)䦂MT ExtraaAp(c(1),c(2),…,c(n))这里,c(j)是{i1,i2,…,ik}k中等于j的元素个数。 例如,n=5,k=4,则有I=(3,3,3,3)→c(I)=(0,0,4,0,0) I=(1,5,2,1)→c(I)=(2,1,0,0,1) I=(2,4,4,3)→c(I)=(0,1,1,2,0)由于xk的每一项都是k次的,故对任何c(I),I∈I,均有∑nj=1c(j)=k. 进一步,两个指标I1和I2代表的单项式相同,当且仅当c(I1)=c(I2). 现在对索引Id(i1,…,ik;n,…,nk)定义一个子索引Is(i1,…,ik;1≤i1≤i2≤…≤ik≤n)=Is(J;nk)容易证明,对上述子索引里的任何两个不同元素I1≠I2,c(I1)≠c(I2)。实际上,Is所标注的就是nk中不重复的一组元素。 例如,n=3,k=2,有Id(I;32)={11,12,13,21,22,23,31,32,33} Is(J;32)={11,12,13,22,23,33} 容易证明: nk中不同元素个数s=|Is(J;nk)|=(n+k-1)!k!(n-1)! 设t=nk,则分别构造下述两个矩阵TB(n,k)∈Ms×t, TN(n,k)∈Mt×s为此先介绍两个基本概念。 定义3.1 设I=(I1,I2,…,Ik)∈Id(i1,i2,…,ik;nk) (1) 定义I的置换集PI为PI={J∈Id(i1,i2,…,ik;nk)|(J1,J2,…,Jk)=(Iσ(1),Iσ(2),…,Iσ(k)),σ∈Sk}(3.16a) (2) 定义I中各指标出现的频率cI为cI=(c1,c2,…,cn)∈Zn+(3.16b)这里cj是j在{I1,I2,…,Ik}中出现的次数。 下面首先构造矩阵TB(n,k),具体步骤如下: 第1步 将一个s×t矩阵的列按照索引Id(I;nk)排列,并且它的行按照次序Is(J;nk)排列; 第2步 按如下方式给每一行赋值: 假设行指标I=(i1,i2,…,ik)∈Is(I;nk) 对于该行中的任意元素,若该元素的列指标J=(i(1),i(2),…,i(k))∈PI,对于某个s∈Sk是它的行指标的置换,则给该元素赋值为αI=CI!k!=∏nj=1cj!k!否则令它为0。如此则得到矩阵TB(n,k),即TB(n,k)的元素βI,J为βI,J=I,J∈PI 0,其他 接着,按以下步骤构造矩阵TN(n,k): 第1步 设T是一个t×s矩阵,它的行按照索引Id(J;nk)排列,它的列则按照次序Is(I;nk)排列; 第2步 按如下方式给它的每列赋值: 假设某列的指标是J=(j1,j2,…,jk)∈Is(J;nk)于是对于该列的每个元素,若其行指标I∈PJ,则将该元素赋值为1,否则赋值为0. 如此则得到矩阵TN(n,k),即其元素nI,J为nI,J=1,I∈PJ 0,其他 下面的命题是上述定义的直接推论。 命题3.3 (1) x(k)和xk有如下关系:x(k)=TB(n,k)xk xk=TN(n,k)x(k)(3.17) (2) 设p(x)∈Bkn是一个k次齐次多项式,且p(x)=Fxk=Sx(k),则有S=FTN(n,k)(3.18)同时,STB(n,k)是F的一个对称表示。特别地,若F对称,则F=STB(n,k). 注意到STB(n,k)是F的一个对称表示,它们在自然基底下应当是一样的,也就是说STB(n,k)TN(n,k)=FTN(n,k)=S而上式对所有的S∈Rs均成立,因此TB(n,k)TN(n,k)=Is(3.19) 从上式可知,TN(n,k)是TB(n,k)的广义逆。 下面给出一个例子。 例3.3 设n=2,k=3. (1) 构造TB(n,k)为 (111) (112) (121) (122) (211) (212) (221) (222) TB(2,3)=10000000 01/31/301/3000 0001/301/31/30 00000001(111) (112) (122) (222) (3.20)同理,有 (111) (112) (122) (222) TN(2,3)=1000 0100 0100 0010 0100 0010 0010 0001(111) (112) (121) (122) (211) (212) (221) (222)(3.21) (2) 设f(x)=x31+3x21x2-x1x22+x32将它重写为f(x)=\x(3)利用式(3.20),有f(x)=(1 3 -1 1)TB(2,3)x3 =111-131-13-131x3 (3) 设f(x)=(1211-1-1-2-1)x3利用式(3.21),有f(x)=(1211-1-1-2-1)TN(2,3)x(3) =(12-2-1)x(3)于是得到f(x)的对称表示为(12-2-1)x(3)=(12-2-1)TB(2,3)x3 =12323-2323-23-23-1x33.3 函数矩阵的微分3.3 函数矩阵的微分 对于一个n元可微函数F(x):Rn→R,由微积分计算可知,它的微分为DF(x)=F(x)x1,…,F(x)xn定义它的梯度为ΔF(x)=DF(x)T 考虑矩阵M(x)∈Mp×q,它的每个元素都是关于x∈Rn的函数。 定义M(x)的微分DM(x)∈Mp×nq为将M(x)的每个元素Mij替换为它的微分Mijx1,…,Mijxn, 即DM(x)=M11(x)x1…M11(x)xn…M1q(x)x1…M1q(x)xn  Mp1(x)x1…Mp1(x)xn…Mpq(x)x1…Mpq(x)xn 同样,定义pn×q阶矩阵M(x)的梯度ΔM(x)为将M(x)的每个元素Mij替换为它的梯度Mijx1,…,MijxnT. 例3.4 设A=sin (x-y)ln (1+z) ex+y-zcos (x-y)则有DA=cos (x-y)-cos (x-y)00011+z ex+y-zex+y-z-ex+y-z-sin (x-y)sin (x-y)0 ΔA=cos (x-y)0 -cos (x-y)0 011+z ex+y-z-sin (x-y) ex+y-zsin (x-y) -ex+y-z0 进一步,高阶的微分和梯度可以归纳地定义为Dk+1M=D(DkM)∈Mp×nk+1q, k≥1 Δk+1M=Δ(ΔkM)∈Mpnk+1×q, k≥1 下面给出一个关于Hamilton系统的例子。Hamilton系统方法目前已广泛应用于电力系统[22,23]. 例3.5 在Rn中,称一个n×n矩阵函数M(x)为一个结构矩阵。利用结构矩阵可以定义映射{·,·}: C∞(Rn)×C∞(Rn)→C∞(Rn)为广义Poisson 括号,即{F(x),G(x)}=DF(x)M(x)ΔG(x), F(x),G(x)∈C∞(Rn)(3.22) 进一步,定义由函数F(x)诱导的Hamilton向量场为XF(x)=M(x)ΔF(x)这里F(x)称为Hamilton函数。 称下述动态控制系统为一个广义Hamilton控制系统: x·=XF(x)+∑mi=1XGi(x)ui(x), x∈Rn y=h(x)=({G1,F},{G2,F},…,{Gm,F})T(3.23) 假定控制目标是构造一个光滑反馈ui(x),使得闭环系统仍是一个保持原结构矩阵不变的广义Hamilton系统,即∑mi=1XGi(x)ui(x)=M(x)Δ(x) 首先假设DGi线性无关,则可找到{zj(x),j=1,2,…,n-m},使得{DGi,i=1,2,…,m,Dzj(x),j=1,2,…,n-m}线性无关。根据隐函数定理,我们可以局部表示(x)=(Gi,zj)。假设M(x)非奇异,则有Δ(x)=∑mi=1ΔGi(Gi,zj)Gi+∑n-mj=1Δzj(Gi,zj)zj=∑mi=1ΔGiui因此(Gi,zj)zj=0,j=1,2,…,n-m ui=(Gi,zj)Gi,i=1,2,…,m于是可得出结论: 假设M(x)非奇异,那么系统(3.23)有一个广义Hamilton实现,当且仅当存在一个函数=(Gi),使得ui=(Gi)Gi, i=1,2,…,m现在我们假设系统输出可检测[1],即如果输出满足lim t→∞h(x(t))=0则有limt→∞x(t)=0于是我们可以假设Lyapunov函数L=hT(x)P(x)h(x)其中P(x)>0(即正定)。对于闭环系统有=D(hT(x)P(x)h(x))M(x)(ΔF(x)+Δ(G(x)))如果可以找到P(x)>0和(G(x)),使得<0,则系统在原点是渐近稳定的。 从例3.5以及后面的许多讨论可以看出,系统分析及设计需要经常计算矩阵乘积的微分。下面我们推导一些矩阵函数乘积的导数公式。首先考虑D(A(x)B(x)),A(x)B(x) 命题3.4 设A(x)tB(x),x∈Rn,则有 D(A(x)B(x))=DA(x)B(x)+A(x)DB(x)(IsW[t,n])(3.24) 其中s表示B(x)的列数。 证明 不失一般性,假设A(x)=(a11,…,a1t,…,aq1,…,aqt)是一个行向量。不妨设s=1,即B(x)=(b1,b2,…,bq)T是一个列向量,则有AB=∑qk=1ak1bk,…,∑qk=1aktbk从而有D(AB)=∑qk=1ak1x1bk+∑qk=1ak1bkx1,…,∑qk=1ak1xnbk+∑qk=1ak1bkxn,…, ∑qk=1aktx1bk+∑qk=1aktbkx1,…,∑qk=1aktxnbk+∑qk=1aktbkxn =∑qk=1ak1x1bk,…,∑qk=1ak1xnbk,…,∑qk=1aktx1bk,…,∑qk=1aktxnbk +∑qk=1ak1bkx1,…,∑qk=1ak1bkxn,…,∑qk=1aktbkx1,…,∑qk=1aktbkxn =I+II(3.25)