Il est souvent frustrant de constater que certaines fonctions financières avancées sont disponibles depuis longtemps dans les tableurs, mais qu'elles sont absentes de nombreux langages de programmation. Des logiciels tels que Lotus 1-2-3 ou Quattro Pro proposent depuis des décennies des fonctions spécialisées capables d'effectuer rapidement des calculs financiers complexes, alors que le programmeur doit souvent recréer lui-même les formules nécessaires lorsqu'il développe une application personnalisée. Cette situation est particulièrement fréquente dans le domaine des prêts, des hypothèques et des investissements, où les calculs doivent tenir compte des taux d'intérêt, du nombre de versements, de la valeur actuelle et de la valeur future d'un capital. Parmi ces fonctions spécialisées figure la fonction IPAYMT (ou Intérêt dans certaines versions francisées), dont le rôle consiste à déterminer la portion d'intérêt incluse dans un versement donné d'un prêt amorti. Cette information est essentielle pour comprendre la répartition réelle des paiements entre le remboursement du capital et le paiement des intérêts, notamment dans les prêts hypothécaires de longue durée.
Dans un prêt amorti, chaque versement périodique comprend généralement deux composantes distinctes : une partie servant à rembourser le capital emprunté et une autre destinée à couvrir les intérêts dus au prêteur. Au début du prêt, la portion consacrée aux intérêts est généralement très importante, tandis que la part affectée au remboursement du capital demeure relativement faible. Avec le temps, cette situation s'inverse progressivement. La fonction IPAYMT en anglais ou Interet en français permet précisément de calculer le montant des intérêts correspondant à une période particulière sans avoir à construire manuellement tout le tableau d'amortissement. Le programme en langage C présenté ci-dessous reproduit cette fonctionnalité en s'appuyant sur plusieurs fonctions financières auxiliaires. La fonction FVal calcule une valeur future ou intermédiaire à partir des paramètres financiers du prêt, tandis que la fonction Paymt détermine le montant du versement périodique. Enfin, la fonction IPAYMT combine ces résultats afin d'obtenir la portion des intérêts associée à une période précise.
L'exemple proposé applique ce calcul à un prêt hypothécaire de 200 000 $ amorti sur 30 ans à un taux annuel de 15 %, avec des paiements mensuels. Le programme calcule la part des intérêts correspondant à une période déterminée et affiche le résultat obtenu. Cette approche permet d'intégrer dans une application en langage C des fonctionnalités habituellement réservées aux tableurs financiers. Elle constitue également un excellent exemple d'utilisation des fonctions mathématiques avancées, notamment les logarithmes et les exponentielles, dans le cadre de calculs financiers professionnels. Grâce à ce type de fonction, il devient possible de construire des simulateurs de prêts, des calculateurs hypothécaires ou des logiciels de gestion financière capables de fournir des analyses détaillées sur le coût réel du financement et l'évolution d'un emprunt au fil du temps.
A l'aide du code source C suivant, vous trouverez la réponse que vous souhaitez :
- #include <stdio.h>
- #include <math.h>
-
- double FVal(double Rate,double Nper,double Pmt,double PV,double PType) {
- double F=exp(Nper*log(1.0+Rate));
- if(fabs(Rate)<1E-6) return -Pmt*Nper*(1.0+(Nper-1.0)*Rate/2.0)*(1.0+Rate*PType)-PV*F;
- else return Pmt*(1.0-F)*(1.0/Rate+PType)-PV*F;
- }
-
- double Paymt(double Rate,double Nper,double PV,double FV,double PType) {
- double F=exp(Nper*log(1.0+Rate));
- return (FV+PV*F)*Rate/((1.0+Rate*PType)*(1.0-F));
- }
-
- double IPAYMT(double Rate,double Per,double NPer,double PV,double FV,double PType) {
- return Rate*FVal(Rate,Per-PType-1.0,Paymt(Rate,NPer,PV,FV,PType),PV,PType);
- }
-
- void main() {
- printf("Prêt hypothécaire de 30 ans à 15% de 200 000$:");
- printf("%.2f \n",IPAYMT(0.15/12.0,2.0*12.0,30.0*12.0,200000.0,2.0,0.0));
- }
on obtiendra le résultat suivant :
Prêt hypothécaire de 30 ans à 15% de 200 000$:-2490.45$