Lösung überbestimmter Gleichungssysteme in Matlab

Neue Frage »

CingChris Auf diesen Beitrag antworten »
RE: Lösung überbestimmter Gleichungssysteme in Matlab
Hallo... ich habe folgendes Problem. Aus der Simulation der Kennlinie eines Wandlers bekomme ich ein überbestimmtes Gleichungssystem, welches es zu lösen gilt. Es hat folgende Form:

, wobei x die zu bestimmende Matrix ist.

,wobei A eine , x eine und b eine -Matrix mit dem gleichem Wert für b in jeder Zeile ist. Es gilt m > n.

Ich habe folgende Lösungsverfahren in Matlab verwendet:

1) x = inv((B'*B))*B'*b;
2) x = A \ b;
3) x = linsolve(A,b);
4) x = pinv(A)*b;
5) x = lscov(A,b);

verwendet.Folgende Warnungen werden dabei produziert.

1) Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.293250e-40.

2) Warning: Rank deficient, rank = 3, tol = 2.3751e+04.

3) Warning: Rank deficient, rank = 3, tol = 2.3722e+04.

4) keine Warnung

5) Warning: A is rank deficient to within machine precision.

Kann mir evtl. mal jemand erklären, was diese Warnings bedeuten und wie ich damit umgehen muss ? Durch die Überbestimmtheit gibt es ja unendlich viele Lösungen. Ich benötige aber immer nur eine bestimmte davon. Sind diese Lösungen denn überhaupt richtig oder kommt das schon in Regionen numerischer Unschärfe oder ähnliches ? Danke für die Hilfe.
tigerbine Auf diesen Beitrag antworten »
RE: Lösung überbestimmter Gleichungssysteme in Matlab
Eine theoretische Rückfrage

Zitat:
Durch die Überbestimmtheit gibt es ja unendlich viele Lösungen.


Würde eher meinen, dass dies bei Unterbestimmt (m<n) der Fall ist. Überbestimmt (m>n) birgt die Gefahr, dass es keine Lösung gibt. Dann würdest du dich auf den Gebiet der Ausgleichslösung befinden.
CingChris Auf diesen Beitrag antworten »
RE: Lösung überbestimmter Gleichungssysteme in Matlab
stimmt du hast recht ... genau .. das is aber nich schlimm ... dann wird eben eine ausgleichsgerade berechnet ... wahrscheinlich mit der least squares methode ...
tigerbine Auf diesen Beitrag antworten »
RE: Lösung überbestimmter Gleichungssysteme in Matlab
Die Frage ist zunächst, was der richtige Befehl in matlab dafür ist. Also für das Ausgleichsproblem. Inverse Matrizen würde ich immer vermeiden.

Zitat:
Solving a Rank-Deficient System

If A is m-by-n with m > n and full rank n, each of the three statements

x = A\b
x = pinv(A)*b
x = inv(A'*A)*A'*b

theoretically computes the same least-squares solution x, although the backslash operator does it faster.


Für deine Fehlermeldung findet sich auch was auf der matlab Homepage: http://www.mathworks.com/help/techdoc/math/f4-2224.html

Zitat:
However, if A does not have full rank, the solution to the least-squares problem is not unique. There are many vectors x that minimize

norm(A*x -b)

The solution computed by x = A\b is a basic solution; it has at most r nonzero components, where r is the rank of A. The solution computed by x = pinv(A)*b is the minimal norm solution because it minimizes norm(x). An attempt to compute a solution with x = inv(A'*A)*A'*b fails because A'*A is singular.

Here is an example that illustrates the various solutions:

A = [ 1 2 3
4 5 6
7 8 9
10 11 12 ]

does not have full rank. Its second column is the average of the first and third columns. If

b = A(:,2)

is the second column, then an obvious solution to A*x = b is x = [0 1 0]'. But none of the approaches computes that x. The backslash operator gives

x = A\b

Warning: Rank deficient, rank = 2.

x =
0.5000
0
0.5000

This solution has two nonzero components. The pseudoinverse approach gives

y = pinv(A)*b

y =
0.3333
0.3333
0.3333

There is no warning about rank deficiency. But norm(y) = 0.5774 is less than norm(x) = 0.7071. Finally,

z = inv(A'*A)*A'*b

fails completely:

Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 9.868649e-018.
z =
-0.8594
1.3438
-0.6875
CingChris Auf diesen Beitrag antworten »
RE: Lösung überbestimmter Gleichungssysteme in Matlab
ja das habe ich schon angeschaut ... hab das jetz so aufgefasst, dass linsolve() und backslash unterschiedliche aber richtige lösungen liefern ? stimmst du mir da zu ?
tigerbine Auf diesen Beitrag antworten »
RE: Lösung überbestimmter Gleichungssysteme in Matlab
Wo steht da linsove? Ich sehe A\b und pinv(A)*b. Der Text beschreibt ja, dass sie die (algorithmisch) eindeutige Lösung anders wählen werden. Dennoch sind beides Lösungen.
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »