view main/odepkg/inst/odepkg_testsuite_calcscd.m @ 9386:982dcd268ac4 octave-forge

Somebody crahes odepkg/inst - old files have been checked in. I reverted the files of this directory to my local copy: revision 8337.
author treichl
date Sun, 29 Jan 2012 11:42:54 +0000
parents 55c73f24f0ee
children 31a8ff1c879c
line wrap: on
line source

%# Copyright (C) 2007-2011, Thomas Treichl <treichl@users.sourceforge.net>
%# OdePkg - A package for solving ordinary differential equations and more
%#
%# 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 2 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 <http://www.gnu.org/licenses/>.

%# -*- texinfo -*-
%# @deftypefn {Function File} {[@var{scd}] =} odepkg_testsuite_calcscd (@var{solution}, @var{reference}, @var{abstol}, @var{reltol})
%#
%# If this function is called with four input arguments of type double scalar or column vector then return a normalized value for the minimum number of correct digits @var{scd} that is calculated from the solution at the end of an integration interval @var{solution} and a set of reference values @var{reference}. The input arguments @var{abstol} and @var{reltol} are unused but present because of compatibility to the function @command{odepkg_testsuite_calcmescd}.
%# 
%# Run examples with the command
%# @example
%# demo odepkg_testsuite_calcscd
%# @end example
%# @end deftypefn
%#
%# @seealso{odepkg}

function vscd = odepkg_testsuite_calcscd (vsol, vref, vatol, vrtol)
  vsol = vsol(:); vref = vref(:);
  vrel = (vref - vsol) / vref;
  vscd = -log10 (norm (vrel, inf));

%!demo
%! # Displays the value for the mimum number of correct digits in 
%! # the vector sol = [1, 2, 2.9] compared to the reference vector 
%! # ref = [1, 2, 3].
%!
%! odepkg_testsuite_calcscd ([1, 2, 2.9], [1, 2, 3], NaN, NaN)
%! 
%!demo
%! # Displays the value for the mimum number of correct digits in
%! # the vector sol = [1, 2, 2.9] compared to the reference vector
%! # ref = [1, 2, 3].
%!
%! odepkg_testsuite_calcscd ([1 + 1e10, 2 + 1e10, 3 + 1e10], ...
%!                           [1, 2, 3], NaN, NaN)

%!assert (odepkg_testsuite_calcscd ([1, 2, 3], [1, 2, 3], NaN, NaN), Inf);
%!assert (odepkg_testsuite_calcscd ([1, 2, 3], [1, 2.1, 3], 1, 1), 1.5, 0.2);
%!assert (odepkg_testsuite_calcscd ([1, 2, 3], [1+1e-6, 2, 3], 1, 1), 6.5, 0.2);

%# Local Variables: ***
%# mode: octave ***
%# End: ***