Costi e guadagni

    In alcune produzioni i costi totali  (vedi qui, e qui per approfondimenti)  aumentano in proporzione all'aumento del n° di pezzi prodotti (Ct = Cf + Ci · n, dove n = "n° di pezzi prodotti nell'anno", Ct = "costi totali annui", Ci = "costi incorporati in un pezzo").
    Il grafico è una retta che interseca l'asse verticale in corrispondenza del valore dei costi fissi (Cf).

    Nel caso raffigurato sotto a sinistra Ct = 30 000 + 0.05 n.  Potrebbero essere i costi di una piccola tipografia che stampa fogli in un unico formato con 0.05 di costi incorporati in ogni foglio stampato – per carta, inchiostro, energia elettrica, ... – e 30 mila di spese fisse annue – per un addetto alle macchine, l'affitto, …).

    Nel caso della stessa produzione, il costo unitario (Cu = Ct / n, ovvero Cu = Cf / n + Ci) ha una variazione inversamente proporzionale alla variazione del n° di pezzi prodotti.  Il suo grafico (vedi sotto a destra) è una iperbole che ha asintoto orizzontale ad una quota pari al valore di Ci.

    Più precisamente Cu = 30 000 / n + 0.05.  All'aumentare dei fogli stampati l'incidenza delle spese fisse sul costo di un singolo foglio tende a ridursi, e il costo unitario tende a coincidere con i soli costi incorporati per materie prime ed energia (0.05).

    Supponiamo che i fogli vengano venduti (tutti) a 0.15 € l'uno, ossia che il ricavo unitario sia Ru = 0.15. Il ricavo totale sarà Rt = 0.15 · n.  Allora il guadagno totale sarà  Gt = Rt − Ct = 0.1 · n − 30 000.  Sotto a sinistra sono rappresentati i grafici di Rt e di Gt. Mentre il primo è una retta che passa per (0,0), il secondo per n=0 ha ordinata negativa: se non vengono venduti tappi il guadagno totale è di −30 000 €, ossia si ha un passivo di 30 000 €.  Si ha un pareggio quando Gt=0, ossia quando 0.1 · n = 30 000, ossia quando n = 30 000 / 0.1 = 300 000:  è il valore di n per cui il grafico del ricavo totale interseca quello del costi totali, ovvero quello in cui il grafico del guadagno totale interseca l'asse orizzontale.

    Il guadagno unitario è  Gu = Gt / n, ovvero  Gu = 0.1 − 30 000 / n.  Al crescere di n Gu tende a stabilizzarsi su 0.1 (mentre Cu tende a stabilizzarsi su 0.05, e infatti il ricavo unitario 1.5 meno 0.05 fa 0.1).

    Ecco come sono costruibili grafici simili ai precedenti con R:

source("http://macosa.dima.unige.it/r.R") 
# apro una nuova finestra in cui faccio i grafici di Ct e Cf
BF=3; HF=2.5; Plane(0,1e6, 0,80e3)
Ct <- function(n) 30e3 + 0.05*n; Cf <- function(n) 30e3
Cu <- function(n) Ct(n)/n; Ci <- function(n) 0.05 + n*0
graph(Ct,0,1e6, "blue"); graph(Cf,0,1e6, "red")
abovex("Ct / blu   Cf / rosso"); abovey("n")
#
# in un'altra faccio quelli di Cu e Ci
BF=3; HF=2.5; Plane(0,1e6, 0,0.5)
graph(Cu,0,1e6, "blue"); graph(Ci,0,1e6, "red")
abovex("Cu / blu   Ci / rosso"); abovey("n")
#
# quelli di Rt e Gt (e quelli tratteggiati di Ct e Cf)
# in una finestra un po' pił alta
Ru <- function(n) 0.15; Gu <- function(n) Ru(n)-Cu(n)
Rt <- function(n) n*Ru(n); Gt <- function(n) Rt(n)-Ct(n)
BF=3; HF=3.5; Plane(0,1e6, -25e3,155e3)
coldash <- "blue"; graph(Ct,0,1e6, 0); coldash <- "red"; graph(Cf,0,1e6, 0)
graph(Rt,0,1e6, "brown"); graph(Gt,0,1e6, "violet")
POINT(3e5,0, 1)   # ho tracciato dove Gu interseca l'asse orizz.
abovex("Rt / marr   Gt / viola"); abovey("n")
#
# quelli di Ru e Gu, assieme a quelli di Cu e Ci tratteggiati
BF=3; HF=3.5; Plane(0,1e6, -0.4,0.5)
coldash <- "blue"; graph(Cu,0,1e6, 0); coldash <- "red"; graph(Ci,0,1e6, 0)
graph(Ru,0,1e6, "brown"); graph(Gu,0,1e6, "violet")
POINT(3e5,0, 1)
abovex("Ru / marr   Gu / viola"); abovey("n")

 

 


    Ecco come costruirli uguali a quelli sopra riprodotti con comandi un po' più sofisticati:

dev.new(width=3.5,height=3.5) # dimensiono la fimestra
Ct <- function(n) 30e3 + 0.05*n; Cf <- function(n) 30e3 + n*0
Cu <- function(n) Ct(n)/n; Ci <- function(n) 0.05 + n*0
# faccio il grafico senza scritte, titoli, ...
plot(Ct, xaxt="n",yaxt="n",ylim=c(0,80e3),xlim=c(0,1e6),fg="white",xlab="",ylab="" )
# traccio una griglia da me definita
abline(h=seq(0,80e3,10e3),v=seq(0,1e6,1e5),lty=3,col="blue"); abline(h=0,v=0)
plot(Ct, xlim=c(0,1e6), add=TRUE, lwd=2, col="blue")
plot(Cf, xlim=c(0,1e6), add=TRUE, lwd=2, col="red")
# metto delle scritte ai margini dei grafici
mtext(c("0","3e4","8e4"),side=2,at=c(0,3e4,8e4),cex=0.8 )
mtext(c("0","5e5","1e6"),side=1,at=c(0,5e5,1e6),cex=0.8 )
mtext("Ct",side=3,at=2e5,cex=0.9,col="blue" )
mtext("Cf",side=3,at=4e5,cex=0.9,col="red" )
mtext("n",side=1,at=1.1e6,cex=0.9,line=-1 )
#
dev.new(width=3.5,height=3.5)
plot(Cu, xaxt="n",yaxt="n",ylim=c(0,0.5),xlim=c(0,1e6),fg="white",xlab="",ylab="" )
abline(h=seq(0,0.6,0.1),v=seq(0,1e6,1e5),lty=3,col="blue"); abline(h=0,v=0)
plot(Cu, xlim=c(0,1e6), add=TRUE, lwd=2, col="blue")
plot(Ci, xlim=c(0,1e6), add=TRUE, lwd=2, col="red")
mtext(c("0","5e5","1e6"),side=1,at=c(0,5e5,1e6),cex=0.8 )
mtext("n",side=1,at=1.1e6,cex=0.9,line=-1 )
mtext(c("0","0.1","0.5"),side=2,at=c(0,0.1,0.5),cex=0.8 )
mtext("Cu",side=3,at=2e5,cex=0.9,col="blue" )
mtext("Ci",side=3,at=4e5,cex=0.9,col="red" )
#
dev.new(width=3.5,height=5)
Ru <- function(n) 0.15 + n*0; Gu <- function(n) Ru(n)-Cu(n)
Rt <- function(n) n*Ru(n); Gt <- function(n) Rt(n)-Ct(n)
# faccio il grafico con col="white" in quanto poi lo disegno sopra tratteggiato
plot(Cu, xaxt="n",yaxt="n",ylim=c(-0.4,0.5),xlim=c(0,1e6),fg="white",xlab="",ylab="",lty=2,col="white")
abline(h=seq(-0.5,0.6,0.1),v=seq(0,1e6,1e5),lty=3,col="blue"); abline(h=0,v=0)
plot(Cu, xlim=c(0,1e6), add=TRUE, lwd=2, col="blue", lty=2)
plot(Ci, xlim=c(0,1e6), add=TRUE, lwd=2, col="red", lty=2)
mtext(c("0","3e5","5e5","1e6"),side=1,at=c(0,3e5,5e5,1e6),cex=0.8 )
mtext("n",side=3,at=1.1e6,cex=0.9,line=-9 )
mtext(c("0","0.1","0.5"),side=2,at=c(0,0.1,0.5),cex=0.8 )
mtext("Cu",side=3,at=2e5,cex=0.9,col="blue" )
mtext("Ci",side=3,at=4e5,cex=0.9,col="red" )
plot(Ru, xlim=c(0,1e6), add=TRUE, lwd=2, col="brown")
plot(Gu, xlim=c(0,1e6), add=TRUE, lwd=2, col="violet")
points(3e5,0)
mtext("Ru",side=3,at=6e5,cex=0.9,col="brown" )
mtext("Gu",side=3,at=8e5,cex=0.9,col="violet" )
#
dev.new(width=3.5,height=5)
plot(Ct, xaxt="n",yaxt="n",ylim=c(-25e3,155e3),xlim=c(0,1e6),fg="white",xlab="",ylab="",col="white")
abline(h=seq(-30e3,160e3,10e3),v=seq(0,1e6,1e5),lty=3,col="blue"); abline(h=0,v=0)
plot(Ct, xlim=c(0,1e6), add=TRUE, lwd=2, col="blue", lty=2)
plot(Cf, xlim=c(0,1e6), add=TRUE, lwd=2, col="red", lty=2)
mtext(c("0","5e4","1e5","1.5e5","-3e4"),side=2,at=c(0,5e4,1e5,1.5e5,-3e4),cex=0.8 )
mtext(c("0","3e5","5e5","1e6"),side=1,at=c(0,3e5,5e5,1e6),cex=0.8 )
mtext("Ct",side=3,at=2e5,cex=0.9,col="blue" )
mtext("Cf",side=3,at=4e5,cex=0.9,col="red" )
mtext("n",side=1,at=1.1e6,cex=0.9,line=-3 )
plot(Rt, xlim=c(0,1e6), add=TRUE, lwd=2, col="brown")
plot(Gt, xlim=c(0,1e6), add=TRUE, lwd=2, col="violet")
points(3e5,0)
mtext("Rt",side=3,at=6e5,cex=0.9,col="brown" )
mtext("Gt",side=3,at=8e5,cex=0.9,col="violet" )