Код для метода Жордана с выбором главного элемента по столбцу на С

Как модифицировать код с поиском главного элемента по всей матрице, чтобы получить код с выбором главного элемента по столбцу?

indi - массив элементов типа int размера n для того чтобы менять строки/столбцы(i/j) матрицы.

int sole(double *a, double *b, int *indi, int *indj, int n)
{
    for(int i=0; i<n; i++)
    {
        indi[i]=i;
        indj[i]=i;
    }
    for(int k=0; k<n; k++)
    {
        if(fabs(amax(a, indi, indj, k, n))<EPS)
            return -1;
        else
        {
            B(k)/=A(k,k);
            for(int j=k+1; j<n; j++)
                A(k,j)/=A(k,k);

            for(int i=0; i<n; i++)
                if(i!=k)
                {
                    B(i)-=A(i,k)*B(k);
                    for(int j=k+1; j<n; j++)
                        A(i,j)-=A(i,k)*A(k,j);
                }
        }
    }
    for(int i=0; i<n; i++)
    {
        a[indj[i]]=B(i);
    }
    for(int i=0; i<n; i++)
    {
        b[i]=a[i];
    }
    return 0;
}

double amax(double *a, int *indi, int *indj, int k, int n)
{
    double max=A(k,k);
    int imax=k, jmax=k, c;
    for(int i=k; i<n; i++)
        for(int j=k; j<n; j++)
            if(fabs(A(i,j))>fabs(max))
            {
                max=A(i,j);
                imax=i;
                jmax=j;
            }
    if(jmax>k)
    {
        c=indj[k];
        indj[k]=indj[jmax];
        indj[jmax]=c;
    }
    if(imax>k)
    {
        c=indi[k];
        indi[k]=indi[imax];
        indi[imax]=c;
    }
    return max;
}

Ответы (0 шт):