Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Trendlinie

Trendlinie
Peter
Hallo,
ich habe ein kleines Problem bei der Berechnung von Werten mithilfe einer Polynom-Funktion.
Um eine Funktion an die Werte (s. Tabelle) anzupassen, benutze ich ein Polynom 5. Ordnung. Excel gibt hierzu als Trendlinie auch eine Funktion an: y = 5E-23x^5 - 5E-18x^4 + 2E-13x^3 - 3E-09x^2 + 3E-05x + 0,0202. Die Kurve stimmt offensichtlich gut mit den Originalwerten überein. Wenn ich jedoch mithilfe der Funktion die Kurvenpunkte neu berechnen will, bekomme ich ganz andere Werte, die mit der Kurve im Diagramm nicht übereinstimmen.
Berechneten
x y Werte
0 0% 2,02%
436 3% 3,27%
512 4% 3,48%
640 5% 3,82%
1023 6% 4,80%
1407 7% 5,70%
2200 8% 7,37%
3350 9% 9,39%
4347 10% 10,86%
5697 12% 12,58%
6903 14% 13,96%
8309 15% 15,52%
10354 16% 17,97%
15468 17% 26,47%
20580 18% 39,79%
25693 19% 58,37%
26000 19% 59,66%
30000 19% 78,52%
Zur Berechnun habe ich die x-Werte in die Formel eingesetzt, z B.
für x = 30000 (= B22)
=5E-23*B22^5 - 0,000000000000000005*B22^4 + 0,0000000000002*B22^3 - 0,000000003*B22^2 + 0,00003*B22 + 0,0202
Da es sich bei den Parametern um sehr keine Werte handelt, hatte ich gedacht, es handelt sich _ um einen Rundungsfehler. Mit folgenden Anweisungen hatte ich versucht, Parameter mit höhere Genauigkeit zu erhalten, also statt 5E-23 vielleicht 4,895E-23.

Sub trendparam()
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SeriesCollection(1).Select
With ActiveChart.SeriesCollection(1).Trendlines(1)
.Border.ColorIndex = 3
.DataLabel.NumberFormat = "0.00000000000000000000000000E+00"
'ActiveSheet.Cells(1, 1) = .DataLabel.Text
MsgBox .DataLabel.Caption
End With
End Sub

Aber sowohl mit der Anweisung DataLabel.Text und auch mit der Msgbox bekomme ich die gleichen Angaben. Der berechnet Wert für x = 30000 ist aber klar falsch, in der Grafik wird alles richtig angezeigt.
Kann mir jemand der Tipp geben, wo ich einen Denkfehler gemacht habe, oder was ich tun muss?
Grüße
Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Trendlinie
14.09.2009 00:01:14
fcs
hallo Peter,
auch diese Hinweise zur Problemlösung werden wahrscheinlich nicht zu einem zufriedenstellenden Ergebnis führen.
Excel kann nur mit ca. 15 Ziffern Rechengenauigkeit rechnen und der Faktor für die 5. Potenz ist 4,irgendwas * 10 hoch -23
30000 hoch 5 = 3 hoch 5 * 10 hoch 20 = 2,43 * 10 hoch 22
Dieser scheinbar sehr kleine Faktor von E-23 kommt bei großen X-Werten doch wieder ins Spiel und dann schlägt die Rechengenauigkeit von Excel wieder grausam zu.
Diese Problematik der Trendpolynome höherer Ordnung tritt aber immer auf wenn du versuchst für sehr kleine Y-Werte (hier kleiner 1) einen Trend für einen sehr großen X-Werte-Bereich ( hier 0 bis 30000) aus der von Excel ermittelten Trend-Funktion für vorgegebene X-Werte neue Y-Werte zu berechnen.
Gruß
Franz
Anzeige
AW: Trendlinie
14.09.2009 19:27:27
Peter
Hallo Franz,
vielen Dank für Deinen Hinweis.
Bei sehr kleinen Zahlen besteht immer das Problem der Rundungsfehler, das ist klar. Aber wenn man die Anzahl der angezeigten Stellen auf 30 setzt, so bekommt man doch Zahlen, (4,6493014E-23, 4,510883562435E-18, 1,68846661958398E-13 usw.) mit denen sich die Kurve für meine Zwecke hinreichend genau beschreiben lässt. Nur die ursprünglich angezeigte Funktion (y = 5E-23x5 - 5E-18x4 + 2E-13x3 - 3E-09x2 + 3E-05x + 0,0202) ist so ungenau, dass sich mit der nichts anfangen lässt.
Ich hatte gedacht, man könne mit der Anweisung
.DataLabel.NumberFormat = "0.00000000000000000000000000E+00" die Koeffizienten schon so ausgeben, wie man es möchte. Warum funktioniert das nicht?
Schönen Abend
Peter
Anzeige
AW: Trendlinie
15.09.2009 07:06:46
fcs
Hallo Peter,
unter Excel 2007 funktioniert folgende VBA-Anweisung, allerdings machen mehr als 14 Nachkommastellen keinen Sinn, da danach nur noch Nullen angezeigt werden.
Sub Makro1()
Dim objTrend As Trendline
Set objTrend = ActiveChart.SeriesCollection(1).Trendlines(1)
With objTrend
.DataLabel.NumberFormat = "0.00000000000000E+00"
End With
End Sub

Gruß
Franz
Ich tippe mal: Die 30 Nachkommastellen sind nur möglich um bei sehr großen ganzen Zahlen ~>999.999.999.999.999 eine Darstellung mit nachgestellten Nullen statt der Exponentialschreibweise zu ermöglichen.
Anzeige
AW: Trendlinie
16.09.2009 17:02:39
Peter
Hallo Franz,
zur Zeit habe ich nur Excel97 ubd XP. Ich bekomme mit der Anweisung kein Ergebnis. Aber die Kinder haben (natürlich) alle neuen Varianten. Wenn die mal wieder zuhause vorbeischauen, werde ich es ausprobieren.
Danke für den Hinweis
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige