首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何“重塑”为numpy.linalg.solve()的平方矩阵?

如何“重塑”为numpy.linalg.solve()的平方矩阵?
EN

Data Science用户
提问于 2019-04-01 12:47:57
回答 1查看 9.5K关注 0票数 1

我正试图使用y=a_1x+b_1y=a_2x+b_2找到行的交集。我无法理解的是如何正确地使A成为solve()工作的方阵。我对解线性方程组很熟悉,但这里有些东西我不明白。

代码语言:javascript
运行
复制
def meeting_lines(a1, b1, a2, b2):
    a = np.array([[a1], [a2]])
    b = np.array([b1, b2])
    return np.linalg.solve(a, b)

def main():
    a1=1
    b1=4
    a2=3
    b2=2

    y, x = meeting_lines(a1, b1, a2, b2)

在这里我期望y=-3x=1。然而,这在numpy.linalg.LinAlgError: Last 2 dimensions of the array must be square中失败了。

非常感谢你的帮助,想办法解决这个问题已经把我的一天搞砸了!

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-04-01 13:52:35

您应该按照如下方式将(x, y)作为未知数:\begin{align} \left.\begin{matrix} a_1x-y=-b_1\\ a_2x-y=-b_2 \end{matrix}\right\} \rightarrow \overbrace{ \begin{bmatrix} a_1& -1\\ a_2& -1 \end{bmatrix} }^{\boldsymbol{a}} \overbrace{ \begin{bmatrix} x\\ y \end{bmatrix} }^{\boldsymbol{x}} = \overbrace{ \begin{bmatrix} -b_1\\ -b_2 \end{bmatrix} }^{\boldsymbol{b}} \end{align},因此,代码应该是:

代码语言:javascript
运行
复制
import numpy as np

def meeting_lines(a1, b1, a2, b2):
    a = np.array([[a1, -1], [a2, -1]])
    b = np.array([-b1, -b2])
    return np.linalg.solve(a, b)

a1=1
b1=4
a2=3
b2=2
x, y = meeting_lines(a1, b1, a2, b2)
print(x, y)

其中产出:

代码语言:javascript
运行
复制
1.0 5.0
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/48345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档