-->

Numerical Methods: Condition number and ill condition checking using C

Numerical Methods: Condition number and ill condition checking using C

    Source Code:

    #include<stdio.h>
    #include<math.h>
    void inverse(float matrix[6][6], int n){
        int i,j, k;
        float ratio,a;
        for(i = 0; i < n; i++){
            for(j = n; j < 2*n; j++){
                if(i==(j-n))
                    matrix[i][j] = 1.0;
                else
                    matrix[i][j] = 0.0;
            }
        }
        for(i = 0; i < n; i++){
            for(j = 0; j < n; j++){
                if(i!=j){
                    ratio = matrix[j][i]/matrix[i][i];
                    for(k = 0; k < 2*n; k++){
                        matrix[j][k] -= ratio * matrix[i][k];
                    }
                }
            }
        }
        for(i = 0; i < n; i++){
            a = matrix[i][i];
            for(j = 0; j < 2*n; j++){
                matrix[i][j] /= a;
            }
        }
        for(i = 0; i < n; i++){
            for(j = n; j < 2*n; j++){
                matrix[i][j-n] = matrix[i][j];
            }
        }
    }
    float norms(float matrix[][6],int n){
        int i,j;
        float sum = 0;
        for(i = 0; i < n; i++){
            for(j = 0; j < n; j++){
                sum += pow(matrix[i][j], 2);
            }
        }
        return sqrt(sum);
    }
    int main(){
        float matrix[6][6], cond_no, norm1, norm2, det;
        int i,j,n;
        printf("Enter order of matrix: ");
        scanf("%d",&n);
        printf("Enter the matrix: \n");
        for(i = 0; i < n; i++){
            for(j = 0; j < n; j++){
                scanf("%f",&matrix[i][j]);
            }
        }
        norm1 = norms(matrix,n);
        inverse(matrix,n);
        norm2 = norms(matrix,n);
        cond_no = norm1*norm2;
        printf("\nCondition No: %.2f\n", cond_no);
        return 0;
    }
    fardi zayden
    @مرسلة بواسطة
    كاتب ومحرر اخبار اعمل في موقع دراسات تقنية .

    إرسال تعليق