- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北航数值分析大作业一资料
数值分析大作业一
1、 算法设计方案
由于算法要求所有零元素都不存储,因此采用带状矩阵来存储矩阵,主要子程序为LU分解子程序、求解方程组子程序、带偏移量幂法求特征值子程序、带偏移量反幂法求特征值子程序具体算法设计思路如下:
①利用幂法求按模最大的特征值
②使用带原点平移的幂法求的按模最大的特征值,则为另外一特征值
③比较与的大小,较大值即为,较小者即为
④使用反幂法求的按模最小的特征值,利用LU分解求取每一次迭代后的
⑤使用带偏移量的反幂法,偏移量分别为,即可求得分别与之相距最近的特征值
⑥为非奇异的是对称矩阵,因此,其中和分别为按模最大的特征值和按模最小的特征值
⑦本题中LU分解采用doolittle方法,分解后所得矩阵即为对A进行初等行列式变换后所得矩阵,切变换过程中行列式值不变,因此
2、 源程序
#include math.h
#include stdio.h
#include stdlib.h
#define N 501 //矩阵为501*501的矩阵
#define s 2 //上半带宽
#define r 2 //下半带宽 3个宏定义为方便LU分解及求解方程组过程
/**********全局变量定义**********************/
double A[5][501];
double u[501],y[501];
double lambda[41];//lambda[0]为λ1及最小特征值,lambda[40]为λ501及最大特征值
double lambda_s,lambda_m; //按模最小(大)的特征值;
double LU[5][501];
/********子函数声明**************************/
void init_A(double A[][501]); //初始化A矩阵
double module_value_u(double tt[]); //求u[501]的模值
void init_u(double tt[]); //初始化迭代初始向量u0
double power_method(double offset);//带原点偏移的幂法,返回值为特征值
double inverse_power_method(double offset);//带原点偏移的反幂法,返回值为特征值,子函数中打印出偏移量,求得的特征值,误差,迭代次数
void LU_decomposition(double c[][501]); //参数c为矩阵LU[5][501]首地址,程序进行完后,保存分解后的L和U缩减后的矩阵
void solve(double c[][501],double b[],double x[]); ////第1个参数为LU分解完的LU矩阵,第2个参数b为已知的右端值,第3个参数x为求得的解向量存储位置
int max_2(int a,int b);
int max_3(int a,int b,int c);
int min_2(int a,int b);
void main() //主程序
{
int i;
double uk; //偏移量
double det; //A的行列式的值
init_A(A); //初始化矩阵A
lambda_m=power_method(0); //求按模最大的特征值
lambda[40]=power_method(lambda_m); //求相反方向另一个端点的特征值
if(lambda_mlambda[40]) //若大小反向,则交换两个元素中的值,得到λ1和λ501
{
lambda[0]=lambda[40];
lambda[40]=lambda_m;
}
else
{
lambda[0]=lambda_m;
}
lambda_s=inverse_power_method(0);
det=1;
for(i=0;iN;i++)
det=det*LU[s][i];
for(i=1;i40;i++)
{
uk=lambda[0]+(lambda[40]-lambda[0])*i/40;
lambda[i]=inverse_power_method(uk);
}
printf(-----------The results are as follows-------------\n);
printf(λ[1]=%1.11e \nλ[501]=%1.11e\n,lambda[0],lambda[40]);
printf(λs=%1.11e\n,lambda_s);
printf
您可能关注的文档
- 北师大版历史八年级下册第11课伟大的历史转折课件31张.资料.ppt
- 北师大版数学六年级上册《看图找关系》课件资料.ppt
- 北师大版数学四年级上册《角的度量》课件资料.ppt
- 北师大版高中数学目录资料.doc
- 北师大版高一英语单词资料.doc
- 北师大版高中英语词汇必修1-8资料.doc
- 北师大版数学必修1-集合的含义与表示-课件资料.ppt
- 北师大版小学一年级数学课件:小猫钓鱼资料.ppt
- 北师大版高中数学选修2-3第三章统计案例第二节独立性检验教学课件(共14张)资料.ppt
- 北师大第10章机械能和内能及其转化复习课件资料.ppt
- 2025年金肯职业技术学院单招职业适应性测试题库带答案.docx
- 2025年钦州幼儿师范高等专科学校单招综合素质考试题库完美版.docx
- 2025年钟山职业技术学院单招职业适应性考试题库参考答案.docx
- 2025年金华职业技术学院单招职业技能测试题库附答案.docx
- 2025年闽南理工学院单招职业技能测试题库审定版.docx
- 2025年闽南理工学院单招综合素质考试题库审定版.docx
- 2025年闽南理工学院单招职业倾向性考试题库汇编.docx
- 2025年闽南理工学院单招职业倾向性考试题库推荐.docx
- 2025年闽北职业技术学院单招综合素质考试题库1套.docx
- 2025年长沙轨道交通职业学院单招职业技能考试题库一套.docx
文档评论(0)