用python求解非方矩阵:如何使用numpy.linalg.lstsq()?

2024-03-23

要求的行为
我想用 python 求解非方矩阵。该矩阵具有两个线性相关向量。

当前状态
我尝试使用numpy.linalg.solve()首先,但这仅适用于方阵。 其他推荐使用的 StackOverflow 帖子numpy.linalg.lstsq().

issue
但是,我不明白如何实施numpy.linalg.lstsq()正确。该函数正确求解最后一个参数,但不能正确求解其他参数。一篇文章推荐这个解决方案 https://andreask.cs.illinois.edu/cs357-s15/public/demos/06-qr-applications/Solving%20Least-Squares%20Problems.html我也不明白。

我必须以某种方式实现循环吗?

有人可以给我提供一个代码示例吗?这个矩阵怎么解 使用Python有问题吗?

我当前的代码

import numpy as np

# defining a linear equation system E=F with
#   | -2 * x1 - 4 * x2 + 1 * x3 -  9 * x4 + 0 * x5 =  +5  |
#   |  3 * x1 + 6 * x2 + 0 * x3 + 12 * x4 + 3 * x5 = +15  |
#   |  1 * x1 + 2 * x2 + 1 * x3 +  3 * x4 + 1 * x5 = -17  |
#   | -5 * x1 - 4 * x2 + 1 * x3 -  9 * x4 + 0 * x5 = +14  |


E=np.array(
    [
        [-2,-4,1,-9,0],
        [3,6,0,12,3],
        [1,2,1,3,1],
        [-5,-10,3,-23,1]
    ]
)

F=np.array(
    [3,15,-17,14]
)

solutionNonSquare = np.linalg.lstsq(E, F)
print('the solution vector is: {x1, x2, x3, x4, x5}=')
print(solutionNonSquare)

Written Matrix solution enter image description here


这是一个欠定方程组。这意味着有很多解决方案,并且不存在“唯一”解决方案。事实上,高斯消除法和lstsq给出不同的解决方案并不意味着有什么问题。

让我们生成并检查各种解决方案:

import scipy.linalg as sla

E_null = sla.null_space(E)

def check_solution(coeffs):
    x = solutionNonSquare[0] + E_null @ coeffs
    check = E @ x - F
    with np.printoptions(precision=2, suppress=True):
        print('x = {}'.format(x))
    with np.printoptions(precision=5, suppress=True):
        print('E . x - F = {}'.format(check))
    print('|x| = {}'.format(np.linalg.norm(x)))

我们可以检查产生的最小范数解lstsq:

>>> check_solution([0, 0])
x = [ -4.35  -8.69 -19.69   2.31  17.5 ]
E . x - F = [ 0. -0. -0.  0.]
|x| = 28.174593028253167

我们可以生成和测试许多其他解决方案

>>> check_solution(100 * np.random.randn(2))
x = [ -88.93 -139.06   66.64   88.64   17.5 ]
E . x - F = [ 0.  0. -0.  0.]
|x| = 199.62363490542995
>>> check_solution(100 * np.random.randn(2))
x = [-25.2  -26.99  -5.33  16.67  17.5 ]
E . x - F = [ 0. -0. -0.  0.]
|x| = 44.455362582961335
>>> check_solution(100 * np.random.randn(2))
x = [ 93.34  14.57 -55.74 -33.74  17.5 ]
E . x - F = [ 0. -0. -0. -0.]
|x| = 116.09338153741933

我们甚至可以看看您的解决方案:

>>> my_favourite_solution = np.array([-12.5, 0, -22, 0, 17.5 ])
>>> my_favourite_coeffs = my_favourite_solution @ E_null
>>> check_solution(my_favourite_coeffs)
x = [-12.5   0.  -22.   -0.   17.5]
E . x - F = [ 0. -0. -0.  0.]
|x| = 30.765240125830324
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用python求解非方矩阵:如何使用numpy.linalg.lstsq()? 的相关文章

随机推荐

  • 在 c# 2008 中使用正则表达式验证的电话号码验证?

    我想验证这种格式的电话号码 即 919981424199 91231456789 我正在使用 Asp net c 2008 来开发网站 为此 我使用了正则表达式验证控件 gt 属性 gt 验证表达式 0 9 0 9 但这接受号码为91998
  • Emacs 确定键盘布局

    Emacs 有没有办法检测当前的键盘布局 我经常用英语和德语写文本 切换 Win 操作系统 键盘布局 但是 某些功能 例如 C Y 应始终位于相同的物理键上 无论我当前使用哪种语言进行输入 Thanks 考虑使用M x set input
  • 使用 Firebase 和 APNs 身份验证密钥进行生产推送通知

    在 TestFlight 上测试我的应用程序时 我注意到我没有收到推送通知 我已确认 当从 Xcode 加载构建时 我可以收到从云函数和 firebase 控制台发起的通知 我引用了其他类似的问题 但没有一个反映我正在处理的确切问题 在 F
  • 如何将文件保存到 MongoDB?

    我想将用户选择的文件保存到 MongoDB 如何正确地将文件添加到 BSON 对象以便将其添加到 MongoDB 如果我的方法不正确 请指出正确的方向 下面是客户端代码 此 jQuery 函数收集每个输入字段上的文本 需要文件部分的帮助 并
  • Spring Boot 几分钟后停止解析视图

    我有一个 Spring Boot 应用程序 它突然停止解析视图 而是向我抛出 404 错误 这些是我的依赖项
  • 如何从代码隐藏中确定 ASP.NET 生成的 ID?

    在 ASP NET 中 当您为标签提供 ID 时 它会根据控件层次结构为该元素生成唯一的 HTML id 即
  • 如何在未聚焦时保持 WPF 文本框选择?

    我想在 WPF TextBox 中显示一个选择 即使它没有焦点 我怎样才能做到这一点 我已将此解决方案用于 RichTextBox 但我认为它也适用于标准文本框 基本上 您需要处理 LostFocus 事件并将其标记为已处理 protect
  • d3 强制定向图删除文本光标

    当我向 d3 力定向图形布局中的节点添加文本时 当我将鼠标悬停在该节点上时 鼠标指针会更改为文本光标 有没有办法避免这种情况并始终让它保持常规指针 普通指针 文本光标 这是一个fiddle http jsfiddle net pkerped
  • 在哪里可以找到 Java API 代码[重复]

    这个问题在这里已经有答案了 我听说Java是开源代码 那么 我可以获得 Java API 编码方法吗 如果是这样 请告诉我在哪里可以获取 Java API 的源代码 您可以在src zip在JDK安装目录下 From Java docs h
  • 使用应用程序中存储的图像的本地路径将 Web 应用程序加载到 Web 视图中

    我希望能够创建一个使用 WebView 请求 url 的应用程序 从外部 Web 应用程序返回 html 和 css 引用作为实际应用程序中的资产的图像 这 想法基本上是加速一切 以便图像永远不必 被下载 这是一个简化的示例 服务器 HTM
  • 不考虑锁的文件只读访问 (C#)

    如何打开 使用 C 已打开的文件 例如在 MS Word 中 我想如果我打开文件进行读取访问 例如 FileStream f new FileStream filename FileMode Open FileAccess ReadWrit
  • 如何知道分数中的循环小数?

    我已经知道分数何时是重复小数 这是函数 public bool IsRepeatingDecimal get if Numerator Denominator 0 return false var primes MathAlgorithms
  • Tradingview Pine-Script:如何仅绘制最后 x 个周期

    我只想绘制最后 x 个周期的指标 我怎么做 如果我可以进行时间操作 从plotStartDate中减去x period 也许我可以使用以下代码 period timeframe ismonthly or timeframe isweekly
  • SPLoginViewController 用于记住凭据

    在 CocoaLibSpotify 中 如何让 SPLogin ViewController 存储凭据 以便用户稍后可以通过 PSSession sharedSession attemptsLogin WithStoredCredentia
  • Laravel 5.5 使用自定义消息进行验证

    我正在我的 laravel 应用程序中处理密码更改表单 我想将验证器与自定义错误消息一起使用 我的代码如下所示 rules username gt required max 255 oldpassword gt required max 2
  • 与模块相比,使用具有静态函数的类有什么优势吗?

    我想要一些建议 我正在使用打字稿来创建对话框 一旦创建 它们就会自行处理 因为它们有自己的提交按钮并进行自己的检查 以下两种编码方式有什么优点或缺点吗 到目前为止 我唯一能看到的是 带有导出的模块方法允许我隐藏一个函数 并在不导出它的情况下
  • 如何更改 bookdown pdf 中的字体和磅值?

    我正在写一个文档 严格要求使用arial 12点 我在 bookdown 中修改了输出 yml 如下所示 site bookdown bookdown site fontsize 12pt fontfamily arial document
  • 水豚 fill_in 只适用于字段 id,为什么?

    在运行我的 rspec 测试时 我收到错误 Capybara ElementNotFound 无法找到字段 名字 我的rspec测试如下 describe with valid information do before do puts p
  • android:动态列表视图焦点每次从其他项目失去焦点后都会返回第一个项目

    我使用两个列表视图的 list A 和 list B 它们具有相同数量的列表项 如图 1 所示 其中 list B 是自定义数组适配器 其中每个项目作为列表 字符串 动态创建所需宽度的按钮 public class LarrayAdapte
  • 用python求解非方矩阵:如何使用numpy.linalg.lstsq()?

    要求的行为 我想用 python 求解非方矩阵 该矩阵具有两个线性相关向量 当前状态 我尝试使用numpy linalg solve 首先 但这仅适用于方阵 其他推荐使用的 StackOverflow 帖子numpy linalg lsts