【问题标题】:How to find elements in a 2x2 matrix when given the determinant, a, and b给定行列式 a 和 b 时如何在 2x2 矩阵中查找元素
【发布时间】:2023-03-15 02:29:02
【问题描述】:

所以我得到了 2 x 2 矩阵的行列式,我还得到了 a 和 b 的值作为矩阵的第一行的向量。我不知道如何找到 c 和 d

矩阵C的行列式等于+-1,[1,2]的向量是[a,b],求c和d完成方程ac - bd = +-1

【问题讨论】:

  • (一般)2x2 矩阵 (a b \\ c d) 的行列式由 ad-bc 而不是 ac-bd 给出。您正在尝试求解方程 det (1 2 \\ c d) = ±1,它分解为 d-2c=±1,这意味着这个问题有无限的解。
  • 正如@alexschu98 所说,有无限的解决方案。但是,假设行[d, c] 也是整数值,您可以使用extended Euclidean algorithm 来查找(无限)解对的“参数”表达式:[d, c]。但是请注意,通常只有 两个 [d, c] 对,这样|d| + |c| 就被最小化了。

标签: math matrix determinants


【解决方案1】:

按照 @alexchu98 和 @BrettHale 的 cmets,这里是使用 sympy 的解决方案

from sympy import *
a,b,c,d = symbols('a b c d', integer=True)
A = Matrix([[a,b],[c,d]])

def solve_val(val):
    D = A.det()
    eq = Eq(D,val)
    display(eq)
    eq1 = eq.subs({a:1,b:2})
    display(eq1)
    from sympy.solvers.diophantine.diophantine import diop_solve
    sol = diop_solve(eq1.lhs - eq1.rhs)
    display(sol)
    print("===")

solve_val(1)
solve_val(-1)

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-09
    • 2013-04-20
    • 2021-04-18
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多