From: <tr...@us...> - 2009-06-26 19:24:13
|
Revision: 5975 http://octave.svn.sourceforge.net/octave/?rev=5975&view=rev Author: treichl Date: 2009-06-26 19:24:05 +0000 (Fri, 26 Jun 2009) Log Message: ----------- Fix problems, BDF="off" is not treated by solvers and fix problem fr warning "warning: implicit conversion from null_matrix to string" in *.cc files Modified Paths: -------------- trunk/octave-forge/main/odepkg/DESCRIPTION trunk/octave-forge/main/odepkg/inst/ode23.m trunk/octave-forge/main/odepkg/inst/ode23d.m trunk/octave-forge/main/odepkg/inst/ode45.m trunk/octave-forge/main/odepkg/inst/ode45d.m trunk/octave-forge/main/odepkg/inst/ode54.m trunk/octave-forge/main/odepkg/inst/ode54d.m trunk/octave-forge/main/odepkg/inst/ode78.m trunk/octave-forge/main/odepkg/inst/ode78d.m trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m trunk/octave-forge/main/odepkg/inst/odeset.m trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc Modified: trunk/octave-forge/main/odepkg/DESCRIPTION =================================================================== --- trunk/octave-forge/main/odepkg/DESCRIPTION 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/DESCRIPTION 2009-06-26 19:24:05 UTC (rev 5975) @@ -1,6 +1,6 @@ Name: OdePkg -Version: 0.6.7 -Date: 2009-03-21 +Version: 0.6.8 +Date: 2009-06-26 Author: Thomas Treichl Maintainer: Thomas Treichl Title: OdePkg. Modified: trunk/octave-forge/main/odepkg/inst/ode23.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode23.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode23.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -712,11 +712,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode23 (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode23 (@fpol, [0 2], [2 0], vopt); +%! assert ([vt(end), vy(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidArgument'); Modified: trunk/octave-forge/main/odepkg/inst/ode23d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode23d.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode23d.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -703,11 +703,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode23d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [5, fref], 1e-1); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode23d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); +%! assert ([vt(end), vy(end,:)], [5, fref], 0.5); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); Modified: trunk/octave-forge/main/odepkg/inst/ode45.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode45.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode45.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -716,11 +716,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode45 (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode45 (@fpol, [0 2], [2 0], vopt); +%! assert ([vt(end), vy(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidArgument'); Modified: trunk/octave-forge/main/odepkg/inst/ode45d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode45d.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode45d.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -707,11 +707,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode45d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [5, fref], 0.5); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode45d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); +%! assert ([vt(end), vy(end,:)], [5, fref], 0.5); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); Modified: trunk/octave-forge/main/odepkg/inst/ode54.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode54.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode54.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -718,11 +718,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode54 (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode54 (@fpol, [0 2], [2 0], vopt); +%! assert ([vt(end), vy(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidArgument'); Modified: trunk/octave-forge/main/odepkg/inst/ode54d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode54d.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode54d.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -708,11 +708,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode54d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [5, fref], 1e-1); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode54d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); +%! assert ([vt(end), vy(end,:)], [5, fref], 0.5); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); Modified: trunk/octave-forge/main/odepkg/inst/ode78.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode78.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode78.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -738,11 +738,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode78 (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode78 (@fpol, [0 2], [2 0], vopt); +%! assert ([vt(end), vy(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidArgument'); Modified: trunk/octave-forge/main/odepkg/inst/ode78d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode78d.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/ode78d.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -728,11 +728,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode78d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [5, fref], 0.2); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! [vt, vy] = ode78d (@fexp, [0 5], [1; 0], 1, [1; 0], vopt); +%! assert ([vt(end), vy(end,:)], [5, fref], 0.5); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); Modified: trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -275,8 +275,9 @@ end case 'BDF' - if (strcmp (vret.(vfld{vcntarg}), 'on') || ... - strcmp (vret.(vfld{vcntarg}), 'off')) + if (isempty (vret.(vfld{vcntarg})) || ... + (strcmp (vret.(vfld{vcntarg}), 'on') || ... + strcmp (vret.(vfld{vcntarg}), 'off'))) else error ('OdePkg:InvalidParameter', ... 'Unknown parameter name "%s" or no valid parameter value', ... @@ -385,8 +386,8 @@ %!test A = odeset ('MaxOrder', []); %!test A = odeset ('BDF', 'on'); %!test A = odeset ('BDF', 'off'); +%!test A = odeset ('BDF', []); %!error A = odeset ('BDF', [1, 2; 3, 4]); -%!error A = odeset ('BDF', []); %!demo %! # Return the checked OdePkg options structure that is created by Modified: trunk/octave-forge/main/odepkg/inst/odeset.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odeset.m 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/inst/odeset.m 2009-06-26 19:24:05 UTC (rev 5975) @@ -63,7 +63,7 @@ 'MassSingular', 'maybe', ... 'InitialSlope', [], ... 'MaxOrder', [], ... - 'BDF', 'off'); + 'BDF', []); %# Check number and types of all input arguments if (nargin == 0 && nargout == 1) Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -369,9 +369,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -445,9 +446,10 @@ // The option MStateDependence will be ignored by this solver. We // can't handle Mass-matrix options with IDE problems octave_value vmst = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (!vmst.is_empty () && (vmst.string_value ().compare ("weak") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vmst.is_empty ()) + if (vmst.string_value ().compare ("weak") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MvPattern will be ignored by this solver. We // can't handle Mass-matrix options with IDE problems @@ -459,9 +461,10 @@ // The option MvPattern will be ignored by this solver. We // can't handle Mass-matrix options with IDE problems octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -486,11 +489,11 @@ // The option BDF will be ignored because this is a BDF solver octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value () != "on") { - vbdf = "on"; - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" set \"off\", new value \"on\" is used"); - } + if (!vbdf.is_empty ()) + if (vbdf.string_value () != "on") { + vbdf = "on"; warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" set \"off\", new value \"on\" is used"); + } /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -398,9 +398,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -482,9 +483,10 @@ // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option vmebdfdaemassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (vmebdfdaemassstate.string_value ().compare ("weak") != 0) // 'weak' is default - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vmebdfdaemassstate.is_empty ()) + if (vmebdfdaemassstate.string_value ().compare ("weak") != 0) // 'weak' is default + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option @@ -496,9 +498,10 @@ // The option MassSingular will be ignored by this solver, the // core Fortran solver doesn't support this option octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -525,11 +528,11 @@ // The option BDF will be ignored because this is a BDF solver octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value () != "on") { - vbdf = "on"; - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" set \"off\", new value \"on\" is used"); - } + if (vbdf.is_string ()) + if (vbdf.string_value () != "on") { + vbdf = "on"; warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" set \"off\", new value \"on\" is used"); + } /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the @@ -927,11 +930,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = odebda (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# BDF option set "off" +%! vopt = odeset ('BDF', 'off'); +%! vsol = odebda (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); */ Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -490,9 +490,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -570,9 +571,10 @@ // The option MStateDependence will be ignored by this solver. We // can't handle Mass-matrix options with IDE problems octave_value vmst = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (!vmst.is_empty () && (vmst.string_value ().compare ("weak") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vmst.is_empty ()) + if (vmst.string_value ().compare ("weak") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MvPattern will be ignored by this solver. We // can't handle Mass-matrix options with IDE problems @@ -584,9 +586,10 @@ // The option MvPattern will be ignored by this solver. We // can't handle Mass-matrix options with IDE problems octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -613,11 +616,11 @@ // The option BDF will be ignored because this is a BDF solver octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value () != "on") { - vbdf = "on"; - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" set \"off\", new value \"on\" is used"); - } + if (vbdf.is_string ()) + if (vbdf.string_value () != "on") { + vbdf = "on"; warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" set \"off\", new value \"on\" is used"); + } /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the @@ -1022,7 +1025,7 @@ %! vsol = odebdi (@fpol, [0, 2], [2; 0], [0; -2], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %!test %# BDF option -%! vopt = odeset ('BDF', 'on'); +%! vopt = odeset ('BDF', 'off'); %! vsol = odebdi (@fpol, [0, 2], [2; 0], [0; -2], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %! Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -406,9 +406,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -481,9 +482,10 @@ // The option Vectorized will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vradauvectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt); - if (vradauvectorize.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"Vectorized\" will be ignored by this solver"); + if (!vradauvectorize.is_empty ()) + if (vradauvectorize.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"Vectorized\" will be ignored by this solver"); // Implementation of the option 'Mass' has been finished, these // options can be set by the user to another value than default @@ -499,9 +501,10 @@ // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option vradaumassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (vradaumassstate.string_value ().compare ("weak") != 0) // 'weak' is default - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vradaumassstate.is_empty ()) + if (vradaumassstate.string_value ().compare ("weak") != 0) // 'weak' is default + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option @@ -513,9 +516,10 @@ // The option MassSingular will be ignored by this solver, the // core Fortran solver doesn't support this option octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -534,9 +538,10 @@ // The option BDF will be ignored by this solver, the core Fortran // solver doesn't support this option octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" will be ignored by this solver"); + if (!vbdf.is_empty ()) + if (vbdf.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" will be ignored by this solver"); /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the @@ -834,11 +839,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode2r (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! vsol = ode2r (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); */ Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -406,9 +406,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -481,9 +482,10 @@ // The option Vectorized will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vradau5vectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt); - if (vradau5vectorize.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"Vectorized\" will be ignored by this solver"); + if (!vradau5vectorize.is_empty ()) + if (vradau5vectorize.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"Vectorized\" will be ignored by this solver"); // Implementation of the option 'Mass' has been finished, these // options can be set by the user to another value than default @@ -499,9 +501,10 @@ // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option vradau5massstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (vradau5massstate.string_value ().compare ("weak") != 0) // 'weak' is default - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vradau5massstate.is_empty ()) + if (vradau5massstate.string_value ().compare ("weak") != 0) // 'weak' is default + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option @@ -513,9 +516,10 @@ // The option MassSingular will be ignored by this solver, the // core Fortran solver doesn't support this option octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -534,9 +538,10 @@ // The option BDF will be ignored by this solver, the core Fortran // solver doesn't support this option octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" will be ignored by this solver"); + if (!vbdf.is_empty ()) + if (vbdf.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" will be ignored by this solver"); /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the @@ -628,6 +633,7 @@ // Get the stats information as an Octave_map if the option 'Stats' // has been set with odeset + // "nsteps", "nfailed", "nfevals", "npds", "ndecomps", "nlinsols" octave_value_list vstatinput; vstatinput(0) = IWORK[16]; vstatinput(1) = IWORK[17]; @@ -834,11 +840,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = ode5r (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! vsol = ode5r (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); */ Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -620,9 +620,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -695,9 +696,10 @@ // The option Vectorized will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vrodasvectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt); - if (vrodasvectorize.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"Vectorized\" will be ignored by this solver"); + if (!vrodasvectorize.is_empty ()) + if (vrodasvectorize.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"Vectorized\" will be ignored by this solver"); // Implementation of the option 'Mass' has been finished, these // options can be set by the user to another value than default @@ -713,9 +715,10 @@ // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option vrodasmassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (vrodasmassstate.string_value ().compare ("weak") != 0) // 'weak' is default - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vrodasmassstate.is_empty ()) + if (vrodasmassstate.string_value ().compare ("weak") != 0) // 'weak' is default + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option @@ -727,9 +730,10 @@ // The option MassSingular will be ignored by this solver, the // core Fortran solver doesn't support this option octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -748,9 +752,10 @@ // The option BDF will be ignored by this solver, the core Fortran // solver doesn't support this option octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" will be ignored by this solver"); + if (!vbdf.is_empty ()) + if (vbdf.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" will be ignored by this solver"); /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the @@ -1047,11 +1052,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = oders (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! vsol = oders (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); */ Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc 2009-06-24 21:22:38 UTC (rev 5974) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc 2009-06-26 19:24:05 UTC (rev 5975) @@ -414,9 +414,10 @@ // The option NormControl will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt); - if (!vnorm.is_empty () && (vnorm.string_value ().compare ("off") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"NormControl\" will be ignored by this solver"); + if (!vnorm.is_empty ()) + if (vnorm.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"NormControl\" will be ignored by this solver"); // The option NonNegative will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -489,9 +490,10 @@ // The option Vectorized will be ignored by this solver, the core // Fortran solver doesn't support this option octave_value vseulexvectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt); - if (vseulexvectorize.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"Vectorized\" will be ignored by this solver"); + if (!vseulexvectorize.is_empty ()) + if (vseulexvectorize.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"Vectorized\" will be ignored by this solver"); // Implementation of the option 'Mass' has been finished, these // options can be set by the user to another value than default @@ -507,9 +509,10 @@ // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option vseulexmassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt); - if (vseulexmassstate.string_value ().compare ("weak") != 0) // 'weak' is default - warning_with_id ("OdePkg:InvalidOption", - "Option \"MStateDependence\" will be ignored by this solver"); + if (!vseulexmassstate.is_empty ()) + if (vseulexmassstate.string_value ().compare ("weak") != 0) // 'weak' is default + warning_with_id ("OdePkg:InvalidOption", + "Option \"MStateDependence\" will be ignored by this solver"); // The option MStateDependence will be ignored by this solver, the // core Fortran solver doesn't support this option @@ -521,9 +524,10 @@ // The option MassSingular will be ignored by this solver, the // core Fortran solver doesn't support this option octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt); - if (!vmsing.is_empty () && (vmsing.string_value ().compare ("maybe") != 0)) - warning_with_id ("OdePkg:InvalidOption", - "Option \"MassSingular\" will be ignored by this solver"); + if (!vmsing.is_empty ()) + if (vmsing.string_value ().compare ("maybe") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"MassSingular\" will be ignored by this solver"); // The option InitialSlope will be ignored by this solver, the core // Fortran solver doesn't support this option @@ -542,9 +546,10 @@ // The option BDF will be ignored by this solver, the core Fortran // solver doesn't support this option octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt); - if (vbdf.string_value ().compare ("off") != 0) - warning_with_id ("OdePkg:InvalidOption", - "Option \"BDF\" will be ignored by this solver"); + if (!vbdf.is_empty ()) + if (vbdf.string_value ().compare ("off") != 0) + warning_with_id ("OdePkg:InvalidOption", + "Option \"BDF\" will be ignored by this solver"); /* Start MAINPROCESSING, set up all variables that are needed by this * solver and then initialize the solver function and get into the @@ -846,11 +851,14 @@ %! vopt = odeset ('Mass', @fmas, 'MStateDependence', 'strong'); %! vsol = odesx (@fpol, [0 2], [2 0], vopt); %! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Set BDF option to something else than default +%! vopt = odeset ('BDF', 'on'); +%! vsol = odesx (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); %! %! %# test for MvPattern option is missing %! %# test for InitialSlope option is missing %! %# test for MaxOrder option is missing -%! %# test for BDF option is missing %! %! warning ('on', 'OdePkg:InvalidOption'); */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2009-07-08 19:31:08
|
Revision: 5993 http://octave.svn.sourceforge.net/octave/?rev=5993&view=rev Author: treichl Date: 2009-07-08 19:30:15 +0000 (Wed, 08 Jul 2009) Log Message: ----------- Added solver odebwe.m from Sebastian Schoeps and made some other minor modifications for that. Modified Paths: -------------- trunk/octave-forge/main/odepkg/DESCRIPTION trunk/octave-forge/main/odepkg/doc/mfunref.texi trunk/octave-forge/main/odepkg/inst/odepkg.m Added Paths: ----------- trunk/octave-forge/main/odepkg/inst/odebwe.m Modified: trunk/octave-forge/main/odepkg/DESCRIPTION =================================================================== --- trunk/octave-forge/main/odepkg/DESCRIPTION 2009-07-08 15:26:38 UTC (rev 5992) +++ trunk/octave-forge/main/odepkg/DESCRIPTION 2009-07-08 19:30:15 UTC (rev 5993) @@ -1,12 +1,12 @@ Name: OdePkg -Version: 0.6.8 -Date: 2009-06-26 +Version: 0.6.9 +Date: 2009-07-08 Author: Thomas Treichl Maintainer: Thomas Treichl Title: OdePkg. Description: A package for solving ordinary differential equations and more. Categories: Differential Equations -Depends: octave (>= 3.0.0) +Depends: octave (>= 3.2.0) Autoload: yes License: GPL version 2 or later Url: http://octave.sf.net Modified: trunk/octave-forge/main/odepkg/doc/mfunref.texi =================================================================== --- trunk/octave-forge/main/odepkg/doc/mfunref.texi 2009-07-08 15:26:38 UTC (rev 5992) +++ trunk/octave-forge/main/odepkg/doc/mfunref.texi 2009-07-08 19:30:15 UTC (rev 5993) @@ -186,6 +186,30 @@ @end example @end deftypefn +@deftypefn {Function File} {[@var{}] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) +@deftypefnx {Command} {[@var{sol}] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) +@deftypefnx {Command} {[@var{t}, @var{y}, [@var{xe}, @var{ye}, @var{ie}]] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) + +This function file can be used to solve a set of stiff ordinary differential equations (stiff ODEs) or stiff differential algebraic equations (stiff DAEs) with the Backward Euler method. + +If this function is called with no return argument then plot the solution over time in a figure window while solving the set of ODEs that are defined in a function and specified by the function handle @var{@@fun}. The second input argument @var{slot} is a double vector that defines the time slot, @var{init} is a double vector that defines the initial values of the states, @var{opt} can optionally be a structure array that keeps the options created with the command @command{odeset} and @var{par1}, @var{par2}, @dots{} can optionally be other input arguments of any type that have to be passed to the function defined by @var{@@fun}. + +If this function is called with one return argument then return the solution @var{sol} of type structure array after solving the set of ODEs. The solution @var{sol} has the fields @var{x} of type double column vector for the steps chosen by the solver, @var{y} of type double column vector for the solutions at each time step of @var{x}, @var{solver} of type string for the solver name and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector that keep the informations of the event function if an event function handle is set in the option argument @var{opt}. + +If this function is called with more than one return argument then return the time stamps @var{t}, the solution values @var{y} and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector. + +For example, solve an anonymous implementation of the Van der Pol equation + +@example +fvdb = @@(vt,vy) [vy(2); (1 - vy(1)^2) * vy(2) - vy(1)]; +vjac = @@(vt,vy) [0, 1; -1 - 2 * vy(1) * vy(2), 1 - vy(1)^2]; +vopt = odeset ("RelTol", 1e-3, "AbsTol", 1e-3, \ + "NormControl", "on", "OutputFcn", @@odeplot, \ + "Jacobian",vjac); +odebwe (fvdb, [0 20], [2 0], vopt); +@end example +@end deftypefn + @deftypefn {Function File} {[@var{}] =} odeexamples (@var{}) Open the differential equations examples menu and allow the user to select a submenu of ODE, DAE, IDE or DDE examples. @end deftypefn Added: trunk/octave-forge/main/odepkg/inst/odebwe.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odebwe.m (rev 0) +++ trunk/octave-forge/main/odepkg/inst/odebwe.m 2009-07-08 19:30:15 UTC (rev 5993) @@ -0,0 +1,801 @@ +%# Copyright (C) 2009, Sebastian Sch\xF6ps <schoeps AT math DOT uni-wuppertal DOT de> +%# 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{}] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) +%# @deftypefnx {Command} {[@var{sol}] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) +%# @deftypefnx {Command} {[@var{t}, @var{y}, [@var{xe}, @var{ye}, @var{ie}]] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) +%# +%# This function file can be used to solve a set of stiff ordinary differential equations (stiff ODEs) or stiff differential algebraic equations (stiff DAEs) with the Backward Euler method. +%# +%# If this function is called with no return argument then plot the solution over time in a figure window while solving the set of ODEs that are defined in a function and specified by the function handle @var{@@fun}. The second input argument @var{slot} is a double vector that defines the time slot, @var{init} is a double vector that defines the initial values of the states, @var{opt} can optionally be a structure array that keeps the options created with the command @command{odeset} and @var{par1}, @var{par2}, @dots{} can optionally be other input arguments of any type that have to be passed to the function defined by @var{@@fun}. +%# +%# If this function is called with one return argument then return the solution @var{sol} of type structure array after solving the set of ODEs. The solution @var{sol} has the fields @var{x} of type double column vector for the steps chosen by the solver, @var{y} of type double column vector for the solutions at each time step of @var{x}, @var{solver} of type string for the solver name and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector that keep the informations of the event function if an event function handle is set in the option argument @var{opt}. +%# +%# If this function is called with more than one return argument then return the time stamps @var{t}, the solution values @var{y} and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector. +%# +%# For example, solve an anonymous implementation of the Van der Pol equation +%# +%# @example +%# fvdb = @@(vt,vy) [vy(2); (1 - vy(1)^2) * vy(2) - vy(1)]; +%# vjac = @@(vt,vy) [0, 1; -1 - 2 * vy(1) * vy(2), 1 - vy(1)^2]; +%# vopt = odeset ("RelTol", 1e-3, "AbsTol", 1e-3, \ +%# "NormControl", "on", "OutputFcn", @@odeplot, \ +%# "Jacobian",vjac); +%# odebwe (fvdb, [0 20], [2 0], vopt); +%# @end example +%# @end deftypefn +%# +%# @seealso{odepkg} + +function [varargout] = odebwe (vfun, vslot, vinit, varargin) + + if (nargin == 0) %# Check number and types of all input arguments + help ('odebwe'); + error ('OdePkg:InvalidArgument', ... + 'Number of input arguments must be greater than zero'); + + elseif (nargin < 3) + print_usage; + + elseif ~(isa (vfun, 'function_handle') || isa (vfun, 'inline')) + error ('OdePkg:InvalidArgument', ... + 'First input argument must be a valid function handle'); + + elseif (~isvector (vslot) || length (vslot) < 2) + error ('OdePkg:InvalidArgument', ... + 'Second input argument must be a valid vector'); + + elseif (~isvector (vinit) || ~isnumeric (vinit)) + error ('OdePkg:InvalidArgument', ... + 'Third input argument must be a valid numerical value'); + + elseif (nargin >= 4) + + if (~isstruct (varargin{1})) + %# varargin{1:len} are parameters for vfun + vodeoptions = odeset; + vfunarguments = varargin; + + elseif (length (varargin) > 1) + %# varargin{1} is an OdePkg options structure vopt + vodeoptions = odepkg_structure_check (varargin{1}, 'odebwe'); + vfunarguments = {varargin{2:length(varargin)}}; + + else %# if (isstruct (varargin{1})) + vodeoptions = odepkg_structure_check (varargin{1}, 'odebwe'); + vfunarguments = {}; + + end + + else %# if (nargin == 3) + vodeoptions = odeset; + vfunarguments = {}; + end + + %# Start preprocessing, have a look which options are set in + %# vodeoptions, check if an invalid or unused option is set + vslot = vslot(:).'; %# Create a row vector + vinit = vinit(:).'; %# Create a row vector + if (length (vslot) > 2) %# Step size checking + vstepsizefixed = true; + else + vstepsizefixed = false; + end + + %# The adaptive method require a second estimate for + %# the comparsion, while the fixed step size algorithm + %# needs only one + if ~vstepsizefixed + vestimators = 2; + else + vestimators = 1; + end + + %# Get the default options that can be set with 'odeset' temporarily + vodetemp = odeset; + + %# Implementation of the option RelTol has been finished. This option + %# can be set by the user to another value than default value. + if (isempty (vodeoptions.RelTol) && ~vstepsizefixed) + vodeoptions.RelTol = 1e-6; + warning ('OdePkg:InvalidArgument', ... + 'Option "RelTol" not set, new value %f is used', vodeoptions.RelTol); + elseif (~isempty (vodeoptions.RelTol) && vstepsizefixed) + warning ('OdePkg:InvalidArgument', ... + 'Option "RelTol" will be ignored if fixed time stamps are given'); + end + + %# Implementation of the option AbsTol has been finished. This option + %# can be set by the user to another value than default value. + if (isempty (vodeoptions.AbsTol) && ~vstepsizefixed) + vodeoptions.AbsTol = 1e-6; + warning ('OdePkg:InvalidArgument', ... + 'Option "AbsTol" not set, new value %f is used', vodeoptions.AbsTol); + elseif (~isempty (vodeoptions.AbsTol) && vstepsizefixed) + warning ('OdePkg:InvalidArgument', ... + 'Option "AbsTol" will be ignored if fixed time stamps are given'); + else + vodeoptions.AbsTol = vodeoptions.AbsTol(:); %# Create column vector + end + + %# Implementation of the option NormControl has been finished. This + %# option can be set by the user to another value than default value. + if (strcmp (vodeoptions.NormControl, 'on')) vnormcontrol = true; + else vnormcontrol = false; end + + %# Implementation of the option OutputFcn has been finished. This + %# option can be set by the user to another value than default value. + if (isempty (vodeoptions.OutputFcn) && nargout == 0) + vodeoptions.OutputFcn = @odeplot; + vhaveoutputfunction = true; + elseif (isempty (vodeoptions.OutputFcn)), vhaveoutputfunction = false; + else vhaveoutputfunction = true; + end + + %# Implementation of the option OutputSel has been finished. This + %# option can be set by the user to another value than default value. + if (~isempty (vodeoptions.OutputSel)), vhaveoutputselection = true; + else vhaveoutputselection = false; end + + %# Implementation of the option OutputSave has been finished. This + %# option can be set by the user to another value than default value. + if (isempty (vodeoptions.OutputSave)), vodeoptions.OutputSave = 1; + end + + %# Implementation of the option Stats has been finished. This option + %# can be set by the user to another value than default value. + + %# Implementation of the option InitialStep has been finished. This + %# option can be set by the user to another value than default value. + if (isempty (vodeoptions.InitialStep) && ~vstepsizefixed) + vodeoptions.InitialStep = (vslot(1,2) - vslot(1,1)) / 10; + warning ('OdePkg:InvalidArgument', ... + 'Option "InitialStep" not set, new value %f is used', vodeoptions.InitialStep); + end + + %# Implementation of the option MaxNewtonIterations has been finished. This option + %# can be set by the user to another value than default value. + if isempty (vodeoptions.MaxNewtonIterations) + vodeoptions.MaxNewtonIterations = 10; + warning ('OdePkg:InvalidArgument', ... + 'Option "MaxNewtonIterations" not set, new value %f is used', vodeoptions.MaxNewtonIterations); + end + + %# Implementation of the option NewtonTol has been finished. This option + %# can be set by the user to another value than default value. + if isempty (vodeoptions.NewtonTol) + vodeoptions.NewtonTol = 1e-7; + warning ('OdePkg:InvalidArgument', ... + 'Option "NewtonTol" not set, new value %f is used', vodeoptions.NewtonTol); + end + + %# Implementation of the option MaxStep has been finished. This option + %# can be set by the user to another value than default value. + if (isempty (vodeoptions.MaxStep) && ~vstepsizefixed) + vodeoptions.MaxStep = (vslot(1,2) - vslot(1,1)) / 10; + warning ('OdePkg:InvalidArgument', ... + 'Option "MaxStep" not set, new value %f is used', vodeoptions.MaxStep); + end + + %# Implementation of the option Events has been finished. This option + %# can be set by the user to another value than default value. + if (~isempty (vodeoptions.Events)), vhaveeventfunction = true; + else vhaveeventfunction = false; end + + %# Implementation of the option Jacobian has been finished. This option + %# can be set by the user to another value than default value. + if (~isempty (vodeoptions.Jacobian) && ismatrix (vodeoptions.Jacobian)) + vhavejachandle = false; vjac = vodeoptions.Jacobian; %# constant jac + elseif (isa (vodeoptions.Jacobian, 'function_handle')) + vhavejachandle = true; %# jac defined by a function handle + else %# no Jacobian - we will use numerical differentiation + vhavejachandle = false; + end + + %# Implementation of the option Mass has been finished. This option + %# can be set by the user to another value than default value. + if (~isempty (vodeoptions.Mass) && ismatrix (vodeoptions.Mass)) + vhavemasshandle = false; vmass = vodeoptions.Mass; %# constant mass + elseif (isa (vodeoptions.Mass, 'function_handle')) + vhavemasshandle = true; %# mass defined by a function handle + else %# no mass matrix - creating a diag-matrix of ones for mass + vhavemasshandle = false; vmass = sparse (eye (length (vinit)) ); + end + + %# Implementation of the option MStateDependence has been finished. + %# This option can be set by the user to another value than default + %# value. + if (strcmp (vodeoptions.MStateDependence, 'none')) + vmassdependence = false; + else vmassdependence = true; + end + + %# Other options that are not used by this solver. Print a warning + %# message to tell the user that the option(s) is/are ignored. + if (~isequal (vodeoptions.NonNegative, vodetemp.NonNegative)) + warning ('OdePkg:InvalidArgument', ... + 'Option "NonNegative" will be ignored by this solver'); + end + if (~isequal (vodeoptions.Refine, vodetemp.Refine)) + warning ('OdePkg:InvalidArgument', ... + 'Option "Refine" will be ignored by this solver'); + end + if (~isequal (vodeoptions.JPattern, vodetemp.JPattern)) + warning ('OdePkg:InvalidArgument', ... + 'Option "JPattern" will be ignored by this solver'); + end + if (~isequal (vodeoptions.Vectorized, vodetemp.Vectorized)) + warning ('OdePkg:InvalidArgument', ... + 'Option "Vectorized" will be ignored by this solver'); + end + if (~isequal (vodeoptions.MvPattern, vodetemp.MvPattern)) + warning ('OdePkg:InvalidArgument', ... + 'Option "MvPattern" will be ignored by this solver'); + end + if (~isequal (vodeoptions.MassSingular, vodetemp.MassSingular)) + warning ('OdePkg:InvalidArgument', ... + 'Option "MassSingular" will be ignored by this solver'); + end + if (~isequal (vodeoptions.InitialSlope, vodetemp.InitialSlope)) + warning ('OdePkg:InvalidArgument', ... + 'Option "InitialSlope" will be ignored by this solver'); + end + if (~isequal (vodeoptions.MaxOrder, vodetemp.MaxOrder)) + warning ('OdePkg:InvalidArgument', ... + 'Option "MaxOrder" will be ignored by this solver'); + end + if (~isequal (vodeoptions.BDF, vodetemp.BDF)) + warning ('OdePkg:InvalidArgument', ... + 'Option "BDF" will be ignored by this solver'); + end + + %# Starting the initialisation of the core solver odebwe + vtimestamp = vslot(1,1); %# timestamp = start time + vtimelength = length (vslot); %# length needed if fixed steps + vtimestop = vslot(1,vtimelength); %# stop time = last value + vdirection = sign (vtimestop); %# Flag for direction to solve + + if (~vstepsizefixed) + vstepsize = vodeoptions.InitialStep; + vminstepsize = (vtimestop - vtimestamp) / (1/eps); + else %# If step size is given then use the fixed time steps + vstepsize = vslot(1,2) - vslot(1,1); + vminstepsize = sign (vstepsize) * eps; + end + + vretvaltime = vtimestamp; %# first timestamp output + vretvalresult = vinit; %# first solution output + + %# Initialize the OutputFcn + if (vhaveoutputfunction) + if (vhaveoutputselection) + vretout = vretvalresult(vodeoptions.OutputSel); + else + vretout = vretvalresult; + end + feval (vodeoptions.OutputFcn, vslot.', ... + vretout.', 'init', vfunarguments{:}); + end + + %# Initialize the EventFcn + if (vhaveeventfunction) + odepkg_event_handle (vodeoptions.Events, vtimestamp, ... + vretvalresult.', 'init', vfunarguments{:}); + end + + %# Initialize parameters and counters + vcntloop = 2; vcntcycles = 1; vu = vinit; vcntsave = 2; + vunhandledtermination = true; vpow = 1/2; vnpds = 0; + vcntiter = 0; vcntnewt = 0; vndecomps = 0; vnlinsols = 0; + + %# the following option enables the simplified Newton method + %# which evaluates the Jacobian only once instead of the + %# standard method that updates the Jacobian in each iteration + vsimplified = false; % or true + + %# The solver main loop - stop if the endpoint has been reached + while ((vdirection * (vtimestamp) < vdirection * (vtimestop)) && ... + (vdirection * (vstepsize) >= vdirection * (vminstepsize))) + + %# Hit the endpoint of the time slot exactely + if ((vtimestamp + vstepsize) > vdirection * vtimestop) + vstepsize = vtimestop - vdirection * vtimestamp; + end + + %# Run the time integration for each estimator + %# from vtimestamp -> vtimestamp+vstepsize + for j = 1:vestimators + %# Initial value (result of the previous timestep) + y0 = vu; + %# Initial guess for Newton-Raphson + y(j,:) = vu; + %# We do not use a higher order approximation for the + %# comparsion, but two steps by the Backward Euler + %# method + for i=1:j + % Initialize the time stepping parameters + vthestep = vstepsize/j; + vthetime = vtimestamp + i*vthestep; + vnewtit = 1; + vresnrm = inf(1,vodeoptions.MaxNewtonIterations); + + %# Start the Newton iteration + while (vnewtit<vodeoptions.MaxNewtonIterations) && ... + (vresnrm(vnewtit)>vodeoptions.NewtonTol) + + %# Compute the Jacobian of the non-linear equation, + %# that is the matrix pencil of the mass matrix and + %# the right-hand-side's Jacobian. Perform a (sparse) + %# LU-Decomposition afterwards. + if (vnewtit<=1) | (~vsimplified) + %# Get the mass matrix from the left-hand-side + if (vhavemasshandle) %# Handle only the dynamic mass matrix, + if (vmassdependence) %# constant mass matrices have already + vmass = feval ... %# been set before (if any) + (vodeoptions.Mass, vthetime, y(j,:)', vfunarguments{:}); + else %# if (vmassdependence == false) + vmass = feval ... %# then we only have the time argument + (vodeoptions.Mass, y(j,:)', vfunarguments{:}); + end + end + %# Get the Jacobian of the right-hand-side's function + if (vhavejachandle) %# Handle only the dynamic jacobian + vjac = feval(vodeoptions.Jacobian, vthetime,... + y(j,:)', vfunarguments{:}); + elseif isempty(vodeoptions.Jacobian) %# If no Jacobian is given + vjac = feval(@jacobian, vfun, vthetime,y(j,:)',... + vfunarguments); %# then we differentiate + end + vnpds = vnpds + 1; + vfulljac = vmass/vthestep - vjac; + % use sparse lu decomposition if possible + [L,U,P] = lu(vfulljac); + vndecomps = vndecomps + 1; + end + + %# Compute the residual + vres = vmass/vthestep*(y(j,:)-y0)' - feval(vfun,vthetime,y(j,:)',vfunarguments{:}); + vresnrm(vnewtit+1) = norm(vres,inf); + %# Solve the linear system + y(j,:) = U\(L\(P*(-vres+vfulljac*y(j,:)'))); + vnlinsols = vnlinsols + 1; + %# Prepare next iteration + vnewtit = vnewtit + 1; + end %# while Newton + + %# Leave inner loop if Newton diverged + if vresnrm(vnewtit)>vodeoptions.NewtonTol + break; + end + %# Save intermediate solution as initial value + %# for the next intermediate step + y0 = y(j,:); + %# Count all Newton iterations + vcntnewt = vcntnewt + (vnewtit-1); + end %# for steps + + %# Leave outer loop if Newton diverged + if vresnrm(vnewtit)>vodeoptions.NewtonTol + break; + end + end %# for estimators + + % if all Newton iterations converged + if vresnrm(vnewtit)<vodeoptions.NewtonTol + %# First order approximation using step size h + y1 = y(1,:); + %# If adaptive: first order approximation using step + %# size h/2, if fixed: y1=y2=y3 + y2 = y(vestimators,:); + %# Second order approximation by ("Richardson") + %# extrapolation using h and h/2 + y3 = y2 + (y2-y1); + end + + %# If Newton did not converge, repeat step with reduced + %# step size, otherwise calculate the absolute local + %# truncation error and the acceptable error + if vresnrm(vnewtit)>vodeoptions.NewtonTol + vdelta = 2; vtau = 1; + elseif (~vstepsizefixed) + if (~vnormcontrol) + vdelta = abs (y3 - y1)'; + vtau = max (vodeoptions.RelTol * abs (vu.'), vodeoptions.AbsTol); + else + vdelta = norm ((y3 - y1)', Inf); + vtau = max (vodeoptions.RelTol * max (norm (vu.', Inf), 1.0), ... + vodeoptions.AbsTol); + end + else %# if (vstepsizefixed == true) + vdelta = 1; vtau = 2; + end + + %# If the error is acceptable then update the vretval variables + if (all (vdelta <= vtau)) + vtimestamp = vtimestamp + vstepsize; + vu = y2; % or y3 if we want the extrapolation.... + + %# Save the solution every vodeoptions.OutputSave steps + if (mod (vcntloop-1,vodeoptions.OutputSave) == 0) + vretvaltime(vcntsave,:) = vtimestamp; + vretvalresult(vcntsave,:) = vu; + vcntsave = vcntsave + 1; + end + vcntloop = vcntloop + 1; vcntiter = 0; + + %# Call plot only if a valid result has been found, therefore this + %# code fragment has moved here. Stop integration if plot function + %# returns false + if (vhaveoutputfunction) + if (vhaveoutputselection) + vpltout = vu(vodeoptions.OutputSel); + else + vpltout = vu; + end + vpltret = feval (vodeoptions.OutputFcn, vtimestamp, ... + vpltout.', [], vfunarguments{:}); + if vpltret %# Leave loop + vunhandledtermination = false; break; + end + end + + %# Call event only if a valid result has been found, therefore this + %# code fragment has moved here. Stop integration if veventbreak is + %# true + if (vhaveeventfunction) + vevent = ... + odepkg_event_handle (vodeoptions.Events, vtimestamp, ... + vu(:), [], vfunarguments{:}); + if (~isempty (vevent{1}) && vevent{1} == 1) + vretvaltime(vcntloop-1,:) = vevent{3}(end,:); + vretvalresult(vcntloop-1,:) = vevent{4}(end,:); + vunhandledtermination = false; break; + end + end + end %# If the error is acceptable ... + + %# Update the step size for the next integration step + if (~vstepsizefixed) + %# 20080425, reported by Marco Caliari + %# vdelta cannot be negative (because of the absolute value that + %# has been introduced) but it could be 0, then replace the zeros + %# with the maximum value of vdelta + vdelta(find (vdelta == 0)) = max (vdelta); + %# It could happen that max (vdelta) == 0 (ie. that the original + %# vdelta was 0), in that case we double the previous vstepsize + vdelta(find (vdelta == 0)) = max (vtau) .* (0.4 ^ (1 / vpow)); + + if (vdirection == 1) + vstepsize = min (vodeoptions.MaxStep, ... + min (0.8 * vstepsize * (vtau ./ vdelta) .^ vpow)); + else + vstepsize = max (vodeoptions.MaxStep, ... + max (0.8 * vstepsize * (vtau ./ vdelta) .^ vpow)); + end + + else %# if (vstepsizefixed) + if (vresnrm(vnewtit)>vodeoptions.NewtonTol) + vunhandledtermination = true; + break; + elseif (vcntloop <= vtimelength) + vstepsize = vslot(vcntloop) - vslot(vcntloop-1); + else %# Get out of the main integration loop + break; + end + end + + %# Update counters that count the number of iteration cycles + vcntcycles = vcntcycles + 1; %# Needed for cost statistics + vcntiter = vcntiter + 1; %# Needed to find iteration problems + + %# Stop solving because the last 1000 steps no successful valid + %# value has been found + if (vcntiter >= 5000) + error (['Solving has not been successful. The iterative', ... + ' integration loop exited at time t = %f before endpoint at', ... + ' tend = %f was reached. This happened because the iterative', ... + ' integration loop does not find a valid solution at this time', ... + ' stamp. Try to reduce the value of "InitialStep" and/or', ... + ' "MaxStep" with the command "odeset".\n'], vtimestamp, vtimestop); + end + + end %# The main loop + + %# Check if integration of the ode has been successful + if (vdirection * vtimestamp < vdirection * vtimestop) + if (vunhandledtermination == true) + error ('OdePkg:InvalidArgument', ... + ['Solving has not been successful. The iterative', ... + ' integration loop exited at time t = %f', ... + ' before endpoint at tend = %f was reached. This may', ... + ' happen if the stepsize grows smaller than defined in', ... + ' vminstepsize. Try to reduce the value of "InitialStep" and/or', ... + ' "MaxStep" with the command "odeset".\n'], vtimestamp, vtimestop); + else + warning ('OdePkg:InvalidArgument', ... + ['Solver has been stopped by a call of "break" in', ... + ' the main iteration loop at time t = %f before endpoint at', ... + ' tend = %f was reached. This may happen because the @odeplot', ... + ' function returned "true" or the @event function returned "true".'], ... + vtimestamp, vtimestop); + end + end + + %# Postprocessing, do whatever when terminating integration algorithm + if (vhaveoutputfunction) %# Cleanup plotter + feval (vodeoptions.OutputFcn, vtimestamp, ... + vu.', 'done', vfunarguments{:}); + end + if (vhaveeventfunction) %# Cleanup event function handling + odepkg_event_handle (vodeoptions.Events, vtimestamp, ... + vu.', 'done', vfunarguments{:}); + end + %# Save the last step, if not already saved + if (mod (vcntloop-2,vodeoptions.OutputSave) ~= 0) + vretvaltime(vcntsave,:) = vtimestamp; + vretvalresult(vcntsave,:) = vu; + end + + %# Print additional information if option Stats is set + if (strcmp (vodeoptions.Stats, 'on')) + vhavestats = true; + vnsteps = vcntloop-2; %# vcntloop from 2..end + vnfailed = (vcntcycles-1)-(vcntloop-2)+1; %# vcntcycl from 1..end + vnfevals = vcntnewt; %# number of rhs evaluations + if isempty(vodeoptions.Jacobian) %# additional evaluations due + vnfevals = vnfevals + vcntnewt*(1+length(vinit)); %# to differentiation + end + %# Print cost statistics if no output argument is given + if (nargout == 0) + vmsg = fprintf (1, 'Number of successful steps: %d', vnsteps); + vmsg = fprintf (1, 'Number of failed attempts: %d', vnfailed); + vmsg = fprintf (1, 'Number of function calls: %d', vnfevals); + end + else + vhavestats = false; + end + + if (nargout == 1) %# Sort output variables, depends on nargout + varargout{1}.x = vretvaltime; %# Time stamps are saved in field x + varargout{1}.y = vretvalresult; %# Results are saved in field y + varargout{1}.solver = 'odebwe'; %# Solver name is saved in field solver + if (vhaveeventfunction) + varargout{1}.ie = vevent{2}; %# Index info which event occured + varargout{1}.xe = vevent{3}; %# Time info when an event occured + varargout{1}.ye = vevent{4}; %# Results when an event occured + end + if (vhavestats) + varargout{1}.stats = struct; + varargout{1}.stats.nsteps = vnsteps; + varargout{1}.stats.nfailed = vnfailed; + varargout{1}.stats.nfevals = vnfevals; + varargout{1}.stats.npds = vnpds; + varargout{1}.stats.ndecomps = vndecomps; + varargout{1}.stats.nlinsols = vnlinsols; + end + elseif (nargout == 2) + varargout{1} = vretvaltime; %# Time stamps are first output argument + varargout{2} = vretvalresult; %# Results are second output argument + elseif (nargout == 5) + varargout{1} = vretvaltime; %# Same as (nargout == 2) + varargout{2} = vretvalresult; %# Same as (nargout == 2) + varargout{3} = []; %# LabMat doesn't accept lines like + varargout{4} = []; %# varargout{3} = varargout{4} = []; + varargout{5} = []; + if (vhaveeventfunction) + varargout{3} = vevent{3}; %# Time info when an event occured + varargout{4} = vevent{4}; %# Results when an event occured + varargout{5} = vevent{2}; %# Index info which event occured + end + end +end + +function df = jacobian(vfun,vthetime,vtheinput,vfunarguments); +%# Internal function for the numerical approximation of a jacobian + vlen = length(vtheinput); + vsigma = sqrt(eps); + vfun0 = feval(vfun,vthetime,vtheinput,vfunarguments{:}); + df = zeros(vlen,vlen); + for j = 1:vlen + vbuffer = vtheinput(j); + if (vbuffer==0) + vh = vsigma; + elseif (abs(vbuffer)>1) + vh = vsigma*vbuffer; + else + vh = sign(vbuffer)*vsigma; + end + vtheinput(j) = vbuffer + vh; + df(:,j) = (feval(vfun,vthetime,vtheinput,... + vfunarguments{:}) - vfun0) / vh; + vtheinput(j) = vbuffer; + end +end +%! # We are using the "Van der Pol" implementation for all tests that +%! # are done for this function. We also define a Jacobian, Events, +%! # pseudo-Mass implementation. For further tests we also define a +%! # reference solution (computed at high accuracy) and an OutputFcn +%!function [ydot] = fpol (vt, vy, varargin) %# The Van der Pol +%! ydot = [vy(2); (1 - vy(1)^2) * vy(2) - vy(1)]; +%!function [vjac] = fjac (vt, vy, varargin) %# its Jacobian +%! vjac = [0, 1; -1 - 2 * vy(1) * vy(2), 1 - vy(1)^2]; +%!function [vjac] = fjcc (vt, vy, varargin) %# sparse type +%! vjac = sparse ([0, 1; -1 - 2 * vy(1) * vy(2), 1 - vy(1)^2]); +%!function [vval, vtrm, vdir] = feve (vt, vy, varargin) +%! vval = fpol (vt, vy, varargin); %# We use the derivatives +%! vtrm = zeros (2,1); %# that's why component 2 +%! vdir = ones (2,1); %# seems to not be exact +%!function [vval, vtrm, vdir] = fevn (vt, vy, varargin) +%! vval = fpol (vt, vy, varargin); %# We use the derivatives +%! vtrm = ones (2,1); %# that's why component 2 +%! vdir = ones (2,1); %# seems to not be exact +%!function [vmas] = fmas (vt, vy) +%! vmas = [1, 0; 0, 1]; %# Dummy mass matrix for tests +%!function [vmas] = fmsa (vt, vy) +%! vmas = sparse ([1, 0; 0, 1]); %# A sparse dummy matrix +%!function [vref] = fref () %# The computed reference sol +%! vref = [0.32331666704577, -1.83297456798624]; +%!function [vout] = fout (vt, vy, vflag, varargin) +%! if (regexp (char (vflag), 'init') == 1) +%! if (any (size (vt) ~= [2, 1])) error ('"fout" step "init"'); end +%! elseif (isempty (vflag)) +%! if (any (size (vt) ~= [1, 1])) error ('"fout" step "calc"'); end +%! vout = false; +%! elseif (regexp (char (vflag), 'done') == 1) +%! if (any (size (vt) ~= [1, 1])) error ('"fout" step "done"'); end +%! else error ('"fout" invalid vflag'); +%! end +%! +%! %# Turn off output of warning messages for all tests, turn them on +%! %# again if the last test is called +%!error %# input argument number one +%! warning ('off', 'OdePkg:InvalidArgument'); +%! B = odebwe (1, [0 25], [3 15 1]); +%!error %# input argument number two +%! B = odebwe (@fpol, 1, [3 15 1]); +%!error %# input argument number three +%! B = odebwe (@flor, [0 25], 1); +%!test %# one output argument +%! vsol = odebwe (@fpol, [0 2], [2 0]); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%! assert (isfield (vsol, 'solver')); +%! assert (vsol.solver, 'odebwe'); +%!test %# two output arguments +%! [vt, vy] = odebwe (@fpol, [0 2], [2 0]); +%! assert ([vt(end), vy(end,:)], [2, fref], 1e-3); +%!test %# five output arguments and no Events +%! [vt, vy, vxe, vye, vie] = odebwe (@fpol, [0 2], [2 0]); +%! assert ([vt(end), vy(end,:)], [2, fref], 1e-3); +%! assert ([vie, vxe, vye], []); +%!test %# anonymous function instead of real function +%! fvdb = @(vt,vy) [vy(2); (1 - vy(1)^2) * vy(2) - vy(1)]; +%! vsol = odebwe (fvdb, [0 2], [2 0]); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# extra input arguments passed trhough +%! vsol = odebwe (@fpol, [0 2], [2 0], 12, 13, 'KL'); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# empty OdePkg structure *but* extra input arguments +%! vopt = odeset; +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt, 12, 13, 'KL'); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!error %# strange OdePkg structure +%! vopt = struct ('foo', 1); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%!test %# Solve vdp in fixed step sizes +%! vsol = odebwe (@fpol, [0:0.001:2], [2 0]); +%! assert (vsol.x(:), [0:0.001:2]'); +%! assert (vsol.y(end,:), fref, 1e-2); +%!test %# Solve in backward direction starting at t=0 +%! %# vref = [-1.2054034414, 0.9514292694]; +%! vsol = odebwe (@fpol, [0 -2], [2 0]); +%! %# assert ([vsol.x(end), vsol.y(end,:)], [-2, fref], 1e-3); +%!test %# Solve in backward direction starting at t=2 +%! %# vref = [-1.2154183302, 0.9433018000]; +%! vsol = odebwe (@fpol, [2 -2], [0.3233166627 -1.8329746843]); +%! %# assert ([vsol.x(end), vsol.y(end,:)], [-2, fref], 1e-3); +%!test %# AbsTol option +%! vopt = odeset ('AbsTol', 1e-5); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-2); +%!test %# AbsTol and RelTol option +%! vopt = odeset ('AbsTol', 1e-6, 'RelTol', 1e-6); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-2); +%!test %# RelTol and NormControl option -- higher accuracy +%! vopt = odeset ('RelTol', 1e-6, 'NormControl', 'on'); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%! +%! %# test for NonNegative option is missing +%! %# test for OutputSel and Refine option is missing +%! +%!test %# Details of OutputSave can't be tested +%! vopt = odeset ('OutputSave', 1, 'OutputSel', 1); +%! vsla = odebwe (@fpol, [0 2], [2 0], vopt); +%! vopt = odeset ('OutputSave', 2); +%! vslb = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert (length (vsla.x) > length (vslb.x)) +%!test %# Stats must add further elements in vsol +%! vopt = odeset ('Stats', 'on'); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert (isfield (vsol, 'stats')); +%! assert (isfield (vsol.stats, 'nsteps')); +%!test %# InitialStep option +%! vopt = odeset ('InitialStep', 1e-8); +%! vsol = odebwe (@fpol, [0 0.2], [2 0], vopt); +%! assert ([vsol.x(2)-vsol.x(1)], [1e-8], 1e-9); +%!test %# MaxStep option +%! vopt = odeset ('MaxStep', 1e-2); +%! vsol = odebwe (@fpol, [0 0.2], [2 0], vopt); +%! assert ([vsol.x(5)-vsol.x(4)], [1e-2], 1e-2); +%!test %# Events option add further elements in vsol +%! vopt = odeset ('Events', @feve); +%! vsol = odebwe (@fpol, [0 10], [2 0], vopt); +%! assert (isfield (vsol, 'ie')); +%! assert (vsol.ie, [2; 1; 2; 1]); +%! assert (isfield (vsol, 'xe')); +%! assert (isfield (vsol, 'ye')); +%!test %# Events option, now stop integration +%! vopt = odeset ('Events', @fevn, 'NormControl', 'on'); +%! vsol = odebwe (@fpol, [0 10], [2 0], vopt); +%! assert ([vsol.ie, vsol.xe, vsol.ye], ... +%! [2.0, 2.496110, -0.830550, -2.677589], 1e-3); +%!test %# Events option, five output arguments +%! vopt = odeset ('Events', @fevn, 'NormControl', 'on'); +%! [vt, vy, vxe, vye, vie] = odebwe (@fpol, [0 10], [2 0], vopt); +%! assert ([vie, vxe, vye], ... +%! [2.0, 2.496110, -0.830550, -2.677589], 1e-3); +%!test %# Jacobian option +%! vopt = odeset ('Jacobian', @fjac); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Jacobian option and sparse return value +%! vopt = odeset ('Jacobian', @fjcc); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%! +%! %# test for JPattern option is missing +%! %# test for Vectorized option is missing +%! +%!test %# Mass option as function +%! vopt = odeset ('Mass', @fmas); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Mass option as matrix +%! vopt = odeset ('Mass', eye (2,2)); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Mass option as sparse matrix +%! vopt = odeset ('Mass', sparse (eye (2,2))); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%!test %# Mass option as function and sparse matrix +%! vopt = odeset ('Mass', @fmsa); +%! vsol = odebwe (@fpol, [0 2], [2 0], vopt); +%! assert ([vsol.x(end), vsol.y(end,:)], [2, fref], 1e-3); +%! +%! %# test for MStateDependence option is missing +%! %# test for MvPattern option is missing +%! %# test for InitialSlope option is missing +%! %# test for MaxOrder option is missing +%! %# test for BDF option is missing +%! +%! warning ('on', 'OdePkg:InvalidArgument'); + +%# Local Variables: *** +%# mode: octave *** +%# End: *** Modified: trunk/octave-forge/main/odepkg/inst/odepkg.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg.m 2009-07-08 15:26:38 UTC (rev 5992) +++ trunk/octave-forge/main/odepkg/inst/odepkg.m 2009-07-08 19:30:15 UTC (rev 5993) @@ -84,6 +84,7 @@ vfun = {'odepkg', 'odeget', 'odeset', ... 'ode23', 'ode45', 'ode54', 'ode78', ... 'ode23d', 'ode45d', 'ode54d', 'ode78d', ... + 'odebwe', ... 'odeplot', 'odephas2', 'odephas3', 'odeprint', ... 'odepkg_structure_check', 'odepkg_event_handle', ... 'odepkg_testsuite_calcscd', 'odepkg_testsuite_calcmescd', ... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2012-01-29 12:05:17
|
Revision: 9573 http://octave.svn.sourceforge.net/octave/?rev=9573&view=rev Author: treichl Date: 2012-01-29 12:05:10 +0000 (Sun, 29 Jan 2012) Log Message: ----------- Changed copyright notes. Modified Paths: -------------- trunk/octave-forge/main/odepkg/DESCRIPTION trunk/octave-forge/main/odepkg/doc/odepkg.texi trunk/octave-forge/main/odepkg/inst/bvp4c.m trunk/octave-forge/main/odepkg/inst/ode23.m trunk/octave-forge/main/odepkg/inst/ode23d.m trunk/octave-forge/main/odepkg/inst/ode45.m trunk/octave-forge/main/odepkg/inst/ode45d.m trunk/octave-forge/main/odepkg/inst/ode54.m trunk/octave-forge/main/odepkg/inst/ode54d.m trunk/octave-forge/main/odepkg/inst/ode78.m trunk/octave-forge/main/odepkg/inst/ode78d.m trunk/octave-forge/main/odepkg/inst/odeexamples.m trunk/octave-forge/main/odepkg/inst/odeget.m trunk/octave-forge/main/odepkg/inst/odephas2.m trunk/octave-forge/main/odepkg/inst/odephas3.m trunk/octave-forge/main/odepkg/inst/odepkg.m trunk/octave-forge/main/odepkg/inst/odepkg_event_handle.m trunk/octave-forge/main/odepkg/inst/odepkg_examples_dae.m trunk/octave-forge/main/odepkg/inst/odepkg_examples_dde.m trunk/octave-forge/main/odepkg/inst/odepkg_examples_ide.m trunk/octave-forge/main/odepkg/inst/odepkg_examples_ode.m trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m trunk/octave-forge/main/odepkg/inst/odeplot.m trunk/octave-forge/main/odepkg/inst/odeprint.m trunk/octave-forge/main/odepkg/inst/odeset.m trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.cc trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.h trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc Modified: trunk/octave-forge/main/odepkg/DESCRIPTION =================================================================== --- trunk/octave-forge/main/odepkg/DESCRIPTION 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/DESCRIPTION 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,8 +1,8 @@ Name: OdePkg -Version: 0.8.0 -Date: 2011-06-16 -Author: Thomas Treichl <tho...@gm...> -Maintainer: Thomas Treichl <tho...@gm...> +Version: 0.8.2 +Date: 2012-01-30 +Author: Thomas Treichl <tr...@us...> +Maintainer: Thomas Treichl <tr...@us...> Title: OdePkg Description: A package for solving ordinary differential equations and more. Categories: Differential Equations Modified: trunk/octave-forge/main/odepkg/doc/odepkg.texi =================================================================== --- trunk/octave-forge/main/odepkg/doc/odepkg.texi 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/doc/odepkg.texi 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@c Copyright (c) 2006-2011, Thomas Treichl <tho...@gm...> +@c Copyright (c) 2006-2012, Thomas Treichl <tr...@us...> @c OdePkg - A package for solving ordinary differential equations and more @c For manually generating the documentation use @@ -21,7 +21,7 @@ @author by Thomas Treichl @page @vskip 0pt plus 1filll -Copyright @copyright{} 2006-2011, Thomas Treichl +Copyright @copyright{} 2006-2012, Thomas Treichl Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -43,7 +43,7 @@ @node Top, Beginners Guide, (dir), (dir) @top Copyright -Copyright @copyright{} 2006-2011, Thomas Treichl +Copyright @copyright{} 2006-2012, Thomas Treichl Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice Modified: trunk/octave-forge/main/odepkg/inst/bvp4c.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/bvp4c.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/bvp4c.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -## Copyright (C) 2008 Carlo de Falco +## Copyright (C) 2008-2012 Carlo de Falco ## ## 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 Modified: trunk/octave-forge/main/odepkg/inst/ode23.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode23.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode23.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/ode23d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode23d.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode23d.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/ode45.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode45.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode45.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/ode45d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode45d.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode45d.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/ode54.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode54.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode54.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify @@ -466,7 +466,7 @@ %# Update the step size for the next integration step if (~vstepsizefixed) - %# 20080425, reported by Marco Caliari + %# 2008-20120425, reported by Marco Caliari %# vdelta cannot be negative (because of the absolute value that %# has been introduced) but it could be 0, then replace the zeros %# with the maximum value of vdelta Modified: trunk/octave-forge/main/odepkg/inst/ode54d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode54d.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode54d.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/ode78.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode78.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode78.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/ode78d.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/ode78d.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/ode78d.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odeexamples.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odeexamples.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odeexamples.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odeget.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odeget.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odeget.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odephas2.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odephas2.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odephas2.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odephas3.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odephas3.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odephas3.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_event_handle.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_event_handle.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_event_handle.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_examples_dae.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_examples_dae.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_examples_dae.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_examples_dde.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_examples_dde.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_examples_dde.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_examples_ide.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_examples_ide.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_examples_ide.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_examples_ode.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_examples_ode.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_examples_ode.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2008, Thomas Treichl <tr...@us...> +%# Copyright (C) 2008-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_structure_check.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2007-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odeplot.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odeplot.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odeplot.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odeprint.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odeprint.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odeprint.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/inst/odeset.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odeset.m 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/inst/odeset.m 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,4 +1,4 @@ -%# Copyright (C) 2006-2011, Thomas Treichl <tr...@us...> +%# Copyright (C) 2006-2012, Thomas Treichl <tr...@us...> %# OdePkg - A package for solving ordinary differential equations and more %# %# This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.h =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.h 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_auxiliary_functions.h 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tho...@gm...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_ddaskr.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfdae.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_mebdfi.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_radau5.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_rodas.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc =================================================================== --- trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc 2012-01-29 11:42:54 UTC (rev 9572) +++ trunk/octave-forge/main/odepkg/src/odepkg_octsolver_seulex.cc 2012-01-29 12:05:10 UTC (rev 9573) @@ -1,5 +1,5 @@ /* -Copyright (C) 2007-2009, Thomas Treichl <tho...@gm...> +Copyright (C) 2007-2012, Thomas Treichl <tr...@us...> OdePkg - A package for solving ordinary differential equations and more This program is free software; you can redistribute it and/or modify This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2012-02-08 21:02:58
|
Revision: 9597 http://octave.svn.sourceforge.net/octave/?rev=9597&view=rev Author: treichl Date: 2012-02-08 21:02:51 +0000 (Wed, 08 Feb 2012) Log Message: ----------- Added reference in testsuite files, made update of mfunref.texi and fixed some small bugs ind odepkg.texi. Modified Paths: -------------- trunk/octave-forge/main/odepkg/doc/mfunref.texi trunk/octave-forge/main/odepkg/doc/odepkg.texi trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m Modified: trunk/octave-forge/main/odepkg/doc/mfunref.texi =================================================================== --- trunk/octave-forge/main/odepkg/doc/mfunref.texi 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/doc/mfunref.texi 2012-02-08 21:02:51 UTC (rev 9597) @@ -29,11 +29,22 @@ If this function is called with no return argument then plot the solution over time in a figure window while solving the set of DDEs that are defined in a function and specified by the function handle @var{@@fun}. The second input argument @var{slot} is a double vector that defines the time slot, @var{init} is a double vector that defines the initial values of the states, @var{lags} is a double vector that describes the lags of time, @var{hist} is a double matrix and describes the history of the DDEs, @var{opt} can optionally be a structure array that keeps the options created with the command @command{odeset} and @var{par1}, @var{par2}, @dots{} can optionally be other input arguments of any type that have to be passed to the function defined by @var{@@fun}. +In other words, this function will solve a problem of the form +@example +dy/dt = fun (t, y(t), y(t-lags(1), y(t-lags(2), @dots{}))) +y(slot(1)) = init +y(slot(1)-lags(1)) = hist(1), y(slot(1)-lags(2)) = hist(2), @dots{} +@end example + If this function is called with one return argument then return the solution @var{sol} of type structure array after solving the set of DDEs. The solution @var{sol} has the fields @var{x} of type double column vector for the steps chosen by the solver, @var{y} of type double column vector for the solutions at each time step of @var{x}, @var{solver} of type string for the solver name and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector that keep the informations of the event function if an event function handle is set in the option argument @var{opt}. If this function is called with more than one return argument then return the time stamps @var{t}, the solution values @var{y} and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector. -For example, solve an anonymous implementation of a chaotic behavior +For example: +@itemize @minus +@item +the following code solves an anonymous implementation of a chaotic behavior + @example fcao = @@(vt, vy, vz) [2 * vz / (1 + vz^9.65) - vy]; @@ -43,6 +54,29 @@ vlag = interp1 (vsol.x, vsol.y, vsol.x - 2); plot (vsol.y, vlag); legend ("fcao (t,y,z)"); @end example + +@item +to solve the following problem with two delayed state variables + +@example +d y1(t)/dt = -y1(t) +d y2(t)/dt = -y2(t) + y1(t-5) +d y3(t)/dt = -y3(t) + y2(t-10)*y1(t-10) +@end example + +one might do the following + +@example +function f = fun (t, y, yd) +f(1) = -y(1); %% y1' = -y1(t) +f(2) = -y(2) + yd(1,1); %% y2' = -y2(t) + y1(t-lags(1)) +f(3) = -y(3) + yd(2,2)*yd(1,2); %% y3' = -y3(t) + y2(t-lags(2))*y1(t-lags(2)) +endfunction +T = [0,20] +res = ode23d (@@fun, T, [1;1;1], [5, 10], ones (3,2)); +@end example + +@end itemize @end deftypefn @deftypefn {Function File} {[@var{}] =} ode45 (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) @@ -76,20 +110,54 @@ If this function is called with no return argument then plot the solution over time in a figure window while solving the set of DDEs that are defined in a function and specified by the function handle @var{@@fun}. The second input argument @var{slot} is a double vector that defines the time slot, @var{init} is a double vector that defines the initial values of the states, @var{lags} is a double vector that describes the lags of time, @var{hist} is a double matrix and describes the history of the DDEs, @var{opt} can optionally be a structure array that keeps the options created with the command @command{odeset} and @var{par1}, @var{par2}, @dots{} can optionally be other input arguments of any type that have to be passed to the function defined by @var{@@fun}. +In other words, this function will solve a problem of the form +@example +dy/dt = fun (t, y(t), y(t-lags(1), y(t-lags(2), @dots{}))) +y(slot(1)) = init +y(slot(1)-lags(1)) = hist(1), y(slot(1)-lags(2)) = hist(2), @dots{} +@end example + If this function is called with one return argument then return the solution @var{sol} of type structure array after solving the set of DDEs. The solution @var{sol} has the fields @var{x} of type double column vector for the steps chosen by the solver, @var{y} of type double column vector for the solutions at each time step of @var{x}, @var{solver} of type string for the solver name and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector that keep the informations of the event function if an event function handle is set in the option argument @var{opt}. If this function is called with more than one return argument then return the time stamps @var{t}, the solution values @var{y} and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector. -For example, solve an anonymous implementation of a chaotic behavior +For example: +@itemize @minus +@item +the following code solves an anonymous implementation of a chaotic behavior + @example fcao = @@(vt, vy, vz) [2 * vz / (1 + vz^9.65) - vy]; -vopt = odeset ("NormControl", "on", "RelTol", 1e-4); +vopt = odeset ("NormControl", "on", "RelTol", 1e-3); vsol = ode45d (fcao, [0, 100], 0.5, 2, 0.5, vopt); vlag = interp1 (vsol.x, vsol.y, vsol.x - 2); plot (vsol.y, vlag); legend ("fcao (t,y,z)"); @end example + +@item +to solve the following problem with two delayed state variables + +@example +d y1(t)/dt = -y1(t) +d y2(t)/dt = -y2(t) + y1(t-5) +d y3(t)/dt = -y3(t) + y2(t-10)*y1(t-10) +@end example + +one might do the following + +@example +function f = fun (t, y, yd) +f(1) = -y(1); %% y1' = -y1(t) +f(2) = -y(2) + yd(1,1); %% y2' = -y2(t) + y1(t-lags(1)) +f(3) = -y(3) + yd(2,2)*yd(1,2); %% y3' = -y3(t) + y2(t-lags(2))*y1(t-lags(2)) +endfunction +T = [0,20] +res = ode45d (@@fun, T, [1;1;1], [5, 10], ones (3,2)); +@end example + +@end itemize @end deftypefn @deftypefn {Function File} {[@var{}] =} ode54 (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) @@ -123,11 +191,22 @@ If this function is called with no return argument then plot the solution over time in a figure window while solving the set of DDEs that are defined in a function and specified by the function handle @var{@@fun}. The second input argument @var{slot} is a double vector that defines the time slot, @var{init} is a double vector that defines the initial values of the states, @var{lags} is a double vector that describes the lags of time, @var{hist} is a double matrix and describes the history of the DDEs, @var{opt} can optionally be a structure array that keeps the options created with the command @command{odeset} and @var{par1}, @var{par2}, @dots{} can optionally be other input arguments of any type that have to be passed to the function defined by @var{@@fun}. +In other words, this function will solve a problem of the form +@example +dy/dt = fun (t, y(t), y(t-lags(1), y(t-lags(2), @dots{}))) +y(slot(1)) = init +y(slot(1)-lags(1)) = hist(1), y(slot(1)-lags(2)) = hist(2), @dots{} +@end example + If this function is called with one return argument then return the solution @var{sol} of type structure array after solving the set of DDEs. The solution @var{sol} has the fields @var{x} of type double column vector for the steps chosen by the solver, @var{y} of type double column vector for the solutions at each time step of @var{x}, @var{solver} of type string for the solver name and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector that keep the informations of the event function if an event function handle is set in the option argument @var{opt}. If this function is called with more than one return argument then return the time stamps @var{t}, the solution values @var{y} and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector. -For example, solve an anonymous implementation of a chaotic behavior +For example: +@itemize @minus +@item +the following code solves an anonymous implementation of a chaotic behavior + @example fcao = @@(vt, vy, vz) [2 * vz / (1 + vz^9.65) - vy]; @@ -137,6 +216,29 @@ vlag = interp1 (vsol.x, vsol.y, vsol.x - 2); plot (vsol.y, vlag); legend ("fcao (t,y,z)"); @end example + +@item +to solve the following problem with two delayed state variables + +@example +d y1(t)/dt = -y1(t) +d y2(t)/dt = -y2(t) + y1(t-5) +d y3(t)/dt = -y3(t) + y2(t-10)*y1(t-10) +@end example + +one might do the following + +@example +function f = fun (t, y, yd) +f(1) = -y(1); %% y1' = -y1(t) +f(2) = -y(2) + yd(1,1); %% y2' = -y2(t) + y1(t-lags(1)) +f(3) = -y(3) + yd(2,2)*yd(1,2); %% y3' = -y3(t) + y2(t-lags(2))*y1(t-lags(2)) +endfunction +T = [0,20] +res = ode54d (@@fun, T, [1;1;1], [5, 10], ones (3,2)); +@end example + +@end itemize @end deftypefn @deftypefn {Function File} {[@var{}] =} ode78 (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) @@ -170,11 +272,22 @@ If this function is called with no return argument then plot the solution over time in a figure window while solving the set of DDEs that are defined in a function and specified by the function handle @var{@@fun}. The second input argument @var{slot} is a double vector that defines the time slot, @var{init} is a double vector that defines the initial values of the states, @var{lags} is a double vector that describes the lags of time, @var{hist} is a double matrix and describes the history of the DDEs, @var{opt} can optionally be a structure array that keeps the options created with the command @command{odeset} and @var{par1}, @var{par2}, @dots{} can optionally be other input arguments of any type that have to be passed to the function defined by @var{@@fun}. +In other words, this function will solve a problem of the form +@example +dy/dt = fun (t, y(t), y(t-lags(1), y(t-lags(2), @dots{}))) +y(slot(1)) = init +y(slot(1)-lags(1)) = hist(1), y(slot(1)-lags(2)) = hist(2), @dots{} +@end example + If this function is called with one return argument then return the solution @var{sol} of type structure array after solving the set of DDEs. The solution @var{sol} has the fields @var{x} of type double column vector for the steps chosen by the solver, @var{y} of type double column vector for the solutions at each time step of @var{x}, @var{solver} of type string for the solver name and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector that keep the informations of the event function if an event function handle is set in the option argument @var{opt}. If this function is called with more than one return argument then return the time stamps @var{t}, the solution values @var{y} and optionally the extended time stamp information @var{xe}, the extended solution information @var{ye} and the extended index information @var{ie} all of type double column vector. -For example, solve an anonymous implementation of a chaotic behavior +For example: +@itemize @minus +@item +the following code solves an anonymous implementation of a chaotic behavior + @example fcao = @@(vt, vy, vz) [2 * vz / (1 + vz^9.65) - vy]; @@ -184,6 +297,29 @@ vlag = interp1 (vsol.x, vsol.y, vsol.x - 2); plot (vsol.y, vlag); legend ("fcao (t,y,z)"); @end example + +@item +to solve the following problem with two delayed state variables + +@example +d y1(t)/dt = -y1(t) +d y2(t)/dt = -y2(t) + y1(t-5) +d y3(t)/dt = -y3(t) + y2(t-10)*y1(t-10) +@end example + +one might do the following + +@example +function f = fun (t, y, yd) +f(1) = -y(1); %% y1' = -y1(t) +f(2) = -y(2) + yd(1,1); %% y2' = -y2(t) + y1(t-lags(1)) +f(3) = -y(3) + yd(2,2)*yd(1,2); %% y3' = -y3(t) + y2(t-lags(2))*y1(t-lags(2)) +endfunction +T = [0,20] +res = ode78d (@@fun, T, [1;1;1], [5, 10], ones (3,2)); +@end example + +@end itemize @end deftypefn @deftypefn {Function File} {[@var{}] =} odebwe (@var{@@fun}, @var{slot}, @var{init}, [@var{opt}], [@var{par1}, @var{par2}, @dots{}]) @@ -340,6 +476,8 @@ @example demo odepkg_testsuite_calcmescd @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{scd}] =} odepkg_testsuite_calcscd (@var{solution}, @var{reference}, @var{abstol}, @var{reltol}) @@ -350,6 +488,8 @@ @example demo odepkg_testsuite_calcscd @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_chemakzo (@var{@@solver}, @var{reltol}) @@ -360,6 +500,8 @@ @example demo odepkg_testsuite_chemakzo @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_hires (@var{@@solver}, @var{reltol}) @@ -370,6 +512,8 @@ @example demo odepkg_testsuite_hires @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_implakzo (@var{@@solver}, @var{reltol}) @@ -380,6 +524,8 @@ @example demo odepkg_testsuite_implakzo @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_implrober (@var{@@solver}, @var{reltol}) @@ -390,6 +536,8 @@ @example demo odepkg_testsuite_implrober @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_oregonator (@var{@@solver}, @var{reltol}) @@ -400,6 +548,8 @@ @example demo odepkg_testsuite_oregonator @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_pollution (@var{@@solver}, @var{reltol}) @@ -410,6 +560,8 @@ @example demo odepkg_testsuite_pollution @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_robertson (@var{@@solver}, @var{reltol}) @@ -420,6 +572,8 @@ @example demo odepkg_testsuite_robertson @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{solution}] =} odepkg_testsuite_transistor (@var{@@solver}, @var{reltol}) @@ -430,6 +584,8 @@ @example demo odepkg_testsuite_transistor @end example + +This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. @end deftypefn @deftypefn {Function File} {[@var{ret}] =} odeplot (@var{t}, @var{y}, @var{flag}) Modified: trunk/octave-forge/main/odepkg/doc/odepkg.texi =================================================================== --- trunk/octave-forge/main/odepkg/doc/odepkg.texi 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/doc/odepkg.texi 2012-02-08 21:02:51 UTC (rev 9597) @@ -9,7 +9,7 @@ @setfilename odepkg.info @settitle OdePkg - A package for solving ordinary differential equations and more @afourpaper -@set VERSION 0.8.0 +@set VERSION 0.8.2 @c @afourwide @c %*** End of the HEADER @@ -107,8 +107,10 @@ @tab Added a new solver function @command{odekdi} for the direct method (not the Krylov method) of the @file{daskr.f} solver from the authors Peter N. Brown, Alan C. Hindmarsh, Linda R. Petzold and Clement W. Ulrich that is available under a modified BSD license (without advertising clause). Ongoing work with this manual. @item OdePkg Version 0.5.x @tab Added new solver functions @command{ode23d}, @command{ode45d}, @command{ode54d} and @command{ode78d} for solving non--stiff delay differential equations (non-stiff DDEs). These solvers are based on the Runge--Kutta solvers @command{ode23}..@command{ode78}. Tests and demos have been included for this type of solvers. Added new functions @command{odeexamples}, @command{odepkg_examples_ode}, @command{odepkg_examples_dae}, @command{odepkg_examples_ide} and @command{odepkg_examples_ide}. Ongoing work with this manual. -@item @b{(current)} Version 0.6.x -@tab A lot of compatibility tests. Final release before version 1.0.0. +@item OdePkg Version 0.6.x +@tab A lot of compatibility tests, improvements, bugfixes, etc. +@item @b{(current)} Version 0.8.x +@tab Final releases before version 1.0.0. @item @b{(future)} Version 1.0.0 @tab Completed OdePkg release 1.0.0 with M--solvers and DLD--solvers. @end multitable Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcmescd.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_calcmescd %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_calcscd.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_calcscd %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_chemakzo.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_chemakzo %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_hires.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_hires %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implakzo.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_implakzo %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_implrober.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_implrober %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_impltrans.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_impltrans %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_oregonator.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_oregonator %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_pollution.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_pollution %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_robertson.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_robertson %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} Modified: trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m =================================================================== --- trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m 2012-02-08 08:42:25 UTC (rev 9596) +++ trunk/octave-forge/main/odepkg/inst/odepkg_testsuite_transistor.m 2012-02-08 21:02:51 UTC (rev 9597) @@ -23,9 +23,9 @@ %# @example %# demo odepkg_testsuite_transistor %# @end example -%# @end deftypefn %# %# This function has been ported from the "Test Set for IVP solvers" which is developed by the INdAM Bari unit project group "Codes and Test Problems for Differential Equations", coordinator F. Mazzia. +%# @end deftypefn %# %# @seealso{odepkg} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |