| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1228 人关注过本帖
标题:矩阵求行列式
只看楼主 加入收藏
云烟渺渺之声
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2011-12-26
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:2 
矩阵求行列式
double det(double*M,int n)//M为矩阵的首地址,你为它的行数(列数)
{
    double a1,a2,add1=0,add2=0,det_M=0;
    int i,j,k;
    if (n==1)
    return det_M=M[0];
    if (n==2)
    return det_M=M[0]*M[3]-M[1]*M[2];
    for(k=0;k<n;k++)
    {
        a1=1;
        for(i=0,j=k;j<n;i++,j++)
            a1*=M[i*n+j];
        if(i!=j)
            for(i=n-1,j=k-1;j>=0;i--,j--)
                a1*=M[i*n+j];
        add1+=a1;
    }
    for(k=0;k<n;k++)
    {
        a2=1;
        for(i=n-k-1,j=0;i>=0;i--,j++)
            a2*=M[i*n+j];
        if((i+j)!=n+1)
            for(i=n-k,j=n-1;i<n;i++,j--)
                a2*=M[i*n+j];
        add2+=a2;

    }
    det_M=add1-add2;
    return det_M;
}
求4阶行列式就开始出错,为什么?该怎样写,求大神么指教。。。
搜索更多相关主题的帖子: double return 行列式 
2012-05-01 11:13
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
收藏
得分:5 
程序代码:
#include<stdio.h>

int oddeven(int i)
{
  if (i&1) return(-1);
  else return(1);
}


int ok(int j,int i,int size)
{
  if (j%size!=i)    return 1; else return 0;
}


double det(double *p,int size ) //work out the determinant
{
  double sum=0;
  int i,j,k;
  double newMatrix[49]={0};
  double *newp=newMatrix;

  if (size==2) {
     return (*p)*(*(p+3))-(*(p+1))*(*(p+2)); }

  if (size==1) {return *p; }

  for (i=0;i<size;i++)
      {
//generate the new matrix

        k=0;
        j=size;

        while (k<=size*size-size-size){

            if (ok(j,i,size))
            newMatrix[k++]=*(p+j);
              j++;
           }



 

//add it to sum by recursive function

          sum+=(*(p+i))*oddeven(i)*det(newp,size-1);
   }

    
    return sum;

}

void main()
{

  double  Matrix[][4]=
  {
   1,2,3,5,
   4,5,6,44,
   7,8,5,41,
   74, 55, 66, 4
  };
  int n,m;
  double *p =Matrix;

   printf("%lf",det(p,4));



}


无聊蛋疼地写了个行列式计算

[ 本帖最后由 zjsxwc 于 2012-5-1 20:46 编辑 ]

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2012-05-01 19:40
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:5 

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-05-02 18:38
快速回复:矩阵求行列式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073927 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved