奇异矩阵 - python

2024-05-08

下面的代码显示了矩阵的奇异性问题,因为在 Pycharm 中工作我得到

raise LinAlgError("Singular matrix")
numpy.linalg.linalg.LinAlgError: Singular matrix 

我猜问题是 K 但我不明白到底是怎么回事:

from numpy import zeros
from numpy.linalg import linalg
import math

def getA(kappa):
    matrix = zeros((n, n), float)
    for i in range(n):
    for j in range(n):
            matrix[i][j] = 2*math.cos((2*math.pi/n)*(abs(j-i))*kappa)
    return matrix


def getF(csi, a):
    csiInv = linalg.inv(csi)
    valueF = csiInv * a * csiInv * a
    traceF = valueF.trace()
    return 0.5 * traceF


def getG(csi, f, a):
    csiInv = linalg.inv(csi)

    valueG = (csiInv * a * csiInv) / (2 * f)
    return valueG


def getE(g, k):
    KInv = linalg.inv(k)
    Ktrans = linalg.transpose(k)
    KtransInv = linalg.inv(Ktrans)
    e = KtransInv * g * KInv
    return e


file = open('transformed.txt', 'r')
n = 4
transformed = zeros(n)

for counter, line in enumerate(file):
    if counter == n:
        break
    transformed[counter] = float(line)

CSI = zeros((n, n))
for i in range(n):
    for j in range(n):
        CSI[i][j] = transformed[abs(i-j)]

A = getA(1)
F = getF(CSI, A)
G = getG(CSI, F, A)

K = zeros((n, n), float)
for j in range(n):
    K[0][j] = 0.0001

for i in range(1, n):
    for j in range(n):
        K[i][j] = ((3.0*70.0*70.0*0.3)/(2.0*300000.0*300000.0))*((j*(i-j))/i)*(1.0+(70.0/300000.0)*j)



E = getE(G, K)

print G
print K

有人有任何建议来修复它吗?谢谢


非常“接近”奇异的矩阵的逆矩阵通常会导致计算问题。一个快速的技巧是在求逆之前向矩阵的对角线添加一个非常小的值。

def getE(g, k):
    m = 10^-6
    KInv = linalg.inv(k + numpy.eye(k.shape[1])*m)
    Ktrans = linalg.transpose(k)
    KtransInv = linalg.inv(Ktrans + + numpy.eye(Ktrans.shape[1])*m)
    e = KtransInv * g * KInv
    return e

我认为这对于家庭作业来说已经足够了。但如果你想真正部署计算上稳健的东西,你应该寻找逆向的替代方案。

2x2 矩阵的数值稳定逆矩阵 https://stackoverflow.com/questions/8690456/numerically-stable-inverse-of-a-2x2-matrix

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇异矩阵 - python 的相关文章

随机推荐

  • Python IF 语句到单行

    是否可以将这段代码放在一行中 if x 0 a j sum elif x 1 b j sum e e D 这不是一个仅用于演示目的的工作示例 a j sum if x 0 else b j sum 如果您有 Python 3 8 或更高版本
  • ASP.NET Core API:身份验证弹出窗口未显示在 Swagger UI 中

    我有一个 ASP NET Core Web API 其中使用 Swashbuckle 集成了 Swagger 我已经使用操作过滤器成功在 Swagger UI 上集成了授权 因为我不想显示匿名 API 的挂锁 OperationFilter
  • Jupyter (iPython) 笔记本中的 Latex 宏未由 github 渲染

    我的 Jupyter 笔记本 ipynb 中有一个 Markdown 单元 其中包含以下内容 newcommand paren 1 left 1 right paren beta 2 该文件位于 Github 存储库中 LaTex 宏应用程
  • 如何将自定义迁移添加到外部 Django 应用程序

    我已经在我的自定义 Django 1 10 应用程序中对一些第三方应用程序进行了一些猴子修补 现在 当我尝试创建初始迁移时 它还会为这些外部应用程序生成迁移 但它将这些迁移放在我的 virtualenv 的站点中 packages 目录 无
  • 如何迭代 RecyclerView 项目

    在我的应用程序中 我有一个带有简单项目视图的 RecyclerView 该视图由每行中的 TextView 和 Spinner 组成 用户从操作栏中单击 保存 后 我需要迭代所有项目并获取 Spinner 选择的值 有什么想法可以或应该如何
  • nix 用户包与系统包

    I use Vagrant virtualBox and a Debian 8 Ubuntu我的开发环境的图像 我想用nix https nixos org nix用于配置 但我无法获取nixOS完全正确地工作 即网络 配置 但我非常乐意切
  • 如何创建无法创建新文档的基于文档的应用程序?

    我有一个基于文档的应用程序 旨在处理现有文档 而不是创建新文档 如何防止应用程序在通过 Finder 打开应用程序时创建新的空白文档 您可以实现一个 NSApplication 委托协议方法 BOOL applicationShouldOp
  • 如何使用 Python Argparse 制作所需参数的短版本和长版本?

    我想指定一个名为的必需参数inputdir但我也想要它的简写版本i 我没有看到一个简洁的解决方案来做到这一点 而不使用两个可选参数 然后进行我自己的检查 是否有我没有看到的首选做法 或者唯一的方法是将两者设为可选并进行我自己的错误处理 这是
  • 确定范围是否重叠

    给定两个具有整数开始时间和结束时间的事件 E1 s1 e1 E2 s2 e2 实现快速布尔检查以查看事件是否重叠 我有解决方案 但我很想看看其他人想出了什么 编辑 好的 这是我的解决方案 e1 gt s2 s1 gt s2 e2 lt s1
  • 在开发模式下安装包(R源未编译成Rdb)

    我需要修改R代码在一个R具有 Fortran 绑定的包 当我安装软件包时 我看到存储库目录没有源代码 但是 Rdb而是二进制文件 我看了看devtools包 但我仍然不清楚如何在不编译 R 源部分的情况下安装该包 类似于 python py
  • NPM ci 之后的 NPM 修剪

    我有一个天真的问题 在 npm ci 之后进行 npm prune 是否有兴趣 对我来说 npm ci 似乎就足够了 不是吗 提前致谢 由于 npm ci 在安装之前删除了现有的 node modules 因此无需修剪 Npm prune
  • UIModalPresentationFormSheet 的圆角

    如果这是一个明显的问题 请原谅我 我是个相对较新的人 我有一个模态视图 我设置了自定义尺寸和圆角 void viewWillLayoutSubviews super viewWillLayoutSubviews self view supe
  • 如何使用一个凉亭同时创建两个地图?

    如下图所示 现在我的gazebo正在运行2个slam gmapping包 首先是 turtlebot slam gmapping 发布到 map 主题 第二个是 slam gmapping 发布到与第一个相同的 map 主题 我想创建一个新
  • 在操作栏中编辑文本

    我正在使用 Action Bar Sherlock 为我的应用程序创建 UI 在将依赖项添加到我的项目等后 我创建了一个活动来测试它 public class PPS extends SherlockActivity Override pu
  • 在用例建模中分解 CRUD

    我有一个后续问题用例图中的 CRUD https stackoverflow com questions 7772399 crud in a use case diagram 如果我需要分解复杂的用例 例如 管理用户 假设这很复杂 可以将它
  • 管道序列中的异常处理

    我正在开发一个基本的 2D CAD 引擎 管道操作符显着改进了我的代码 基本上 有几个函数从空间中的点 x y 开始 并在多次移动操作后计算最终位置 let finalPosition startingPosition gt moveByL
  • SeekBar setProgress 丢弃次要进度

    我的小学和中学的进步是同时增长的 中学的进步比小学的进步快 每次我更新主要进度时 次要进度都会丢失 就像它为零或小于主要进度一样 这会产生令人讨厌的闪烁 我发现的唯一解决方法是在设置主数据库后将辅助数据库设置为自身 我添加了 1 因为 Se
  • 如何使用延迟位置 iOS 6?

    我正在尝试使用新的 iOS 6 延迟位置更新功能 但不断收到此错误 didFinishDeferredUpdatesWithError Error Domain kCLErrorDomain Code 11 操作无法完成 kCLErrorD
  • 检查数独字段的很酷的算法?

    有谁知道一个简单的算法来检查数独配置是否有效 我想出的最简单的算法是 对于大小为 n 的板 伪代码 for each row for each number k in 1 n if k is not in the row using ano
  • 奇异矩阵 - python

    下面的代码显示了矩阵的奇异性问题 因为在 Pycharm 中工作我得到 raise LinAlgError Singular matrix numpy linalg linalg LinAlgError Singular matrix 我猜