📄 exp7.cpp
字号:
# include <stdio.h>
# include <math.h>
double f(double x[9],double a[9][9],double b[9])
{
//函数f计算||A*x-b||∞,||A*x-b||∞为其元素的最大值
int i,j;
double temp,c[9],max;
for(i=0;i<9;i++)
{
temp=0.0;
for(j=0;j<9;j++)
{
temp +=a[i][j]*x[j];
}
c[i]=temp-b[i];
}
max=fabs(c[0]);
for(i=1;i<9;i++)
{
if( fabs(c[i])>max )
max=fabs(c[i]);
}
return max;
}
void main(void)
{
int i,j,n=9,q=0; //q记录迭代次数,初始值为零
double temp=1.0;
double t,s;
double x[9]={1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}; //计算结果存放数组,初始值赋1
double x1[9];
double a[9][9]={{31.0,-13.0,0,0,0,-10.0,0,0,0},
{-13.0,35.0,-9.0,0,-11.0,0,0,0,0},
{0,-9.0,31.0,-10.0,0,0,0,0,0},
{0,0,-10.0,79.0,-30.0,0,0,0,-9.0},
{0,0,0,-30.0,57.0,-7.0,0,-5.0,0},
{0,0,0,0,-7.0,47.0,-30.0,0,0},
{0,0,0,0,0,-30.0,41.0,0,0},
{0,0,0,0,-5.0,0,0,27.0,-2.0},
{0,0,0,-9.0,0,0,0,-2.0,29.0}};
double b[9]={-15.0,27.0,-23.0,0.0,-20.0,12.0,-7.0,7.0,10.0};
while(f(x,a,b)>0.000000000001 )
{
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
temp += a[i][j]*x[j];
}
for(j=i+1;j<n;j++)
{
temp += a[i][j]*x[j];
}
x[i]=-(temp-b[i])/a[i][i];
temp=0.0;
}
q++;
}
printf("迭代次数 %d\n\n",q);
printf("计算结果\n");
for(i=0;i<n;i++)
{
printf("\nx[%d] = %3.12f\n",i+1,x[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -