数值分析C语言迭代法.doc
文本预览下载声明
数值分析实验报告
上机实验题目
用SOR法求解方程组:
分别取w=0.65、1、1.2、1.45计算.要求精度为10-6;并指出迭代次数。
(参考P66解线性方程组的SOR迭代算法)
/*************************************************/
#include stdio.h
#include stdlib.h
#include stdio.h
void SOR();
double SORi(int);
double SORj(int);
double
A[4][5]= {4,-6,2,-8,-8,-6,10,-6,14,12,2,-6,35,-15,16,-8,14,-15,22,13};
double X[4]={0};
double w;
int main(){
printf(请输入w的值\n);
scanf(%lf,w);
SOR();
return 0;
}
void SOR(){
int i=0,j,n=0,max;
printf(输入迭代次数\n);
scanf(%d,max);
while(nmax){
printf(迭代第%d次\n,n);
while(i4)
{
X[i]=X[i]+(w/A[i][i])*(A[i][4]-SORi(i)-SORj(i));
printf(X[%d]=%lf8\n,i,X[i]);
i++;
}
i=0;
n++;
}
}
double SORi(int i){
int j=0;
double sum=0;
while(ji)
{
sum+=A[i][j]*X[j];
j++;
}
return sum;
}
double SORj(int i){
int j=i;
double sum=0;
while(j4)
{
sum+=A[i][j]*X[j];
j++;
}
return sum;
}
/*************************************************/
w=0.65时
迭代了542次
/*****************************************************************************/
w=1时
迭代了278次
/********************************************************************/
w=1.2时
迭代了168次
/*******************************************************************/
w=1.45时
迭代了137次
由以上实验中得出w 取值为1.45时迭代效率较高。
显示全部