matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

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:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenNichtlineare Gleichungennichtlineare regression
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
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.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]