1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
void gauss_seidel(float[] a, float[] b,ref float[] x2, int n)
{
float[] x=new float[n];
float[] x1=new float[n];
float s, p; float eps = 1e-11F; float val = 0.0000000033F;
int i,j,k,iter=0;
for (i = 0; i < n; i++) x1[i] = i*val ;
do
{
for(i=0;i<n;i++)
{
s=0;
p=0;
for (j=i+1;j<n;j++) s=s+a[i,j]*x1[j];
for (j=0;j<i;j++) p=p+a[i,j]*x2[j];
x2[i]=(b[i]-s-p)/a[i,i];
}
for (k=0;k<n;k++) {x[k]=Math.Abs(x1[k]-x2[k]);x1[k]=x2[k];}
iter++;
}
}
// Calcul norme vecteur
float norme(float[] x,int n)
{
float refe;int i;
refe=0;
for(i=0;i<n;i++) if (x[i]>refe) refe=x[i];
return(refe);
} |
Partager