?? exp7.cpp
字號(hào):
# include <stdio.h>
# include <math.h>
double f(double x[9],double a[9][9],double b[9])
{
//函數(shù)f計(jì)算||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記錄迭代次數(shù),初始值為零
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}; //計(jì)算結(jié)果存放數(shù)組,初始值賦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("迭代次數(shù) %d\n\n",q);
printf("計(jì)算結(jié)果\n");
for(i=0;i<n;i++)
{
printf("\nx[%d] = %3.12f\n",i+1,x[i]);
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -