zoukankan      html  css  js  c++  java
  • 线性代数中一组基向量的标准正交化原理通熟易懂理解

    我们先来看图,看看这个方法的操作过程,等一下,我找找我的大学的线性代数课本,找到啦!(哈哈,虽然读研了,因为我是菜鸟,所以还是随时带着)如下图所示:

    大部分人在考研时候都是直接背下来这个正交化过程对吧,或者也根本没有搞懂为啥这样操作就能够得到正交化的基,现在就结合我的理解来分析一下这个原理吧

    1.首先我们看看这个正交化过程,因为a1,a2...an为一组基向量(大佬们请原谅我用a字母代替阿尔法希腊字母,实在是太难输入了,嘻嘻!),只是满足k1a1+k2a2+k3a3+...knan=0时候,一定有系数k1=k2=...=kn=0,但是如果,a1,a2...an没有任意两者内积为零,也就是他们不是正交的,这就说明了一个问题,a1,a2...an这些基向量之间有冗余(如果是正交基的话,应该是不存在这个问题的),意思就是他们之间的一些分量可能重叠了,还不理解?(我以前学习的时候听到这些也是一脸蒙逼)哈哈,没关系,那我就来举个例子吧,我们看下面的例子:

    情况一:假如:

    a1=(1,0) , a2=(0,1)

    我们先来测试他是不是一组基(这两个向量也太简单了,劳资一眼就能看出来是吧,哈哈,我们假装不知道,人生不易,全靠演技!),上面我说了,是不是一组基就看他是不是线性无关,即:

    k1a1+k2a2=0,看看是否k1=k2=0,如果k1=k2=0,那么a1,a2线性无关,否则就是线性相关了

    我们带入进去看看

    k1(1,0)+k2(0,1)=0,很明显了,k1=k2=0,所以a1,a2线性无关,而且a1*a2=0,(这里面*都表示向量内积)所以a1垂直a2,即a1,a2正交,那么说明a1,a2是一组正交基,

    又因为a1,a2的模长(就是向量所确定的点到原点的距离)为1的,

    即|a1|=|a2|=1,所以a1,a2是一组标准正交基(有的书可能叫做规范正交基)

    情况二:现在我再假如:

    a1=(1,0),a2=(1,1)

    我们再验证一下,k1(1,0)+k2(1,1)=0,很明显了,k1=k2=0,发现他们还是线性无关的,就说明他们还是一组基,

    但是a1*a2不等于0,所以a1不垂直a2,即a1,a2不正交,那么他们不是正交基。

    (不写了,凌晨1.24了,已经很晚了,以前高中为了考个牛逼点的985,那时候经常一点多才睡,嘻嘻!不过现在不想那样了,得赶紧睡觉,明天早上继续写,晚安各位大佬!)

    吃了个早餐继续写,接着昨天晚上的内容:

    这时候我们发现a1,a2虽然是一组基,但是不是正交的,我们可以将这个情况二与情况一对比一下就是发现,我最开始说的,a1,a2向量的有些分量就会有冗余,我们发现a2的第一个分量与a1的第一个分量都是1,这里我们就可以看成是一种分量冗余了,所以这两个向量没有垂直(正交)

    这里我先定义一下符号表示:假设e1,e2,e3...en向量分别为a1,a2,a3...an向量标准正交化后得到的向量

    那现在引出了我们的问题,如何才能在第一个向量a1的基础上,包括后面的a2,a3...an都两两向量正交化呢,

    我们心里最自然的想法当然是:如果我们能够在a2向量中扣除与a1向量冗余的部分(别担心扣除后a2与a1不再线性无关了,因为扣除后a2就与a1正交了,所以一定是线性无关,仍然是一组基而且是正交基),a3中扣除与a1,a2冗余的部分,a4中扣除与a3,a2,a1冗余的部分,an中扣除与前面所有向量a1,a2...an-1冗余的部分,那这样是不是就达到了正交化的目的呢,现在我告诉你,没错,这个正交化算法的操作过程就是这样(哈哈,好好想想,是不是感觉特别简单,恨自己不早生100年,不然这个算法就是自己发明的啦,哈哈!!!)

    那我们现在就举个例子来验证一下我们刚刚这个伟大的想法是不是正确的:

    为了便于理解,我们先从二维空间开始(事实上我觉得学习抽象的知识就应该这样,线性代数的高维空间是高度抽象的,估计现在世界上都还没有人能想象出高维空间是啥样的,所以咱们从二维平面,实实在在看得见的东西开始,然后再类比推理到高维空间,就很容易理解了),仍然用我们情况二的a1=(1,0),a2=(1,1),我们先来画个图(电脑自带的画板软件画的,嘻嘻),看看这两个向量的样子:

    我们上面说了a1,a2不垂直,那么他们就是某些分量有冗余的,从这个图就能看出来,a2,a1向量夹角明显小于90度,但是因为a1,a2线性无关,所以可以作为一组基,能表示出这个平面中的任何一个向量。

    但是现在我们需要在a1,a2向量中找出正交的两个向量e1,e2作为新的一组基,即正交基(因为正交基形式简单,具有很多优良性质,所以数学家需要找到这组基)

    我们先在a1的基础上进行,令e1=a1/|a1|,即我们先单位化(也叫做标准化)a1,然后这就是成为了第一个标准正交基,从刚刚的想法,应该是在a2中扣除与a1的冗余部分,那么剩下的向量部分肯定就是与a1正交的了(实际上就是我们把a2向量再正交分解一次,分解为为冗余的a1和垂直于a1的a1‘向量),从图中可以看出,a2由两部分构成,a1和a1'向量(这个向量实际上就是垂直于a1的),也就是:a2=?a1 + a1',但是我们写为更一般的形式,

    a2=c*e1?+ a1',(注:因为我们已经令e1=a1/|a1|,即e1已经是单位化的了,所以a2在a1向量方向上的单位分量肯定得带一个系数c,刚好我举的这个例子这里c=1罢了),现在我们只要能找出这个a1’向量(因为前面没带系数,那么我们找到的a1‘向量可能不是单位化的,我们一定得正交化一次,才能成为第二个标准正交基)即可,

    也就是找到了a2中蕴藏的第二个正交基 e2=a1'/|a1'|

    根据a2=c*e1?+ a1',推出

    a1'=a2 - c*e1?即为我们所求,这里因为c是未知系数,我们是求不出a1’的,因此我们得先求出系数c即可

    再结合一个条件:a1'得垂直于e1,即使得a1' * e1=0(他两内积得为零)

    现在我们带a1'=a2 - c*e1进入a1' * e1=0,得到:

    (a2 - c*e1)*e1=0 ,展开得到

    a2*e1=c*e1*e1,因为e1*e1=1(单位向量与自己内积当然是等于模长啦!就是=1的)即

    c=a2*e1=(a2,e1) (写成了向量内积的括号表示方式)

    由于a2,e1都是已知的向量,所以这里我们就求出了系数c,那么结合上面的式子a1'=a2 - c*e1就可以求得第二个正交向量,

    带入向量的值,a2=(1,1),e1=(1,0),计算得到:

    a1'=?a2 -?(a2,e1)*e1=?a2 -?e1=(0,1)

    此时再单位化得到的第二个正交基a1'向量,e2=?a1' / |a1'|=(0,1) / 1=(0,1),就得到了我们的第二个标准正交基

    哈哈,是不是发现这个(0,1)向量正好是图中那个y轴上面的与a1垂直的a1'向量,那这就对了,虽然举的这个例子比较简单,而且参数也比较特殊了一点,但是足以说明这个问题的本质了,你还可以试着自己举一些不同方向,不同长度的a1,a2向量,然后安照这个原理进行正交化,你会发现,完全正确!

    现在e1,e2都找到了,那么这个标准正交化就结束了。

    现在我们用最开始书本图片上那个正交化公式来计算一遍,看看是不是和我们这个结果吻合的:

    β1=?a1,(我刚刚标准正交基向量用的是e1,e2的符号,书上这里用的是β1,β2,不过没关系,知道就好)

    β2=?a2 - (β1,a2) / (β1,β1) *?β1

    带入向量的值,a2=(1,1),β1=?a1?=(1,0),计算得到:

    β2=(1,1)- 1/1 * (1,0)=(0,1)

    这个结果跟咱们刚刚那个绿色的结果比较一下,是不是发现完全一样,哈哈,这就说明咱们最上面那个紫色的那段话的思想是完全正确的,恭喜你,要是时间退回两百年前,那么发明这个算法的数学家就是你了,哈哈!

    现在我们已经掌握了这个正交化的原理以及精髓,现在我们需要做更一般的推理,推广到高维向量空间(什么?空间是啥你不知道?好吧,我解释一下,空间就是集合的别名,比如数轴上的所有全体实数组成的集合,我们叫做实数集对吧,我们还可以叫做实数空间,懂了吧!!!)

    现在为了表述更清晰,向量我又换了几个符号来表示,不过这个没关系,聪明的你总是能分辨白天黑夜的!!!

    符号说明:这里用g1,g2,g3..gn来代表上面的线性无关向量组a1,a2,a3,...an。h1,h2...hn代表正交后得到的向量a1',a2'...an'

    最终的单位正交向量还是用e1,e2,...en表示。废话不多说,咱们开始,前方高能,请认真阅读,不懂的联系我qq2488890051.

    设{ g1,g2,g3,...gn }为n维空间中的一组线性无关元素系

    令e1=?g1 / |g1|,作h2=?g2 -?c21*e1(这儿就是扣除第一个正交基的冗余部分),求出c21,利用条件h2⊥e1,即

    (h2,e1)=(g2,e1)- (c21*e1,e1)=0

    c21=(g2,e1),即可求得上面的h2

    令e2=?h2 / |h2|,作h3=?g3 - (c31*e1 +?c32*e2)(即:我们最开始说的,得扣除和之前向量e1,e2冗余的部分,雅思机经只是那时候咱们是二维而已),求c31,c32,使得,h3⊥e1,h3⊥e2,可求得:

    c31=(g3,e1),c32=(g3,e2),即可求得h3

    令e3=?h3 / |h3|,..........

    以此类推。

    设e(n-1)(注:这里n-1是下标,为了书写方便,我加了个括号,即第n-1个标准正交基)已得,

    作 hn=?gn - (cn1*e1+?cn2*e2+......c(n-1)*e(n-1))(注:即为扣除前面所有的冗余向量)

    使?hn⊥e1,hn⊥e2,hn⊥e3.......hn⊥e(n-1),求得cn1,cn2,cn3.......c(n-1)等系数,即:

    cn1=(gn,e1),cn2=(gn,e2),cn3=(gn,e3).....cn(n-1)=(gn,e(n-1))

    即可求得hn

    令?en=?hn / |hn|,.......

    由此而得到的{e1,e2,e3......en}即为由{g1,g2,g3......gn}标准正交化(也叫做规范正交化)而得到的标准正交系(规范正交系)。

    这里讲一下,上面这个红色加粗字体,系数的来源的通熟易懂的直观理解,前面我们用的是

    h2=?g2 -?c21*e1,求出c21,利用条件h2⊥e1,即(h2,e1)=(g2,e1)- (c21*e1,e1)=0

    故c21=(g2,e1),从而求出的这个系数,这个是严格的推导而来,没有任何问题。现在我们来如下思考,就更加容易结合实际意义来理解了。

    若A=c1*a1 + c2*a2 + c3*a3 + ...cn*an? 这里A是更一般的(即更抽象性,代表了不同事物的相同本质的东西),英国留学费用A可能是个向量,也可能是一个函数。这里面a1,a2,a3,......an互相垂直的一组标准正交基,即内积为零,函数也是有基函数,有内积的,所以这里说的东西适用于向量和函数,c1,c2...cn为这些基的系数。现在假如我们想求A在某一个基(分量)的系数,那么怎么求呢,实际上就是用 cn=(an,A),即用an去与A作内积,由于这些基两两正交,所以必然只有an *?an这一项不为零,那么

    (an,A)=?an*cn*an=?cn*1=cn?这个系数了嘛(an*an=1的,因为是标准正交基,模长为1),上面红色加粗字体部分我们求向量的系数是如此,实际上求函数的标准正交基的系数也是如此,下面我举一个函数的例子:

    我们知道傅立叶变换中,满足狄利克雷条件的f(x)都可以展开成傅立叶级数,

    即1,cosx,sinx,cos2x,sin2x......cosnx,sinnx,...(因为他们是一组完备的正交基,什么是完备???哈哈,就是你再也找不到另外一个基函数可以与他们两两相交的,他们就已经是整个宇宙中能找到的最完整的一组正交基了,但是他们为啥不是标准正交基?我们来积分一下,因为∫cosxdx从-pi到pi积分=?pi,而不是1。不过这个没关系,我们把它除以一个pi就可以将他们单位化了,即1/π,1/π*cosx,1/π*sinx,1/π*cos2x,1/π*sin2x......1/π*cosnx,1/π*sinnx,...他们现在就是一组标准正交基函数了)

    我们现在把f(x)展开成三角函数的标准正交基的表示形式,这里用an表示cosnx的系数,bn表示sinnx的系数,即:

    f(x)=?a0*1/π*cos0x + b0*1/π*sin0x(注:这一项=0) + a1*1/π*cosx + b1*1/π*sinx + a2 * 1/π*cos2x + b2*1/π*sin2x + ...... +?an*1/π*cosnx + bn*1/π*sinnx

    即:

    f(x)=?a0*1/π + a1*1/π*cosx + b1*1/π*sinx + a2 * 1/π*cos2x + b2*1/π*sin2x + ...... +?an*1/π*cosnx + bn*1/π*sinnx)

    根据上面粉红色的字体部分说的,求某个正交基上面的系数的方法就是用这个正交基去内积f(x)即可,即:

    a1=(1/π*cosx,f(x))=∫f(x)*1/π*cosxdx,? ? ? ? ? ? ? ? b1=(1/π*sinx,f(x) )=?∫f(x)*1/π*sinxdx

    a2?=(1/π*cos2x,f(x))=∫f(x)*1/π*cos2xdx,? ? ? ? ? ? b2?=(1/π*sin2x,f(x))=?∫f(x)*1/π*sin2xdx

    ......

    an?=(1/π*cosnx,f(x))=∫f(x)*1/π*cosnxdx,? ? ? ? ? ? bn?=(1/π*sinnx,f(x))=?∫f(x)*1/π*sinnxdx

    即:

    an=1/π*∫f(x) * cosnxdx? ? ? ?(n=0,1,2,3....),特别的,当n=0时,a0=1/π∫f(x)dx

    bn=1/π*∫f(x) * sinnxdx? ? ? (n=1,2,3....)

    哈哈,这就是傅立叶变换后,系数的求解方法,大佬,你记住了吗!!!

    ?

  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10019639.html
Copyright © 2011-2022 走看看