Matematica molto applicata

MdM1
Un saluto al forum!

Mi trovo nella situazione di dover scrivere la formula per questo indicatore anche per calcolarla facilmente con una funzione di excel, ma i molti sottocasi fanno sì che trovare una versione "compatta" (cioè senza uso di "se") della funzione sia estremamente complicato, almeno per le mie limitate capacità.

L'indicatore vuole premiare l'avvicinamento misurato in due tempi successivi del dato D (in questo caso il rapporto studenti/docenti di un corso di laurea) verso una soglia ideale S che poniamo pari a 25, e vuole premiare in egual modo sia chi le si avvicina "dall'alto" (esempio: chi riesce a portare il dato da 29 a 27) che "dal basso" (esempio: da 21 a 23); questo indicatore di avvicinamento per entrambi è pari alla differenza in termini assoluti tra il dato 2 e il dato 1, cioè 2.

Può capitare anche che la variazione del dato non lo avvicini alla soglia (esempio: da 27 a 29, che invece di calare verso il 25 cresce, oppure al contrario da 23 a 21); in tal caso il nostro indicatore varrà 0.

Complicazione finale: se nel passaggio dal dato 1 al dato 2 la soglia viene "sforata" (esempio: da 27 a 24, oppure al contrario da 23 a 26) l'indicatore finale vale solo la differenza in termini assoluti tra la soglia e il dato 1.

Ora, nel caso il dato cresca nel tempo, quindi D2>D1, l'indicatore sarebbe così definito:
I=max(0,min(S-D1;D2-D1))

Al contrario, se il dato decresce nel tempo, quindi D1>D2, l'indicatore cambia così:
I=max(0,min(D1-S;D1-D2))

Quello che chiedo a voi illuminati è: c'è un modo sintetico di esprimere queste due formule in una sola?

Spero di essere stato chiaro.
Vi ringrazio in anticipo per ogni tipo di suggerimento!

Risposte
MdM1
Perfetta!

Grazie

utente__medio11
Hai ragione, non ho considerato il caso dello "sforamento" della soglia.

Penso che così dovrebbe andar bene:

SE(A+B=C;A;SE(A>B;C;0))

con:
A=ASS(S-D1)
B=ASS(S-D2)
C=ASS(D1-D2)


La condizione [inline]A+B=C[/inline] verifica che [inline]D1[/inline] e [inline]D2[/inline] non siano entrambi maggiori o minori di [inline]S[/inline], mentre la condizione [inline]A>B[/inline] verifica che [inline]D1[/inline] sia più distante da [inline]S[/inline] rispetto a [inline]D2[/inline].

MdM1
Grazie!

Ultima formula ottima per excel.

EDIT: credo di aver trovato un errore sempre nell'ultima formula. Poni d1=26 e d2=18. Siamo in un caso in cui l'indicatore è pari a 26-25=1 ma la condizione iniziale dovrebbe rendere l'indicatore pari a 0. Sbaglio?

utente__medio11
Ciao, si può fare anche qualcosa del genere:

MAX(0;MIN(ASS(S-D1)*SEGNO(ASS(S-D1)-ASS(S-D2));ASS(D1-D2)))



EDIT: inoltre utilizzando la funzione SE() il tutto potrebbe essere ridotto a:

SE(ASS(S-D1)>ASS(S-D2);MIN(ASS(S-D1);ASS(D1-D2));0)

MdM1
Grazie, non conoscevo la funzione GESTEP, me la studio.

Pensavo fosse un problema più semplice

Faussone
GESTEP(D2;D1)*MAX(0;MIN(S-D1;D2-D1))+GESTEP(D1;D2)*MAX(0;MIN(D1-S;D1-D2))


Anche se non credo cambi molto rispetto ad usare un if.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.