0 Daumen
1,9k Aufrufe

für eine Excel-Berechnung von Kosten (exponenzielle Steigung) versuche ich, die zugrunde gelegte Formel zu ermitteln. Ich weiß ungefähr, wie die Formel aussieht, aber komme nicht dahin, wie ich das detaillieren kann.

Ich habe diese Reihe:

26
104
234
417
652
940
1.280
1.674
2.121
2.621
3.176
3.784
4.447
5.164
5.935
6.762
7.644
8.582
9.575
10.625
11.731
12.893
14.113
15.390
16.724
18.116
19.566
21.075
22.642
24.268
25.954

26 * n^2 bildet es schon annähernd ab, jedoch wird die Ungenauigkeit mit steigendem n höher.

Wie kann ich bei sowas vorgehen? Die 26 oder die 2 leicht zu justieren bringt mich nicht weiter.


Avatar von

Wäre Polynominterpolation eine Möglichkeit?

danke, dass du dir Gedanken machst :)

Leider habe ich an der Uni nur wenig hohe Mathematik gehabt und kann das nicht beantworten. Ich erhoffe mir sehr konkrete Hilfe und eine Erklärung, sodass ich das für andere Werte wiederholen könnte.

Aktuell probiere ich die Formel auf verschiedene Arten zu verändern und beobachte dann für n=1 bis n=30 wie hoch die Abweichungen zu der Reihe sind.

Ich erkenne nur nicht, an was ich drehen muss/kann, um mich weiter zu nähern...

2 Antworten

+1 Daumen
 
Beste Antwort

Da Du nur Näherungswerte hast, bringt eine exakte Suche nichts (Polynom würde nur extrem überschwingen).

Was Du brauchst ist Nichtlineare Regression, die

f(x)=26.14918878*pow(x,1.993397478)*exp(1.772017946e-3*x)

ergibt. pow(x,y)=x^y; exp(x)=e^x

NichtLinRegress31.png

Wertetabelle kopiert:

1 26.19556669090097
2 104.48881641601976
3 234.88715036692088
4 417.5239563978811
5 652.5760822873633
6 940.2436869004312
7 1280.7417450505538
8 1674.29563036891
9 2121.1385190652304
10 2621.509733476022
11 3175.6536207503987
12 3783.818758934748
13 4446.257374686664
14 5163.224903883693
15 5934.979652203078
16 6761.782527735809
17 7643.896826814271
18 8581.588059997812
19 9575.123808929011
20 10624.773607308296
21 11730.808840982452
22 12893.502663374547
23 14113.129923368337
24 15389.967103407402
25 16724.29226605032
26 18116.38500758527
27 19566.52641758378
28 21074.999043486765
29 22642.086859482217
30 24268.075239065296
31 25953.250930775554

Der LINK mit Formel: http://www.gerdlamprecht.de/Roemisch_JAVA.htm#26.14918878*@Px,1.993397478)*exp(1.772017946e-3*x)@Ni=0;@N@Bi]=Fx(i);@Ni%3E31@N0@N0@N#

Avatar von 5,7 k

Sau gut, vielen Dank! Würdest du mir noch erklären, wie du das aus meinen Zahlen gezogen hast?

Ist wahrscheinlich nicht die Formel, mit der die Zahlen erzeugt wurden, reicht mir aber total, da gerundet ein fast optimales Ergebnis :)

Wenn ich da alle Zahlen eingebe, dann erhalte ich viel komplexere Formeln. Hast du einfach nur wenige Werte eingegeben oder wie kommst du auf das kurze Ergebnis, das trotzdem so gut passt?


*edit*

Auch mit wenigen Werten kriege ich da ganz andere Formeln raus, die alle z. B. mit glatt 26 arbeiten und bei wenigen Werten klappt es dann auch nicht genau. Irgendwie scheine ich das Tool falsch zu nutzen.

Die nächsten Schritte der Folge wären 27700, 29505 - mit deiner Formel kommen raus 27698, 29502, auf jeden Fall besser als alles, was ich hinbekommen habe. :)

Zitat: "wie du das aus meinen Zahlen gezogen ..."

A: Hatte ich doch "Nichtlineare Regression".

Z: "nicht die Formel, mit der die Zahlen erzeugt wurden"

A: Ich dachte, dass es Messreihen sind. Wenn eine Formel dahinter steht, wurde garantiert mit round(..) gerundet. Das kann der Iterationsrechner auch:

aB[i]=Fx(i);aC[i]=round(Fx(i));

Z. "ich da alle Zahlen eingebe, dann erhalte ich viel komplexere Formeln" oder "Tool"

Was ist mit da und Tool gemeint? Excel? -> dann kann man doch nachschauen, welche Formel dahinter steht.

Z: "nächsten Schritte der Folge wären 27700, 29505"

Es geht hier nicht um Zahlenfolgen, sondern um Funktionswerte. Mit genug Zeit könnte ich Dir auch eine Formel basteln, die statt

31 25953.250930775554      25953
32 27697.90203668994      27698
33 29502.31799331743      29502

die gewünschten Quellwerte exakt ausgibt. Statt jedoch unnütze Zeit in höhere Mathematik zu verschwenden brauche ich genaue Angaben zur Quelle (XLS?) Wer sagt mit welchen Parametern, dass 27700 rauskommen soll?

Wenn ich "Kosten (exponenzielle Steigung)" höre, ist es bestimmt alles viel einfacher, denn diese Menschen betreiben Mathe nur bis zum Abitur -> nur ihre Sprache ist meist so verklausuliert, dass sich alles kompliziert anhört. Statt exakte Werte auszugeben werden dann auch noch gerundete Werte angezeigt, was die Zurückverfolgung erschwert!

Mit Tool meinte ich "http://www.gerdlamprecht.de/Mittelwerte.html"

Ich habe dich so verstanden, dass du diese Analyse von Folgen genutzt hast.

Entschuldige, wenn ich die falschen Begriffe genutzt habe, ich versuche mal genau zu erklären, um was es geht.

"Wir" wollen gerne ein Excel-Tool bauen, das die Planbarkeit in einem Browsergame erleichtert. Dort kann man Gebäude bauen, die verschiedene Rohstoffe kosten. Jede Stufe steigen die Kosten nicht-linear und die Entwickler wollen, dass die Community sich selber hilft und geben die Formeln (warum auch immer^^) nicht raus.

Damit wir jetzt zu 20 Gebäuden, die teilweise über Stufe 1000 gehen, nicht riesige Excel-Tapeten füllen müssen, wollte ich gerne Hilfe suchen, ob man anhand der Ergebnisse die Algorithmen "zurückverfolgen" kann. Ich möchte also 6 Funktionen pro Gebäude (x 20 Gebäude) aus von der Community gesammelten Werten (Rohstoffkosten) ermitteln und in Excel verwenden.

Damit lassen sich dann z. B. die Gesamtkosten über verschiedene Stufen ermitteln, ohne, dass alle Werte gesammelt worden sein müssen.

Zeitgleich habe ich mich schon immer gefragt, wie man bei Zahlenreihen, die ich in einfacher Form als "Rätsel" gerne mag, wohl mathematisch auflösen kann. :)

Deswegen habe ich das vielleicht etwas durcheinander geworfen, wie du gut erkannt hast.

Also: Es kommt nicht auf 0,1% Genauigkeit an, eher darauf, dass sich die Funktionen hoffentlich einfach ermitteln lassen.

Parameter sind also im Prinzip unbekannt. Es ist stark davon auszugehen, dass nur die Stufe des Gebäudes (im Beispiel 1 - 31 als "Ausschnitt" der gesammelten Daten) als Parameter reinspielt und es ist sichtbar, dass es eine Exponentialfunktion ist.


Wir haben niemanden in der Community selber gefunden (bisher), der uns da weiterhelfen konnte. Daher haben wir hier unser Glück versucht :)

So, nochmals optimiert, nun perfekt:

http://www.gerdlamprecht.de/Roemisch_JAVA.htm#-0.8679467081723669+0.7029431307511457*x+25.810533527902805*x*x+0.03237610323825198*@Px,3)+0.00017844804946173071*@Px,4)@Ni=0;@N@Bi]=round(Fx(i));@Ni%3E33@N0@N0@N#


0 -1
1 26
2 104
3 234
4 417
5 652
6 940
7 1280
8 1674
9 2121
10 2621
11 3176
12 3784
13 4446
14 5164
15 5935
16 6762
17 7644
18 8582
19 9575
20 10625
21 11731
22 12893
23 14113
24 15390
25 16724
26 18116
27 19566
28 21075
29 22642
30 24268
31 25954
32 27700
33 29505

cool :)

Wie kommt man denn da ran? Ich habe es noch nicht für Folgewerte getestet, aber für mich ist die Reproduzierbarkeit wichtig, weil es mehrerer dieser Funktionen gibt, die ich entschlüsseln will ^^


Danke dir!

0 Daumen

Fasse die Folge als Wertetabelle auf:

1
2
3
4
5
26
104
234
417
652

Und versuch es mit diesem Ansatz

f(x)=ax4+bx3+cx2+dx+e

Vielleicht gelingt es. Sonst erhöhe den Grad des Polynoms.

Avatar von 123 k 🚀

Die Werte schweifen aber schnell ins Negative ab, sobald man einen x-Wert benutzt, der nicht mehr in der Wertetabelle steht.

Dann erhöhe den Grad des Polynoms (entsprechend Wertetabelle verlängern)

\(f(x)=\dfrac{-x^4}{12} + x^3 + \dfrac{265x^2}{12} + 6x - 3\)

Deine Lösung kann ich zwar nicht bestätigen. Aber im Prinzip hast du recht. Meinen Kommentar, auf den du antwortest, habe ich bearbeitet.

Für mich ist leider noch nicht nachvollziehbar, wie ihr zu einer Formel kommt :)

Eigentlich eine "Steckbriefaufgabe". Für ein Polynom n-ten Grades brauchen wir n+1 Bedingungen.

Nehmen wir nun eins mit dem Grad 4 (siehe oben), so brauchen wir 5 Bedingungen.

\(f(0)=26 \\ f(1)=104\)
..., für die man dann in einem LGS die einzelnen Koeffizienten bestimmen kann.

Bringt hier aber eigentlich nichts (oder eine generelle Erhöhung des Polynomgrades) , da die Werte nur für die, mit der das Polynom ermittelt wurde, genau sind.

Bei mehr Werten müsste aber auch die Genauigkeit der folgenden Werte steigen, oder? Oben hat auch jemand versucht, mit dem Tool von gerdlamprecht zu helfen. So wie er es genutzt hat, sind die folgenden Werte ok, auch mit steigender Ungenauigkeit, aber besser als meine Formel mit nur 26 * X ^ 2 ;)!

Habe nur noch nicht raus gefunden, wie ich dahin komme, dass die Gleichung nicht ganz so komplex aufgebaut ist.

Natürlich kann man mit einem Interpolationspolynom alle vorgegebenen Stützstellen exakt treffen, aber wenn die Physik dahinter nicht stimmt (es wurde immer von Kosten und exponentiellen... gesprochen), dann bekommt man bei 30 Stützstellen ein extremes Überschwingen, so dass schon 1 Stützstelle mehr (also das Schauen in die Zukunft) extrem vom gewünschtem Wert abweicht. Die Theorie entfernt sich dann immer weiter von der Praxis.

Anders: Zu jeder endlichen Zahlenfolge / Stützstellenfolge kann man unendlich viele Theorien entwerfen (die Mathematik ist grenzenlos).

Ohne Randbedingungen wird man aber nicht die finden, mir der man in die "Zukunft" (weitere Folgewerte) schauen kann.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community