北航数值分析大作业一
更新时间:2024-01-30 00:26:01 阅读量: 教育文库 文档下载
- 北航数值仿真中心推荐度:
- 相关推荐
北 京 航 空 航 天 大 学
数值分析大作业一
学院名称 自动化 专业方向 控制工程 学 号 ZY1403140 学生姓名 许阳 教
师 孙玉泉
日 期 2014 年 11月26 日
设有501?501的实对称矩阵A,
?a1bc??b??????A??c???c?
?????b???cba501???其中,ai?(1.64?0.024i)sin(0.2i)?0.64e(i?1,2,???,501),b?0.16,c??0.064。矩阵A的特征值为?i(i?1,2,???,501),并且有
0.1i?1??2??????501,|?s|?min|?i|
1?i?5011.求?1,?501和?s的值。 2.求A的与数?k??1?k?501??140最接近的特征值?ik(k?1,2,???,39)。
3.求A的(谱范数)条件数cond(A)2和行列式detA。 一 方案设计
1 求?1,?501和?s的值。
?s为按模最小特征值,|?s|?min|?i|。可使用反幂法求得。
1?i?501 ?1,?501分别为最大特征值及最小特征值。可使用幂法求出按模最大特征值,如结果为正,即为?501,结果为负,则为?1。使用位移的方式求得另一特征值即可。
2 求A的与数?k??1?k?501??140最接近的特征值?ik(k?1,2,...,39)。
题目可看成求以?k为偏移量后,按模最小的特征值。即以?k为偏移量做位移,使用反幂法求出按模最小特征值后,加上?k,即为所求。
3 求A的(谱范数)条件数cond(A)2和行列式detA。 矩阵A为非奇异对称矩阵,可知,
cond(A)2?|?max|?min
(1-1)
其中?max为按模最大特征值,?min为按模最小特征值。
detA可由LU分解得到。因LU均为三角阵,则其主对角线乘积即为A的行列式。
二 算法实现
1 幂法
使用如下迭代格式:
(0)T?任取非零向量u0?(u1(0),???,un)??yk?1?uk?1/max|uk?1| ?u?Ayk?1?k???k?sgn(max|uk?1|)?max|uk?1| (2-1)
终止迭代的控制理论使用|?k??k?1|/|?k|??, 实际使用
||?k|?|?k?1||/|?k|??
(2-2)
由于不保存A矩阵中的零元素,只保存主对角元素a[501]及b,c值。则上式中uk?Ayk?1简化为:
?u(1)?a(1)y(1)?by(2)?cy(3)?u(2)?by(1)?a(2)y(2)?by(3)?cy(4)??)?u(500)?cy(498)?by(499)?a(500)y(500)?by(501 ?)?cy(499)?by(500)?a(501)y(501)?u(501?u(i)?cy(i?2)?by(i?1)?a(i)y(i)?by(i?1)?cy(i?2)???(i?3,???,499)(2-3)
2 反幂法
使用如下迭代格式:
(0)T?任取非零向量u0?(h1(0),???,hn)??yk?1?uk?1/max|uk?1| ?-1u?Ayk?1?k???k?sgn(max|uk?1|)?max|uk?1| (2-4)
其中uk?A?1yk?1?Auk?yk?1,解方程求出uk。
求解过程中使用LU分解,由于A为5对角矩阵,选择追赶法求取LU分解。求解过程如下:
LUuk?yk?1?Lxk?yk?1?Uuk?xk?uk
追赶法求LU分解的实现:
??a1bc?b????A?????c???c??LU????b????cba501????p1??r2???????1t
1q1??????z3????????q499???????????t?500??z501r501p501????1??
由上式推出分解公式如下:
??p1?a1,t1?b/a1?r2?b,p2?a2?r2t1??qi?c/pi,i?1,...,499?ti?(b?riqi?1)/pi,i?2,...,500 ??zi?c,i?3,...,501??ri?b?cti?2,i?3,...,501?pi?ai?cqi?2?riti?1,i?3,...,501推导出回代求解公式如下:
??x1?y1/p1?x2?(y ?2?r2x1)/p2?xi?(yi?zixi?2?rixi?1)/pi,i?3,...,501(2-5)
(2-6)
(2-7)
?u501?x501? ?u500?x500?t500u501?u?x?tu?qx,i?499,...,1iii?1ii?2?i (2-8)
3 cond(A)2及A行列式求解
cond(A)2?|?1| (2-9)
|?s| 由式(2-5)可得:
501detA??pi
i?1
三 源程序
#include
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(\\\t= %.12e\\t迭代次数:%d\\n\ for(i=0;i<501;i++) //位移 B[i]=A[i]-beta_1;
beta_501=power(B)+beta_1;
printf(\\\t= %.12e\\t迭代次数:%d\\n\ beta_s=inv_power(A);
printf(\\\t= %.12e\\t迭代次数:%d\\n\
for(k=1;k<=39;k++) //第二问 {
mu=beta_1+k*(beta_501-beta_1)/40;
(2-10)
for(i=0;i<501;i++) B[i]=A[i]-mu;
beta_k=inv_power(B)+mu;
printf(\\\t= %.12e\\t迭代次数:%d\\n\ }
printf(\ //第三问
printf(\ }
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; for(i=0;i<501;i++) u[i]=1; j=0;
while(j u[0]=a[0]*y[0]+b*y[1]+c*y[2]; u[1]=b*y[0]+a[1]*y[1]+b*y[2]+c*y[3]; u[499]=c*y[497]+b*y[498]+a[499]*y[499]+b*y[500]; u[500]=c*y[498]+b*y[499]+a[500]*y[500]; for(i=2;i<499;i++) {u[i]=c*y[i-2]+b*y[i-1]+a[i]*y[i]+b*y[i+1]+c*y[i+2];} beta=0; for(i=0;i<501;i++) { if(fabs(u[i])>=fabs(beta)) beta=u[i]; } if(beta<0) if(fabs(fabs(beta)-fabs(m))/fabs(beta) if(fabs(beta-m)/fabs(beta) return beta; } double inv_power(double a[501]) //反幂法 { double p[501],r[501],t[501],q[501],u[501],y[501]; double beta,m=1; int i,N=1000; p[0]=a[0];t[0]=b/p[0];r[1]=b; p[1]=a[1]-r[1]*t[0]; q[0]=c/p[0];q[1]=c/p[1]; t[1]=(b-r[1]*q[0])/p[1]; for(i=2;i<501;i++) { r[i]=b-c*t[i-2]; p[i]=a[i]-c*q[i-2]-r[i]*t[i-1]; q[i]=c/p[i]; t[i]=(b-r[i]*q[i-1])/p[i]; } for(i=0;i<501;i++) u[i]=1; j=0; while(j beta=0; for(i=0;i<501;i++) { if(fabs(u[i])>=fabs(beta)) beta=u[i]; } if(beta<0) if(fabs(fabs(beta)-fabs(m))/fabs(beta) if(fabs(beta-m)/fabs(beta) return 1/beta; } double det(double a[501]) //求det { double det_A=1; double p[501],r[501],t[501],q[501]; int i; p[0]=a[0];t[0]=b/p[0];r[1]=b; p[1]=a[1]-r[1]*t[0]; q[0]=c/p[0];q[1]=c/p[1]; t[1]=(b-r[1]*q[0])/p[1]; for(i=2;i<501;i++) { r[i]=b-c*t[i-2]; p[i]=a[i]-c*q[i-2]-r[i]*t[i-1]; q[i]=c/p[i]; t[i]=(b-r[i]*q[i-1])/p[i]; } for(i=0;i<501;i++) det_A=det_A*p[i]; return det_A; } 四 程序结果 五 计算过程中的现象 使用 |?k??k?1|/|?k|??作为终止迭代条件时,出现迭代无法终止的情况,通过调试发现按模最大特征值为负时,当k充分大后,迭代向量uk各分量不断变号,使得?k与?k?1异号,判别式|?k??k?1|/|?k|不收敛。 因此将终止迭代条件修改为||?k|?|?k?1||/|?k|??,程序实现如下: if(beta<0) if(fabs(fabs(beta)-fabs(m))/fabs(beta) if(fabs(beta-m)/fabs(beta) 从迭代次数可以看出?1与?501收敛较慢,由按模最大特征值与按模次大特征值的比值越小,收敛速度越慢,可知存在与?1和?501的模相近的特征值。
正在阅读:
北航数值分析大作业一01-30
大学生社会实践工作重要性研究05-18
主管层综合分析题3.2201-15
北京首都航空有限公司国内客运销售代理协议(最终版)07-01
小学科学课程标准教师考试理论部分参考考试试题及答案04-11
手机销售会计实习报告(共五篇)08-22
《远大前程》中皮普的伦理抉择-精选文档05-22
乡镇依法治理工作开展半年工作总结报告08-04
1散户高手谈炒股经验08-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 北航
- 数值
- 作业
- 分析
- 2017-2022年中国铝箔市场供需预测研究报告(目录) - 图文
- 配电柜、控制柜冷却风扇的选用
- 高职专业目录,第二稿(1) - 图文
- 网球体育理论考试
- 北师大年333教育综合试题终极预测题及答案
- 《国际铁路货物联运协定》
- 哈工大机械工程测试基础大作业1信号的分析与系统特性
- 组成实验报告
- 扬州大学现当代文学史笔记
- ACCA F4 Source of English law(一)
- 单选题1-计算机基础知识1
- 2016年中考思想品德知识点主题归类整理
- 自然地理环境的整体性
- 做一个光驱雕刻机 - 图文
- 查丽斌模电答案习题2
- 拉维纳变速器结构设计 - 图文
- 论五四运动的精神 论文
- 研究生自然辩证法概论
- 食品从业人员(餐饮)考试试题答案
- 中国共产党临淄区委员会表彰教师名单