- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析大作业二
数值分析大作业二
算法设计
矩阵的拟
记A(1)=A,并记A(r)的第r列到第n列的元素。
对于r=1,2,…,n-2执行
(1) 若全为零,则令A(r+1)= A(r),转(5);否则转(2)。
(2) 计算
(3) 令
(4) 计算
(5) 继续
算法执行完后,就得到与原矩阵A相似的拟上三角矩阵A(n-1)。
2、矩阵QR分解的算法如下:
记A1=A,并记,令Q1=I(n阶单位矩阵)
对于r=1,2,…,n-1执行
若全为零,则令Qr+1= Qr,Ar+1= Ar转(5);否则转(2)。
计算
(若,则取)
令
计算
继续
当此算法执行完后就得到正交矩阵Q=Qn和上三角矩阵R=An且有A=QR。
3、带双步位移的QR方法求实矩阵全部特征值的具体算法如下:
(1) 使用矩阵的拟上三角化的算法把矩阵化为拟上三角矩阵;给定精度水平和迭化最大次数L。
(2) 记,令。
(3) 如果,则得到A的一个特征值,置m:= m-1(降阶),转(4);否则转(5)。
(4) 如果m=1,则得到A的一个特征值,转(11);如果,则直接转(11);如果m>1转(3)。
(5) 求二阶子阵
的两个特征值s1和s2,即计算二次方程
的两个根s1和s2
(6) 如果m=2则得到A的两个特征值s1和s2,转(11);否则转(7)。
(7) 如果,则得到A的两个特征值s1和s2,置m:= m-2 (降阶),转(4);否则转(8)。
(8) 如果k=L,则计算终止,未得到A的全部特征值;否则转(9)。
(9) 记,计算
(10) 置k:= k+1,转(3)。
(11) A的全部特征值已计算完毕,停止计算。
4、程序的算法设计如下:
输入需要求解的矩阵A:
首先输入需要求解的矩阵。根据公式生成原始矩阵,即为用下述程序中的void matrixA()子程序来实现。
对生成的矩阵A进行拟上三角化:
为了减少求特征值和特征向量过程中的计算量,对生成的矩阵A进行进行拟上三角化,得到拟上三角化矩阵A(n-1)。在下述程序中用void hess()子程序来实现。
对拟上三角化后的矩阵A(n-1)进行QR分解:
为了直观的了解普通的QR分解过程及结果,下述程序中用void AQR()子程序来对拟上三角化过后的A(n-1)阵进行QR分解,并输出Q阵,R阵和RQ阵。
对拟上三角化后的矩阵进行带双步位移的QR分解:
利用子程序int doubleQR ()和void MKQR ()实现对拟上三角化后的A阵进行带双步位移的QR分解,利用子程序void equation()求解二次方程,得出全部特征值并输出,并用子程序void Gauss()和void Vector()对其中的实数特征值进行求解,得出对应的特征向量并输出。
输出相关结果。
二、源程序
#include stdio.h
#include math.h
#define n 10
#define L 50
#define eps 1e-12
void matrixA(double a[][n]);
void hess(double a[][n],double a_n1[][n]);
void MKQR(int m, double Mk[][n], double Ak[][n]);
void AQR(double a_n1[][n], double q[n][n],double r[n][n],double rq[n][n]);
void Gauss(double a1[][n],double x[][n],double Lamda[][2],int p);
void equation(double s,double t,double s1[2],double s2[2]);
int doubleQR(double A_n1[][n], double lamda[n][2], FILE *pFile);
void Vector(double A[n][n], double x[][n], double lamda[n][2], FILE *pFile);
void main()
{ int i,j,flag = 0;
double a[n][n],a_n1[n][n],lamda[n][2],q[n][n],r[n][n],rq[n][n];
double x[n][n];
FILE *pFile;
pFile=fopen(result.txt,wt);
fprintf(pFile,用带双步位移的QR分解法求解矩阵特征值及特征向量\n);
fprintf(pFile,*******************************************
您可能关注的文档
最近下载
- 五四制初中一年级中华优秀传统文化教学设计.pptx VIP
- 《微生物与健康》课件科学六年级上册.pptx
- 七年级上册生物学《生物体的结构层次》单元作业设计.docx
- 电子信息工程职业规划 (第二版).pptx VIP
- 党的二十届三中全会精神测试题300道(单选、多选、判断、填空).docx VIP
- 部编教材年级识字课教学.ppt VIP
- 贵州省贵阳市2024-2025学年高一上学期10月联合考试(一) 数学 PDF版含解析.pdf
- 基于Android的个人生活行为记录及习惯养成平台的设计与实现-毕业设计.doc
- 中国传媒大学-节目主持艺术基础(第二版)-课件.pptx
- 纤维增强复合材料在建筑工程结构加固中的应用(经济论文资料).doc
文档评论(0)