1

我需要得到方程组的解。为此,我使用函数 sgesv_()。

一切都很好,它返回了解决方案的正确结果。

但我收到一个奇怪的警告。

警告:从不兼容的指针类型传递“sgesv_”的参数 3

我正在使用该功能,因为 Apple 在 WWDC 视频中使用它。

我究竟做错了什么?

a1,a2,b1,b2,c1,c2 是浮点数

        __CLPK_integer info;
        __CLPK_integer n=2;
        __CLPK_integer nb=1;
        __CLPK_integer ipiv[n];
        float A[n][n];
        A[0][0]=a1;
        A[0][1]=a2;
        A[1][0]=b1;
        A[1][1]=b2;
        float B[n];
        B[0]=-c1;
        B[1]=-c2;
        sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info);
4

1 回答 1

4

第三个参数是 afloat *但你传递的是一个二维浮点数组。碰巧这些花车的顺序是正确的。要摆脱警告,您可以这样做:

    sgesv_(&n, &nb, &A[0][0], &n, ipiv, B, &n, &info);

或这个:

    sgesv_(&n, &nb, A[0], &n, ipiv, B, &n, &info);

甚至这个:

    sgesv_(&n, &nb, (float *)A, &n, ipiv, B, &n, &info);

或者您可以“展平”您的 A 阵列,例如

    float A[n * n];
    A[0 * n + 0] = a1;
    A[0 * n + 1] = a2;
    A[1 * n + 0] = b1;
    A[1 * n + 1] = b2;
    // ...
    sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info);
于 2011-08-16T16:23:49.957 回答