n n阶行列式的展开式详解式

计算N阶行列式:
计算N阶行列式:
急需解题步骤与答案,会做的请教一下吧,谢谢了!!!
从第2列开始,以后的每一列都加到第一列上:
x+y y 0.......0
x+y x y 0.....0
x+y 0 x y 0...0
...............
...............
x+y 0.......x y
x+y 0.......0 x
,把第一列都向外提出(x+y):
1 y 0 0 .......0
1 x y 0 0......0
1 0 x y 0......0
................
(x+y) 1 0 0 .......x y
1 0 0........0 x
,第一行减第二行,第二行减第三行,第三行减第四行,.....这样依次减下去=
y-x -y......
从第2列开始,以后的每一列都加到第一列上:
x+y y 0.......0
x+y x y 0.....0
x+y 0 x y 0...0
...............
...............
x+y 0.......x y
x+y 0.......0 x
,把第一列都向外提出(x+y):
1 y 0 0 .......0
1 x y 0 0......0
1 0 x y 0......0
................
(x+y) 1 0 0 .......x y
1 0 0........0 x
,第一行减第二行,第二行减第三行,第三行减第四行,.....这样依次减下去=
y-x -y 0...0
........................
(x+y) ........................
0...........x
,行列式的性质中,若某一列除了一个非零元素外,其余的元素都为0,则,这个行列式就等于这个非零元素的相关信息余子式:
y-x -y 0...0
.....................(x+y)
.......................
0...........x
,根据行列式的这个特性,又可以继续利用基本的运算,变成某行(列)只有一个非零元素的形式,这种方法叫做递推方法。
详细解答过程如下:按照第一列展开,
n阶行列式的计算是线性代数里比较麻烦的问题,行数与列数写得太多实在很麻烦,写得太少别说人家看不明白,常常自己也看不明白。好在这个问题与后面的学习基本上没有什么关...
详细解答过程如下:
梦三国,穿越火线
滑雪大冒险,我叫MT,暴走熊猫,保卫萝卜,打飞机
答: 女儿快二年级了,在数学方面记忆力表现极差,近几天做过的练习,一到测验就不会,咋办?
答: x->0:lim(1+x)^(-1/x)
=1/[x->0:lim(1+x)^(1/x)
x->∞:limxsin(1/x)
=1/x->0:lim[...
答: 计算科学是一门什么样的学科?
答:计算学科(通常也称作计算机科学与技术)作为现代技术的标志,已成为世界各国经济增长的主要动力。但如何认识这门学科,它究竟属于理科...
答: 补课是比较错误的方式。我一直到高中毕业没补过课。爸妈也不管我,随我学什么。我打游戏和化学都挺好。现在在大学读书,很深刻地感受到教育是钱买不来的。在实验室做小型的...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深。时间复杂度具体没有细看,应该不会太大。
ok,先看程序。
#include &malloc.h&
#include &stdio.h&
#include &stdlib.h&//包含的头文件不解释
typedef bool int
//因为标准c里边没有bool类型才这么做
#define false 0
#define true 1
//定义几个全局变量,无奈之举
//将整个行列式的值存到c指向的空间里
n = 0,//记录当前的行列式计算进行了多少步
a, //方便传递行列式的阶数
//记录每一步行列式计算所累加的结果
int aq(int a)
//计算阶乘的函数,就不多解释了
int s = 1;
for (int i = 1; i &= i ++)
void swap(int *a, int *b)
//利用地址传递,交换两个数的值
bool sa(int *l) //计算在行列式计算过程中每一项前边的符号是正还是负
int n = 0;//n为行列式展开式每一项的逆序数
for (int i = 0; i & a - 1; i ++)
for (int j = i + 1; j & j++)
if (l[i] & l[j])n++; //不断通过条件判断累加逆序数得出最终的逆序数
if (n % 2 == 0) //若为正,则返回false
//否则返回true
void perm(int *l, int k, int m) //整个程序里边的核心函数,找出在不同行不同列的所有组合
int i, s = 1;
if (k & m)
n++;//每递归回来一次,将记录运行次数加一
for (int j = 0; j & j ++)
s *= c[ l[ j ] + a * j ];//算出此次行列式展开式的这项的值
if ( sa( l ) ) s * = -1; //确定这一项的符号
//输出当前sum内的值(即到当前为止所得到的结果是多少)
//输出运行的完成程度(即当前运行的次数除以总次数)
printf(&%5d
完成度:%2.2f%%\n&, sum + = s, n / ( aq( a ) * 0.1 ) * 10 );
//不断的向内递归,就不多解释了,因为很多大公司招聘的时候,全排列问题在笔试环节是必出题,百度里有很多解释
for (i = i &= i++)
swap(l + k, l + i);
perm(l, k + 1, m);
swap(l + k, l + i);
void main()//主函数
int *b, //一个辅助变量,在递归函数中将b指向的空间内的值进行全排列,也即行列式展开式不同组合的下标
i, //循环中的辅助变量
f, //在格式化输出行列式的辅助变量
//判断是否退出程序的标志位
system(&color 3e&);//设置程序运行的前景色和背景色
u: system(&cls&);//清空屏幕
printf(&请输入行列式的阶数:\n&);
scanf(&%d&, &a);//获取行列式的阶数
b = ( int *) malloc ( sizeof ( int ) * a ); //为变量申请空间
c = ( int *) malloc ( sizeof ( int ) * a * a );
for ( i = 0; i & i++)
* ( b + i ) =//为辅助变量也即行列式下标逐个赋值
for ( i = 0; i & a * i++)
if ( i % a == 0 )
printf(&请依次输入行列式中第%d行的值(以空格分隔):\n&, i / a + 1 ); //提示输入行列式的值
scanf(&%d&, c + i );
printf(&\n\n&);
perm( b, 0, a - 1 );//计算行列式的值
printf(&\n行列式展开式共有%d项\n&, aq( a ) );//打印出来行列式的各种信息
if ( a % 2 != 0 ) f = a + 1;//判断当前的行列式是偶数行还是奇数行
for ( i = 0; i & a * i ++ )
if ( i / a + 1 == f / 2 && i % a == 0) //判断是否达到行列式中间的一行行首
printf(&D = &);//输出“D = ”
else if ( i % a == 0) //判断是否是每一行的行首,若是则输出四个空格,保证输出的格式优美
if ( i % a == 0) //判断是否是行首,若是输出制表符竖线,可与上一句写到一块儿
printf(&┃&);
if ( ( i + 1 ) % a == 0) //判断是否是行列式某一行的最后一个数
printf(&%2d&, * ( c + i ) );
else printf(&%2d &, * ( c + i ) );//若不是行列式某一行的最后一个数则在数字后边加一个空格
if ( ( i + 1 ) % a == 0 ) //判断是否到达一行的行末
printf(&┃&);
if ( ( i + 1 ) / a == f / 2 && ( i + 1 ) % a == 0) //判断是否达到行列式中间一行的行末,输出整个行列式的值
printf(& = %d\n&, sum);
else if ( ( i + 1 ) % a == 0 ) //判断是否到达行末输出换行
printf(&\n&);
printf(&\n\n&);
printf(&是否继续?( 1 / 0 )\n&);//提示是否退出
scanf(&%d&, &e);
n = 0;//每次都将都将上一次的运行记录消除
if ( e == 1 ) //判断是否推出
else if ( e == 0 ) exit( 0 );
过了很久之后,加了一些注释,若是各位看官还有不清楚的请百度去,或者直接问我,愿意解答。
里边还有好多地方可以调整,若有更好的调整方法,请联系我,不胜感激。&
本文已收录于以下专栏:
相关文章推荐
兴趣来了,编写一个求行列式的程序,关键要解决两个问题
1)行列式列序号的全排列
2)行列式的符号
using namespace std...
用行列式的定义方法求解行列式的值,方法肯定不是最简单的,但是觉得有趣。其中要用到全排列的递归算法、逆序数的算法
const int n =...
行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,...
double hanglieshi(double *h,int i,int j)
printf(&Error&);
import java.text.DecimalF
* N阶行列式求解
* @author imlilu
public class Test {
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)【图文】n阶行列式的定义_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
n阶行列式的定义
大小:716.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢以下试题来自:
单项选择题设n阶(n≥3)行列式|A|=a,将|A|每一列减去其余的各列得到的行列式为|B|,则|B|=()。
A.a(n-2)2n-1
B.a(2-n)2n-1
C a(n-2)22n-1
D.a(2-n)22n-1
为您推荐的考试题库
你可能感兴趣的试题
热门相关试卷
最新相关试卷您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
1-3 n 阶行列式解析.ppt 16页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:350 &&
你可能关注的文档:
··········
··········
二、n 阶行列式的定义 利用排列的逆序和奇偶性的概念 行列式还可以定义为: 小 结
排列的逆序数
n阶行列式的定义 * * 观察与思考?
?a11a22a33?a12a23a31?a13a21a32
?a11a23a32?a12a21a33?a13a22a31. a11 a21 a31 a12 a22 a32 a13 a23 a33
三阶行列式存在什么规律?
为了给出n阶行列式的定义? 我们要先研究三阶行 列式的结构?
n 阶行列式 1.宏观上 观察与思考?
?a11a22a33?a12a23a31?a13a21a32
?a11a23a32?a12a21a33?a13a22a31. a11 a21 a31 a12 a22 a32 a13 a23 a33
三阶行列式存在什么规律? (1)由6项组成 (2)3个正项,3个负项 2.微观上 (1)三阶行列式展开式的每一项都是其位于不同行不同列的三个元素之积; (3)带正号的三项列下标的排列分别为(123), (231), (312),
带负号的三项列下标的排列分别为(132), (213), (321)
--正项的逆序数为偶数,负项的逆序数为奇数 (2)若将每一项第一个下标按自然顺序排列,则第二个下标是123所有6种排列的一种;(123), (231), (312),
(132), (213), (321) 观察与思考?
?a11a22a33?a12a23a31?a13a21a32
?a11a23a32?a12a21a33?a13a22a31. a11 a21 a31 a12 a22 a32 a13 a23 a33
三阶行列式存在什么规律?
(1)行列式右边任一项除正负号外可以写成 三阶行列式的结构
其中p1 p2 p3 是1、2、3的某个排列?
(2)各项所带的正负号可以表示为(?1)t? 其中t为列标排列的逆序数?
(1)行列式右边任一项除正负号外可以写成 三阶行列式的结构
其中p1p2p3是1、2、3的某个排列?
(2)各项所带的正负号可以表示为(?1)t? 其中t为列标排列的逆序数?
三阶行列式可以写成
其中t为排列p1p2p3的逆序数? ∑表示对1、2、3三个数的所有排列p1p2p3取和?
在一个排列中? 如果某两个元素的先后次序与标准排列的次序不同(即一个大的数排在了一个小的数前面)? 就说有1个逆序?
一个排列中所有逆序的总数叫做这个排列的逆序数?
标准排列(自然排列)
在n个自然数的全排列中排列123 ? ? ? n称为标准排列?
逆序与逆序数
以下我们只讨论n个自然数的全排列?
n个自然数按一定的次序排成的一个无重复数字的有序数组称为一个n 级排列.
例如:546132是一个6级排列。
一、排列的逆序与奇偶性
在排列p1p2? ? ?pn中? 从第一个数p1开始,首先计算p1后面比p1小的数的个数 t1 ,对后面的每个pi也这样计算,得t2,t3 ???, tn,则这n个数目之和 t1?t2? ? ? ? ?tn 即为排列p1p2? ? ?pn的逆序数。记为 逆序数的计算
在排列32514中? t5?0?
t4?0? t3?2? t2?1? t1?2? 排列32514的逆序数为t?2?1?2?0?0?5?
标准排列12345的逆序数是多少?
逆序与逆序数
在一个排列中? 如果某两个元素的先后次序与标准排列的次序不同(即一个大的数排在了一个小的数前面)? 就说有1个逆序?
一个排列中所有逆序的总数叫做这个排列的逆序数?
排列32514的逆序数是5? 它是奇排列?
标准排列12345的逆序数是0? 它是偶排列?
逆序数为奇数的排列叫做奇排列? 逆序数为偶数的排列叫做偶排列?
奇排列与偶排列 逆序与逆序数
在一个排列中? 如果某两个元素的先后次序与标准排列的次序不同(即一个大的数排在了一个小的数前面)? 就说有1个逆序?
一个排列中所有逆序的总数叫做这个排列的逆序数?
在排列中? 将任意两个元素对调? 其余的元素不动? 就 得到另一个排列? 这种对排列的变换方法称为对换?
将相邻两个元素对换? 叫做相邻对换(邻换)? 对换 举例?
正在加载中,请稍后...

我要回帖

更多关于 n阶行列式的典型例题 的文章

 

随机推荐