word
word
1 / 23
word
2009级研究生
《数值分析》上机作业
院系 电气工程学院
专业 控制理论与控制工程
某某 马凯
指导教师 代新敏
word
word
2 / 23
word
2009年12月29日
第一题〔二问〕:超松弛法求方程组根
:
超松弛算法是在GS方法已求出x(m),x(m-1)的根底上,经过重新组合得到新序列。如能恰当选择松弛因子ω,收敛速度会比拟快。当ω>1时,称为超松弛法,可以用来加速收敛。其具体算法为:
〔使用软件:VC〕:
#include<>
main()
word
word
3 / 23
word
{float a[10][10]={ {0,0,0,0,0,0,0,0,0,0},
{0,,,-,,-,,,,-},
,},
{0,-,-,,,,,-,,-},
{0,,-,,,,-,,-,-},
11223,,},
0,,,,-,,,-,-,},
{0,,-,-,,-,-,,,-},
{0,,,,-,,-,,,},
{0,-,,-,-,,,-,,}};
float b[10][1]=
4392}};
float x[10][10]={{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}}; /*由x(0)=0得到其第一列全为零*/
float sum1=0,sum2=0;
int i,m,j;
word
word
4 / 23
word
for(m=1;m<=9;m++)
for(i=1;i<=9;i++)
{sum1=0;
for(j=1;j<=(i-1);j++)sum1+=(-a[i][j]/a[i][i])*x[j][m]; /*计算第一个累加和*/
sum2=0;
for(j=(i+1);j<=9;j++)sum2+=(-a[i][j]/a[i][i])*x[j][m-1]; /*计算第二个累加和*/
x[i][m]=(1-w)*x[i][m-1]+w*(sum1+sum2+b[i][0]/a[i][i]); /*用SOR方法计算*/
}
printf("x1为:%lf\n",x[1][9]);
printf("x2为:%lf\n",x[2][9]);
printf("x3为:%lf\n",x[3][9]);
printf("x4为:%lf\n",x[4][9]);
printf("x5为:%lf\n",x[5][9]);
printf("x6为:%lf\n",x[6][9]);
printf("x7为:%lf\n",x[7][9]);
printf("x8为:%lf\n",x[8][9]);
printf("x9为:%lf\n",x[9][9]);
}
word
word
5 / 23
word
〔误差分析、上机出现情况等〕
这道题目是所有题目中编写最顺利的,一次即顺利得出结果,当然这道题目还是有应该注意到地方,一是注意两个求和的清零,二是
研究生数值分析课后题上机编程部分答案 来自淘豆网www.taodocs.com转载请标明出处.