欢迎来到天天文库
浏览记录
ID:11929381
大小:288.64 KB
页数:24页
时间:2018-07-15
《[工学]北航数值分析大作业 第二题 QR分解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二题:1.算法设计方案(一),算法流程(二),总体思路1,对要求解的矩阵进行拟对角化。2,拟对角化后对矩阵进行QR分解,得到Q和R;因为要求RQ,又因为23,故借鉴于拟上三角化时求时的迭代算法避免矩阵与矩阵相乘求得RQ。1,按照算法流程处理,将经常需要跳转到的m==1和m==0的判断及相应处理独立成函数,一旦需要跳转就调用该函数,从而避免goto带来的结构混乱。2,将求解特征向量以及结束时所需要处理的数据输出封装成Stop()函数,并在函数最后调用exit(0)结束程序运行,从而每到满足结束条件就调用Stop()保证程序结构化。3,对于每次m值变化,
2、均对A矩阵进行相关的降维处理,以节省计算量。4,求解特征向量的算法用解(得基础解系),求解过程中,遍历系数矩阵的每一列,统计出强制分量所在的列及对应列最大的非零行行号和自有分量对应列,然后依次对自有分量x其中一个赋值1,另一些赋值0,并解除对应得一个解,从而最终得到所有解。(三),功能分块程序设计中很多在不同的地方被多次被使用的小的功能代码被封装成函数,具体功能见头源文件注释。(四),函数接口本程序中矩阵都是利用二维向量(vector)存贮,相比于数组,可以灵活的动态改变长度。由于矩阵A需要多次重复使用,所以大多数函数里面都是按值传递的,而对于能够按照
3、引用来传递的都是用了引用以提高执行效率。1.源代码//MifaTest.cpp:定义控制台应用程序的入口点。///**********************************************************Author:FunctionList:vector>GetM(vector>&A):求解矩阵M(用于双部位移QR迭代用)doubleVectMultiVect(vector&y,vector&u):求向量积doubleGetMode(
4、vector>&B,constintr):求解矩阵B的第r列向量的模doubleGetModeH(vector>&B,constintr):求解矩阵B的第r列向量的模,用于拟对角化vector>NumbMultiArra(vector>&D,doublea):一个实数乘矩阵boolIsBirZeroH(vector>&B,constintr):判断B[i][r]对角线下是否为零doubleVectMod(
5、vector&p):求向量的模23vectorConveArraMultiVect(vector>&B,vector&u):矩阵的转置乘向量vectorArraMultiVect(vector>&B,vector&u):矩阵乘向量vectorNumbMultiVect(vector&vect,doublea):数乘向量vector>VectMultiCo
6、vVect(vector&a,vector&b):向量乘向量转置得到矩阵voidArraSubs(vector>&C,vector>D):两个矩阵相减vectorVectSubs(vector&a,vector&b):两个向量相减voidGausElim(vector>a):列主元高斯消元法求齐次方程解向量voidStop(vector>&Ar):停止,结
7、束程序voidSolutS1S2(complex&s1,complex&s2,vector>&A):求解s1,s2;voidSave2(complex&s1,complex&s2):保存两个特征值voidSave1(complex&s):保存一个特征值voidJudgemBelow2(vector>&A,vector>Abk):对于m==1及m==0的处理voidHessenberg(
8、vector>&A):矩阵拟上三角化voidQRMethod(v
此文档下载收益归作者所有