2016-05-31 20 views
-1

R 0.99.893 lösen() auf Windows 10 zu berechnen - Fehler in solve.default (a)Der Versuch, die Inverse einer quadratischen Matrix

Der Versuch, die Inverse einer quadratischen Matrix zu berechnen, aber eine Störung zu erhalten:

a <- matrix(1:16, 4,4) solve(a) Error in solve.default(a) : Lapack routine dgesv: system is exactly singular: U[3,3] = 0

Ich versuchte auch zu lösen (a, diag (4)), aber bekam den gleichen Fehler.

+2

Es ist eine gute Idee, solche Fehlermeldungen zu googlen, bevor Sie Fragen stellen. Dies hätte Sie direkt dazu veranlasst, Fragen wie die oben genannte zu duplizieren. – nrussell

+1

R-Version 0.99.893? Das muss mehr als 15 Jahre alt sein. Wir sind jetzt auf Version 3.3.0. Sie sollten eine Aktualisierung in Betracht ziehen. (R Studio und R sind eigenständige Software). – lmo

+0

@ZheyuanLi Es ist ziemlich frustrierend, dass Leute die zwei Stücke der Software zusammenfassen, wie eine der anderen um mindestens 10 Jahre vorausgeht. (und technisch gesehen ist die neueste Version 0,99.902 :)) – lmo

Antwort

2

Nicht alle Matrizen haben Inversen. Überprüfen Sie, ob Ihre Matrix singulär ist, d. H., Ob ihre Determinante 0 ist. Singuläre Matrizen haben keine Inverse.

2

Hoppla, diese Matrix ist singulär:

a <- matrix(1:16, 4, 4) 

1 5 9 13 
2 6 10 14 
3 7 11 15 
4 8 12 16 

Warum? Siehe dazu:

a[, 3, drop = FALSE] + a[, 2, drop = FALSE] - a[, 1, drop = FALSE] 

    [,1] 
[1,] 13 
[2,] 14 
[3,] 15 
[4,] 16 

genau a[, 4, drop = FALSE].

Eine quadratische Matrix ist invertierbar, nur wenn sie vollen Spaltenrang hat, d. H. Alle Spalten sind linear unabhängig. Die Spalten dieser Matrix sind jedoch linear abhängig, d. H. Sie können eine Spalte als lineare Kombination anderer Spalten ausgeben.

In der Tat sind Matrizen wie a <- matrix(1:(n*n), n, n) Singular, für jede n > 2. Sie können beweisen, dass diese Matrizen nur einen Rang von 2 haben, egal wie groß n ist.

Verwandte Themen