\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{xcolor}
\usepackage{color}
\usepackage{soul}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{ifpdf}
\ifpdf
 \usepackage[pdftex,colorlinks]{hyperref}
\else
 \usepackage[ps2pdf,
            breaklinks=true,
            colorlinks=true,
            linkcolor=red,
            citecolor=green
            ]{hyperref}
\fi
\newcommand{\N}{{\mathbb{N}}}
\newcommand{\Z}{{\mathbb{Z}}}
\newcommand{\Q}{{\mathbb{Q}}}
\newcommand{\R}{{\mathbb{R}}}
\makeindex
%\newcommand{\@hevea@cbrace}
%\usepackage[T1]{fontenc}
%\usepackage[francais]{babel}
%\newrgbcolor{fltk_color0}{1 0 0}
\author{Ren\'ee De Graeve }
\title{Amortissement d'un pr\^et}
\input{giacfr.tex}
\usepackage[auto]{mathjax}
%HEVEA\htmlfoot{Retour \`a la page principale de \ahref{http://www-fourier.ujf-grenoble.fr/\~parisse/giac_fr.html}{Giac/Xcas}.}

\ifhevea
\renewcommand{\jax@meta}{\begin{rawhtml}<script language="javascript"> 
var ua = window.navigator.userAgent;  
var old_ie = ua.indexOf('MSIE ');  
var new_ie = ua.indexOf('Trident/');  
if ((old_ie > -1) || (new_ie > -1) || Boolean(window.chrome)){
 (function () {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src  = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML";
  document.getElementsByTagName("head")[0].appendChild(script);
})();
}
</script>
\end{rawhtml}}
\fi

\begin{document}
\begin{giacjshere}
%HEVEA\htmlfoot{Retour \`a la page principale de \ahref{http://www-fourier.ujf-grenoble.fr/\~parisse/giac_fr.html}{Giac/Xcas}.}
\maketitle
\newpage
\tableofcontents
\newpage
%\printindex 
%On veut faire un pr\^et d'un montant {\tt P} aupr\`es d'une banque.\\
Amortissement d'un pr\^et d'une dur\'ee {\tt na} ann\'ees \`a un taux annuel
{\tt ta} remboursable soit annuellement, soit trimestriellement, soit 
mensuellement.
% par des montants constants {\tt S}.

\section{Relation reliant les diff\'erents param\`etres}
Les param\`etres sont :
\begin{itemize}
\item {\tt P} : le montant du pr\^et, qui \'evolue au cours du temps 
en fonction des int\'er\^ets et des remboursements.
\item {\tt t} : le taux du pr\^et (annuel ou trimestriel ou mensuel). 
\item {\tt n} : le nombre de remboursements.
\item {\tt S} : le montant constant des remboursements.
\end{itemize}
Je veux conna\^{\i}tre  le montant constant {\tt S} \`a payer (soit 
annuellement, soit trimestriellement, soit mensuellement) pour 
rembourser ce pr\^et. Ce montant comprend les int\'er\^ets d\^us 
et une somme qui participe au remboursement du pr\^et. On a donc :
\begin{center}{\tt S:=I+R} \end{center}
avec {\tt I} les int\'er\^ets d\^us et {\tt R} qui rembourse une 
partie du pr\^et {\tt P}. Apr\`es chaque paiement de {\tt S} on a :\\
{\tt I:=P*t} et {\tt P:=P-R}, donc {\tt P:=P+I-S} ou encore 
{\tt P:=P*(1+t)-S}.

Si on note par {\tt P0, P1, ..Pn} le montant du pr\^et apr\`es {\tt 0,\ 1,\ ..n}
remboursements, on a~:
\begin{itemize}
\item {\tt P0:=P}, 
\item {\tt P1:=P*(1+t)-S}, 
\item {\tt P2:=P1*(1+t)-S} ou encore {\tt P2:=P*(1+t)\verb|^|2-S*(1+(1+t))},
\item ...
\item 
{\tt Pn:=P*(1+t)\verb|^|n-S*(1+(1+t)+...+(1+t)\verb|^|(n-1))} ou encore\\
{\tt Pn:=P*(1+t)\verb|^|n-S*((1+t)\verb|^|n-1)/t}.
\end{itemize}
On veut que le pr\^et soit rembours\'e au bout de {\tt n} paiements 
donc on doit avoir : {\tt Pn==0}.\\
Apr\`es multiplication par $t$, la relation liant {\tt P,t,n,S} (avec {\tt P}
le montant initial du pr\^et) est donc :
$$ P \times t (1+t)^n-S\times ((1+t)^n-1)=0$$

\section{La fonction {\tt Sommes}}
Donc 
$$S=\frac{P \times t (1+t)^n}{(1+t)^n-1}=P \times t (1+\frac{1}{(1+t)^n-1})$$
On d\'efinit la fonction {\tt Sommes} de param\`etres :
\begin{itemize}
\item {\tt P} : le montant du pr\^et,
\item {\tt t} : le taux du pr\^et : ce taux sera annuel 
({\tt t=ta}) ou trimestriel ({\tt t=ta/4})  ou mensuel ({\tt t=ta/12}),
selon le nombre {\tt n} de remboursements.
\item
{\tt n} : le nombre de remboursements ({\tt n} sera soit \'egal \`a {\tt na} si 
on rembourse annuellement, ou \'egal \`a {\tt 4*na}  si on rembourse 
trimestriellement ou \'egal \`a {\tt 12*na} si on rembourse mensuellement).
\end{itemize}
On d\'efinit :\\
\giacinput{Sommes(P,t,n):=round(P*t*(1+1/((1+t)^n-1)),2);}\\ 
Exemple~: \\
je veux emprunter 10000 euros \`a un taux annuel {\tt t} de 2/100 
pendant 5 ans.\\
Quels seront mes remboursements ?\\
Je rembourse annuellement :\\
\giacinput{Sommes(10000,0.02,5) }\\
Je rembourse trimestriellement :\\
\giacinput{Sommes(10000,0.02/4,5*4) }\\
Je rembourse mensuellement :\\
\giacinput{Sommes(10000,0.02/12,5*12) }

\section{La fonction {\tt Pret}}
Je veux savoir quelle somme {\tt P} je peux emprunter \`a un taux annuel 
{\tt ta}, sachant que je suis capable de rembourser annuellement (resp 
trimestriellement ou mensuellement) une somme 
{\tt S} pendant {\tt n=na} ann\'ees (resp {\tt n=na*4} trimestres ou 
{\tt n=na*12} mois).\\
On a la relation :
$$P\times (1+t)^n-S\times((1+t)^n-1)/t=0$$
Donc
$$P=\frac{S\times ((1+t)^n-1)}{t(1+t)^n}=\frac{S}{t}\times(1-\frac{1}{(1+t)^n})$$
On d\'efinit :\\
\giacinput{Pret(t,n,S):=round(S/t*(1-1/(1+t)^n),2);}\\
Exemple~:\\
J'ai obtenu un taux annuel {\tt ta} de 2/100 pendant 5 ans et je peux 
rembourser mensuellement une somme comprise entre 175 euros et 200 euros.\\ 
Combien puis-je emprunter ?\\
\giacinput{Pret(0.02/12,5*12,175) }\\
\giacinput{Pret(0.02/12,5*12,200) }

\section{La fonction {\tt Duree}}
Je veux conna\^{\i}tre la dur\'ee de mon pr\^et sachant que je veux emprunter 
une somme {\tt P} et je suis capable de rembourser mensuellement une somme 
{\tt S}. Je peux emprunter \`a un taux annuel {\tt ta}. 
On a la relation o\`u {\tt n} est le nombre de mois et {\tt t:=ta/12} est le 
taux mensuel :
$$P\times t(1+t)^n-S\times ((1+t)^n-1)=0$$
Donc $(S-tP)\times (1+t)^n=S$ soit~:
$$n\ln(1+t)=\ln(S)-\ln(S-tP)$$
On d\'efinit :\\
\giacinputbig{Duree(P,t,S):=round((ln(S)-ln(S-t*P))/ln(1+t),2);}\\
Exemple~:\\ 
je veux emprunter 10000 euros, j'ai obtenu un taux annuel {\tt t} de 2/100 et 
je peux rembourser mensuellement une somme comprise entre 175 euros et 200 
euros. Quelle est la dur\'ee de mon pr\^et ?\\
\giacinput{Duree(10000,0.02/12,175)}\\
\giacinput{Duree(10000,0.02/12,200)}\\

\section{La fonction {\tt Taux}}
Je veux conna\^{\i}tre le taux  {\tt t} annuel (resp trimestriel ou mensuel) du 
pr\^et.\\ 
On a {\tt t:=ta} (resp {\tt t:=ta/4} ou {\tt t:=ta/12}). {\tt t} est solution 
en $x$ de l'\'equation $f(x)=0$ avec :
$$f(x)=S\times ((1+x)^n-1)-P\times (1+x)^nx$$
Si $nS>P$, cette \'equation a 2 solutions : $x=0$ et $x_0$ avec $0<x_0<1$.\\
En effet $f$ est continue et d\'erivable sur $[0,+\infty[$ et :
$$f'(x)=(1+x)^{n-1}\times ((nS-P)-x(1+n)P)$$ 
donc $f'(x)$ s'annule en 
$a=\frac{nS-P}{(1+n)P>0}$ donc $f(x)$ croit sur $[0,a]$ ($f(0)=0$ donc $f(a)>0$)
et d\'ecroit sur $[a,+\infty]$. 
De plus $f(1)=-2^n(P-S)-S<0$ donc $f(x)=0$ a une
seule solution positive $x_0$ v\'erifiant $a<x_0<1$. Donc {\tt t}$=x_0$.\\ 
On r\'esout cette \'equation num\'eriquement avec la fonction :
\begin{center}{\tt resoudre\_numerique} de {\tt Xcas}.\end{center}
On d\'efinit :\\
\giacinputbig{Taux(P,n,S):=round(resoudre_numerique(S*((1+x)^n-1)-P*(1+x)^n*x=0,x=1),5);}\\
Exemple~:\\
Si mon pr\^et est de {\tt 10000} euros sur 5 ans avec un remboursement mensuel 
de {\tt 175} euros, le taux annuel de mon pr\^et est :\\
\giacinput{12*Taux(10000,60,175)}

\section{La fonction {\tt Amortissement}}
La fonction {\tt Amortissement} a 5 arguments :
\begin{itemize}
\item {\tt P} le montant du pr\^et,
\item {\tt ta} le taux annuel du pr\^et,
\item {\tt na} la dur\'ee du pr\^et en ann\'ees,
\item {\tt S} la somme \`a verser \`a chaque \'ech\'eance (on ajuste ici la 
derni\`ere \'ech\'eance pour tenir compte des erreurs d'arrondis),
\item {\tt periode} qui vaut {\tt "m"} ou {\tt "t"} et par d\'efaut {\tt "a"}.
\end{itemize}
Si on choisit de verser {\tt S} chaque mois (resp trimestre), alors il faut 
initialiser {\tt periode} avec {\tt "m"} (resp {\tt "t"}).\\
Si parmi les 4 arguments {\tt P,ta,na,S}, une des valeurs est inconnue, on lui 
donne la valeur {\tt -1}, la fonction
{\tt Amortissement} calculera alors sa valeur \`a l'aide de la formule : 
$$S\times ((1+t)^{n}-1)-P\times (1+t)^{n}t=0$$
 avec $n:=na*12;$ $t:=ta/12;$ si {\tt periode} vaut {\tt "m"}\\
 (resp $n:=na*4;$ $t:=ta/4;$ si {\tt periode} vaut {\tt "t"}\\
 et $n=na;$ $t=ta;$  si {\tt periode} vaut {\tt "a"}). \\
Pour cela on utilise les valeurs des fonctions pr\'ec\'edentes.\\
{\tt Amortissement} renvoie un message et la matrice ayant comme 
$(j-1)$i\`eme ligne : $[j,P_j,R_j,I_j,S]$ avec  $j=1..n$ et \\
$S=R_j+I_j=$remboursement +inter\^et et $P_{j+1}=P_j-R_j=$\'evolution de $P$.
\begin{giacprog}
fonction Amortissement(P,ta,na,S,periode="a")
  local n,t,j,MA,L,k,c,msg;
  k:=member(-1,[P,ta,na,S]);
  si periode=="m" alors 
    n:=na*12;t:=ta/12;c:=12; periode:="mois";   
  sinon 
    si periode=="t" alors 
      n:=na*4;t:=ta/4;c:=4; periode:="trimestre"; 
    sinon 
      n:=na;t:=ta;c:=1;periode:="a"; periode:="an"; 
     fsi; 
  fsi;
  si count_eq(-1,[P,ta,na,S,periode])!=1 alors 
    retourne("Mettre 3 arguments parmi P,ta,na,S et -1 pour celui a chercher") ;
  fsi;
  si k==1 alors  //P:=Pret(t,n,S)
    P:=round(S/t*(1-1/(1+t)^n),2); 
  sinon  
    si k==2 alors //t:=Taux(P,n,S)
      t:=round(resoudre_numerique(S*((1+x)^n-1)-P*(1+x)^n*x=0,x=1),5);
      ta:=round(t*c,4);
    sinon 
      si k==3 alors  //n:=Duree(P,t,S)
        n:=round((ln(S)-ln(S-t*P))/ln(1+t),2);
      sinon //S:=Sommes(P,t,n)
        S:=round(P*t*(1+1/((1+t)^n-1)),2); 
      fsi;
    fsi;
  fsi; 
  msg:="Pret : "+P+", taux"+char(32)+" annuel : "+ ta + ", par "+ periode +" : "+S;
   afficher(msg);
   MA:=NULL;
  pour j de 0 jusque n-1 faire
    MA:=MA,[j+1,P,round(S-P*t,2),round(P*t,2),S];
    P:=round(P*(1+t)-S,2);
  fpour;
  MA[n-1]:=MA[n-1]+[0,0,P,0,P];
  return msg,[MA];
 ffonction:;
\end{giacprog}
Exemples~:\\
Je fais un emprunt sur 3 ans de 10000 euros au taux annuel de 0.01.\\
Quel est l'amortissement de ce pr\^et selon que j'opte pour un remboursement 
 annuel ou trimestiel ou mensuel ?\\
\giacinputmath{Amortissement(10000,0.01,3,-1) }\\
\giacinputmath{Amortissement(10000,0.01,3,-1,"t") }\\
\giacinputmath{Amortissement(10000,0.01,3,-1,"m")}\\
Ma banque me propose un cr\'edit au taux annuel de 2/100 pendant 5 ans. Je 
veux rembourser 250 euros par mois.\\ 
Quel montant puis-je emprunter ?\\
Quel est le tableau d'amortissement de ce pr\^et ?\\
\giacinputbig{msg,TA:=Amortissement(-1,0.02,6,250,"m"):;msg; }\\
La commande pr\'ec\'edente affiche le message, mais pas le tableau
d'amortissement qui est trop grand au format pdf, les commandes qui suivent 
affichent les morceaux du tableau.\\
\giacinputmath{[TA[k]$(k=0..11)]}\\
\giacinputmath{[TA[k]$(k=12..23)]}\\
\giacinputmath{[TA[k]$(k=24..35)]}\\
\giacinputmath{[TA[k]$(k=36..47)]}\\
\giacinputmath{[TA[k]$(k=48..59)]}\\
\giacinputmath{[TA[k]$(k=60..71)]}
\end{giacjshere}
\end{document}
