数值分析上机作业参考答案交14789Word格式文档下载.docx
《数值分析上机作业参考答案交14789Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数值分析上机作业参考答案交14789Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
(7)Ar=Ar-1-(qrurT+urqrT)r=(1,2,……n-2)
2:
超松弛法
其基本思想是在高斯方法已求出x(m),x(m-1)的基础上,组合新的序列,从而加快收敛速度。
其算式是:
xi(m)=(1-ω)xi(m-1)+ω(bijxi(m)+xj(m-1)+gi)
其中ω是超松弛因子,当ω>
1时,可以加快收敛速度。
3:
主元消去法:
对矩阵作恰当的调整,选取绝对值尽量大的元素作为主元素。
然后把矩阵化为上三角阵,再进行回代,求出方程的解。
二、程序清单:
#include"
math.h"
main()
{
inti,j,r,h;
doubles,sum,m,m1,n,k,u[9],q[9],y[9],w[9][9],
A[9][9]={
{12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.031743},{2.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124},
{-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.010103},
{1.112336,-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.71828,-0.037585},
{-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.784317},
{0.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.238417},
{1.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458,14.713846,3.123789,-2.213474}
{3.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782},
{-2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.0001}};
doubley1;
r=0;
while(r<
7)
{/*控制循环次数*/
sum=0;
for(h=r+1;
h<
9;
h++)/*求s和n的值*/
sum=sum+A[h][r]*A[h][r];
s=sqrt(sum);
n=s*(s+fabs(A[r+1][r]));
if(A[r+1][r]>
=0)
y1=1;
else
y1=-1;
for(i=0;
i<
r+1;
i++)/*给u赋值*/
u[i]=0;
for(i=r+2;
i++)
u[i]=A[i][r];
u[r+1]=A[r+1][r]+y1*s;
for(j=0;
j<
j++)/*求出y向量*/
{
m=0;
m=m+A[i][j]*u[i];
y[j]=m/n;
}
for(i=0;
i++)/*求k和q的值*/
{
m1=0;
j++)
m1=m1+u[j]*y[j];
k=m1/(2*n);
q[i]=y[i]-k*u[i];
for(i=0;
i++)/*求结果*/
w[i][j]=q[i]*u[j]+u[i]*q[j];
A[i][j]=A[i][j]-w[i][j];
r++;
}
printf("
转化后的矩阵为:
B[9][9]=:
\n"
);
/*打印转化后的矩阵*/
=8;
for(j=0;
%4.4f"
A[i][j]);
用超松弛法解方程组
#include"
{
inti,j,k,r,m;
doublew=1.4,g1[9],B1[9][9],b[9][9],x[9]={0},
g[9]={2.1874369,33.992318,-25.173417,0.84671695,1.784317,
-86.612343,1.1101230,4.719345,-5.6784392},
B[9][9]={{12.384120,-4.893077},{-4.893077,25.398416,6.494097},
{0,6.494097,20.611499,8.243925},{0,0,8.243925,23.422838,-13.880071},
{0,0,0,-13.880071,29.698278,4.534502},{0,0,0,0,4.534502,16.00617,4.881435},
{0,0,0,0,0,4.881435,26.013315,-4.503635},{0,0,0,0,0,0,-4.503635,21.254061,4.504498},
{0,0,0,0,0,0,0,4.504498,14.534122}},
e[9][9]={{1},{0,1},{0,0,1},{0,0,0,1},{0,0,0,0,1},{0,0,0,0,0,1},{0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,1}};
i=0;
j=0;
while(i<
9)/*求出矩阵b和g1的值*/
while(j<
9)
B1[i][j]=B[i][j]/B[i][i];
b[i][j]=e[i][j]-B1[i][j];
j++;
g1[i]=g[i]/B[i][i];
i++;
k=0;
while(k<
9)/*执行本算法*/
x[0]=(1-w)*x[0]+w*(b[0][1]*x[1]+g1[0]);
for(r=1;
r<
8;
r++)
x[r]=(1-w)*x[r]+w*(b[r][r-1]*x[r-1]+b[r][r+1]*x[r+1]+g1[r]);
x[8]=(1-w)*x[8]+w*(b[8][7]*x[7]+g1[8]);
k++;
for(m=0;
m<
m++)/*输出结果*/
printf("
%f\n"
x[m]);
}_
用消去法解方程组
inti,j,k,n;
doublex[9],m[9],l[9],h[9],
b[9]={2.1874369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,
1.1101230,4.719345,-5.6784392},
B[9][9]={{12.3841,-4.8931,},{-4.8931,25.3984,6.4941,},{0,6.4941,20.6116,8.2440,},
{0,0,8.2440,23.4231,-13.8802,},{0,0,0,-13.8802,29.6980,4.5344,},{0,0,0,0,4.5344,16.0061,
4.8814,},{0,0,0,0,0,4.8814,26.0133,-4.5036,},{0,0,0,0,0,0,-4.5036,21.2541,4.5045},{0,0,0,0,0,
0,0,4.5045,14.5341}};
8)/*迭代次数*/
l[i]=B[i+1][i]/B[i][i];
j++)/*求矩阵B和b的值*/
h[j]=B[i][j]*l[i];
B[i+1][j]=B[i+1][j]-h[j];
b[i+1]=b[i+1]-b[i]*l[i];
k=7;
while(k>
0)/*求出x的值*/
x[8]=b[8]/B[8][8];
m[k]=b[k]-B[k][k+1]*x[k+1];
x[k]=m[k]/B[k][k];
m[0]=b[0]-B[0][1]*x[1];
x[0]=m[0]/B[0][0];
k--;
for(n=0;
n<
n++)
x[n]);
三、运行结果:
第一题
(1)结果为:
B[9][9]=
12.3841–4.89310.00000.00000.00000.00000.00000.00000.0000
-4.893125.39846.49410.00000.00000.00000.00000.00000.0000
0.00006.494120.61168.24400.00000.00000.00000.00000.0000
0.00000.00008.244023.4231-13.88020.00000.00000.00000.0000
0.00000.00000.0000-13.880229.69804.53440.00000.0000.0000
0.00000.00000.00000.00004.534416.00614.88140.00000.0000
0.00000.00000.00000.00000.00004.881426.0133-4.50360.0000
0.00000.00000.00000.00000.00000.0000-4.503621.25414.5045
0.00000.00000.00000.00000.00000.00000.00004.504514.5341
第一题
(2)结果为:
x[0]=1.073409x[1]=2.272579x[2]=-2.856599x[3]=2.292510x[4]=2.112159x[5]=-6.422562x[6]=1.357798x[7]=0.634258x[8]=-0.587041
第一题(3)结果为:
x[0]=1.075802x[1]=2.275736x[2]=–2.855472x[3]=2.293009x[4]=2.112517x[5]=–6.42