?? jacobi.c
字號:
//雅戈比方法:經過25次迭代,無法達到題目所規定的精度。
#include <stdio.h>
#include <math.h>
#define N 6
#define E 0.00001
print_column_N(double array[N][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%5f ",array[i][j]);
printf("\n");
}
getchar();
}
print_column_1(double array[N])
{
int i;
for(i=0;i<N;i++)
{
printf("%5f ",array[i]);
printf("\n");
}
getchar();
}
main()
{
int i,j,n;
double max;
double a[N][N]=
{{4,-1,0,-1,0,0},
{-1,4,-1,0,-1,0},
{0,-1,4,-1,0,-1},
{-1,0,0,4,-1,0},
{0,-1,0,-1,4,-1},
{0,0,-1,0,-1,4}
};
double b[N]={0,5,0,6,-2,6};
double u[N],e[N];
double x[N];
for(i=0;i<N;i++)
{
x[i]=0;
}
/*examine a[N][N],b[N].*/
print_column_N(a);
print_column_1(b);
/*gaussian_scaled arithmetic core.*/
n=0;
while(1)
{
n++;
for(i=0;i<N;i++)
{
u[i]=b[i];
for(j=0;j<N;j++)
{
if(i!=j)
u[i]=u[i]-x[j]*a[i][j];
}
u[i]=u[i]/a[i][i];
e[i]=fabs(u[i]-x[i]);
}
for(i=0;i<N;i++)
{
x[i]=u[i];
}
max=e[0];
for(i=1;i<N;i++)
{
if(max<e[i])
max=e[i];
}
if(max<E)
{
printf("satisfy the presion:\n");
break;
}
if(n>25)
{
printf("iteration above 25:\n");
break;
}
}
printf("\n");
printf("%d",n);
printf ("\n");
getchar();
printf("X:\n");
print_column_1(x);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -