Wolfram mathematica 当n是一个带有mathematica、maple或maxima的变量时,如何计算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可能不容易提供表示抽象向量或不确定大小矩阵的结构,因此您可以尝试根据行列式的某些已知属性来重铸问题 例如,使用

例如,一个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可能不容易提供表示抽象向量或不确定大小矩阵的结构,因此您可以尝试根据行列式的某些已知属性来重铸问题

例如,使用可以利用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吗?