www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Nichtlineare Gleichungen" - nichtlineare regression
nichtlineare regression < Nichtlineare Gleich. < Numerik < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Nichtlineare Gleichungen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

nichtlineare regression: alternat. zu levenb.-marquardt
Status: (Frage) beantwortet Status 
Datum: 00:45 Mi 24.03.2010
Autor: eume1337

Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
[http://www.matheboard.de/thread.php?threadid=414952]


Hallo,
ich habe eine Frage zur nichtlinearen Regressionsanalye (hoffe, dass ich hier unter 'Numerik' am besten hinpasse).

Ich habe einen funktionierenden Code für Matlab für meine regr. analyse. (nach Levenberg-Marquardt) gegeben ist folgendes:

(0) y = (a - 80) / S + sqrt((2*b)/S) ist die Formel.

weiterhin habe ich für y die Werte [1146.5  652.389  369.256  246.82] und für S [0.25  0.5  1.0  1.5]

Nun brauche ich a und b, welche für alle 4 Gleichungen einsetzbar sind, also für:

(1)  1146.500 = (a - 80) / 0.25 + sqrt((2*b) / 0.25)
(2)   652.389 = (a - 80) / 0.5  + sqrt((2*b) / 0.5)
(3)   369.256 = (a - 80) / 1.0  + sqrt((2*b) / 1.0)
(4)   246.820 = (a - 80) / 1.5  + sqrt((2*b) / 1.5)

Das das nur über eine nichtlin. Regr. funktioniert (nlinfit) ist mir klar; Matlab hat mir auch folgende Werte für die zugehörige Funktion ausgegeben:

a = 292.581;  b = 11371.5  für

(1')  1151.928 = (a - 80) / 0.25 + sqrt((2*b) / 0.25)
(2')   638.436 = (a - 80) / 0.5  + sqrt((2*b) / 0.5)
(3')   363.388 = (a - 80) / 1.0  + sqrt((2*b) / 1.0)
(4')   264.412 = (a - 80) / 1.5  + sqrt((2*b) / 1.5)

Meine Frage: Gibt es einen Weg, wie ich das "per Hand" in etwa approximieren kann? Ich habe versucht das durch Auflösen und Einsetzen irgendwie zu berechnen: Mit Matlab habe ich (0) jew. nach a und b aufgelöst mit folgendem Ergebnis:

(5) a = (S*y - 2^(1/2)*S*(b/S)^(1/2) + 80)
und
(6) b = ((S*(y - (a - [mm] 80)/S)^2)/2) [/mm]

Nun wollte ich (5) in (6) bzw. (6) in (5) einsetzen und jew. nach a bzw. b auflösen (y und S sind mir ja jew. bekannt) und dann der Reihe nach in (1) - (4) einsetzen, damit ich insg. für a und b jeweils 4 Ergebnisse bekomme, deren Durchschnitt ich als "Ergebnis" verwenden könnte; also wie folgt:

Aus (1) => a1, dieses a1 in (2) => b1, dieses b1 in (3) =>a2 und dieses wiederum in (4) => b2
sowie
Aus (1) => b3 dieses b3 in (2) => a3, dieses a3 in (3) =>b4 und dieses wiederum in (4) => a4

Meine Ergebnis (a') wäre dann der Mittelwert aus [a1,a2,a3,a4] und (b') entsprechend der Mittelwert aus [b1,b2,b3,b4].

Ich weiß, dass das im mathematischen Sinne nicht ansatzweise eine adäquate Lösung ergibt bzw. ein adäquates Vorgehen ist; aber genau das würde mir reichen, wenn die Abweichung von a' und b' von den von matlab errechneten Ergebnissen kleiner als 5-10% ist.

Mein problem nun: wenn ich (5) in (6) bzw (6) in (5) einsetze, kann ich nicht nach a, bzw b auflösen; ebenso nicht wenn ich (5) bzw (6) in (0) einsetze.

Habe ich da irgendwie einen Denkfehler? (entweder habe ich immer a, b oder y auf beiden Seiten des Gleichheitsszeichens stehen).

Hintergrund:
Ich bin an der Implementierung in C++, aber da es mich noch ein wenig Zeit kosten wird den Levenberg-Marquardt-Algorithmus zu implementieren, wollte ich eine vorläufige Lösung, die zumindest ansatzweise approximiert.
(vielleicht hat jemand auch eine Anregung oder dergleichen für die Umsetzung in C++, sprich einen Tip für eine nutzbare vorhandene Library etc... bin im Moment bei LAPACK gelandet aber bis jetzt bringt mich das nciht sonderlich weit)

Vielen Dank schonmal für eure Hilfe und Denkanstöße!

        
Bezug
nichtlineare regression: Antwort
Status: (Antwort) fertig Status 
Datum: 01:46 Mi 24.03.2010
Autor: Blech

Hi,

>
> Hallo,
>  ich habe eine Frage zur nichtlinearen Regressionsanalye
> (hoffe, dass ich hier unter 'Numerik' am besten hinpasse).
>  
> Ich habe einen funktionierenden Code für Matlab für meine
> regr. analyse. (nach Levenberg-Marquardt) gegeben ist
> folgendes:
>  
> (0) y = (a - 80) / S + sqrt((2*b)/S) ist die Formel.

Die Gleichung ist aber linear in den Parametern a und b.

[mm] $y=\frac{a-80}{S} +\sqrt{\frac{2b}{S}}$ [/mm]
[mm] $\Leftrightarrow\ \underbrace{y+\frac{80}{S}}_{=:y'} [/mm] = [mm] \frac1{S}*a [/mm] + [mm] \sqrt{\frac{2}{S}}*\sqrt{b}$ [/mm]
[mm] $\Leftrightarrow\ [/mm] y' = [mm] \underbrace{\pmat{\frac1{S} & \sqrt{\frac{2}{S}}}}_{=:x^t}*\underbrace{\pmat{a\\ \sqrt{b}}}_{=:\theta}$ [/mm]

  

> weiterhin habe ich für y die Werte [1146.5  652.389  
> 369.256  246.82] und für S [0.25  0.5  1.0  1.5]

d.h. mit der Notation von oben willst Du

[mm] $\|\underbrace{(y_i')_i}_{:=Y'} [/mm] - [mm] \underbrace{(x_i^t)_i}_{=:X}*\theta\|$ [/mm]

minimieren.

Das wäre lineare Ausgleichsrechnung mit den üblichen Normalengleichungen

[mm] $X^tY'=X^tX\theta$ [/mm]

oder welches Verfahren auch immer Du anwenden willst. Das Ergebnis sind Werte für a und [mm] $\sqrt{b}$ [/mm]

Es ist grausam spät, aber ich sehe nicht, warum das nicht funktionieren sollte.

ciao
Stefan

Bezug
                
Bezug
nichtlineare regression: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:41 Fr 28.05.2010
Autor: eume1337


> Hi,
>  

Danke erstmal für deine Hilfestellung, vor allem war das sehr schnell :-)

>  
> Die Gleichung ist aber linear in den Parametern a und b.
>  
> [mm]y=\frac{a-80}{S} +\sqrt{\frac{2b}{S}}[/mm]
>  [mm]\Leftrightarrow\ \underbrace{y+\frac{80}{S}}_{=:y'} = \frac1{S}*a + \sqrt{\frac{2}{S}}*\sqrt{b}[/mm]
>  
> [mm]\Leftrightarrow\ y' = \underbrace{\pmat{\frac1{S} & \sqrt{\frac{2}{S}}}}_{=:x^t}*\underbrace{\pmat{a\\ \sqrt{b}}}_{=:\theta}[/mm]
>  
>
> > weiterhin habe ich für y die Werte [1146.5  652.389  
> > 369.256  246.82] und für S [0.25  0.5  1.0  1.5]
>  
> d.h. mit der Notation von oben willst Du
>
> [mm]\|\underbrace{(y_i')_i}_{:=Y'} - \underbrace{(x_i^t)_i}_{=:X}*\theta\|[/mm]
>  
> minimieren.

Ich weiß nicht, ob ich dir folgen kann.... Nach o.g. definitionen habe ich ausgerechnet:

[mm](y_1')_1 = 1766,5[/mm],  [mm](x_1^t)_1 = 11,31[/mm]
[mm](y_2')_2 = 812,4[/mm], [mm](x_2^t)_2 = 4[/mm]
[mm](y_3')_3 = 449,3[/mm], [mm](x_3^t)_3 = 1,41[/mm]
[mm](y_4')_4 = 300,153[/mm], [mm](x_4^t)_4 = 0,77[/mm]

das wäre dann entsprechend

1: [mm]\|1766,5 - 11,31 * \pmat{a\\ \sqrt{b}}\|[/mm]
2: [mm]\|812,4 - 4 * \pmat{a\\ \sqrt{b}}\|[/mm]
3: [mm]\|449,3 - 1,41 * \pmat{a\\ \sqrt{b}}\|[/mm]
4: [mm]\|300,153 - 0,77 * \pmat{a\\ \sqrt{b}}\|[/mm]

sehe ich das richtig?

Und hier komme ich nun nicht weiter...

>  
> Das wäre lineare Ausgleichsrechnung mit den üblichen
> Normalengleichungen
>  
> [mm]X^tY'=X^tX\theta[/mm]

Ich glaube dass ich irgendetwas gravierendes nicht verstehe...

[mm]X^tY'=X^tX\theta[/mm]
[mm]\Leftrightarrow\ Y'=X\theta [/mm] ? ([mm] X^t[/mm] kürzt sich weg??)

>  
> oder welches Verfahren auch immer Du anwenden willst. Das
> Ergebnis sind Werte für a und [mm]\sqrt{b}[/mm]
>  
> Es ist grausam spät, aber ich sehe nicht, warum das nicht
> funktionieren sollte.

Es ist ein wenig Zeit vergangen und ich habe mir immer und immer wieder deine Antwort angeschaut, wenn ich Zeit gefunden habe; wie du siehst, sehe ich nicht, warum das funktionieren sollte....
Wäre sehr dankbar für weitere Hilfestellung..

>  
> ciao
>  Stefan


Bezug
                        
Bezug
nichtlineare regression: Erledigt
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:44 Di 01.06.2010
Autor: eume1337

DANKE FÜR DIE BEMÜHUNGEN,

für mich hat sich diese Frage erledigt;
ich weiß zwar noch immer nicht genau, wie die Funktionsweise hinter dem Problem ist,
habe jedoch eine Library gefunden, die genau mein Problem löst (levmar25).

Danke nochmals

Bezug
                        
Bezug
nichtlineare regression: Antwort
Status: (Antwort) fertig Status 
Datum: 19:25 Sa 12.06.2010
Autor: Blech


> > > weiterhin habe ich für y die Werte [1146.5  652.389  
> > > 369.256  246.82] und für S [0.25  0.5  1.0  1.5]
>  >  
> > d.h. mit der Notation von oben willst Du
> >
> > [mm]\|\underbrace{(y_i')_i}_{:=Y'} - \underbrace{(x_i^t)_i}_{=:X}*\theta\|[/mm]
>  
> >  

> > minimieren.
>  
> Ich weiß nicht, ob ich dir folgen kann.... Nach o.g.
> definitionen habe ich ausgerechnet:
>  
> [mm](y_1')_1 = 1766,5[/mm],  [mm](x_1^t)_1 = 11,31[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)



Es galt doch
$y_1'= y_1+\frac{80}{S_1}=1146+\frac{80}{0.25}=1466$

Und
$x_1^t=\pmat{\frac 1 {S_1}& \sqrt{\frac2{S_1}}$
ist ein Zeilenvektor, keine Zahl.

$(y'_i)_i=\pmat{y'_1\\ y'_2\\ y'_3\\y'_4}$

$(x^t_i)_i=\pmat{x^t_1\\x^t_2\\x^t_3\\x^t_4},$
also ist X eine Matrix und Y' ein Vektor und somit ist

$X^tY'=X^tX\theta$

ein lineares Gleichungssystem.

Was mich zu meiner eigentlichen Frage führt:

> > Das wäre lineare Ausgleichsrechnung mit den üblichen
> > Normalengleichungen
>  >  
> > [mm]X^tY'=X^tX\theta[/mm]
>  
> Ich glaube dass ich irgendetwas gravierendes nicht
> verstehe...
>  
> [mm]X^tY'=X^tX\theta[/mm]
>   [mm]\Leftrightarrow\ Y'=X\theta[/mm] ? ([mm] X^t[/mm] kürzt sich weg??)

Wie bist Du ins Hauptstudium gekommen, ohne je mit Matrizen zu arbeiten? Ich hatte eine Informatik für Nebenfach Vorlesung voll mit Geisteswissenschaftler und wir hatten jede Menge lineare Algebra. =)
  
ciao
Stefan

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Nichtlineare Gleichungen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de