\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{xcolor}
\usepackage{color}
\usepackage{soul}
\input{giac.tex}
\giacmathjax
\title{Amortissement et mensualit\'es d'un pr\^et}
\author{Ren\'ee De Graeve}
\date{2019}
\begin{document}
\begin{giacjshere}
\maketitle
Voici le programme {\tt Amortissement(P,ta,na,S,periode="a")} qui permet   
de conna\^itre soit :
\begin{enumerate}
\item  la somme {\tt S} qu'il faut rembourser mensuellement (ou trimestrielement ou annuellement) lorsqu'on fait un pr\^et d'un montant {\tt P} sur une dur\'ee de {\tt na} ans au taux annuel {\tt ta}.
On tape pour avoir le montant {\tt S} :\\
{\tt Amortissement(P,ta,na,-1,"m")[0]} ({\tt "m"} pour mois) ou\\
 {\tt Amortissement(P,ta,na,-1,"t")[0]} ({\tt "t"} pour trimestre) ou\\
 {\tt Amortissement(P,ta,na,-1,"a")[0]}({\tt "a"} pour an)\\

\item le montant du pr\^et {\tt P} d'une dur\'ee de {\tt na} ans au taux annuel
 {\tt ta} qu'on rembourse mensuellement (ou trimestrielement ou annuellement) 
par une  somme {\tt S}.\\
On tape pour avoir le montant {\tt P} :\\
{\tt Amortissement(-1,ta,na,S,"m")[0]} ou\\
 {\tt Amortissement(-1,ta,na,S,"t")[0]} ou\\
 {\tt Amortissement(-1,ta,na,S,"a")[0]}

\item le taux {\tt ta} d'un pr\^et {\tt P} d'une dur\'ee de 
{\tt na} ans qu'on rembourse mensuellement (ou trimestrielement ou 
annuellement) par une  somme {\tt S}.\\
On tape pour avoir le taux {\tt ta} :\\
{\tt Amortissement(P,-1,na,S,"m")[0]} ou\\
 {\tt Amortissement(P,-1,na,S,"t")[0]} ou\\
 {\tt Amortissement(P,-1,na,S,"a")[0]}

\item  la durée {\tt na} d'un pr\^et {\tt P} au taux annuel
{\tt ta} que l'on rembourse mensuellement (ou trimestrielement ou annuellement) 
par une  somme {\tt S}.\\
On tape pour avoir  la durée {\tt na} :\\
{\tt Amortissement(P,ta,-1,S,"m")[0]} ou\\
 {\tt Amortissement(P,ta,-1,S,"t")[0]} ou\\
 {\tt Amortissement(P,ta,-1,S,"a")[0]}

\item  le montant qui reste à rembourser avant le $n$i\`eme 
remboursement, on tape :\\
{\tt Amortissement(P,ta,na,-1,"m")[n]} ou\\
 {\tt Amortissement(P,ta,na,-1,"t")[n]} ou\\
 {\tt Amortissement(P,ta,na,-1,"a")[n]}\\
On obtient {\tt [n,Pn,An,In,S]} o\`u {\tt Pn} est la somme qui reste \`a 
rembourser {\bf avant} le $n$i\`eme remboursement.\\
Le $n$i\`eme remboursement {\tt S} est \'egal \`a  la somme de l'amortissement 
{\tt An}  et des int\'er\^ets {\tt In}. Ainsi apr\`es le $n$i\`eme remboursement
il restera {\tt Pn-An} \`a rembourser.\\
\item  le tableau d'amortissement d'une ann\'ee.\\
Par exemple:\\
 pour avoir le tableau d'amortissement de la premi\`ere ann\'ee, on tape :\\
{\tt Amortissement(P,ta,na,-1,"m")[1..12]} ou\\
 {\tt Amortissement(P,ta,na,-1,"t")[1..4]} ou\\
 {\tt Amortissement(P,ta,na,-1,"a")[1]}\\
pour avoir le tableau d'amortissement de la deuxi\`eme ann\'ee, on tape:\\
{\tt Amortissement(P,ta,na,-1,"m")[13..24]} ou\\
 {\tt Amortissement(P,ta,na,-1,"t")[5..8]} ou\\
 {\tt Amortissement(P,ta,na,-1,"a")[2]}
\end{enumerate}
Un exemple, pour un prêt de 10000 euros sur 5 ans au taux de 1.3\% qui se 
rembourse \`a la fin de chaque ann\'ee, on tape :\\
\giacinputmath{Amortissement(10000,0.013,5,-1,"a")[1..5]}\\
On obtient {\tt [[1,P,A1,I1,S],[2,P-A1,A2,I2,S],...[5,P-A1-A2-A3-A4,A5,I5,S5]]}\\
 le montant du prêt {\tt P}, l'amortissement {\tt A1} du pr\^et et les 
int\'er\^ets {\tt I1} constituant le 1ier remboursement ({\tt S=A1+I1=2078.67})
puis {\tt [2,P-A1,A2,I2,S]} etc...\\ 
Au bout des 5 ans, \`a cause des erreurs d'arrondis la somme \`a rembourser est
de {\tt S5=2078.69} au lieu de {\tt S=2078.67}.\\
On tape :\\
\giacinputbigmath{Amortissement(400000,1.3/100,15,-1,"m")[0]}\\
\giacinputbigmath{Amortissement(400000,1.4/100,20,-1,"m")[0]}\\
\giacinputbigmath{Amortissement(-1,1.3/100,15,2000,"m")[0]}\\
\giacinputbigmath{Amortissement(-1,1.4/100,20,2200,"m")[0]}\\
\giacinputbigmath{Amortissement(350000,1.3/100,15,-1,"m")[12]}\\
\giacinputbigmath{Amortissement(350000,1.3/100,15,-1,"m")[24]}\\
\giacinputbigmath{Amortissement(350000,1.3/100,15,-1,"m")[31..36]}\\

\begin{giaconload}
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  
  sinon si periode=="t" alors n:=na*4;t:=ta/4;c:=4  
        sinon n:=na;t:=ta;c:=1;periode:="a";
        fsi; 
  fsi;
  si count_eq(-1,[P,ta,na,S,periode])!=1 alors 
    retourne("il faut mettre 3 arguments parmi P,ta,na,S") 
  fsi;
  si k==1 alors P:=Pret(t,n,S); 
  sinon  
    si k==2 alors t:=Taux(P,n,S);ta:=round(t*c,4);
    sinon 
      si k==3 alors n:=Duree(P,t,S);
      sinon S:=Sommes(P,t,n); 
      fsi;
    fsi;
  fsi; 
  msg:="Pret "+P+", taux annuel "+ ta+ ", pendant "+ n +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];
 }:;
Duree(P,t,S):=round((ln(S)-ln(S-t*P))/ln(1+t),0):;
Sommes(P,t,n):=round(P*t*(1+1/((1+t)^n-1)),2):;
Pret(t,n,S):=round(S/t*(1-1/(1+t)^n),2):;
Taux(P,n,S):=resoudre_numerique(S*((1+x)^n-1)-P*(1+x)^n*x=0,x=1):;
\end{giaconload}

\end{giacjshere}
\end{document}
