如何用c代码实现一维矩阵求逆?

如何用c代码实现一维矩阵求逆?,c,texture2d,matrix-inverse,texture1d,C,Texture2d,Matrix Inverse,Texture1d,你好,我用高斯·乔丹做1d,但我没有 我想求一维矩阵的逆。我找到了行列式,但我不知道这个矩阵的逆 你好,我亲爱的朋友们 我们的矩阵: double A[] = {6, 6 ,2, 4, 9 ,7, 4, 3 ,3}; double B[] = {6, 6 ,2, 4, 9 ,7, 4, 3 ,3}; double Final[9]; 计算行列式的函数: 整数逆(双*A,双*C,整数N){ int n=n; int i,j,k; 浮点数a[10][10]={0.0}; 双C[9]={0.0};

你好,我用高斯·乔丹做1d,但我没有

我想求一维矩阵的逆。我找到了行列式,但我不知道这个矩阵的逆

你好,我亲爱的朋友们

我们的矩阵:

double A[] = {6, 6 ,2, 4, 9 ,7, 4, 3 ,3};
double B[] = {6, 6 ,2, 4, 9 ,7, 4, 3 ,3};
double Final[9];
计算行列式的函数: 整数逆(双*A,双*C,整数N){ int n=n; int i,j,k; 浮点数a[10][10]={0.0}; 双C[9]={0.0}; 浮动轴=0.0; 浮动系数=0.0; 双和=0.0;```变量
对于(k=1;k,您似乎正在使用
C
作为输出参数(用于存储逆);但是,您也在函数中声明了一个同名的局部变量。这会导致局部变量出现阴影(即:隐藏)输出参数;因此,对函数中的
C
所做的更改不会影响调用函数看到的
C


若要解决此问题,您需要从函数中删除行
double C[9]={0};

您也可以演示如何调用此函数吗?请将其添加到您的问题中,格式理想。那么我如何修复此问题?不幸的是,错误消息:重新定义形式参数“C”
Function to calculate determinant:

int Inverse(double *A, double *C, int N){

    int n = N;
        int  i, j, k;
        float a[10][10] = { 0.0 };
        double C[9] = { 0.0 };
    float pivot = 0.0;
    float factor = 0.0;
    double sum = 0.0;  ```  variables



    for (k = 1; k <= n - 1; k++)
    {

        if (a[k][k] == 0.0)
        {

            printf("error");

        }
        else
        {
            pivot = a[k][k];
            for (j = k; j <= n + 1; j++)
                a[k][j] = a[k][j] / pivot;

            for (i = k + 1; i <= n; i++)
            {
                factor = a[i][k];

                for (j = k; j <= n + 1; j++)
                {
                    a[i][j] = a[i][j] - factor * a[k][j];
                }
            }

        }

        if (a[n][n] == 0)

            printf("error");

        else
        {

            C[n] = a[n][n + 1] / a[n][n];

            for (i = n - 1; i >= 1; i--)
            {

                sum = 0.0;

                for (j = i + 1; j <= n; j++)

                    sum = sum + a[i][j] * C[j];

                C[i] = (a[i][n + 1] - sum) / a[i][i];

            }

        }

    }

    for (i = 1; i <= n; i++)
    {

        printf("\n\tx[%1d]=%10.4f", i, C[i]);

    }

    system("PAUSE");
    return 0;

}