X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=octave_packages%2Ffinancial-0.4.0%2Ffv.m;fp=octave_packages%2Ffinancial-0.4.0%2Ffv.m;h=1ce5ce62dd1d3bacccaf68189a6d4b169d8ec92d;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/financial-0.4.0/fv.m b/octave_packages/financial-0.4.0/fv.m new file mode 100644 index 0000000..1ce5ce6 --- /dev/null +++ b/octave_packages/financial-0.4.0/fv.m @@ -0,0 +1,74 @@ +## Copyright (C) 1995-1998, 2000, 2002, 2005-2007 Kurt Hornik +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 3 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, see . + +## -*- texinfo -*- +## @deftypefn {Function File} {} fv (@var{r}, @var{n}, @var{p}, @var{l}, @var{method}) +## Return the future value at the end of period @var{n} of an investment +## which consists of @var{n} payments of @var{p} in each period, +## assuming an interest rate @var{r}. +## +## The optional argument @var{l} may be used to specify an +## additional lump-sum payment. +## +## The optional argument @var{method} may be used to specify whether the +## payments are made at the end (@code{"e"}, default) or at the +## beginning (@code{"b"}) of each period. +## +## Note that the rate @var{r} is specified as a fraction (i.e., 0.05, +## not 5 percent). +## @end deftypefn + +function v = fv (r, n, p, l, m) + + if (nargin < 3 || nargin > 5) + print_usage (); + endif + + if (! (isscalar (r) && r > -1)) + error ("fv: r must be a scalar > -1"); + elseif (! (isscalar (n) && n > 0)) + error ("fv: n must be a positive scalar"); + elseif (! isscalar (p)) + error ("fv: p must be a scalar"); + endif + + if (r != 0) + v = p * ((1 + r)^n - 1) / r; + else + v = p * n; + endif + + if (nargin > 3) + if (nargin == 5) + if (! ischar (m)) + error ("fv: `method' must be a string"); + endif + elseif ischar (l) + m = l; + l = 0; + else + m = "e"; + endif + if strcmp (m, "b") + v = v * (1 + r); + endif + if isscalar (l) + v = v + fvl (r, n, l); + else + error ("fv: l must be a scalar"); + endif + endif + +endfunction