首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何利用python中的cramer规则计算逆?

如何利用python中的cramer规则计算逆?
EN

Stack Overflow用户
提问于 2015-03-18 02:43:11
回答 3查看 2.5K关注 0票数 1

我试图使用python中的numpy包生成逆矩阵。不幸的是,我没有得到我期望的答案。

原始矩阵:

([17 17 5] [21 18 21] [2 2 19])

用Cramer法则反演原始矩阵的结果如下:

([4 9 15] [15 17 6] [24 0 17])

显然使用numpy.linalg.inv()给出

-3.19488818e-01,3.80191693e-01,-6.38977636e-03, 3.33333333e-01, -3.33333333e-01, 2.26123699e-18, -2.84345048e-01, 2.68370607e-01, 5.43130990e-02n

我期望把原来的矩阵和逆相乘会给出一个恒等矩阵,但正如你所看到的,我给出了一个充满浮点数的矩阵。

问题在哪里?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-18 02:53:17

我想你在用手倒置矩阵时可能犯了一个错误。

当我执行以下操作时

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

a = np.array([[17, 17, 5], [21, 18, 21], [2, 2, 19]], dtype=np.float)
inv = np.linalg.inv(a)

print np.dot(inv, a)

我得到了

代码语言:javascript
运行
AI代码解释
复制
array([[  1.00000000e+00,   0.00000000e+00,   1.05471187e-15],
       [  1.11022302e-16,   1.00000000e+00,  -7.21644966e-16],
       [  1.38235777e-17,   5.65818009e-18,   1.00000000e+00]])

这很好,请注意,对于机器精度而言,所有的非对角线元素都是大约为零的,所以看起来numpy正在用它做一个ok的工作!

请记住,浮点数不像实数那样工作,除非小心,否则计算中可能会出现小的舍入误差。

如果您想要这样做,请看一看同情,它将能够用精确的数学进行计算(代价是它慢一点)。

代码语言:javascript
运行
AI代码解释
复制
import sympy as sp

a = sp.Matrix([[17, 17,5],[21,18,21],[2,2,19]])
inv = a.inv()

print inv
print a * inv

产生精确的逆

代码语言:javascript
运行
AI代码解释
复制
Matrix([
[-100/313,  1/3, -89/313],
[ 119/313, -1/3,  84/313],
[  -2/313,    0,  17/313]])

,当乘以原始矩阵时,给出与您预期的完全相同的恒等式。

代码语言:javascript
运行
AI代码解释
复制
Matrix([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
票数 0
EN

Stack Overflow用户

发布于 2015-03-18 02:53:47

linalg是对的,你错了。

它给你的矩阵确实是逆的。但是,如果您使用的是np.array而不是np.matrix,那么乘法运算符就不会像预期的那样工作,因为它计算的是按分量计算的乘积。

在这种情况下,您必须执行mat.dot(inv(mat))

在任何情况下,您将得到的不是一个完美的恒等矩阵,因为四舍五入的错误(当我尝试它的非对角线矩阵条目是按10 ** (-16)的顺序)。

票数 0
EN

Stack Overflow用户

发布于 2015-03-18 03:23:15

您假定的逆显然是错误的;只有当逆矩阵中的某些项小于1时才能实现,而只有当某些项为负数时才能达到零。我不知道你做错了什么,所以我举了一个例子。使用克雷默法则,例如对于第一个条目(18*19 - 2*21)/(-939) =-0.319.-这正是numpy发现的.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29119880

复制
相关文章
Python 里 and、or 的计算规则
引子: >>> print '' or 5 or 0 5 >>> print 5 and 4 4 >>> print '' or 5 or 0 and 4 5 出现以上情况的原因是什么呢? bool('') == False bool(0) == False 所有变量的位操作都是通过强制转换成bool实现的,并且表达式的值是从左到右第一个能够确定表达式的值的变量。 例如 (‘’ or 5 or 0)==(False or True or False),当遇到第一个True的时候,表达式的值等于True这个变
用户1214487
2018/01/24
8820
Python 里 and、or 的计算规则
python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
kernel = np.array([1, 1, 1, 2]).reshape((2, 2))
全栈程序员站长
2022/09/25
5.5K0
python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
矩阵范数求导规则_矩阵逆的范数和矩阵范数的逆
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/05
8410
矩阵范数求导规则_矩阵逆的范数和矩阵范数的逆
python中的变量命名规则
There are only two hard things in Computer Science: cache invalidation and naming things. 在计算机科学领域只有两件难事:缓存失效 和 给东西起名字
全栈程序员站长
2022/09/02
1.2K0
如何利用Python中实现高效的网络爬虫
各位大佬们!今天我要和大家分享一个有关Python的技巧,让你轻松实现高效的网络爬虫!网络爬虫是在互联网时代数据获取的一项关键技能,而Python作为一门强大的编程语言,为我们提供了许多方便而高效的工具和库。让我们一起来揭开它的神奇力量吧!
华科云商小徐
2023/09/12
2240
初识python ,python中的语法规则
Python  (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
用户7886150
2020/11/18
7690
Python中如何定义变量?定义变量的规则是什么?
上一篇文章讲述了变量的概念和作用,下面讲解的是变量的第二个知识点 - 定义变量和定义变量名的规则,下一篇在讲解变量的使用。
python自学网
2022/02/24
3.4K0
python的命名规则_python命名规则[通俗易懂]
1、模块模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)# 正确的模块名importdecoderimport html_parser # 不推荐的模块名import decoder-特殊的如init模块,如果模块是包的私有模块会使用前缀加一个下划线。 包也是一样2、类名类名使用驼峰(camelcase)命名风格,首字母…
全栈程序员站长
2022/09/12
3.7K0
python的命名规则_python命名规则[通俗易懂]
线性代数学习笔记——第十一讲——逆矩阵的计算(利用初等变换求逆矩阵)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171669.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/25
8480
线性代数学习笔记——第十一讲——逆矩阵的计算(利用初等变换求逆矩阵)
利用wbs如何计算项目工期 ?
工作分解结构(Work Breakdown Structure, WBS)是将项目按照功能或过程进行逐层分解,直到划分为若干内容单一、便于组织管理的单项工作,最终形成的树形结构示意图。
PM吃瓜
2023/03/02
8540
利用wbs如何计算项目工期 ?
利用python完成比赛最终成绩的计算
编写代码模拟比赛最终成绩的计算过程,至少三个评委,去掉最高分和最低分并计算剩余分数的平均分要求最终结果为整数。
算法与编程之美
2023/08/22
2450
利用python完成比赛最终成绩的计算
利用Python进行组合数计算
开学几个星期了emmm 作业一如既往的多。。。。。。。 在做数学的时候经常要算组合数,奈何我的计算机太水了(其实是我懒哈哈) 正好最近学Python学的差不多哈哈,所以寻思着能不能用Python实现一下(虽然我用不上哈哈) 说干就干,在学校宿舍被窝里用QPython捣鼓了好一会(我菜),最终就实现了哈哈哈 下面我们来看看吧~
HCG_Sky
2020/07/24
3.2K0
如何利用Python实现工作中的自动化
这类工作大部分是重复性工作,但占据了你比较多的时间,有时候用蛮力做的事情,可以有更省时省力的办法。 作为一名优秀的社会主义接班人,肯定都会有将工作任务自动化的意识,于是我去了解了一下身边不同岗位(HR、产品、运营、市场、数据分析师等)每天需要面对的重复性劳动(肯定会有不全,各位大佬不要喷我~)
润森
2022/08/18
5580
如何利用Python实现工作中的自动化
如何利用Python画图
一、问题描述 对于刚刚学习编程的同学来说对编程是非常陌生的,对很多的代码也是非常陌生,高中忙于学习的我们甚至可以说是对编程是一无所知,进入大学进入到这个专业才开始接触很多电脑相关的东西才开始接触编程,下面我就教大家如何利用编程语言画图,以Python语言为例,我们这次利用Python画一个爱心。 二、问题分析 刚开始进入大学学习的我们,对于高中和大学教学方式的巨大转变一时间可能会有点适应不了导致我们可能听不懂老师讲的什么,尤其是对于一门新的课程。大学自由安排的时间会比高中多很多,所以我们一定要合理利用这些时间,下来之后对老师所讲的课程进行勤加练习或者复习。对于编程而言我们就是要多多练习代码,多敲才能提高我们的能力。 三、解决方案 1、我们首先应该引入turtle这个函数我们才能够进行画画,引入函数的方式有三种,为了我们后面的操作方便我们选择一种最简便的引入方式
全栈程序员站长
2022/08/31
7230
如何利用Python画图
如何在 Linux 中配置 firewalld 规则
“firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。
用户9236362
2021/11/30
3.5K0
利用 Aviator 实现规则配置
我们调研了业界主流的一些规则引擎以及表达式引擎,如 Drools、EasyRule、JEXL、Aviator、qlExpress 等。从复杂度、与我们目前需求的契合程度、扩展性、性能、社区活跃度、文档、资料的完善程度以及使用者的学习成本等多方面考虑,决定采用 Aviator 来作为 filter_express 解析引擎 。 Aviator创建之初就是为了高性能、轻量级,并且支持自定函数以及各种定制选项,拥有各种内置函数且扩展较好,足够简单,用户的学习成本足够低,并且可以完美解决这个的问题。
shengjk1
2021/12/08
4.3K0
如何在 Linux 中配置 firewalld 规则
以下命令列出 FirewallD 提供的zones。运行以下命令以列出zones:
用户7639835
2021/09/01
1.4K0
逆波兰式的java实现与计算
逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)。
zhangheng
2020/04/29
1.8K0
点击加载更多

相似问题

如何使用Cramer规则(Python)找到变量的值?

10

利用biogo计算矩阵逆?

25

利用lapack计算逆矩阵

13

用Cramer法则求矩阵的逆矩阵

133

MATLAB: Cramer规则中的残差

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文