Krautkanal.com

Veröffentlicht am 2015-01-17 21:30:12 in /prog/

/prog/ 6409: Hallo Bernd, leider hat Bernd mit seinem Forschungsp...

sindresorhus Avatar
sindresorhus:#6409

Hallo Bernd,

leider hat Bernd mit seinem Forschungsprojekt nicht allzu viel Glück und nach jahrelangen Implemententierungsgeschritten stößt er auf ein schlecht gestelltes Problem
http://www.wikiwand.com/de/Korrekt_gestelltes_Problem

Ich muss mit MATLAB beispielsweise folgendes Problem lösen:

Mx - V = Minimum

Hier ist M eine Matrix, x der gesuchte Vektor im linearen Gleichungssystem und V ein Vektor.

Allerdings ist M (size(M)=9x9) von stark unterschiedlichen Größen:
M =

53.7811 5.2860 9.7555 2.1608 -0.0055 -0.0098 -0.0372 0.0158 -0.0345
5.2860 2.0017 0.9887 0.2333 -0.0028 -0.0015 0.0089 -0.0155 -0.0132
9.7555 0.9887 4.9703 0.3310 -0.0007 -0.0043 0.0086 0.0181 -0.0174
2.1608 0.2333 0.3310 5.4348 -0.0180 -0.0342 -0.0182 0.0007 -0.0007
-0.0055 -0.0028 -0.0007 -0.0180 0.0004 0.0001 0.0001 0.0000 0.0000
-0.0098 -0.0015 -0.0043 -0.0342 0.0001 0.0006 0.0001 -0.0000 0.0000
-0.0372 0.0089 0.0086 -0.0182 0.0001 0.0001 0.0008 -0.0001 -0.0001
0.0158 -0.0155 0.0181 0.0007 0.0000 -0.0000 -0.0001 0.0004 0.0001
-0.0345 -0.0132 -0.0174 -0.0007 0.0000 0.0000 -0.0001 0.0001 0.0002

und V (size(V)=9x1) teils vergleichsweise groß:

V =

1.0e+04 *

-1.6538
-0.1712
-0.3834
-0.0479
-0.0000
0.0006
0.0030
-0.0008
0.0014

Das funktioniert in MATLAB mit mldivide (oder einfach x = M\V) ganz gut und stabil, allerdings habe ich Grenzen für x. Dazu braucht man also lsqlin(M,V,...,lb,ub) womit man untere und obere Grenzen für die Lösung festlegen kann. Die Lösungen sind extrem instabil, d.h. wenn man das Problem ein bisschen ändert, kommen ganz unterschiedliche Lösungen. Ich löse aber viele ähnliche Probleme und brauche ähnliche Lösungen. Wie kann ich dieses Problem lösen?

aluisio_azevedo Avatar
aluisio_azevedo:#6411

Bei 10^4 solltest du noch überhaupt keine Probleme haben bei matlab.

Ansonsten Stichwort Vorkonditionierung.

n_tassone Avatar
n_tassone:#6414

Ich habe mein Mathestudium abgebrochen um mich mehr dem programmieren zu widmen. Könntest du dich bitte aus meinem Prog-Brett trollen?

sketi_ndlela Avatar
sketi_ndlela:#6417

>Mx - V = Minimum
Was soll das sein?

Meinst du nicht eher
||Mx - V||^2 = Minimun
?

starburst1977 Avatar
starburst1977:#6435

>>6411
Stimmt. Ich habe herausbekommen, dass es meine Matrix M schlecht ist. Sie besteht aus einer linear abhängigen Basis. Ihre Kondition liegt mal bei 10^4, mal bei 10^21. Die Kondition von M ändert sich in meiner Reihe an ähnlichen Problemen.

Zusammen mit dem Rauschen der Messdaten ergibt das instabile Lösungen.

Eine Tikhonov-Regularisierung verbessert die Lage. Schaffe ich es, einen Regularisierungsterm zu finden, der groß genug ist, dass keine Sprünge zwischen den Lösungen mehr auftauchen, ist die Lösung nicht mehr zu gebrauchen.

Ich habe die Lösungen immerhin ähnlich machen können, indem ich die alte Lösung als Startdatum für das nächste Problem angebe. Dabei konnte ich den Regularisierungsterm verkleinern. Aber das gelbe vom Ei ist das nicht – die Lösungen werden ja verzerrt.


>>6414
Wo glaubst du denn, gehört das eher hin?

>>6417
Ja, klar.

Neuste Fäden in diesem Brett: