利用C程序编写格拉姆-施密特正交化的过程

利用C程序编写格拉姆-施密特正交化的过程

ID:37751998

大小:115.46 KB

页数:8页

时间:2019-05-30

利用C程序编写格拉姆-施密特正交化的过程_第1页
利用C程序编写格拉姆-施密特正交化的过程_第2页
利用C程序编写格拉姆-施密特正交化的过程_第3页
利用C程序编写格拉姆-施密特正交化的过程_第4页
利用C程序编写格拉姆-施密特正交化的过程_第5页
资源描述:

《利用C程序编写格拉姆-施密特正交化的过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、利用C程序编写格拉姆-施密特正交化的过程格拉姆-施密特正交化在线性代数中,如果内积空间上的一组向量能够组成一个子空间,那么这一组向量就称为这个子空间的一个基。Gram-Schmidt正交化提供了一种方法,能够通过这一子空间上的一个基得出子空间的一个正交基,并可进一步求出对应的标准正交基。这种正交化方法以JørgenPedersenGram和ErhardSchmidt命名,然而比他们更早的拉普拉斯(Laplace)和柯西(Cauchy)已经发现了这一方法。在李群分解中,这种方法被推广为岩泽分解(Iwasawadecomposition)。在数值计算中,Gram-Sch

2、midt正交化是数值不稳定的,计算中累积的舍入误差会使最终结果的正交性变得很差。因此在实际应用中通常使用豪斯霍尔德变换或Givens旋转进行正交化。记法·:维数为n 的内积空间·:中的元素,可以是向量、函数,等等·:与的内积·:、……张成的子空间·:在上的投影基本思想Gram-Schmidt正交化的基本想法,是利用投影原理在已有正交基的基础上构造一个新的正交基。设。是上的维子空间,其标准正交基为,且不在上。由投影原理知,与其在上的投影之差是正交于子空间的,亦即正交于的正交基。因此只要将单位化,即那么就是在上扩展的子空间的标准正交基。根据上述分析,对于向量组张成的空间

3、 (),只要从其中一个向量(不妨设为)所张成的一维子空间开始(注意到就是的正交基),重复上述扩展构造正交基的过程,就能够得到 的一组正交基。这就是Gram-Schmidt正交化。算法首先需要确定已有基底向量的顺序,不妨设为。Gram-Schmidt正交化的过程如下:这样就得到上的一组正交基,以及相应的标准正交基。例考察如下欧几里得空间Rn中向量的集合,欧氏空间上内积的定义为= bTa:下面作Gram-Schmidt正交化,以得到一组正交向量:下面验证向量与的正交性:将这些向量单位化:于是就是  的一组标准正交基底。不同的形式随着内积空间上内积的定义以及构

4、成内积空间的元素的不同,Gram-Schmidt正交化也表现出不同的形式。例如,在实向量空间上,内积定义为:在复向量空间上,内积定义为:函数之间的内积则定义为:与之对应,相应的Gram-Schmidt正交化就具有不同的形式。利用C程序编写格拉姆-施密特正交化的过程C语言程序如下:#include#include#defineN3//N表示基的个数#defineM4//M表示维数floatzj(floata[],floatb[])//这是求内积函数{inti;floatk=0;for(i=0;i

5、returnk;}main(){floatp[N][M],b[N][M],k[N];inti,j,m;for(i=0;i

6、)//j表示每个向量中的坐标for(m=0;m

7、intf("第%d个向量是:",i+1);for(j=0;j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。