我有以下设置:
单元格 A1:C3 中有一个 3x3 矩阵,而 D1:D3 中有一个 3x1 向量。
我想计算由原始矩阵第1列,向量和原始矩阵第3列组成的新矩阵的行列式。
我输入的公式是: =MDETERM(A1:A3:D1:D3:C1:C3)
我得到 Err:502,但是我使用的数据有一个行列式,我已通过将单元格放在不同的工作表上并计算连续范围的行列式来验证它。
如果需要重现数据,请使用 3x3 单位矩阵(在 A、B、C 列中),其行列式为 1,然后将中间列替换为 3x1 向量(D 列,其内容实际上与单位矩阵的中间列相同,因此整个范围导致行列式已知为 1 的矩阵。)
由 A、D、C 列(按此顺序)形成新的 3x3 矩阵。
答案1
您使用的范围语法并没有像您想象的那样发挥作用。考虑一下您在 中有一个单位矩阵的情况A1:C3
。该语法A1:A3:C1:C3:B1:B3
不引用 A1:C3 中第二列和第三列交换的矩阵。它只是引用A1:C3
。Excel 或 LibreOffice 或任何其他电子表格程序看到此范围定义,只会在混乱中查找范围的左上角和右下角。它没有考虑顺序。它只是定义一个矩形范围。
您可以通过将单位矩阵放入A1:C3
并将第二列和第三列交换的矩阵放入来检查这一点E1:G3
。检查行列式。
=MDETERM(A1:C3)
返回 1。
=MDETERM(A1:A3:C1:C3:B1:B3)
也返回 1。
但
=MDETERM(E1:G3)
返回 -1。
在您尝试改组的范围不连续的特定情况下,语法A1:A3:D1:D3:C1:C3
读作A1:D3
。这不是方阵,因此MDETERM
返回错误。
如果您想找到该不连续范围的行列式,则必须在工作表的其他位置重新创建矩阵。