10.12.2008, 15:36 |
tigerbine |
Auf diesen Beitrag antworten » |
[matlab] LR-Zerlegung mit Pivot
Wie berechnet maltab denn die LR Zerlegung, also unter welchen Gesichtspunkts wird das Pivotelement gewählt?
Befehl, den ich kenne:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
LU LU factorization.
[L,U] = LU(X) stores an upper triangular matrix in U and a
"psychologically lower triangular matrix" (i.e. a product
of lower triangular and permutation matrices) in L, so
that X = L*U. X must be square.
[L,U,P] = LU(X) returns lower triangular matrix L, upper
triangular matrix U, and permutation matrix P so that
P*X = L*U.
LU(X), with one output argument, returns the output from
LAPACK'S DGETRF or ZGETRF routine.
LU(X,THRESH) controls pivoting in sparse matrices, where
THRESH is a pivot threshold in [0,1]. Pivoting occurs
when the diagonal entry in a column has magnitude less than
THRESH times the magnitude of any sub-diagonal entry in that
column. THRESH = 0 forces diagonal pivoting. THRESH = 1 is
the default.
See also LUINC, QR, RREF. |
|
|
12.01.2011, 14:21 |
geischtli |
Auf diesen Beitrag antworten » |
hallo tigerbine
ich weiss, deine Frage ist schon etwas älter, habe aber genau das gleiche Problem seit heute Morgen :P
Also folgendes:
Ich habe eine Matrix
An dieser soll ich nun die LR-Zerlegung berechnen, inklusive der P-Matrix.
Schien mir alles keine Hexerei zu sein, bis ich die Lösung von Matlab, welche dann auch die effektiv korrekte Lösung gesehen habe:
A =
1 2 1 1
2 1 -2 1
1 -2 -1 1
1 1 1 2
>> [L,R,P]=lu(A)
L =
1.0000 0 0 0
0.5000 1.0000 0 0
0.5000 -0.6000 1.0000 0
0.5000 -0.2000 1.0000 1.0000
R =
2.0000 1.0000 -2.0000 1.0000
0 -2.5000 0 0.5000
0 0 2.0000 0.8000
0 0 0 0.8000
P =
0 1 0 0
0 0 1 0
1 0 0 0
0 0 0 1
Mein Frage: Warum braucht er als 1. Pivot die 2, und nicht, wie doch man doch eher vermutet, eine der 1en?
Natürlich habe ich wegen dem Fehler auch falsche Resultate bekommen:
Kannst du mir da weiterhelfen ?
Vielen Dank schonmal !
Ps: wie kannst du den Matlab-QC ins Latex einbinden ? |
12.01.2011, 17:11 |
tigerbine |
Auf diesen Beitrag antworten » |
Zitat: |
Ps: wie kannst du den Matlab-QC ins Latex einbinden ? |
Wenn du meinen post meinst, dass ist nur in code-tags geschrieben.
Nun zu der Frage, warum er die 2 wählt. Man muss das nicht!
[WS] Lineare Gleichungssysteme 2 - direkte Verfahren |
12.01.2011, 17:17 |
geischtli |
Auf diesen Beitrag antworten » |
Danke für den ergiebigen Link!
Werde in dem Fall mal dort gugen...
|
12.01.2011, 18:41 |
tigerbine |
Auf diesen Beitrag antworten » |
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
|
>> LRmitP
Es wird eine LR-Zerlegung mit Pivotisierung berechnet
Verfahren wählen: 0- next best 1-Spaltenpivotisierung: 1
Matrix A eingeben: A= [1,2,1,1;2,1,-2,1;1,-2,-1,1;1,1,1,2]
Durchgang 1
===========
p =
1 2
A =
2 1 -2 1
1 2 1 1
1 -2 -1 1
1 1 1 2
LI =
1.0000 0 0 0
-0.5000 1.0000 0 0
-0.5000 0 1.0000 0
-0.5000 0 0 1.0000
A =
2.0000 1.0000 -2.0000 1.0000
0 1.5000 2.0000 0.5000
0 -2.5000 0 0.5000
0 0.5000 2.0000 1.5000
weiter
Durchgang 2
===========
p =
1 2
2 3
A =
2.0000 1.0000 -2.0000 1.0000
0 -2.5000 0 0.5000
0 1.5000 2.0000 0.5000
0 0.5000 2.0000 1.5000
LI =
1.0000 0 0 0
0 1.0000 0 0
0 0.6000 1.0000 0
0 0.2000 0 1.0000
A =
2.0000 1.0000 -2.0000 1.0000
0 -2.5000 0 0.5000
0 0 2.0000 0.8000
0 0 2.0000 1.6000
weiter
Durchgang 3
===========
p =
1 2
2 3
3 3
A =
2.0000 1.0000 -2.0000 1.0000
0 -2.5000 0 0.5000
0 0 2.0000 0.8000
0 0 2.0000 1.6000
LI =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 -1 1
A =
2.0000 1.0000 -2.0000 1.0000
0 -2.5000 0 0.5000
0 0 2.0000 0.8000
0 0 0 0.8000
weiter
Die PA=LR Zerlegung lautet:
===========================
P =
0 1 0 0
0 0 1 0
1 0 0 0
0 0 0 1
A0 =
1 2 1 1
2 1 -2 1
1 -2 -1 1
1 1 1 2
L =
1.0000 0 0 0
0.5000 1.0000 0 0
0.5000 -0.6000 1.0000 0
0.5000 -0.2000 1.0000 1.0000
R =
2.0000 1.0000 -2.0000 1.0000
0 -2.5000 0 0.5000
0 0 2.0000 0.8000
0 0 0 0.8000
>> |
|
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
|
>> LRmitP
Es wird eine LR-Zerlegung mit Pivotisierung berechnet
Verfahren wählen: 0- next best 1-Spaltenpivotisierung: 0
Matrix A eingeben: A= [1,2,1,1;2,1,-2,1;1,-2,-1,1;1,1,1,2]
Durchgang 1
===========
i =
1
A =
1 2 1 1
2 1 -2 1
1 -2 -1 1
1 1 1 2
LI =
1 0 0 0
-2 1 0 0
-1 0 1 0
-1 0 0 1
A =
1 2 1 1
0 -3 -4 -1
0 -4 -2 0
0 -1 0 1
weiter
Durchgang 2
===========
i =
2
A =
1 2 1 1
0 -3 -4 -1
0 -4 -2 0
0 -1 0 1
LI =
1.0000 0 0 0
0 1.0000 0 0
0 -1.3333 1.0000 0
0 -0.3333 0 1.0000
A =
1.0000 2.0000 1.0000 1.0000
0 -3.0000 -4.0000 -1.0000
0 0 3.3333 1.3333
0 0 1.3333 1.3333
weiter
Durchgang 3
===========
i =
3
A =
1.0000 2.0000 1.0000 1.0000
0 -3.0000 -4.0000 -1.0000
0 0 3.3333 1.3333
0 0 1.3333 1.3333
LI =
1.0000 0 0 0
0 1.0000 0 0
0 0 1.0000 0
0 0 -0.4000 1.0000
A =
1.0000 2.0000 1.0000 1.0000
0 -3.0000 -4.0000 -1.0000
0 0 3.3333 1.3333
0 0 0 0.8000
weiter
Die PA=LR Zerlegung lautet:
===========================
P =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
A0 =
1 2 1 1
2 1 -2 1
1 -2 -1 1
1 1 1 2
L =
1.0000 0 0 0
2.0000 1.0000 0 0
1.0000 1.3333 1.0000 0
1.0000 0.3333 0.4000 1.0000
R =
1.0000 2.0000 1.0000 1.0000
0 -3.0000 -4.0000 -1.0000
0 0 3.3333 1.3333
0 0 0 0.8000 |
|
|
14.01.2011, 10:04 |
geischtli |
Auf diesen Beitrag antworten » |
Oh, das ist aber interessant!
Vielen Dank für die Ausfürilche Bearbeitung!
Habe jetzt nach vielem Hin und Her das ganze endlich (denke ich ^^) gepackt, und habe mit dem Beitrag jetzt, das ganze noch ein bisschen von einer anderen Seite her gesehen. Aber im Groben, so, wie ich mir das vorgestellt hatte
1A!
Danke dir 1000! |