标签: matrix-inverse

在R编程中,关于逆矩阵及其乘法

这是我从[初学者指南到R]的练习中解决的过程

> Q
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    2    1
[3,]    2    3    0
> solve(Q)
      [,1]  [,2]  [,3]
[1,] -0.12  0.36 -0.16
[2,]  0.08 -0.24  0.44
[3,]  0.32  0.04 -0.24
> solve(Q)%*%Q
     [,1]          [,2] [,3]
[1,]    1 -2.775558e-17    0
[2,]    0  1.000000e+00    0
[3,]    0  0.000000e+00    1
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我无法得到身份矩阵应该出来的正确答案.

r matrix-inverse

2
推荐指数
1
解决办法
272
查看次数

特征未能给出正确的矩阵求逆(c ++)

我正在使用Eigen(与c ++一起使用的自由线性代数包)并试图反转一个小矩阵.遵循官方的Eigen文档后,我得到以下内容:

#include <iostream>
using namespace std;
#include <Eigen/LU>
#include <Eigen/Dense>
using namespace Eigen;

Matrix3d k = Matrix3d::Random();
cout << "Here is the matrix k:" << endl << k << endl;
cout << "Its inverse is:" << endl << k.inverse() << endl;
cout << "The product of the two (supposedly the identity) is:" << endl << k.inverse()*k << endl;
Run Code Online (Sandbox Code Playgroud)

这给了我正确的答案.但是,如果不是随机分配矩阵,如果我创建一个矩阵然后自己分配所有值,它会给我错误的反转.例如,以下代码将给出错误的反转.

Matrix3d m;
Matrix3d mi;
for (int i = 0; i < 3; ++ i)
    for (int j = 0; j …
Run Code Online (Sandbox Code Playgroud)

c++ matrix matrix-inverse eigen

2
推荐指数
1
解决办法
6129
查看次数

在Matlab中检查给定原始和改变矩阵的行

我一直试图将这个问题包围起来,并希望得到一些见解.假设您有矩阵A,那么您切换行直到最终得到矩阵B;

A = [1 3 1;
3 2 1;
2 3 1;];

B = [3 2 1;
1 3 1;
2 3 1;];

invA =

    0.0000   -1.0000    1.0000
   -1.0000   -1.0000    2.0000
    3.0000    5.0000   -7.0000


invB =

   -1.0000    0.0000    1.0000
   -1.0000   -1.0000    2.0000
    5.0000    3.0000   -7.0000
Run Code Online (Sandbox Code Playgroud)

我该如何记录这些行开关?我最终试图改变B的倒数以匹配A的倒数.我的结论是,给定2行切换(也就是行1和2之间),除了切换之外,逆的最终结果是相同的逆B的(1和2)

matlab permutation matrix linear-algebra matrix-inverse

2
推荐指数
1
解决办法
36
查看次数

矩阵反向出错

我有一个协方差矩阵的估计

我想取这个矩阵的逆,R给我以下错误

A=[ 3529861.470  8785861.47  6920.344 17120.34;
     8785861.470 26209861.47 17120.344 51920.34;
    6920.344    17120.34    14.000    34.00;
    17120.344    51920.34    34.000   104.00]
Run Code Online (Sandbox Code Playgroud)

"solve.default(l)中的错误:系统是计算奇异的:倒数条件数= 2.14511e-22".

但是Matlab在不给出任何错误消息的情况下进行逆向计算.有谁知道R给我错误的原因?是否有任何其他计算逆的方法

matlab r matrix-inverse

2
推荐指数
1
解决办法
702
查看次数

计算矩阵的逆矩阵:系统是计算奇异的[错误]

我有一个矩阵m:

(m <- matrix(c(26,14,24,14,20,42,24,42,90), 3))

#      [,1] [,2] [,3]
# [1,]   26   14   24
# [2,]   14   20   42
# [3,]   24   42   90
Run Code Online (Sandbox Code Playgroud)

当我运行solve(m)计算矩阵的逆时,我收到此错误消息:

solve(m)
Run Code Online (Sandbox Code Playgroud)

solve.default(m)出错:系统计算奇异:倒数条件数= 6.21104e-18

r matrix matrix-inverse

2
推荐指数
2
解决办法
3130
查看次数

在Ruby中反转矩阵时出错

我有以下矩阵:

[
  [
    16.0,
    23251143833701.0,
    3.3788480598465756e+25,
    4.9101301394821435e+37
  ], 
  [
    23251143833701.0,
    3.3788480598465756e+25,
    4.9101301394821435e+37,
    7.135383882205603e+49
  ],
  [
    3.3788480598465756e+25,
    4.9101301394821435e+37,
    7.135383882205603e+ 49,
    1.0369114809614645e+62
  ], 
  [
    4.9101301394821435e+37,
    7.135383882205603e+49,
    1.0369114809614645e+62,
    1.5068361241656833e+74
  ]
]
Run Code Online (Sandbox Code Playgroud)

这个矩阵的决定因素是-1.4536774485912138e+135,如果我打电话regular?,它会返回true.但是,当我调用该方法时inverse,Ruby会引发以下异常:

matrix.rb:1079:in `block in inverse_from': Not Regular Matrix (ExceptionForMatrix::ErrNotRegular)
  from matrix.rb:1069:in `upto'
  from matrix.rb:1069:in `inverse_from'
  from matrix.rb:1061:in `inverse'
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

ruby matrix matrix-inverse

2
推荐指数
1
解决办法
304
查看次数

从solve()和ginv()函数中得到错误的逆矩阵

我尝试计算R中协方差矩阵的逆.我使用了两者solveginv函数但是我无法正确找到单位矩阵.我想知道为什么会这样.以前有人遇到过这个问题吗?怎么解决?

d <- data.frame(r1,r2,r3,r4)
ad <- cov(d) # get covariance
Run Code Online (Sandbox Code Playgroud)

您可以访问ad:

ad <- structure(c(0.000564103047135273, 0.000209426917735389, 
 -2.50601812852379e-07, 0.000318692159506722, 0.000209426917735389, 
 8.92756413718721e-05, -9.42226640483041e-08, 0.000135853820739977, 
 -2.50601812852379e-07, -9.42226640483041e-08, 1.12190005351388e-10, 
 -1.43381875666865e-07, 0.000318692159506722, 0.000135853820739977, 
 -1.43381875666865e-07, 0.000206733441799332), 
  .Dim = c(4L, 4L), 
  .Dimnames = list(c("r1", "r2", "r3", "r4"), 
                   c("r1", "r2", "r3", "r4")))

#       r1            r2            r3            r4
#r1  5.641030e-04  2.094269e-04 -2.506018e-07  3.186922e-04
#r2  2.094269e-04  8.927564e-05 -9.422266e-08  1.358538e-04
#r3 -2.506018e-07 -9.422266e-08  1.121900e-10 -1.433819e-07
#r4  3.186922e-04  1.358538e-04 -1.433819e-07  2.067334e-04

a <- ginv(ad,tol = 1e-18) `# …
Run Code Online (Sandbox Code Playgroud)

r matrix-inverse

2
推荐指数
1
解决办法
576
查看次数

Spark 和 ScalaNLP 库 Breeze 可以一起使用吗?

我正在 Apache Spark 中开发基于 Scala 的极限学习机。我的模型必须是 Spark Estimator 并使用 Spark 框架才能适应机器学习管道。有谁知道 Breeze 是否可以与 Spark 一起使用?我的所有数据都在 Spark 数据帧中,可以想象我可以使用 Breeze 导入它,使用 Breeze DenseVectors 作为数据结构,然后转换为用于 Estimator 部分的 DataFrame。Breeze 的优点是它有一个pinv针对 Moore-Penrose 伪逆的函数,它是一个非方阵的逆。据我所知,Spark MLlib 中没有等效的功能。我不知道是否可以将 Breeze 张量转换为 Spark DataFrames,所以如果有人有这方面的经验,那将非常有用。谢谢!

matrix-inverse scala-breeze apache-spark

2
推荐指数
1
解决办法
980
查看次数

Python矩阵逆

我有一个k我计算过的相机矩阵.价值k是:

[[  1.92160183e+08   0.00000000e+00   3.06056985e+02]
 [  0.00000000e+00   1.92160183e+08   1.57709172e+02]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

现在,我试图找到k使用numpy(使用np.linalg.inv(k))的逆.让我们k1相反k.

使用numpy,值为k*k1:

[[  1.00000000e+00   0.00000000e+00  -4.87462472e-04]
 [  0.00000000e+00   1.00000000e+00  -1.29434633e-04]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

现在,我期待一个完美的单位矩阵,但由于应该为零的值非常小,我决定忽略这样一个事实,即结果不是一个完美的单位矩阵.

现在我的问题:我有其他两个矩阵Rh.R是一个单位矩阵(它并不总是一个单位矩阵,但为了简单起见,这是假设).我需要表演H1 = k*R*k1*h.理想情况下,这应该将h的值赋给H1(因为k*R*k1应该证明是身份).

我原来的h矩阵:

 [[  1.71025842e+00  -7.51761942e-01   1.02803446e+02]
 [ -2.98552735e-16   1.39232576e-01   1.62792482e+02]
 [ -1.13518150e-18  -2.27094753e-03   1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

我的R矩阵:

[[ 1.  0.  0.]
 [ 0.  1. -0.]
 [-0.  0.  1.]] …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matrix-inverse

2
推荐指数
1
解决办法
926
查看次数

Julia 和 Python 中不同的伪逆矩阵

I am trying to transcribe a python code in Julia. I have a matrix

test = [2.0 3.0 4.0
        3.0 4.0 5.0
        4.0 5.0 6.0]
Run Code Online (Sandbox Code Playgroud)

I am computing the (Moore-Penrose) pseudo-inverse of a matrix in Python using numpy.linalg.pinv and the result is

[[-8.33333333e-01 -1.66666667e-01  5.00000000e-01]
 [-1.66666667e-01 -7.86535165e-17  1.66666667e-01]
 [ 5.00000000e-01  1.66666667e-01 -1.66666667e-01]]
Run Code Online (Sandbox Code Playgroud)

while in Julia the result of LinearAlgebra.pinv(test) is

3×3 Array{Float64,2}:
 -1.33333   -0.166667      1.0     
 -0.166667  -6.59195e-17   0.166667
  1.0        0.166667     -0.666667
Run Code Online (Sandbox Code Playgroud)

I would like to ask if anybody knows why …

python matrix-inverse julia

2
推荐指数
1
解决办法
346
查看次数