- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数值分析A》计算实习题目第一题
算法设计方案:
1.矩阵A的存储与检索
将带状线性矩阵A[501][501]转存为一个矩阵MatrixC[5][501] .
由于C语言中数组角标都是从0开始的,所以在数组MatrixC[5][501]中检索A的带内元素aij的方法是:
A的带内元素aij=C中的元素ci-j+2,j
2.求解λ1,λ501,λs
首先分别使用幂法和反幂法迭代求出矩阵按摸最大和最小的特征值λmax和λmin。λmin即为λs;
如果λmax0,则λ501=λmax;如果λmax0,则λ1=λmax。
②使用带原点平移的幂法(mifa()函数),令平移量p=λmax,求出对应的按摸最大的特征值λ,max,
如果λmax0,则λ1=λ,max+p;如果λmax0,则λ501=λ,max+p。
3.求解A的与数μk=λ1+k(λ501-λ1)/40的最接近的特征值λik(k=1,2,…,39)。
使用带原点平移的反幂法,令平移量p=μk,即可求出与μk最接近的特征值λik。
4.求解A的(谱范数)条件数cond(A)2和行列式detA。
①cond(A)2=|λ1/λn|,其中λ1和λn分别是矩阵A的模最大和最小特征值。
②矩阵A的行列式可先对矩阵A进行LU分解后,detA等于U所有对角线上元素的乘积。
源程序(VS2010环境下,C++语言)
#includestdio.h
#includeiostream
#includestdlib.h
#includemath.h
#includefloat.h
#includeiomanip
#includetime.h
#define E 1.0e-12 /*定义全局变量相对误差限*/
int max2(int a,int b) /*求两个整型数最大值的子程序*/
{
if(ab)
return a;
else
return b;
}
int min2(int a,int b) /*求两个整型数最小值的子程序*/
{
if(ab)
return b;
else
return a;
}
int max3(int a,int b,int c) /*求三整型数最大值的子程序*/
{ int t;
if(ab)
t=a;
else t=b;
if(tc) t=c;
return(t);
}
void assignment(double array[5][501]) /*将矩阵A转存为数组C[5][501]*/
{
int i,j,k;
//所有元素归零
for(i=0;i=4;)
{
for(j=0;j=500;)
{
array[i][j]=0;
j++;
}
i++;
}
//第0,4行赋值
for(j=2;j=500;)
{
k=500-j;
array[0][j]=-0.064;
array[4][k]=-0.064;
j++;
}
//第1,3行赋值
for(j=1;j=500;)
{
k=500-j;
array[1][j]=0.16;
array[3][k]=0.16;
j++;
}
//第2行赋值
for(j=0;j=500;)
{ k=j;
j++;
array[2][k]=(1.64-0.024*j)*sin((double)(0.2*j))-0.64*exp((double)(0.1/j));
}
}
double mifa(double u[501],double array[5][501],double p) /*带原点平移的幂法*/
{
int i,j; /* u[501]为初始迭代向量*/
double a,b,c=0; /* array[5][501]为矩阵A的转存矩阵*/
double y[501]; /*p为平移量*/
for(;;)
{
a=0;
b=0;
文档评论(0)