Koeffizienten einer Regression auslesen!

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label
Bild

Betrifft: Koeffizienten einer Regression auslesen!
von: Carlo
Geschrieben am: 14.08.2015 16:25:20

Hallo!
Ich versuche schon seit einiger Zeit Bereiche eines Kurvenverlaufs mit einer polynomischen Funktion anzunähern und daraus dann die Fläche des Bereiches integrativ zu ermitteln. (Datei: https://www.herber.de/bbs/user/99575.xlsm
, mit dem Go Knopf beginnt die Auswertung)
Aktuell probiere ich gerade die Koefizienten der Regressionsfunktion im Graphen als Text auszulesen, nicht Relevantes(+;-;usw.) zu löschen um an die Koefizienten des Ausgleichs-Polynom zu kommen.
Problem hierbei ist, dass die Werte stark gerundet sind. (Ausgabe in den einzelnen "Peak-Arbeitsblättern" Spalte D.) Im Graphen jedoch werden die Richtigen Werte abgebildet.
Ist diese herangehensweise prizipiell nicht möglich?
Ich freue mich auf Antworten!
Grusz Carlo

Bild

Betrifft: AW: Koeffizienten einer Regression auslesen!
von: Michael
Geschrieben am: 14.08.2015 17:18:54
Hallo Carlo,
alle Achtung!
Vielleicht magst Du Dir zur Entspannung mal den Thread ansehen:
https://www.herber.de/forum/archiv/1440to1444/t1442215.htm#1442215
Du kannst der Julia sicher mit Deiner Interpolation helfen.
Andererseits ist mein dortiger Kommentar zu Herleitung des Integrals vielleicht nützlich für Dich.
Du hast ja (im Gegensatz zu Julia) "1000" Meßpunkte zur Verfügung; was hindert Dich daran, auf die ganze Interpolation zu verzichten und Fläche "klötzchenweise" zu ermitteln?
Ich habe mal in Tabelle1[E1] 484 und [E2] 555 geschrieben und das Makro

Option Explicit
Sub gehWeiter()
Dim von&, bis&, i&, z&
Dim a As Variant
von = Sheets("Tabelle1").Range("E1").Value + 2
bis = Sheets("Tabelle1").Range("E2").Value + 2
' wegen 0 bzw. Überschriften
a = Sheets("Tabelle1").Range("A" & von & ":E" & bis).Value
For i = 2 To bis - von + 1
 a(i, 3) = a(i - 1, 1) - a(i, 1)
 a(i, 4) = (a(i - 1, 2) + a(i, 2)) / 2
 a(i, 5) = Abs(a(i, 3) * a(i, 4))
Next
Sheets("Tabelle5").Range("A1:E" & bis - von + 1) = a
End Sub
ausgeführt; als Summe kommt 8,537xxx raus.
Ist das passabel?
Schöne Grüße,
Michael
P.S.: Tabelle5 habe ich natürlich händisch vorher angelegt - weche Nr. die denn auch bei Dir haben mag.
Außerdem ist er Algo nicht ganz sauber: was ist bei Vorzeichenwechsel?

Bild

Betrifft: Stoffeln helfen?
von: Michael
Geschrieben am: 15.08.2015 17:20:04
Hi Carlo,
Du würdigst mich zwar keiner Antwort, aber ich bin ja nicht so:
Du hast zwar nach der Zeile 74 (" co.Chart.SeriesCollection(1).Trendlines(1).Dat" usw.) ein debug.print, aber das ist auskommentiert.
Schiebe mal das dazwischen:

Debug.Print "1: " & (co.Chart.SeriesCollection(1).Trendlines(1).DataLabel.Characters.Text)
Debug.Print "2: " & .SeriesCollection(1).Trendlines(1).DataLabel.Characters.Text
Debug.Print "3: " & .SeriesCollection(1).Trendlines(1).DataLabel.Caption
Stop

und Du wirst in Deinem Direktfenster sehen:
1: 
2: 
3: y = -5E-10x6 + 2E-06x5 - 0,002x4 + 1,378x3 - 536,1x2 + 11115x - 1E+07
Mit

Sub KoeffTest()
  Dim arrB() As Double
  Dim i&
  arrB = Koeff("y = -5E-10x6 + 2E-06x5 - 0,002x4 + 1,378x3 - 536,1x2 + 11115x - 1E+07", 6)
  For i = UBound(arrB) To LBound(arrB) Step -1
    Debug.Print i & ": " & arrB(i)
  Next
End Sub
sieht es dann schon freundlicher aus:
6: -0,0000000005
5: 0,000002
4: -0,002
3: 1,378
2: -536,1
1: 11115
0: -10000000
Ok?
Außerdem gibst Du nur 6 der 7 Werte aus, richtig muß es heißen:
objSh.Cells(2, 4).Resize(UBound(arrB) + 1, 1)
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "3 Formellösungen gesucht, wenn möglich"