北航数值分析大作业一.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北 京 航 空 航 天 大 学 数值分析大作业一 学院名称 自动化 专业方向 控制工程 学 号 ZY1403140 学生姓名 许阳 教 师 孙玉泉 日 期 2014 年 11月26 日 设有的实对称矩阵A, 其中,。矩阵A的特征值为,并且有 1.求,和的值。 2.求A的与数最接近的特征值。 3.求A的(谱范数)条件数和行列式detA。 一 方案设计 1 求,和的值。 为按模最小特征值,。可使用反幂法求得。 ,分别为最大特征值及最小特征值。可使用幂法求出按模最大特征值,如结果为正,即为,结果为负,则为。使用位移的方式求得另一特征值即可。 2 求A的与数最接近的特征值。 题目可看成求以为偏移量后,按模最小的特征值。即以为偏移量做位移,使用反幂法求出按模最小特征值后,加上,即为所求。 3 求A的(谱范数)条件数和行列式detA。 矩阵A为非奇异对称矩阵,可知, (1-1) 其中为按模最大特征值,为按模最小特征值。 detA可由LU分解得到。因LU均为三角阵,则其主对角线乘积即为A的行列式。 二 算法实现 1 幂法 使用如下迭代格式: (2-1) 终止迭代的控制理论使用, 实际使用 (2-2) 由于不保存A矩阵中的零元素,只保存主对角元素a[501]及b,c值。则上式中简化为: (2-3) 2 反幂法 使用如下迭代格式: (2-4) 其中,解方程求出。 求解过程中使用LU分解,由于A为5对角矩阵,选择追赶法求取LU分解。求解过程如下: 追赶法求LU分解的实现: (2-5) 由上式推出分解公式如下: (2-6) 推导出回代求解公式如下: (2-7) (2-8) 3 及A行列式求解 (2-9) 由式(2-5)可得: (2-10) 三 源程序 #include <stdio.h> #include <math.h> double ep=1e-12,b=0.16,c=-0.064; int j=0; double power(double a[501]); //幂法 double inv_power(double a[501]); //反幂法 double det(double a[501]) ; //求det int main() //主程序 { int i,k; double A[501],B[501],beta_1,beta_501,beta_s,beta_k; double mu; for(i=0;i<501;i++) A[i]=(1.64-0.024*(i+1))*sin(0.2*(i+1))-0.64*exp(0.1/(i+1)); beta_1=power(A); //第一问 printf("λ1\t= %.12e\t迭代次数:%d\n",beta_1,j); for(i=0;i<501;i++) //位移 B[i]=A[i]-beta_1; beta_501=power(B)+beta_1; printf("λ501\t= %.12e\t迭代次数:%d\n",beta_501,j); beta_s=inv_power(A); printf("λs\t= %.12e\t迭代次数:%d\n",beta_s,j); for(k=1;k<=39;k++) //第二问 { mu=beta_1+k*(beta_501-beta_1)/40; for(i=0;i<501;i++) B[i]=A[i]-mu; beta_k=inv_power(B)+mu; printf("λi%d\t= %.12e\t迭代次数:%d\n",k,beta_k,j); } printf("cond(A)2= %.12e\n",beta_1/beta_s); //第三问 printf("detA\t= %.12e\n",det(A)); } double power(double a[501]) //幂法 { int i=0,N=5000; double b=0.16,c=-0.064; double u[501],y[501]; double m=1,beta;

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档