Funktionale Programmierung

Aufgabe:

Gegeben ist einen Kostenfunktion mit s-förmigem Kostenverlauf (in der Regel eine Polynomfunktion dritten Grades). Man berechne die Kostenkehre, das Betriebsoptimum, das Betriebsminimum und die kurzfristige Preisuntergrenze.

 

Wichtige Mitteilung

Funktionale Programmierung:

Die benutzerdefinierten Funktionen von Maxima können auch Funktionen als Argument haben!

https://de.wikipedia.org/wiki/Funktionale_Programmierung

Mathematischer Hintergrund:

Die Kostenkehre ist der Übergang von den degressiven Kosten zu den progressiven Kosten. Gleichzeitig die x-Koordinate des Wendepunktes.

Ein Beispiel dazu:

Kostenkehrefunktion

Kostenkehre Code:

a:K=0.05*x^3-0.3*x^2+5*x+30$
b:K=0.02*x^3-3*x^2+180*x+1000$
c:K=0.001*x^3-0.75*x^2+200*x+11000$
d:K=0.002*x^3-0.15*x^2+6.5*x+250$
ratprint:off$
Kostenkehre(K):=solve(diff(rhs(K),x,2)=0,x)$
Loesung:
[Kostenkehre(a),
Kostenkehre(b),
Kostenkehre(c),
Kostenkehre(d)]$
display(Loesung)$

Kostenkehre und Betriebsoptimum Code:

a:K=0.05*x^3-0.3*x^2+5*x+30$
b:K=0.02*x^3-3*x^2+180*x+1000$
c:K=0.001*x^3-0.75*x^2+200*x+11000$
d:K=0.002*x^3-0.15*x^2+6.5*x+250$
ratprint:off$
f(X):=round(ev(x,X))$
Kostenkehre(K):=solve(diff(rhs(K),x,2)=0,x)$
Betriebsoptimum(K):=realroots(diff(rhs(K)/x,x,1))$
Kostenkehre:
[Kostenkehre(a),
Kostenkehre(b),
Kostenkehre(c),
Kostenkehre(d)]$
Betriebsoptimum:
[Betriebsoptimum(a),
Betriebsoptimum(b),
Betriebsoptimum(c),
Betriebsoptimum(d)],float$
Kostenkehre:map(f,Kostenkehre)$
Betriebsoptimum:map(f,Betriebsoptimum)$
display(Kostenkehre)$
display(Betriebsoptimum)$

Die rot markierten Eingabedaten dürfen in sinnvoller Weise verändert werden!


wxMaxima
:

Bildschirmfoto_2017-11-24_14-23-47.png

Vroomlab:

Bildschirmfoto_2017-11-24_14-20-10.png

Betriebsminimum Code:

ratprint:off$
a:K=0.05*x^3-0.3*x^2+5*x+30$
b:K=0.02*x^3-3*x^2+180*x+1000$
c:K=0.001*x^3-0.75*x^2+200*x+11000$
d:K=0.002*x^3-0.15*x^2+6.5*x+250$
F(K):=ev(rhs(K),x=0)$
V(K):=rhs(K)-ev(rhs(K),x=0)$
v(K):=V(K)/x$
f(X):=solve(diff(v(X),x,1)=0,x)$
Betriebsminimum:[f(a),f(b),f(c),f(d)]$
display(Betriebsminimum)$

Alle Codes können mit Hilfe von Copy&Paste in Maxima Interpretern ausgeführt werden.


Telemaxima
:

telemaxima

Code Kostenkehre mit Differentialoperator:

ratprint:off$
"´"(z):=diff(z,x)$
postfix("´",180)$
a:K=0.05*x^3-0.3*x^2+5*x+30$
b:K=0.02*x^3-3*x^2+180*x+1000$
c:K=0.001*x^3-0.75*x^2+200*x+11000$
d:K=0.002*x^3-0.15*x^2+6.5*x+250$
solve(rhs(a)´´=0);
solve(rhs(b)´´=0);
solve(rhs(c)´´=0);
solve(rhs(d)´´=0);