Algorithm-CurveFit

 view release on metacpan or  search on metacpan

Build.PL  view on Meta::CPAN

my $b = Module::Build->new(
    module_name => 'Algorithm::CurveFit',
    dist_author => [
        'Steffen Mueller <smueller@cpan.org>', 'Paul Cochrane <ptc@cpan.org>',
    ],
    license            => 'perl',
    configure_requires => {
        'Module::Build' => 0.42,
    },
    requires => {
        'Data::Dumper'     => '0',
        'Math::Symbolic'   => '0.602',
        'Math::MatrixReal' => '0',
        'perl'             => 5.006,
    },
    recommends => {
        'Test::Pod'           => '1.0',
        'Test::Pod::Coverage' => '1.0',
    },
    build_requires => {
        'Test::More' => 0,

META.json  view on Meta::CPAN

         "requires" : {
            "Module::Build" : "0.42"
         }
      },
      "runtime" : {
         "recommends" : {
            "Test::Pod" : "1.0",
            "Test::Pod::Coverage" : "1.0"
         },
         "requires" : {
            "Data::Dumper" : "0",
            "Math::MatrixReal" : "0",
            "Math::Symbolic" : "0.602",
            "perl" : "5.006"
         }
      }
   },
   "provides" : {
      "Algorithm::CurveFit" : {
         "file" : "lib/Algorithm/CurveFit.pm",
         "version" : "1.06"

META.yml  view on Meta::CPAN

  version: '1.4'
name: Algorithm-CurveFit
provides:
  Algorithm::CurveFit:
    file: lib/Algorithm/CurveFit.pm
    version: '1.06'
recommends:
  Test::Pod: '1.0'
  Test::Pod::Coverage: '1.0'
requires:
  Data::Dumper: '0'
  Math::MatrixReal: '0'
  Math::Symbolic: '0.602'
  perl: '5.006'
resources:
  license: http://dev.perl.org/licenses/
version: '1.06'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

Makefile.PL  view on Meta::CPAN

# Note: this file was auto-generated by Module::Build::Compat version 0.4234
require 5.006;
use ExtUtils::MakeMaker;
WriteMakefile
(
  'NAME' => 'Algorithm::CurveFit',
  'VERSION_FROM' => 'lib/Algorithm/CurveFit.pm',
  'PREREQ_PM' => {
                   'Data::Dumper' => '0',
                   'Math::MatrixReal' => '0',
                   'Math::Symbolic' => '0.602',
                   'Test::More' => 0
                 },
  'INSTALLDIRS' => 'site',
  'EXE_FILES' => [],
  'PL_FILES' => {}
)
;

README  view on Meta::CPAN


      my $square_residual = Algorithm::CurveFit->curve_fit(
          formula            => $formula, # may be a Math::Symbolic tree instead
          params             => \@parameters,
          variable           => $variable,
          xdata              => \@xdata,
          ydata              => \@ydata,
          maximum_iterations => $max_iter,
      );

      use Data::Dumper;
      print Dumper \@parameters;
      # Prints
      # $VAR1 = [
      #          [
      #            'a',
      #            '0.201366784209602',
      #            '1e-05'
      #          ],
      #          [
      #            'c',

examples/examplefit.pl  view on Meta::CPAN

  
my $square_residual = Algorithm::CurveFit->curve_fit(
    formula            => $formula, # may be a Math::Symbolic tree instead
    params             => \@parameters,
    variable           => $variable,
    xdata              => \@xdata,
    ydata              => \@ydata,
    maximum_iterations => $max_iter,
);
  
use Data::Dumper;
print Dumper \@parameters;
print Dumper $square_residual;

lib/Algorithm/CurveFit.pm  view on Meta::CPAN

    'all' => [ qw( curve_fit ) ]
);

our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

our @EXPORT = qw();

use Carp qw/confess/;
use Math::Symbolic qw/parse_from_string/;
use Math::MatrixReal;
use Data::Dumper;

# machine epsilon
use constant EPS => 2.2e-16;
use constant SQRT_EPS => sqrt(EPS);

sub curve_fit {
    shift @_ if not ref $_[0] and defined $_[0] and $_[0] eq 'Algorithm::CurveFit';

    confess('Uneven number of arguments to Algorithm::CurveFit::curve_fit.')
      if @_ % 2;

lib/Algorithm/CurveFit.pm  view on Meta::CPAN


  my $square_residual = Algorithm::CurveFit->curve_fit(
      formula            => $formula, # may be a Math::Symbolic tree instead
      params             => \@parameters,
      variable           => $variable,
      xdata              => \@xdata,
      ydata              => \@ydata,
      maximum_iterations => $max_iter,
  );

  use Data::Dumper;
  print Dumper \@parameters;
  # Prints
  # $VAR1 = [
  #          [
  #            'a',
  #            '0.201366784209602',
  #            '1e-05'
  #          ],
  #          [
  #            'c',

t/02bad_deriv.t  view on Meta::CPAN


Algorithm::CurveFit->curve_fit(
  formula            => 'sqrt( s*(x-x0)^2 + c) + y0',
  variable           => 'x',
  params             => \@parameters,
  xdata              => \@xdata,
  ydata              => \@ydata,
  maximum_iterations => 20,
);

#use Data::Dumper;
#print Dumper \@parameters;

ok(@parameters == 4);
my @val = (5.15, 0.01, 0.100, 1.045);
my @eps = (1.00, 0.10, 1.000, 0.100);

foreach my $par (0..$#parameters) {
  my $v = $parameters[$par][1];
  ok(defined $v);
  ok($v + $eps[$par] > $val[$par]);



( run in 0.593 second using v1.01-cache-2.11-cpan-a5abf4f5562 )