Wolfram mathematica 当n是一个带有mathematica、maple或maxima的变量时,如何计算n阶的行列式?
例如,一个n*n矩阵Wolfram mathematica 当n是一个带有mathematica、maple或maxima的变量时,如何计算n阶的行列式?,wolfram-mathematica,maxima,maple,Wolfram Mathematica,Maxima,Maple,例如,一个n*n矩阵 A_n=[2 1 1 ... 1] [1 2 1 ... 1] [... ...] [1 1 1 ... 2] 具有行列式n+1。我能用这些软件计算这个结果吗?这个 f[n_]:=Det[Table[1,{n},{n}]+IdentityMatrix[n]]; f[12] 返回13,并且似乎适用于任何中等大小的矩阵。由于Maple可能不容易提供表示抽象向量或不确定大小矩阵的结构,因此您可以尝试根据行列式的某些已知属性来重铸问题 例如,使用
A_n=[2 1 1 ... 1]
[1 2 1 ... 1]
[... ...]
[1 1 1 ... 2]
具有行列式n+1。我能用这些软件计算这个结果吗?这个
f[n_]:=Det[Table[1,{n},{n}]+IdentityMatrix[n]];
f[12]
返回
13
,并且似乎适用于任何中等大小的矩阵。由于Maple可能不容易提供表示抽象向量或不确定大小矩阵的结构,因此您可以尝试根据行列式的某些已知属性来重铸问题
例如,使用可以利用nx1矩阵V(n),其所有条目都是相同的1
所以det(A(n))=det(Id(n)+V(n)。转置(V(n))=1+det(转置(V(n)).V(n))=1+add(i,i=1..n)=1+n
另一种方法是考虑沿着第n行的一个小扩展。当从由A(n)表示的初始矩阵中删除第n行和第n列时,则得到A(n-1)。删除第n行和第j列(1..n-1中的j)将生成一个行列式为(-1)^j的矩阵。我在这里没有说明这一点。但请注意,这些子项中的任何一个都是(n-1)x(n-1)矩阵的单行交换,左上角是(n-2),其他地方是1
结果Q(n)A(n)的行列式由Q(n)=2*Q(n-1)-(n-1)给出。Q(1)=2。使用Maple的rsolve
命令
rsolve({Q(n)=2*Q(n-1)-(n-1), Q(1)=2}, Q(n));
n + 1
另一种方法可能是考虑行沿2…N行减少。您应该能够生成一个新的矩阵(具有相同的行列式),其对角线条目为:2,(i+1)/i,i=2..n。因此,行列式是一个方便伸缩的乘积
simplify( 2*product((i+1)/i, i=2..n) );
n + 1
当然,在特定值下处理大小为n的矩阵是很容易的
H:=n->1+Matrix(n,n,1):
with(LinearAlgebra):
seq(Determinant(H(i)),i=1..5);
2, 3, 4, 5, 6
U7:=LUDecomposition(H(6),output=U);
[2 1 1 1 1 1]
[ ]
[ 3 1 1 1 1]
[0 - - - - -]
[ 2 2 2 2 2]
[ ]
[ 4 1 1 1]
[0 0 - - - -]
[ 3 3 3 3]
[ ]
U7 := [ 5 1 1]
[0 0 0 - - -]
[ 4 4 4]
[ ]
[ 6 1]
[0 0 0 0 - -]
[ 5 5]
[ ]
[ 7]
[0 0 0 0 0 -]
[ 6]
# The product of the main diagonalentries telescopes.
mul(U7[i,i],i=1..6);
7
您的代码仍然可以精简:)记住,您可以在Mathematica中向矩阵添加标量:
f[n_]:=Det[1+IdentityMatrix[n]]
这不是很漂亮吗?然而+1我能直接得到n+1吗?