使用numpy求解Zoepritz 方程矩阵伪逆时报错: SVD did not converge

笔者在使用numpy中的pinv函数求解伪逆时系统报错: SVD did not converge. 奇异值分解不收敛

具体原因不太清楚, 应该是因为函数在求解伪逆的算法在迭代过程中难以收敛导致的.

解决方法: 引入scipy中的求解伪逆的函数 scipy.linalg.pinv

Zoepritz equations的python程序在: https://github.com/cui-xiaoang96/Zoepritz-equations

原文地址:https://www.cnblogs.com/daangzi96/p/11703174.html

时间: 2024-11-15 00:10:24

使用numpy求解Zoepritz 方程矩阵伪逆时报错: SVD did not converge的相关文章

(数学概念)矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵

主要内容: 矩阵的逆.伪逆.左右逆 矩阵的左逆与最小二乘 左右逆与投影矩阵 一.矩阵的逆.伪逆.左右逆 1.矩阵的逆 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I. 则我们称B是A的逆矩阵,而A则被称为可逆矩阵. 可逆条件: A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵.(当 时,A称为奇异矩阵) 性质: 矩阵A可逆的充要条件是A的行列式不等于0. 可逆矩阵一定是方阵. 如果矩阵A是可逆的,A的逆矩阵是唯一的. 可逆矩阵也被称为非奇异矩

Numpy学习--多维矩阵“理解 : 的用法”

:(冒号)在多维数组选快儿时经常会用到,今天特此做下笔记. #############创建numpy数组 #1111111定义普通数组 #先直接定义是一个list list1 = [[2,3,1,1],[3,4,5,7],[3,1,6,1]] #然后np.array() 把list 变成数组 array = np.array(list1) #2222222 定义空数组 #全1 数组用ones zero =np.zeros((3,2)) print zero ################ #数

论如何求矩阵的逆?先看看基础芝士!

这是关于矩阵的一个bugblog (如果觉得格式看不下去请移步:洛咕) 矩阵求逆是个有趣(但暂且不知道有什么神奇运用)的东西, 不过矩阵这玩意儿貌似和线性代数以及向量之类的东西相关,所以学了绝对不亏 xiao 另外,本篇blog 并不一定毫无错误,甚至可能会有些理解上的小偏差,所以请各位观看的神仙及时指出好让作者修改精进,谢谢. 还有矩阵求逆的两种方法将会放在最后讲解 想要学会矩阵求逆的话,首先你得了解几个关于矩阵的概念以及名称的含义 (当然如果你知道这些概念的话可以直接往下跳) 基本概念 1.

矩阵的逆 C 语言 算法一

矩阵的逆 C 语言 算法一 一.求解步骤 1.矩阵必须是方阵(即矩阵的行列相等). 2.矩阵可逆的充分必要条件是其行列式的值不为零. 3.求出矩阵的伴随矩阵. 4.逆矩阵=行列式值的倒数*伴随矩阵. 二.算法 #include <stdio.h> #include <stdlib.h> void main() { int i,j; int dimension; double deterValue=1; double **array,**deterArray, **companion

《Linear Algebra and Its Applications》-矩阵的逆

矩阵的逆: 逆矩阵的定义: 类比于我们在研究实数的时候回去讨论一个数的倒数,对应的,在矩阵运算中,当AB = I的时候,A,B互称为逆矩阵,这里的I类似实数中的1,表示单位矩阵,即对角线是1其余位置是0的n x n的矩阵. 逆矩阵的唯一性: 逆矩阵是像实数的倒数一样唯一存在的么?我们不妨简单地证明一下.假设A的两个逆矩阵是B,C.根据定义我们有AB=I,AC=I,结合基本的矩阵运算法则,容易看到B=C=IA^-1,由此能够看到逆矩阵是唯一存在的. 如何求解逆矩阵: 如何求解逆矩阵这个问题其实能够

求解高阶微分方程

目录 ODE45 求解高阶微分方程 ode45是什么 ode45能干什么 ode45怎么用 语法 高阶 ODE通用解法 Demo1 问题来了 结果图展示 ODE45 求解高阶微分方程 最近困惑我一周的高阶微分方程求解,特地来总结一下,给有需要的同志们! (特此说明,官网有纰漏, 存在问题, 需要修改, 我最后会说哪里出问题了) ode45是什么 ? 所有 MATLAB ODE 求解器都可以解算 y′=f(t,y) 形式的方程组,或涉及质量矩阵 M(t,y)y′=f(t,y) 的问题.求解器都使用

numpy中的matrix矩阵处理

numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中. class numpy.matrix(data,dtype,copy):返回一个矩阵,其中data为ndarray对象或者字符形式:dtype:为data的type:copy:为bool类型. >>> a = np.matrix('1 2 7; 3 4 8; 5 6 9') >>> a          

Armadillo之求矩阵的逆(inverse)

求一个矩阵的逆(inverse or multiplicative inverse)使用矩阵的.i()方法或用inv()函数 m.i() //返回m的逆 1 若m不是方正的(square),则函数抛出std::logic_error异常. 2 如果m是奇异的(singular),则输出的矩阵将被重置,且抛出std::runtime_error异常 inv(m)   //返回m的逆 inv(A,m) //A被设为m的逆 1 若m不是方正的(square),则函数抛出std::logic_error

ModuleNotFoundError: No module named &#39;numpy.testing.nosetester&#39;----import sklearn.datasets.make_moons报错

import sklearn.datasets.make_moons时: 报错: ModuleNotFoundError: No module named 'numpy.testing.nosetester' 原因: numpy.sklearn.scipy.joblib版本不兼容. 解决方法: 将所有的包都更新到最新版本. [可添加清华源  -i https://pypi.tuna.tsinghua.edu.cn/simple] pip install --user --upgrade nump