欢迎来到天天文库
浏览记录
ID:21821742
大小:50.50 KB
页数:14页
时间:2018-10-24
《数值分析题解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值大作业第一题:1.要求计算矩阵的最大最小特征值,通过幂法求得模最大的特征值,进行一定判断即得所求结果;2.求解与给定数值接近的特征值,可以该数做漂移量,新数组特征值倒数的绝对值满足反幂法的要求,故通过反幂法即可求得;3.反幂法计算时需要方程求解中间过渡向量,需设计Doolite分解求解;4.
2、A
3、=
4、B
5、
6、C
7、,故要求解矩阵的秩,只需将Doolite分解后的U矩阵的对角线相乘即为矩阵的Det。算法编译环境:vlsualc++6.0需要编译函数:幂法,反幂法,Doolite分解及方程的求解程序如下:#include8、>#include#include#includeintMax(intvalue1,intvalue2);intMin(intvalue1,intvalue2);voidTransform(doubleA[5][501]);doublemifa(doubleA[5][501]);voiddaizhuangdoolite(doubleA[5][501],doublex[501],doubleb[501]);doublefanmifa(doubleA[5][501]);doubleDet(9、doubleA[5][501]);intMax(intvalue1,intvalue2)//定义2个判断大小的函数,便于以后调用{return((value1>value2)?value1:value2);}intMin(intvalue1,intvalue2){return((value110、r(j=2;j<=500;j++)A[i][j]=c;i++;j=0;A[i][j]=0;for(j=1;j<=500;j++)A[i][j]=b;i++;for(j=0;j<=500;j++)A[i][j]=(1.64-0.024*(j+1))*sin(0.2*(j+1))-0.64*exp(0.1/(j+1));i++;for(j=0;j<=499;j++)A[i][j]=b;A[i][j]=0;i++;for(j=0;j<=498;j++)A[i][j]=c;A[i][j]=0,A[i][j+1]=0;}//转存结束doublemi11、fa(doubleA[5][501])//用于求解模最大的特征值,幂法{ints=2,r=2,m=0,i,j;doubleb2,b1=0,sum,u[501],y[501];for(i=0;i<=500;i++){u[i]=1.0;}do{sum=0;if(m!=0)b1=b2;m++;for(i=0;i<=500;i++)sum+=u[i]*u[i];for(i=0;i<=500;i++)y[i]=u[i]/sqrt(sum);for(i=0;i<=500;i++){u[i]=0;for(j=Max(i-r,0);j<=Min(i+s,12、500);j++)u[i]=u[i]+A[i-j+s][j]*y[j];}b2=0;for(i=0;i<=500;i++)b2=b2+y[i]*u[i];}while(fabs(b2-b1)/fabs(b2)>=exp(-12));returnb2;}voiddaizhuangdoolite(doubleA[5][501],doublex[501],doubleb[501])//带状DOOLITE分解,并且求解出方程组的解{inti,j,k,t,s=2,r=2;doubleB[5][501],c[501];for(i=0;i<=4;i++13、){for(j=0;j<=500;j++)B[i][j]=A[i][j];}for(i=0;i<=500;i++)c[i]=b[i];for(k=0;k<=500;k++){for(j=k;j<=Min(k+s,500);j++){for(t=Max(0,Max(k-r,j-s));t<=k-1;t++)B[k-j+s][j]=B[k-j+s][j]-B[k-t+s][t]*B[t-j+s][j];}for(i=k+1;i<=Min(k+r,500);i++){for(t=Max(0,Max(i-r,k-s));t<=k-1;t++)B[14、i-k+s][k]=B[i-k+s][k]-B[i-t+s][t]*B[t-k+s][k];B[i-k+s][k]=B[i-k+s][k]/B[s][k];}}for(i=1;i<=500;i
8、>#include#include#includeintMax(intvalue1,intvalue2);intMin(intvalue1,intvalue2);voidTransform(doubleA[5][501]);doublemifa(doubleA[5][501]);voiddaizhuangdoolite(doubleA[5][501],doublex[501],doubleb[501]);doublefanmifa(doubleA[5][501]);doubleDet(
9、doubleA[5][501]);intMax(intvalue1,intvalue2)//定义2个判断大小的函数,便于以后调用{return((value1>value2)?value1:value2);}intMin(intvalue1,intvalue2){return((value110、r(j=2;j<=500;j++)A[i][j]=c;i++;j=0;A[i][j]=0;for(j=1;j<=500;j++)A[i][j]=b;i++;for(j=0;j<=500;j++)A[i][j]=(1.64-0.024*(j+1))*sin(0.2*(j+1))-0.64*exp(0.1/(j+1));i++;for(j=0;j<=499;j++)A[i][j]=b;A[i][j]=0;i++;for(j=0;j<=498;j++)A[i][j]=c;A[i][j]=0,A[i][j+1]=0;}//转存结束doublemi11、fa(doubleA[5][501])//用于求解模最大的特征值,幂法{ints=2,r=2,m=0,i,j;doubleb2,b1=0,sum,u[501],y[501];for(i=0;i<=500;i++){u[i]=1.0;}do{sum=0;if(m!=0)b1=b2;m++;for(i=0;i<=500;i++)sum+=u[i]*u[i];for(i=0;i<=500;i++)y[i]=u[i]/sqrt(sum);for(i=0;i<=500;i++){u[i]=0;for(j=Max(i-r,0);j<=Min(i+s,12、500);j++)u[i]=u[i]+A[i-j+s][j]*y[j];}b2=0;for(i=0;i<=500;i++)b2=b2+y[i]*u[i];}while(fabs(b2-b1)/fabs(b2)>=exp(-12));returnb2;}voiddaizhuangdoolite(doubleA[5][501],doublex[501],doubleb[501])//带状DOOLITE分解,并且求解出方程组的解{inti,j,k,t,s=2,r=2;doubleB[5][501],c[501];for(i=0;i<=4;i++13、){for(j=0;j<=500;j++)B[i][j]=A[i][j];}for(i=0;i<=500;i++)c[i]=b[i];for(k=0;k<=500;k++){for(j=k;j<=Min(k+s,500);j++){for(t=Max(0,Max(k-r,j-s));t<=k-1;t++)B[k-j+s][j]=B[k-j+s][j]-B[k-t+s][t]*B[t-j+s][j];}for(i=k+1;i<=Min(k+r,500);i++){for(t=Max(0,Max(i-r,k-s));t<=k-1;t++)B[14、i-k+s][k]=B[i-k+s][k]-B[i-t+s][t]*B[t-k+s][k];B[i-k+s][k]=B[i-k+s][k]/B[s][k];}}for(i=1;i<=500;i
10、r(j=2;j<=500;j++)A[i][j]=c;i++;j=0;A[i][j]=0;for(j=1;j<=500;j++)A[i][j]=b;i++;for(j=0;j<=500;j++)A[i][j]=(1.64-0.024*(j+1))*sin(0.2*(j+1))-0.64*exp(0.1/(j+1));i++;for(j=0;j<=499;j++)A[i][j]=b;A[i][j]=0;i++;for(j=0;j<=498;j++)A[i][j]=c;A[i][j]=0,A[i][j+1]=0;}//转存结束doublemi
11、fa(doubleA[5][501])//用于求解模最大的特征值,幂法{ints=2,r=2,m=0,i,j;doubleb2,b1=0,sum,u[501],y[501];for(i=0;i<=500;i++){u[i]=1.0;}do{sum=0;if(m!=0)b1=b2;m++;for(i=0;i<=500;i++)sum+=u[i]*u[i];for(i=0;i<=500;i++)y[i]=u[i]/sqrt(sum);for(i=0;i<=500;i++){u[i]=0;for(j=Max(i-r,0);j<=Min(i+s,
12、500);j++)u[i]=u[i]+A[i-j+s][j]*y[j];}b2=0;for(i=0;i<=500;i++)b2=b2+y[i]*u[i];}while(fabs(b2-b1)/fabs(b2)>=exp(-12));returnb2;}voiddaizhuangdoolite(doubleA[5][501],doublex[501],doubleb[501])//带状DOOLITE分解,并且求解出方程组的解{inti,j,k,t,s=2,r=2;doubleB[5][501],c[501];for(i=0;i<=4;i++
13、){for(j=0;j<=500;j++)B[i][j]=A[i][j];}for(i=0;i<=500;i++)c[i]=b[i];for(k=0;k<=500;k++){for(j=k;j<=Min(k+s,500);j++){for(t=Max(0,Max(k-r,j-s));t<=k-1;t++)B[k-j+s][j]=B[k-j+s][j]-B[k-t+s][t]*B[t-j+s][j];}for(i=k+1;i<=Min(k+r,500);i++){for(t=Max(0,Max(i-r,k-s));t<=k-1;t++)B[
14、i-k+s][k]=B[i-k+s][k]-B[i-t+s][t]*B[t-k+s][k];B[i-k+s][k]=B[i-k+s][k]/B[s][k];}}for(i=1;i<=500;i
此文档下载收益归作者所有