东南大学数值分析上机练习前三章.docx
《东南大学数值分析上机练习前三章.docx》由会员分享,可在线阅读,更多相关《东南大学数值分析上机练习前三章.docx(12页珍藏版)》请在冰点文库上搜索。
东南大学数值分析上机练习前三章
数值分析上机练习
(以VC++6.0为操作平台)
第一章
20.
(1)程序如下:
#include
voidmain()
{
intN;
doublesum;
floatsum1=0,f;
cout<<"请输入N的初值:
";
cin>>N;
for(floati=2;i<=N;i++)
f=1/(i*i-1);
sum1=sum1+f;
}
cout<<"sum1="<sum=0.5*(1.5‐1.0/N‐1.0/(N+1));cout<<"sum="<}20.(2)程序如下:#include#include#includevoidmain(){intN;floatsum2=0,f;doublesum;cout<<"请输入N的初值:";cin>>N;for(floati=N;i>=2;i--){f=1/(i*i-1);sum2=sum2+f;}cout<<"sum2="<sum=0.5*(1.5‐1.0/N‐1.0/(N+1));cout<<"sum="<}20.(1)运行结果如下:100sum1=0.740049sum=0.74005Pressanykeytocontinue10000sum1=0.749852sum=0.7499Pressanykeytocontinue1000000sum1=0.749999sum=0.749999Pressanykeytocontinue20.(2)运行结果如下:100sum2=0.74005sum=0.74005Pressanykeytocontinue10000sum2=0.7499sum=0.7499Pressanykeytocontinue1000000sum2=0.749999sum=0.749999Pressanykeytocontinue结果分析:当n=100时,sum1的6位数字中有5位有效数字,而sum2所有数字都是有效数字。当n=10000时,sum1的6位数字中有4位有效数字,而sum2所有数字都是有效数字。当n=1000000时sum1,sum2有相同位数的有效数字。由运行结果可知:当精度较低时按从大到小的顺序累加的精度低于按从小到大的顺序累加结果的精度。至于当精度较高时,sum1,sum2会得出相同结果。第二章20.程序如下:#include#include#includevoidmain(){intcount=0;doublefl,f2,y;doublex,xl,u=1.0;cout<<"请输入x0的初值:";cin>>xl;cout<<"请输入容许误差y的初值:";cin>>y;for(count=0;fabs(u)>=y;count++){x=xl;fl=x*x*x/3-x;f2=x*x-1;xl=x-fl/f2;u=xl-x;if(count>10000){cout<<"迭代结果不收敛于0!"<break;}}cout<<"方程的一个根为:"<}运行结果如下:请输入x0的初值:100请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:0.7745967请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue请输入x0的初值:-0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:-0.7745967请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:-100请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue其中尽可能大的=0.7745966是经过多次试算得出的结论,并得出以下结论:当x0<-1时,Newton序列收敛于-1.73205;当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
sum=0.5*(1.5‐1.0/N‐1.0/(N+1));
cout<<"sum="<}20.(2)程序如下:#include#include#includevoidmain(){intN;floatsum2=0,f;doublesum;cout<<"请输入N的初值:";cin>>N;for(floati=N;i>=2;i--){f=1/(i*i-1);sum2=sum2+f;}cout<<"sum2="<sum=0.5*(1.5‐1.0/N‐1.0/(N+1));cout<<"sum="<}20.(1)运行结果如下:100sum1=0.740049sum=0.74005Pressanykeytocontinue10000sum1=0.749852sum=0.7499Pressanykeytocontinue1000000sum1=0.749999sum=0.749999Pressanykeytocontinue20.(2)运行结果如下:100sum2=0.74005sum=0.74005Pressanykeytocontinue10000sum2=0.7499sum=0.7499Pressanykeytocontinue1000000sum2=0.749999sum=0.749999Pressanykeytocontinue结果分析:当n=100时,sum1的6位数字中有5位有效数字,而sum2所有数字都是有效数字。当n=10000时,sum1的6位数字中有4位有效数字,而sum2所有数字都是有效数字。当n=1000000时sum1,sum2有相同位数的有效数字。由运行结果可知:当精度较低时按从大到小的顺序累加的精度低于按从小到大的顺序累加结果的精度。至于当精度较高时,sum1,sum2会得出相同结果。第二章20.程序如下:#include#include#includevoidmain(){intcount=0;doublefl,f2,y;doublex,xl,u=1.0;cout<<"请输入x0的初值:";cin>>xl;cout<<"请输入容许误差y的初值:";cin>>y;for(count=0;fabs(u)>=y;count++){x=xl;fl=x*x*x/3-x;f2=x*x-1;xl=x-fl/f2;u=xl-x;if(count>10000){cout<<"迭代结果不收敛于0!"<break;}}cout<<"方程的一个根为:"<}运行结果如下:请输入x0的初值:100请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:0.7745967请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue请输入x0的初值:-0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:-0.7745967请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:-100请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue其中尽可能大的=0.7745966是经过多次试算得出的结论,并得出以下结论:当x0<-1时,Newton序列收敛于-1.73205;当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
20.
(2)程序如下:
floatsum2=0,f;
for(floati=N;i>=2;i--)
sum2=sum2+f;
cout<<"sum2="<sum=0.5*(1.5‐1.0/N‐1.0/(N+1));cout<<"sum="<}20.(1)运行结果如下:100sum1=0.740049sum=0.74005Pressanykeytocontinue10000sum1=0.749852sum=0.7499Pressanykeytocontinue1000000sum1=0.749999sum=0.749999Pressanykeytocontinue20.(2)运行结果如下:100sum2=0.74005sum=0.74005Pressanykeytocontinue10000sum2=0.7499sum=0.7499Pressanykeytocontinue1000000sum2=0.749999sum=0.749999Pressanykeytocontinue结果分析:当n=100时,sum1的6位数字中有5位有效数字,而sum2所有数字都是有效数字。当n=10000时,sum1的6位数字中有4位有效数字,而sum2所有数字都是有效数字。当n=1000000时sum1,sum2有相同位数的有效数字。由运行结果可知:当精度较低时按从大到小的顺序累加的精度低于按从小到大的顺序累加结果的精度。至于当精度较高时,sum1,sum2会得出相同结果。第二章20.程序如下:#include#include#includevoidmain(){intcount=0;doublefl,f2,y;doublex,xl,u=1.0;cout<<"请输入x0的初值:";cin>>xl;cout<<"请输入容许误差y的初值:";cin>>y;for(count=0;fabs(u)>=y;count++){x=xl;fl=x*x*x/3-x;f2=x*x-1;xl=x-fl/f2;u=xl-x;if(count>10000){cout<<"迭代结果不收敛于0!"<break;}}cout<<"方程的一个根为:"<}运行结果如下:请输入x0的初值:100请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:0.7745967请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue请输入x0的初值:-0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:-0.7745967请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:-100请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue其中尽可能大的=0.7745966是经过多次试算得出的结论,并得出以下结论:当x0<-1时,Newton序列收敛于-1.73205;当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<<"sum="<}20.(1)运行结果如下:100sum1=0.740049sum=0.74005Pressanykeytocontinue10000sum1=0.749852sum=0.7499Pressanykeytocontinue1000000sum1=0.749999sum=0.749999Pressanykeytocontinue20.(2)运行结果如下:100sum2=0.74005sum=0.74005Pressanykeytocontinue10000sum2=0.7499sum=0.7499Pressanykeytocontinue1000000sum2=0.749999sum=0.749999Pressanykeytocontinue结果分析:当n=100时,sum1的6位数字中有5位有效数字,而sum2所有数字都是有效数字。当n=10000时,sum1的6位数字中有4位有效数字,而sum2所有数字都是有效数字。当n=1000000时sum1,sum2有相同位数的有效数字。由运行结果可知:当精度较低时按从大到小的顺序累加的精度低于按从小到大的顺序累加结果的精度。至于当精度较高时,sum1,sum2会得出相同结果。第二章20.程序如下:#include#include#includevoidmain(){intcount=0;doublefl,f2,y;doublex,xl,u=1.0;cout<<"请输入x0的初值:";cin>>xl;cout<<"请输入容许误差y的初值:";cin>>y;for(count=0;fabs(u)>=y;count++){x=xl;fl=x*x*x/3-x;f2=x*x-1;xl=x-fl/f2;u=xl-x;if(count>10000){cout<<"迭代结果不收敛于0!"<break;}}cout<<"方程的一个根为:"<}运行结果如下:请输入x0的初值:100请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:0.7745967请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue请输入x0的初值:-0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:-0.7745967请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:-100请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue其中尽可能大的=0.7745966是经过多次试算得出的结论,并得出以下结论:当x0<-1时,Newton序列收敛于-1.73205;当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
(1)运行结果如下:
100
sum1=0.740049
sum=0.74005
Pressanykeytocontinue
10000
sum1=0.749852
sum=0.7499
1000000
sum1=0.749999
sum=0.749999
(2)运行结果如下:
sum2=0.74005
sum2=0.7499
sum2=0.749999
结果分析:
当n=100时,sum1的6位数字中有5位有效数字,而sum2所有数字都是有效数字。
当n=10000时,sum1的6位数字中有4位有效数字,而sum2所有数字都是有效数字。
当n=1000000时sum1,sum2有相同位数的有效数字。
由运行结果可知:
当精度较低时按从大到小的顺序累加的精度低于按从小到大的顺序累加结果的精度。
至于当精度较高时,sum1,sum2会得出相同结果。
第二章
20.程序如下:
intcount=0;
doublefl,f2,y;
doublex,xl,u=1.0;
cout<<"请输入x0的初值:
cin>>xl;
cout<<"请输入容许误差y的初值:
cin>>y;
for(count=0;fabs(u)>=y;count++)
{x=xl;
fl=x*x*x/3-x;
f2=x*x-1;
xl=x-fl/f2;
u=xl-x;
if(count>10000)
cout<<"迭代结果不收敛于0!
"<break;}}cout<<"方程的一个根为:"<}运行结果如下:请输入x0的初值:100请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:0.7745967请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue请输入x0的初值:-0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:-0.7745967请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:-100请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue其中尽可能大的=0.7745966是经过多次试算得出的结论,并得出以下结论:当x0<-1时,Newton序列收敛于-1.73205;当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
break;
cout<<"方程的一个根为:
"<}运行结果如下:请输入x0的初值:100请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:0.7745967请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue请输入x0的初值:-0.7745966请输入容许误差y的初值:1e-6方程的一个根为:0Pressanykeytocontinue请输入x0的初值:-0.7745967请输入容许误差y的初值:1e-6方程的一个根为:1.73205Pressanykeytocontinue请输入x0的初值:-100请输入容许误差y的初值:1e-6方程的一个根为:-1.73205Pressanykeytocontinue其中尽可能大的=0.7745966是经过多次试算得出的结论,并得出以下结论:当x0<-1时,Newton序列收敛于-1.73205;当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
运行结果如下:
请输入x0的初值:
请输入容许误差y的初值:
1e-6
方程的一个根为:
1.73205
0.7745966
0
0.7745967
-1.73205
-0.7745966
-0.7745967
-100
其中尽可能大的
=0.7745966是经过多次试算得出的结论,并得出以下结论:
当x0<-1时,Newton序列收敛于-1.73205;
当-1时,Newton序列收敛于-1.73205当-时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
时,Newton序列收敛于-1.73205
当-
时,Newton序列收敛于0;当当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
时,Newton序列收敛于0;
当
当x0>1时,Newton序列收敛于1.73205.通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。第三章35.程序如下:#include#include#includeconstintN=9;//方程组系数增广矩阵的行数constintM=10;//方程组系数增广矩阵的列数voidmain(){intb,c,k,i,j;doublea[N][M];doubley;cout<<"请输入数组:"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
当x0>1时,Newton序列收敛于1.73205.
通过本上机题,我们可以知道当输入初值x0的不同,迭代结果可能收敛与不同的根。
第三章
35.程序如下:
constintN=9;//方程组系数增广矩阵的行数
constintM=10;//方程组系数增广矩阵的列数
intb,c,k,i,j;
doublea[N][M];
doubley;
cout<<"请输入数组:
"<for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
for(b=0;b{for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
for(c=0;c{cin>>a[b][c];}}cout<<"您输入的数组为:";for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cin>>a[b][c];
cout<<"您输入的数组为:
for(b=0;b{cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
for(c=0;c{cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<}}cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<intp,q;doublet[M];for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
intp,q;
doublet[M];
for(k=0;k{for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
for(q=k+1;q{if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
if(a[k][k]{for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
for(p=k;p{t[p]=a[k][p];a[k][p]=a[q][p];a[q][p]=t[p];//选出列主元}}}for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
t[p]=a[k][p];
a[k][p]=a[q][p];
a[q][p]=t[p];//选出列主元
for(i=k+1;i{y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
y=a[i][k]/a[k][k];//实施消去过程,得到上三角系数增广矩阵
for(j=k;j{a[i][j]=a[i][j]-y*a[k][j];}}}doublex[N];doubles;intf,g;x[N-1]=a[N-1][M-1]/a[N-1][N-1];for(f=N-2;f>=0;f--){s=0;for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
a[i][j]=a[i][j]-y*a[k][j];
doublex[N];
doubles;
intf,g;
x[N-1]=a[N-1][M-1]/a[N-1][N-1];
for(f=N-2;f>=0;f--)
s=0;
for(g=f+1;g{s=s+a[f][g]*x[g];}x[f]=(a[f][N]-s)/a[f][f];}cout<<"方程组的解为:"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
s=s+a[f][g]*x[g];
x[f]=(a[f][N]-s)/a[f][f];
cout<<"方程组的解为:
"<for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
for(b=0;b{cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<}cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<}运行结果如下:见附图36.程序如下:#include#include#defineeps0.5e-5//迭代误差voidmain(void){inti,j,l;floatw,t;floatm[9];floatsum;floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},{0,0,0,-9,0,0,0,-2,29}};floatb[9]={-15,27,-23,0,-20,12,-7,7,10};floatmax(floatm[9]);for(t=1.0;t<=99;t++){l=0;floatx0[9]={1,1,1,1,1,1,1,1,1};floatx1[9]={1,1,1,1,1,1,1,1,1};w=t/50;do{for(i=0;i<9;i++){x0[i]=x1[i];}for(i=0;i<9;i++){sum=0;for(j=0;j{sum=sum+a[i][j]*x1[j];}for(j=i+1;j<9;j++){sum=sum+a[i][j]*x0[j];}x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解for(i=0;i<9;i++){m[i]=x1[i]-x0[i];}l++;}while(max(m)>=eps);if(max(m)<=eps){cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
见附图
36.程序如下:
#defineeps0.5e-5//迭代误差
voidmain(void)
{inti,j,l;
floatw,t;
floatm[9];
floatsum;
floata[9][9]={{31,-13,0,0,0,-10,0,0,0},{-13,35,-9,0,-11,0,0,0,0},{0,-9,31,-10,0,0,0,0,0},{0,0,-10,79,-30,0,0,0,-9},{0,0,0,-30,57,-7,0,-5,0},{0,0,0,0,-7,47,-30,0,0},{0,0,0,0,0,-30,41,0,0},{0,0,0,0,-5,0,0,27,-2},
{0,0,0,-9,0,0,0,-2,29}};
floatb[9]={-15,27,-23,0,-20,12,-7,7,10};
floatmax(floatm[9]);
for(t=1.0;t<=99;t++)
{l=0;
floatx0[9]={1,1,1,1,1,1,1,1,1};
floatx1[9]={1,1,1,1,1,1,1,1,1};
w=t/50;
do
for(i=0;i<9;i++)
{x0[i]=x1[i];}
sum=0;
for(j=0;j
sum=sum+a[i][j]*x1[j];
for(j=i+1;j<9;j++)
{sum=sum+a[i][j]*x0[j];}
x1[i]=(1-w)*x0[i]+w*(b[i]-sum)/a[i][i];}//解出九个解
m[i]=x1[i]-x0[i];}
l++;
}while(max(m)>=eps);
if(max(m)<=eps)
{cout<<"迭代次数="<for(i=0;i<9;i++)cout<<"x1"<<"["<cout<<"-------------------------------------"<<'\n';}}}floatmax(floatm[9])//求出最大的迭代误差{floatk;k=(fabs(m[0]));for(inti=1;i<9;i++){if(fabs(m[i])>k)k=fabs(m[i]);}returnk;}运行结果如下:ω迭代次数ω迭代次数ω迭代次数ω迭代次数0.0212910.52551.02191.52240.047000.54531.04181.54250.064860.56511.06171.56270.083730.58481.08161.58300.103030.60461.10151.60310.122550.62441.12151.62340.142210.64421.14141.64360.161940.66411.16121.66390.181730.68391.18101.68440.201560.70371.20111.70490.221420.72361.22121.72550.241300.74341.24121.74600.261200.76331.26131.76710.281110.78321.28131.78810.301030.80301.30141.80970.32960.82291.32151.821210.34900.84281.34151.841570.36850.86271.36161.862280.38800.88261.38171.883980.40750.90251.40181.9015820.42710.92241.42191.9254270.44680.94231.44191.9421780.46640.96221.46201.9613740.48610.98211.48211.9810090.50581.00201.5022从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。不是合理的迭代值。当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:x1=-0.289231,x2=0.345437,x3=-0.712811,x4=-0.220608,x5=-0.430400,x6=0.154309,x7=-0.057823,x8=0.201054,x9=0.2902
cout<<"x1"<<"["<
cout<<"-------------------------------------"<<'\n';}
floatmax(floatm[9])//求出最大的迭代误差
floatk;
k=(fabs(m[0]));
for(inti=1;i<9;i++)
if(fabs(m[i])>k)
k=fabs(m[i]);
returnk;
ω
迭代次数
0.02
1291
0.52
55
1.02
19
1.52
24
0.04
700
0.54
53
1.04
18
1.54
25
0.06
486
0.56
51
1.06
17
1.56
27
0.08
373
0.58
48
1.08
16
1.58
30
0.10
303
0.60
46
1.10
15
1.60
31
0.12
255
0.62
44
1.12
1.62
34
0.14
221
0.64
42
1.14
14
1.64
36
0.16
194
0.66
41
1.16
12
1.66
39
0.18
173
0.68
1.18
10
1.68
0.20
156
0.70
37
1.20
11
1.70
49
0.22
142
0.72
1.22
1.72
0.24
130
0.74
1.24
1.74
60
0.26
120
0.76
33
1.26
13
1.76
71
0.28
111
0.78
32
1.28
1.78
81
0.30
103
0.80
1.30
1.80
97
0.32
96
0.82
29
1.32
1.82
121
0.34
90
0.84
28
1.34
1.84
157
0.36
85
0.86
1.36
1.86
228
0.38
80
0.88
26
1.38
1.88
398
0.40
75
0.90
1.40
1.90
1582
0.42
0.92
1.42
1.92
5427
0.44
68
0.94
23
1.44
1.94
2178
0.46
64
0.96
22
1.46
20
1.96
1374
0.48
61
0.98
21
1.48
1.98
1009
0.50
58
1.00
1.50
从1.92到2.00均出现不合理的迭代次数,迭代次数偏大。
不是合理的迭代值。
当初值为x=(1,1,1,1,1,1,1,1,1,)T时,从上表可以看出,最佳松弛因子为ω=1.18,迭代次数仅为10次,方程的解为:
x1=-0.289231,x2=0.345437,x3=-0.712811,
x4=-0.220608,x5=-0.430400,x6=0.154309,
x7=-0.057823,x8=0.201054,x9=0.2902
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2