我现在正在编写一个c++代码库,它使用一个矩阵库来计算各种事情。其中之一就是计算矩阵的逆。它使用高斯消除来实现这一点。但结果是非常不准确的。因此,将逆矩阵与原矩阵相乘甚至都不能使恒等矩阵接近。
下面是用于计算逆的代码,矩阵是在数值类型和行及列上模板的:
/// \brief Take the inverse of the matrix.
/// \return A new matrix which is the inverse of the current one.
matrix<T, M, M> inverse() const
{
static_assert(M == N
我正在写一个线性代数库(长话短说,这是一个学校作业),涉及矩阵、向量等。在创建这个库的过程中,我将创建对对象执行数学操作的函数。例如转置矩阵、逆矩阵、归一化向量等。
我很好奇这种功能的“最佳实践”是什么.也就是说,我应该让这个函数成为一个成员函数,还是一个非成员函数?(为清晰/图书馆使用清酒)
示例:
//Member function way:
B = A.transpose();
C = A.inverse();
//Non-member function way:
B = linalg::transpose(A); //Non-member transpose function in
我想把两个矩阵相乘,第一个矩阵是A的逆,第二个矩阵是B, input('Enter The first Matrix')
A = [ 1 2 3 ; 4 5 6 ; 7 8 0 ]
[m n] = size(A)
if m==n
if det(A)==0
disp('inverse does not exist')
else
invv=inv(A)
disp(invv)
end
else
disp('Number of ro
我试图在计算R中矩阵的逆时使用环境缓存,如下所示(从这个url )%20R%20Programming/cachematrix.R获得的代码):
makeCacheMatrix <- function(x = matrix()) {
## Initialize the inverse property
i <- NULL
## Method to set the matrix
set <- function( matrix ) {
m <<- matrix
i &l
我如何改进这个矩阵逆计算器,,我做了这个矩阵逆计算器,它工作得很好,但是我想知道这个程序怎么能成为shorter.Thanks
from numpy import *
#inverse calculator
print(array([['a,b,c'],['d,e,f'],['g,h,i']]))
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
d = int(input("d:
我正在使用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 &l
我正在使用snap.svg,一个snap.svg.zpd库。如果我使用snap.svg和jQuery泛缩放库组合,我也会遇到同样的问题。
可以找到的代码示例。
var mySvg = $("#plan")[0];
var snap = Snap("#plan");
//create an image
var imagePlan = snap.image("http://upload.wikimedia.org/wikipedia/commons/4/42/Cathedral_schematic_plan_fr_vectorial.svg", 10
我在朱莉娅那里做了个双循环。代码很简单。
w = rand(1000,1000)
function regular_demo(w::Array{Float64, 2})
n = size(w)[1]
G = zeros(n,n)
@inbounds for j in 1:n-1
wjj = w[j, j]
for i in j+1:n
wii = w[i, i]
wij = w[i, j]
sum = wii + 2wij + 3wjj
sum_in
我用Mathematica编写了下一个代码,以求矩阵本身转置矩阵的乘法逆:
A = RandomInteger[{1, 20}, {3, 51}];
B = A\[Transpose].A;
F = Inverse[B];
F // MatrixForm
它总是告诉我,矩阵(B)是奇异的,-despite (A)是随机的,而矩阵的转置乘法是可以的!
A = RandomInteger[{1, 20}, {3, 51}];
O = A.A\[Transpose];
L = Inverse[O];;
L// MatrixForm
谁能向我解释为什么第一种情况给我奇异矩阵,而第二种情况是可以的?我该
我有一个递归函数来计算上三角矩阵的逆。我已经将矩阵划分为顶部、底部和角落部分,然后按照中规定的方法进行操作。下面是一个伪代码表单:
//A diagram structure of the Matrix
Matrix = [Top Corner]
[0 Bottom]
Matrix multiply_matrix(Matrix A, Matrix B){
Simple Code to multiply two matrices and return a Matrix
}
Matrix simple_inverse(Matrix A){
Simple C
我用choleski分解来计算半正定矩阵的逆。然而,当我的矩阵变得非常大并且其中有零点时,我的矩阵不再是正定的(从计算机的角度来看)。因此,为了解决这个问题,我在R中的choleski命令中使用了R选项。但是,(如下面所示),这两个输出返回相同的输出,但行和列或矩阵重新排列。我正试图找出一种方法(或转变),使他们同样。这是我的代码:
X = matrix(rnorm(9),nrow=3)
A = X%*%t(X)
inv1 = function(A){
Q = chol(A)
L = t(Q)
inverse = solve(Q)%*%solve(L)
ret
我已经学会了如何用求矩阵的逆。但是当我找到一个函数输出的数组的逆时,我得到了一个错误
请求“x”中的“反向”成员,这是非类类型的“double**”
请帮助我,在使用c++库寻找矩阵的逆。
我所写的代码是:
#include <iostream>
#include <armadillo>
#include <cmath>
#include <Eigen/Dense>
using namespace std;
using namespace arma;
using namespace Eigen;
int main()
{
ve
我正在为一个矩阵类做一个函数,用高斯消去来求逆矩阵,这个函数在大多数情况下工作得很好,它会有随机的警告,它们成对地出现,如下所示
RuntimeWarning: invalid value encountered in double_scalars
RuntimeWarning: divide by zero encountered in double_scalars
问题出现在行中,我将同一行中的所有内容除以一个常量。但是,函数的第一部分已经确保矩阵中的所有枢轴元素不会为零。我还运行了很多测试,问题不是来自于枢轴元素为零,而是枢轴元素是唯一用于除法的元素,所以我不知道错误是从哪里来的
def
披露:这是来自Coursera课程的编程作业,名为R编程。我最初有完整的代码,但我删除了它的一部分,因为我意识到我不被允许上传我的完整代码(当然,我上传的代码不起作用)。
任务是关于可能需要很长计算时间的词法作用域和缓存函数。具体地说,我使用solve()来查找矩阵的逆矩阵,并使用自由浮点变量对其进行缓存。我还尝试缓存输入矩阵,以便检索它并将其与任何新的输入矩阵进行比较。我返回一个关于后者的错误,如下所述。
首先,我按照下面的代码同时运行makeCacheMatrix和cacheSolve。
第一个函数makeCacheMatrix创建了一个特殊的“矩阵”对象,它可以缓存输入矩阵及其逆矩阵
m
我正试图逆星火矩阵。下面是我使用的函数。
def computeInverse(matrix: RowMatrix): BlockMatrix = {
val numCoefficients = matrix.numCols.toInt
val svd = matrix.computeSVD(numCoefficients, computeU = true)
val indexed_U = new IndexedRowMatrix(svd.U.rows.zipWithIndex.map(r => new IndexedRow(r._2, r._1)))
val invS = Dens
试图让一个函数返回矩阵的逆。
我不能为我的生活弄清楚这是怎么回事,我知道这是一个简单的错误。
当我试图在工作表中执行这个函数时,它给了我#值!在牢房里。
Function getInverse(mat)
Dim matrixA As Variant, inverse As Variant
matrixA = mat
inverse = Worksheet.Function.MInverse(mat)
getInverse = inverse
import numpy as np
from numpy.linalg import inv
import theano.tensor as T
from theano.compile import function
from theano.tensor.nlinalg import matrix_inverse, det
from theano import shared
from theano import config
A = shared(np.matrix('1 0 0; 1 2 0; 0 0 3', dtype=config.floatX))
print(A.g
我有一个(n x n)对称矩阵A和一个(n X 1)向量B,基本上,我只需要求解x的Ax =b,问题是A可能是大质量的。所以我在寻找在C++中解线性方程的最有效的算法。我查看了特征库。显然它有一种奇异值分解方法,但有人告诉我它很慢。求解x=inverse(A)*b似乎也是次优的。uBLAS更快吗?有没有更有效的方法?谢谢。
编辑:矩阵A是正定的,不是稀疏的。
所以我试着用高斯-乔丹消元法求矩阵的逆矩阵(使用Python列表)。但我正面临着这个特殊的问题。在下面的代码中,我将我的代码应用于给定的矩阵,它将按预期缩减为单位矩阵。 M = [[0, 2, 1], [4, 0, 1], [-1, 2, 0]]
P = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
n = len(P)
def inverse(a):
for k in range(n):
if abs(a[k][k]) < 1.0e-12:
for i in range(k+1, n):