| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2210 人关注过本帖
标题:怎么求任意阶矩阵的行列式?
只看楼主 加入收藏
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
 问题点数:0 回复次数:4 
怎么求任意阶矩阵的行列式?
想高手请教,任意输入一个n阶的行矩阵,怎么求它的行列式??
搜索更多相关主题的帖子: 行列式 矩阵 
2006-03-03 12:38
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 
更正,是n阶矩阵,不是行矩阵
2006-03-03 12:39
yanguopen
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-12
收藏
得分:0 
更正,是n阶矩阵,不是行矩阵
2006-03-15 09:18
白色兔子
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-3-8
收藏
得分:0 
我也在想这个问题,是不是可以考虑递归呢?
如果是循环的话,n阶的就需要n层循环,效率低,而且没有通用性,好象不行……
我要研究下这个问题

[此贴子已经被作者于2006-3-17 22:25:08编辑过]

2006-03-15 18:45
白色兔子
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-3-8
收藏
得分:0 

这个问题搞定了,用的是代数余子式的思路.
有个重载函数,主要就是递归,把高阶递归到二阶的来算.
#include <iostream>
using namespace std;

void main()
{
float **getD(int &size);
float sum(float **s, int size, int n);
float sum(float **s, float *f, int size, int n);

int size;
float **s;

s = getD(size);

cout <<"The sum of D is:"<<sum(s, size, size-1)<<endl;
}

float **getD(int &size)
{
int i,j;
float **s;

cout << "Please input the size of D:";
cin >> size;
s = new float *[size];
for (i = 0; i <= size; i++)
{
s[i] = new float [size];
if (s[i] == NULL)
{
cout <<"Fail";
exit (1);
}
}

--size;
cout <<"Please input the D:";
for (i = 0; i <= size; i++)
for (j = 0; j <= size; j++)
cin >>s[i][j];

return s;
}

float sum(float **s, float *f, int size, int n)
{
int i;
float d=0;

if (n)
{
for (i = 0; i <= size; i++)
if (f[i])
{
f[i] = 0;
if ((i+size-n-1) % 2)
d += s[i][size - n - 1] * sum(s, f, size, n-1) * (-1);
else
d += s[i][size - n - 1] * sum(s, f, size, n-1);
f[i] = 1;
}
}
else
{
for (i = 0; i <= size; i++)
if (f[i])
for (int j = 0; j <= size; j++)
if (f[j]&&(j != i))
return (s[i][size - 1] * s[j][size] - s[i][size] * s[j][size -1]);
}
return d;
}

float sum(float **s, int size, int n)
{
int i;
float *f;

f = new float [size];
if ((s == NULL) || (f ==NULL))
{
cout <<"Fail";
exit (1);
}
for (i = 0; i <= size; i++)
f[i] = 1;

return sum(s, f, size, n);
}

2006-03-17 22:24
快速回复:怎么求任意阶矩阵的行列式?
数据加载中...
 
   



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

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