Calcoli scientifici con Julia/Mutui e prestiti

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcoli scientifici con Julia

Trattazione matematica

Al tempo t=0 viene erogato un mutuo d'importo M0 . Tale somma viene restituita con rate costanti di importo R pagate a partire dal tempo t=1 pertanto se si considera l'anno come unità di misura allora R è la rata annuale (conoscendo la rata mensile basta moltiplicarla per 12).

Indicando con r il tasso di interesse costante con il quale viene calcolato l'interesse su debito residuo Mt si ha che:

 Mt+1=Mt+rMtR=(1+r)MtR

Calcolando M1 cioè il mutuo dopo 1 anno si ha:

 M1=(1+r)M0R

Calcolando M2 cioè il mutuo dopo 2 anni si ha:

 M2=(1+r)M1R=(1+r)2M0R(1+r)R

Calcolando M3 cioè il mutuo dopo 3 anni si ha:

 M3=(1+r)M2R=(1+r)3M0R(1+r)2R(1+r)R

Pertanto il mutuo al tempo t sarà:

 Mt=(1+r)Mt1R=(1+r)tM0R(1+r)t1....R(1+r)2R(1+r)R

Posto:

 St=:R(1+r)t1....R(1+r)2R(1+r)R

Riscriviamo Mt come:

 Mt=(1+r)tM0+St

Moltiplicando ambo i membri dell'equazione St per (1+r) si ha:

 (1+r)St=R(1+r)t+....+R(1+r)3+R(1+r)2+R(1+r)

Sommando membro a membro le 2 equazioni si ottiene:

 St(1+r)St=R(1+r)tR

Da cui si ricava:

 St=Rr((1+r)t1)

Allora il mutuo al tempo t risulta uguale a:

 Mt=(1+r)tM0+St=(1+r)t(M0Rr)+Rr

Considerando la successione Mt continua se ne può calcolare la derivata per vedere quando è crescente o decrescente. Pertanto risulta:

 d(M(t))dt=(1+r)tlog(1+r)(M0Rr)

per cui la derivata è positiva e la funzione è crescente per R<=M0r e quindi in tal caso il mutuo non si estinguerebbe mai, mentre per R>M0r la derivata è negativa, la funzione è decrescente per cui dopo un certo tempo il mutuo si estingue.

Volendo calcolare dopo quanto tempo il mutuo si estingue bisogna imporre la condizione:

Mt=(1+r)t(M0Rr)+Rr=0

da cui si ottiene l'equazione esponenziale:

(1+r)t*=(RRM0r)

pertanto passando ai logaritmi si ottiene che il tempo t* in corrispondenza del quale il mutuo si estingue è:

t*=log(RRM0r)log(1+r)

mentre la rata annuale per estinguere il mutuo in un tempo annuale t* al tasso di interesse r è:

R=M0r(r+1)t*(r+1)t*1

Esempio di calcolo con Julia

Calcolare la rata mensile di un mutuo di 100.000€ al tasso del 2% in 20 anni. Si ottiene una rata mensile di 505,88€ :


function rata_di_un_mutuo_o_prestito() 
           M=100000;
           t=20*12;
           r=0.02/12;
           print("La rata mensile di un mutuo o prestito di $M € in 20 anni con un tasso di interesse del 2% è:")
           println((M*r*(1+r)^t) /((1+r)^t-1))
        end
rata_di_un_mutuo_o_prestito()
La rata mensile di un mutuo o prestito di 100000 € in 20 anni con un tasso di interesse del 2% è:505.8833350451077


Calcolare gli anni necessari affinché un mutuo di 136.000€ al tasso del 3,5% con una rata mensile di 616€ si estingua. Si ottiene un tempo di 30 anni:

function tempo_di_estinzione_mutuo_o_prestito() 
           M=136000;
           R=616*12;
           r=0.035;
           print("Un mutuo o prestito di $M € con un tasso di interesse del 3,5% e una rata mensile di 616€ si estingue in anni:")
           println(log(R/(R-M*r))/log(1+r))
        end
tempo_di_estinzione_mutuo_o_prestito()
Un mutuo o prestito di 136000 € con un tasso di interesse del 3,5% e una rata mensile di 616€ si estingue in anni:30.017775988227683


Volendo infine calcolare il tasso di interesse annuo di un mutuo di 136.000€ con una rata mensile di 616€ per 30 anni, utilizzando la libreria Roots si ottiene un tasso pari a r=0,035 = 3,5%:

using Roots
M=136000;
R=616*12;
t=30;
y(r)=-R +(M*r*(1+r)^t) /((1+r)^t-1);
find_zero(y,0.1)
0.034973001159437175

Template:Avanzamento