注册 登录
编程论坛 C++教室

菜鸟级新手求帮助

fl8962 发布于 2012-10-20 21:34, 288 次点击
#include<stdio.h>     求一个未知的多维数组的逆矩阵,并将数值保存到另一个数组,数组的维数为m,n,是任意输入的。求大神指教改正。
#define max 100
void main()
{
    int a[max][max]={0},b[max][max]={0},i,j,m,n;
    scanf("%d,%d",&m,&n);
    printf("\n");
    for(i=0;i<m;i++)
    {for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    }
        for(i=0;i<m;i++)
        {    for(j=0;j<n;j++)
            {
                printf("%d",a[i][j]);
                b[j][i]=a[i][j];
            }
            printf("\n");
        }
                for(j=0;j<n;j++)
                {    for(i=0;i<m;i++)
                        printf("%d",b[j][i]);
                printf("\n");
                }
}
   

[ 本帖最后由 fl8962 于 2012-10-20 22:28 编辑 ]
5 回复
#2
zxstrom2012-10-20 22:33
你的意图是求逆矩阵,但是你写的代码是求转置矩阵的。你到底是求逆矩阵还是求转置矩阵,这是两个不同的感念,可以翻翻高数。
#3
zhuanjia02012-10-21 00:18
以下是引用zxstrom在2012-10-20 22:33:55的发言:

你的意图是求逆矩阵,但是你写的代码是求转置矩阵的。你到底是求逆矩阵还是求转置矩阵,这是两个不同的感念,可以翻翻高数。



是线性代数。


A逆矩阵是1/A
A转置矩阵是A T
#4
zhuanjia02012-10-21 00:24
for(i=0;i<m;i++)
        {    for(j=0;j<n;j++)
            {
                if (i==j)    //少了一个判断条件
                    b[j][i]=a[i][j];
                printf("%d",a[i][j]);
                b[j][i]=a[i][j];
            }
            printf("\n");
#5
senpujituan2012-10-21 14:40
逆矩阵没这么简单吧!!
#6
zhuanjia02012-10-21 14:42
回复 5楼 senpujituan
没错,(1/A)=(1/|A|)*(A*)
1