multidimensional
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 11
Common Data Format 3.1
Common Data Format is a self-describing data abstraction for the storage and manipulation of multidimensional data. more>>
Common Data Format is a self-describing data abstraction for the storage and manipulation of multidimensional data in a platform- and discipline-independent fashion.
It consists of a scientific data management package (known as the "CDF Library") that allows programmers and application developers to manage and manipulate scalar, vector, and multi-dimensional data arrays.
Enhancements:
- Adds new sets of APIs to allow Standard Interface to interact with zVariables and other CDF-related information.
- Adds MingW and FreeBSD ports.
- Adds support for Intel C++ and Fortran for Linux.
- Adds the ability to create legacy CDF 2.7 files.
- Fixes a bug that prevented directories from having .cdf or .skt extensions.
<<lessIt consists of a scientific data management package (known as the "CDF Library") that allows programmers and application developers to manage and manipulate scalar, vector, and multi-dimensional data arrays.
Enhancements:
- Adds new sets of APIs to allow Standard Interface to interact with zVariables and other CDF-related information.
- Adds MingW and FreeBSD ports.
- Adds support for Intel C++ and Fortran for Linux.
- Adds the ability to create legacy CDF 2.7 files.
- Fixes a bug that prevented directories from having .cdf or .skt extensions.
Download (1.5MB)
Added: 2006-03-13 License: Public Domain Price:
1320 downloads
RISO Jellyfish
RISO provides an implementation of distributed, heterogeneous belief networks. more>>
RISO provides an implementation of distributed, heterogeneous belief networks.
RISO is an implementation of heterogeneous, distributed belief networks in Java. A belief network is a probability model defined on an acyclic directed graph; distributed means nodes can be on different hosts, and heterogeneous means allowing different conditional distributions.
The calculations involved are multidimensional integrations; exact results are known for a catalog of special cases. If a partial result cannot be calculated as a special case from the catalog, RISO computes an approximate result by numerical integration.
Partial results are passed from one node in the graph to another as messages; if nodes live on different hosts, the belief network is said to be distributed. Messages are passed via RMI. Many example belief networks and lengthy documents are included in the RISO release bundle.
Enhancements:
- The "Jellyfish" release of RISO contains minor bug fixes and some functional enhancements.
- There is a Python module riso_binding.py which can import RISO belief networks into Jython (Python implemented in Java).
- Jython is a more flexible and elegant user interface than riso/apps/RemoteQuery.java.
- The compile.sh script uses JavaDeps to generate a makefile (javac wasnt capable of resolving all the cross dependencies). Youll need JavaDeps only if you want to do a clean recompile; recompiling one file at a time with javac (given all the other class files present) has always succeeded so far.
- There are now Poisson, exponential, and binomial distributions.
- There is initial support for the notion of considering a belief network as a multidimensional distribution. See riso/distributions/Factorized.java.
- There is an initial version of a Gibbs sampler algorithm. See riso/apps/GibbsSampler.java.
<<lessRISO is an implementation of heterogeneous, distributed belief networks in Java. A belief network is a probability model defined on an acyclic directed graph; distributed means nodes can be on different hosts, and heterogeneous means allowing different conditional distributions.
The calculations involved are multidimensional integrations; exact results are known for a catalog of special cases. If a partial result cannot be calculated as a special case from the catalog, RISO computes an approximate result by numerical integration.
Partial results are passed from one node in the graph to another as messages; if nodes live on different hosts, the belief network is said to be distributed. Messages are passed via RMI. Many example belief networks and lengthy documents are included in the RISO release bundle.
Enhancements:
- The "Jellyfish" release of RISO contains minor bug fixes and some functional enhancements.
- There is a Python module riso_binding.py which can import RISO belief networks into Jython (Python implemented in Java).
- Jython is a more flexible and elegant user interface than riso/apps/RemoteQuery.java.
- The compile.sh script uses JavaDeps to generate a makefile (javac wasnt capable of resolving all the cross dependencies). Youll need JavaDeps only if you want to do a clean recompile; recompiling one file at a time with javac (given all the other class files present) has always succeeded so far.
- There are now Poisson, exponential, and binomial distributions.
- There is initial support for the notion of considering a belief network as a multidimensional distribution. See riso/distributions/Factorized.java.
- There is an initial version of a Gibbs sampler algorithm. See riso/apps/GibbsSampler.java.
Download (0.59MB)
Added: 2007-04-18 License: GPL (GNU General Public License) Price:
919 downloads
Template Numerical Toolkit 1.26
Template Numerical Toolkit (TNT) is a collection of interfaces and reference implementations of numerical objects. more>>
Template Numerical Toolkit (TNT) is a collection of interfaces and reference implementations of numerical objects useful for scientific computing in C++.
The toolkit defines interfaces for basic data structures, such as multidimensional arrays and sparse matrices, commonly used in numerical applications. Template Numerical Toolkits goal is to provide reusable software components that address many of the portability and maintennace problems with C++ codes.
TNT provides a distinction between interfaces and implementations of TNT components. For example, there is a TNT interface for two-dimensional arrays which describes how individual elements are accessed and how certain information, such as the array dimensions, can be used in algorithms; however, there can be several implementations of such an interface: one that uses expression templates, or one that uses BLAS kernels, or another that is instrumented to provide debugging information.
By specifying only the interface, applications codes may utilize such algorithms, while giving library developers the greatest flexibility in employing optimization or portability strategies.
TNT Data Structures
- C-style arrays
- Fortran-style arrays
- Sparse Matrices
- Vector/Matrix
TNT utilities
- array I/O
- math routines (hypot(), sign(), etc.)
- Stopwatch class for timing measurements
Libraries that utilize TNT
- JAMA: a linear algebra library with QR, SVD, Cholesky and Eigenvector solvers.
- old (pre 1.0) TNT routines for LU, QR, and Eigenvalue problems
<<lessThe toolkit defines interfaces for basic data structures, such as multidimensional arrays and sparse matrices, commonly used in numerical applications. Template Numerical Toolkits goal is to provide reusable software components that address many of the portability and maintennace problems with C++ codes.
TNT provides a distinction between interfaces and implementations of TNT components. For example, there is a TNT interface for two-dimensional arrays which describes how individual elements are accessed and how certain information, such as the array dimensions, can be used in algorithms; however, there can be several implementations of such an interface: one that uses expression templates, or one that uses BLAS kernels, or another that is instrumented to provide debugging information.
By specifying only the interface, applications codes may utilize such algorithms, while giving library developers the greatest flexibility in employing optimization or portability strategies.
TNT Data Structures
- C-style arrays
- Fortran-style arrays
- Sparse Matrices
- Vector/Matrix
TNT utilities
- array I/O
- math routines (hypot(), sign(), etc.)
- Stopwatch class for timing measurements
Libraries that utilize TNT
- JAMA: a linear algebra library with QR, SVD, Cholesky and Eigenvector solvers.
- old (pre 1.0) TNT routines for LU, QR, and Eigenvalue problems
Download (0.028MB)
Added: 2006-03-30 License: Public Domain Price:
1308 downloads
Chicken 1.92
Chicken is a Scheme to C compiler. more>>
CHICKEN is a compiler for the Scheme programming language. CHICKEN produces portable, efficient C, supports almost all of the current Scheme language standard, the Revised5 Report on the Algorithmic Language Scheme (R5RS ), and includes many enhancements and extensions. CHICKEN runs on MacOS X, Windows, and many Unix flavours.
Main features:
- Compiles Scheme to efficient and portable C
- Includes a full-featured interactive interpreter as well as an optimising batch compiler
- Full support for tail recursion, first-class continuations, high-level macros and dynamic-wind
- Highly portable and known to run on many platforms, including IA-32 (80x86), IA-64, PowerPC, SPARC and UltraSPARC, Alpha, MIPS, PA-RISC, ARM, AMD64 and S/390
- Distributed free for use and modification under the terms of the BSD License
- Transparent support for shared objects and linkage to C
- A sophisticated but easy-to-use Foreign Function Interface for linking C and C++ libraries and classes to Scheme
- Lightweight threads based on first-class continuations
- An object system with multiple dispatch, multiple inheritance and a meta-object protocol
- Common Lisp-style format
- Provides the syntax-case enhanced high-level macro system, R5RS syntax-rules , and define-macro
- Support for syntactic pattern-matching via Andrew Wrights match package
- Execution profiling, debugging and backtrace support
- A clean POSIX interface that covers environment and filesystem access, pipes, processes, signals, locks, sockets, and low-level and memory-mapped I/O
- Support for interpreted or compiled shell scripts under Unix and Windows
- Support for a large number of Scheme Requests For Implementation (SRFIs), some available separately as extensions:
SRFI 0 (cond-expand )
SRFI 1 (List library)
SRFI 2 (and-let* )
SRFI 4 (Homogeneous numeric vector datatypes)
SRFI 6 (Basic string ports)
SRFI 8 (receive )
SRFI 9 (Record types)
SRFI 10 (#, external form)
SRFI 13 (String library)
SRFI 14 (Character set library)
SRFI 16 (case-lambda )
SRFI 17 (Generalized set! )
SRFI 18 (Multithreading support)
SRFI 23 (error )
SRFI 25 (Multidimensional array primitives)
SRFI 26 (cut , cute )
SRFI 28 (format )
SRFI 30 (Block comments)
SRFI 37 (Program argument processor)
SRFI 38 (External representation for data with shared structure)
SRFI 39 (Parameters)
SRFI 40 (Stream library)
SRFI 42 (Eager comprehensions)
SRFI 43 (Vector library)
SRFI 55 (require-extension )
Version restrictions:
- No unlimited-precision integers (bignums), rationals or complex numbers
- Procedures are limited to 126 arguments
- No support for unicode
- Compilation of large files can be slow
Enhancements:
- chicken-setup: better handling when no remote repository file exists
<<lessMain features:
- Compiles Scheme to efficient and portable C
- Includes a full-featured interactive interpreter as well as an optimising batch compiler
- Full support for tail recursion, first-class continuations, high-level macros and dynamic-wind
- Highly portable and known to run on many platforms, including IA-32 (80x86), IA-64, PowerPC, SPARC and UltraSPARC, Alpha, MIPS, PA-RISC, ARM, AMD64 and S/390
- Distributed free for use and modification under the terms of the BSD License
- Transparent support for shared objects and linkage to C
- A sophisticated but easy-to-use Foreign Function Interface for linking C and C++ libraries and classes to Scheme
- Lightweight threads based on first-class continuations
- An object system with multiple dispatch, multiple inheritance and a meta-object protocol
- Common Lisp-style format
- Provides the syntax-case enhanced high-level macro system, R5RS syntax-rules , and define-macro
- Support for syntactic pattern-matching via Andrew Wrights match package
- Execution profiling, debugging and backtrace support
- A clean POSIX interface that covers environment and filesystem access, pipes, processes, signals, locks, sockets, and low-level and memory-mapped I/O
- Support for interpreted or compiled shell scripts under Unix and Windows
- Support for a large number of Scheme Requests For Implementation (SRFIs), some available separately as extensions:
SRFI 0 (cond-expand )
SRFI 1 (List library)
SRFI 2 (and-let* )
SRFI 4 (Homogeneous numeric vector datatypes)
SRFI 6 (Basic string ports)
SRFI 8 (receive )
SRFI 9 (Record types)
SRFI 10 (#, external form)
SRFI 13 (String library)
SRFI 14 (Character set library)
SRFI 16 (case-lambda )
SRFI 17 (Generalized set! )
SRFI 18 (Multithreading support)
SRFI 23 (error )
SRFI 25 (Multidimensional array primitives)
SRFI 26 (cut , cute )
SRFI 28 (format )
SRFI 30 (Block comments)
SRFI 37 (Program argument processor)
SRFI 38 (External representation for data with shared structure)
SRFI 39 (Parameters)
SRFI 40 (Stream library)
SRFI 42 (Eager comprehensions)
SRFI 43 (Vector library)
SRFI 55 (require-extension )
Version restrictions:
- No unlimited-precision integers (bignums), rationals or complex numbers
- Procedures are limited to 126 arguments
- No support for unicode
- Compilation of large files can be slow
Enhancements:
- chicken-setup: better handling when no remote repository file exists
Download (3.6MB)
Added: 2005-04-18 License: BSD License Price:
1649 downloads
Hierarchical Data Format 1.8.0 Beta 3
Hierarchical Data Format is a general purpose library and file format for storing scientific data. more>>
Hierarchical Data Format is a general purpose library and file format for storing scientific data.
HDF5 can store two primary objects: datasets and groups. A dataset is essentially a multidimensional array of data elements, and a group is a structure for organizing objects in an HDF5 file. Using these two basic objects, one can create and store almost any kind of scientific data structure, such as images, arrays of vectors, and structured and unstructured grids. You can also mix and match them in HDF5 files according to your needs.
Efficient storage and I/O.
HDF5 was created to address the data management needs of scientists and engineers working in high performance, data intensive computing environments. As a result, the HDF5 library and format emphasize storage and I/O efficiency. For instance, the HDF5 format can accommodate data in a variety of ways, such as compressed or chunked. And the library is tuned and adapted to read and write data efficiently on parallel computing systems.
Software.
NCSA maintains a suite of free, open source software, including the HDF5 I/O library and several utilities. The HDF5 user community also develops and contributes software, much of it freely available. Unlike HDF4, there is little commercial support for HDF5 at this time, but we are successfully working with vendors to change this.
Emphasis on standards.
Data can be stored in HDF5 in an endless variety of ways, so it is important for communities of users to standardize on how their data is to be organized in HDF5. This makes it possible to share data easily, and also to build and share tools for accessing and analyzing data stored in HDF5. The NCSA HDF team works with users to encourage them to organize HDF5 files in standard ways.
Large and varied user community.
HDF5 users range across a variety of engineering and scientific fields, and even some non-technical fields. Data stored in HDF5 is used for a wide range of applications, from computational fluid dynamics to film making.
Main features:
- Parallel HDF5 - Information on installing and using Parallel HDF5
- SZIP Compression - Information about SZIP Compression in HDF5
- Thread Safe HDF5 - Information on thread-safe capabilities of HDF5 and how to install
- The High Level HDF5 APIs, previously distributed separately, are now distributed as part of the main HDF5 Library:
- High Level HDF5 APIs - Information on installing and using the High Level HDF5 APIs
Applications:
- HDF Java Products - HDF4/HDF5 Java interfaces and viewer, HDFView.
- HDF Web-browser Plug-in - The HDF Web-browser plug-in is a windowed browser plug-in that is launched from a web browser to display HDF4 and HDF5 files.
- netCDF-4 - The NCSA and NetCDF groups are collaborating on a version of NetCDF built on top of HDF5.
- HDF5 XML Information Page - DTD and tools for using HDF5 with XML
- HDF5 WRF I/O Module - I/O module that reads HDF5 datasets for the Weather Research and Forecasting Model
- HDF5 Mesh API (prototype) - API for storing and retrieving structured and unstructured mesh data
Enhancements:
- The default Fortran was switched to G95 when using GCC.
- The autoconf build tools were updated. Fortran interfaces were added for the Image, Table, and Lite APIs.
- A Dimension Scale API (H5DS) was added.
- FreeBSD is now supported on AMD64 with GNU C and Fortran compilers.
- Support for sequential and parallel libraries was added for Intel 64 Linux clusters.
- Several bugs with writing fill values for datasets that have a variable-length datatype or component datatype were fixed.
<<lessHDF5 can store two primary objects: datasets and groups. A dataset is essentially a multidimensional array of data elements, and a group is a structure for organizing objects in an HDF5 file. Using these two basic objects, one can create and store almost any kind of scientific data structure, such as images, arrays of vectors, and structured and unstructured grids. You can also mix and match them in HDF5 files according to your needs.
Efficient storage and I/O.
HDF5 was created to address the data management needs of scientists and engineers working in high performance, data intensive computing environments. As a result, the HDF5 library and format emphasize storage and I/O efficiency. For instance, the HDF5 format can accommodate data in a variety of ways, such as compressed or chunked. And the library is tuned and adapted to read and write data efficiently on parallel computing systems.
Software.
NCSA maintains a suite of free, open source software, including the HDF5 I/O library and several utilities. The HDF5 user community also develops and contributes software, much of it freely available. Unlike HDF4, there is little commercial support for HDF5 at this time, but we are successfully working with vendors to change this.
Emphasis on standards.
Data can be stored in HDF5 in an endless variety of ways, so it is important for communities of users to standardize on how their data is to be organized in HDF5. This makes it possible to share data easily, and also to build and share tools for accessing and analyzing data stored in HDF5. The NCSA HDF team works with users to encourage them to organize HDF5 files in standard ways.
Large and varied user community.
HDF5 users range across a variety of engineering and scientific fields, and even some non-technical fields. Data stored in HDF5 is used for a wide range of applications, from computational fluid dynamics to film making.
Main features:
- Parallel HDF5 - Information on installing and using Parallel HDF5
- SZIP Compression - Information about SZIP Compression in HDF5
- Thread Safe HDF5 - Information on thread-safe capabilities of HDF5 and how to install
- The High Level HDF5 APIs, previously distributed separately, are now distributed as part of the main HDF5 Library:
- High Level HDF5 APIs - Information on installing and using the High Level HDF5 APIs
Applications:
- HDF Java Products - HDF4/HDF5 Java interfaces and viewer, HDFView.
- HDF Web-browser Plug-in - The HDF Web-browser plug-in is a windowed browser plug-in that is launched from a web browser to display HDF4 and HDF5 files.
- netCDF-4 - The NCSA and NetCDF groups are collaborating on a version of NetCDF built on top of HDF5.
- HDF5 XML Information Page - DTD and tools for using HDF5 with XML
- HDF5 WRF I/O Module - I/O module that reads HDF5 datasets for the Weather Research and Forecasting Model
- HDF5 Mesh API (prototype) - API for storing and retrieving structured and unstructured mesh data
Enhancements:
- The default Fortran was switched to G95 when using GCC.
- The autoconf build tools were updated. Fortran interfaces were added for the Image, Table, and Lite APIs.
- A Dimension Scale API (H5DS) was added.
- FreeBSD is now supported on AMD64 with GNU C and Fortran compilers.
- Support for sequential and parallel libraries was added for Intel 64 Linux clusters.
- Several bugs with writing fill values for datasets that have a variable-length datatype or component datatype were fixed.
Download (4.9MB)
Added: 2007-08-02 License: BSD License Price:
816 downloads
Stanford Exploration Project Library 6.5.1
Stanford Exploration Project Library improves the theory and practice of constructing 3-D and 4-D images of the earth. more>>
Stanford Exploration Project Library (or SEP, for short) is an industry-funded academic consortium whose purpose is to improve the theory and practice of constructing 3-D and 4-D images of the earth from seismic echo soundings.
Although most of our research is targeted at improvements in the geophysical survey contracting industry, about half of our sponsors and alumni are in the petroleum industry because we focus on overcoming technological limitations of the geophysical survey industry.
SEP pioneered innovations in migration imaging, velocity estimation, dip moveout and slant stack. Today our focus is on 3-D seismic applications such as velocity estimation, wavefield-continuation prestack migration, multidimensional image estimation, and 4-D (time-lapse) reservoir monitoring.
Besides 3-D reflection seismic data, we undertake small 2-D imaging projects with geophysical data of all kinds. The diversity of applications exercises our judgment and skill at combining fundamentals of statistical signal theory, optimization theory, numerical analysis, and wave propagation theory, and this has led us to numerous improvements and some breakthroughs.
We organize our research to facilitate technology transfer by using a formal method of makefile rules. With these, most of our research results are verified by someone other than the original researcher. Research progress reports at least four years old and all PhD theses are made available to the public through our web site.
Enhancements:
- Numerous major new features and major bugfixes.
<<lessAlthough most of our research is targeted at improvements in the geophysical survey contracting industry, about half of our sponsors and alumni are in the petroleum industry because we focus on overcoming technological limitations of the geophysical survey industry.
SEP pioneered innovations in migration imaging, velocity estimation, dip moveout and slant stack. Today our focus is on 3-D seismic applications such as velocity estimation, wavefield-continuation prestack migration, multidimensional image estimation, and 4-D (time-lapse) reservoir monitoring.
Besides 3-D reflection seismic data, we undertake small 2-D imaging projects with geophysical data of all kinds. The diversity of applications exercises our judgment and skill at combining fundamentals of statistical signal theory, optimization theory, numerical analysis, and wave propagation theory, and this has led us to numerous improvements and some breakthroughs.
We organize our research to facilitate technology transfer by using a formal method of makefile rules. With these, most of our research results are verified by someone other than the original researcher. Research progress reports at least four years old and all PhD theses are made available to the public through our web site.
Enhancements:
- Numerous major new features and major bugfixes.
Download (8.5MB)
Added: 2007-08-15 License: Free for non-commercial use Price:
801 downloads
EZMorph 1.0.3
EZMorph is simple Java library for transforming an Object to another Object. more>>
EZMorph is simple Java library for transforming an Object to another Object.
It supports transformations for primitives, Objects, and multidimensional arrays, compatibility with JDK 1.3.1, and small memory footprint (~60K).
EZMorph began life as the converter package in Json-lib but became a project on its own.
- Supports transformations for primitives and Objects
- Supports transformations for multidimensional arrays
- JDK 1.3.1 compatible
- Small memory footprint (~60K)
EZMorph comes with another feature: ArrayAssertions . JUnit 3.x does not have an assertEquals() method for asserting array equality, and JUnit 4.x has a limited one (it only supports Object[] not primitive arrays).
With ArrayAssertions is possible to compare a boolean[] with a boolean[] or even a Boolean[], an those arrays can be multidimensional too. EZMorph began life as the converter package on Json-lib but seeing that the features provided were more generic than JSON parsing, it became a project on its own.
Enhancements:
- This release can override existing morphers for a type when registering a new one, and clear all morphers for a type.
- The Javadocs have been updated.
<<lessIt supports transformations for primitives, Objects, and multidimensional arrays, compatibility with JDK 1.3.1, and small memory footprint (~60K).
EZMorph began life as the converter package in Json-lib but became a project on its own.
- Supports transformations for primitives and Objects
- Supports transformations for multidimensional arrays
- JDK 1.3.1 compatible
- Small memory footprint (~60K)
EZMorph comes with another feature: ArrayAssertions . JUnit 3.x does not have an assertEquals() method for asserting array equality, and JUnit 4.x has a limited one (it only supports Object[] not primitive arrays).
With ArrayAssertions is possible to compare a boolean[] with a boolean[] or even a Boolean[], an those arrays can be multidimensional too. EZMorph began life as the converter package on Json-lib but seeing that the features provided were more generic than JSON parsing, it became a project on its own.
Enhancements:
- This release can override existing morphers for a type when registering a new one, and clear all morphers for a type.
- The Javadocs have been updated.
Download (0.064MB)
Added: 2007-08-02 License: GPL (GNU General Public License) Price:
818 downloads
Math::Amoeba 0.04
Math::Amoeba is a Multidimensional Function Minimization. more>>
Math::Amoeba is a Multidimensional Function Minimization.
SYNOPSIS
use Math::Amoeba qw(ConstructVertices EvaluateVertices Amoeba MinimiseND);
my ($vertice,$y)=MinimiseND(@guess,@scales,&func,$tol,$itmax,$verbose);
my @vertices=ConstructVertices(@vector,@offsets);
my @y=EvaluateVertices(@vertices,&func);
my ($vertice,$y)=Amoeba(@vertices,@y,&func,$tol,$itmax,$verbose);
This is an implementation of the Downhill Simpex Method in Multidimensions (Nelder and Mead) for finding the (local) minimum of a function. Doing this in Perl makes it easy for that function to actually be the output of another program such as a simulator.
Arrays and the function are passed by reference to the routines.
The simplest use is the MinimiseND function. This takes a reference to an array of guess values for the parameters at the function minimum, a reference to an array of scales for these parameters (sensible ranges around the guess in which to look), a reference to the function, a convergence tolerance for the minimum, the maximum number of iterations to be taken and the verbose flag (default ON). It returns an array consisting of a reference to the function parameters at the minimum and the value there.
The Amoeba function is the actual implementation of the Downhill Simpex Method in Multidimensions. It takes a reference to an array of references to arrays which are the initial n+1 vertices (where n is the number of function parameters), a reference to the function valuation at these vertices, a reference to the function, a convergence tolerance for the minimum, the maximum number of iterations to be taken and the verbose flag (default ON). It returns an array consisting of a reference to the function parameters at the minimum and the value there.
The ConstructVertices is used by MinimiseND to construct the initial vertices for Amoeba as the initial guess plus the parameter scale parameters as vectors along the parameter axis.
The EvaluateVertices takes these set of vertices, calling the function for each one and returning the vector of results.
EXAMPLE
use Math::Amoeba qw(MinimiseND);
sub afunc {
my ($a,$b)=@_;
print "$at$bn";
return ($a-7)**2+($b+3)**2;
}
my @guess=(1,1);
my @scale=(1,1);
($p,$y)=MinimiseND(@guess,@scale,&afunc,1e-7,100);
print "(",join(,,@{$p}),")=$yn";
produces the output
(6.99978191653352,-2.99981241563247)=1.00000008274829
<<lessSYNOPSIS
use Math::Amoeba qw(ConstructVertices EvaluateVertices Amoeba MinimiseND);
my ($vertice,$y)=MinimiseND(@guess,@scales,&func,$tol,$itmax,$verbose);
my @vertices=ConstructVertices(@vector,@offsets);
my @y=EvaluateVertices(@vertices,&func);
my ($vertice,$y)=Amoeba(@vertices,@y,&func,$tol,$itmax,$verbose);
This is an implementation of the Downhill Simpex Method in Multidimensions (Nelder and Mead) for finding the (local) minimum of a function. Doing this in Perl makes it easy for that function to actually be the output of another program such as a simulator.
Arrays and the function are passed by reference to the routines.
The simplest use is the MinimiseND function. This takes a reference to an array of guess values for the parameters at the function minimum, a reference to an array of scales for these parameters (sensible ranges around the guess in which to look), a reference to the function, a convergence tolerance for the minimum, the maximum number of iterations to be taken and the verbose flag (default ON). It returns an array consisting of a reference to the function parameters at the minimum and the value there.
The Amoeba function is the actual implementation of the Downhill Simpex Method in Multidimensions. It takes a reference to an array of references to arrays which are the initial n+1 vertices (where n is the number of function parameters), a reference to the function valuation at these vertices, a reference to the function, a convergence tolerance for the minimum, the maximum number of iterations to be taken and the verbose flag (default ON). It returns an array consisting of a reference to the function parameters at the minimum and the value there.
The ConstructVertices is used by MinimiseND to construct the initial vertices for Amoeba as the initial guess plus the parameter scale parameters as vectors along the parameter axis.
The EvaluateVertices takes these set of vertices, calling the function for each one and returning the vector of results.
EXAMPLE
use Math::Amoeba qw(MinimiseND);
sub afunc {
my ($a,$b)=@_;
print "$at$bn";
return ($a-7)**2+($b+3)**2;
}
my @guess=(1,1);
my @scale=(1,1);
($p,$y)=MinimiseND(@guess,@scale,&afunc,1e-7,100);
print "(",join(,,@{$p}),")=$yn";
produces the output
(6.99978191653352,-2.99981241563247)=1.00000008274829
Download (0.004MB)
Added: 2007-08-14 License: Perl Artistic License Price:
801 downloads
PDL::Indexing 2.4.3
PDL::Indexing Perl module contains a tutorial on how to index piddles. more>>
PDL::Indexing Perl module contains a tutorial on how to index piddles.
This manpage should serve as a first tutorial on the indexing and threading features of PDL.
This manpage is still in alpha development and not yet complete. "Meta" comments that point out deficiencies/omissions of this document will be surrounded by square brackets ([]), e.g. [ Hopefully I will be able to remove this paragraph at some time in the future ]. Furthermore, it is possible that there are errors in the code examples. Please report any errors to Christian Soeller (c.soeller@auckland.ac.nz).
Still to be done are (please bear with us and/or ask on the mailing list, see PDL::FAQ):
document perl level threading
threadids
update and correct description of slice
new functions in slice.pd (affine, lag, splitdim)
reworking of paragraph on explicit threading
Indexing and threading with PDL
A lot of the flexibility and power of PDL relies on the indexing and looping features of the perl extension. Indexing allows access to the data of a pdl object in a very flexible way. Threading provides efficient implicit looping functionality (since the loops are implemented as optimized C code).
Pdl objects (later often called "pdls") are perl objects that represent multidimensional arrays and operations on those. In contrast to simple perl @x style lists the array data is compactly stored in a single block of memory thus taking up a lot less memory and enabling use of fast C code to implement operations (e.g. addition, etc) on pdls.
pdls can have children
Central to many of the indexing capabilities of PDL are the relation of "parent" and "child" between pdls. Many of the indexing commands create a new pdl from an existing pdl. The new pdl is the "child" and the old one is the "parent". The data of the new pdl is defined by a transformation that specifies how to generate (compute) its data from the parents data. The relation between the child pdl and its parent are often bidirectional, meaning that changes in the childs data are propagated back to the parent. (Note: You see, we are aiming in our terminology already towards the new dataflow features. The kind of dataflow that is used by the indexing commands (about which you will learn in a minute) is always in operation, not only when you have explicitly switched on dataflow in your pdl by saying $a->doflow. For further information about data flow check the dataflow manpage.)
Another way to interpret the pdls created by our indexing commands is to view them as a kind of intelligent pointer that points back to some portion or all of its parents data. Therefore, it is not surprising that the parents data (or a portion of it) changes when manipulated through this "pointer". After these introductory remarks that hopefully prepared you for what is coming (rather than confuse you too much) we are going to dive right in and start with a description of the indexing commands and some typical examples how they might be used in PDL programs. We will further illustrate the pointer/dataflow analogies in the context of some of the examples later on.
There are two different implementations of this ``smart pointer relationship: the first one, which is a little slower but works for any transformation is simply to do the transformation forwards and backwards as necessary. The other is to consider the child piddle a ``virtual piddle, which only stores a pointer to the parent and access information so that routines which use the child piddle actually directly access the data in the parent. If the virtual piddle is given to a routine which cannot use it, PDL transparently physicalizes the virtual piddle before letting the routine use it.
Currently (1.94_01) all transformations which are ``affine, i.e. the indices of the data item in the parent piddle are determined by a linear transformation (+ constant) from the indices of the child piddle result in virtual piddles. All other indexing routines (e.g. ->index(...)) result in physical piddles. All routines compiled by PP can accept affine piddles (except those routines that pass pointers to external library functions).
Note that whether something is affine or not does not affect the semantics of what you do in any way: both
$a->index(...) .= 5;
$a->slice(...) .= 5;
change the data in $a. The affinity does, however, have a significant impact on memory usage and performance.
<<lessThis manpage should serve as a first tutorial on the indexing and threading features of PDL.
This manpage is still in alpha development and not yet complete. "Meta" comments that point out deficiencies/omissions of this document will be surrounded by square brackets ([]), e.g. [ Hopefully I will be able to remove this paragraph at some time in the future ]. Furthermore, it is possible that there are errors in the code examples. Please report any errors to Christian Soeller (c.soeller@auckland.ac.nz).
Still to be done are (please bear with us and/or ask on the mailing list, see PDL::FAQ):
document perl level threading
threadids
update and correct description of slice
new functions in slice.pd (affine, lag, splitdim)
reworking of paragraph on explicit threading
Indexing and threading with PDL
A lot of the flexibility and power of PDL relies on the indexing and looping features of the perl extension. Indexing allows access to the data of a pdl object in a very flexible way. Threading provides efficient implicit looping functionality (since the loops are implemented as optimized C code).
Pdl objects (later often called "pdls") are perl objects that represent multidimensional arrays and operations on those. In contrast to simple perl @x style lists the array data is compactly stored in a single block of memory thus taking up a lot less memory and enabling use of fast C code to implement operations (e.g. addition, etc) on pdls.
pdls can have children
Central to many of the indexing capabilities of PDL are the relation of "parent" and "child" between pdls. Many of the indexing commands create a new pdl from an existing pdl. The new pdl is the "child" and the old one is the "parent". The data of the new pdl is defined by a transformation that specifies how to generate (compute) its data from the parents data. The relation between the child pdl and its parent are often bidirectional, meaning that changes in the childs data are propagated back to the parent. (Note: You see, we are aiming in our terminology already towards the new dataflow features. The kind of dataflow that is used by the indexing commands (about which you will learn in a minute) is always in operation, not only when you have explicitly switched on dataflow in your pdl by saying $a->doflow. For further information about data flow check the dataflow manpage.)
Another way to interpret the pdls created by our indexing commands is to view them as a kind of intelligent pointer that points back to some portion or all of its parents data. Therefore, it is not surprising that the parents data (or a portion of it) changes when manipulated through this "pointer". After these introductory remarks that hopefully prepared you for what is coming (rather than confuse you too much) we are going to dive right in and start with a description of the indexing commands and some typical examples how they might be used in PDL programs. We will further illustrate the pointer/dataflow analogies in the context of some of the examples later on.
There are two different implementations of this ``smart pointer relationship: the first one, which is a little slower but works for any transformation is simply to do the transformation forwards and backwards as necessary. The other is to consider the child piddle a ``virtual piddle, which only stores a pointer to the parent and access information so that routines which use the child piddle actually directly access the data in the parent. If the virtual piddle is given to a routine which cannot use it, PDL transparently physicalizes the virtual piddle before letting the routine use it.
Currently (1.94_01) all transformations which are ``affine, i.e. the indices of the data item in the parent piddle are determined by a linear transformation (+ constant) from the indices of the child piddle result in virtual piddles. All other indexing routines (e.g. ->index(...)) result in physical piddles. All routines compiled by PP can accept affine piddles (except those routines that pass pointers to external library functions).
Note that whether something is affine or not does not affect the semantics of what you do in any way: both
$a->index(...) .= 5;
$a->slice(...) .= 5;
change the data in $a. The affinity does, however, have a significant impact on memory usage and performance.
Download (2.1MB)
Added: 2007-06-28 License: Perl Artistic License Price:
848 downloads
Kpl 3.3
Kpl is a program for two- and three-dimensional graphical presentation of data sets and functions. more>>
Kpl is a program for the KDE project (K Desktop Environment). Kpls purpose is the two- and three-dimensional graphical presentation of data sets and functions.
Multidimensional nonlinear parameter fits of functions to data sets can be performed using the Levenberg-Marquardt algorithm. Also general linear least square parameter fits are possible.
A DCOP interface can be used to control Kpl by other applications and scripts.
All settings necessary for a complete description of the presentation can be saved in plot files. These files as well as data files may be chosen by command line parameters, using the File menu, or by drag and drop.
Automatic scaling and normalization allow the easy graphical presentation of data. Also parameter fits can be performed automatically.
The settings of a presentation may be changed using the Edit menu. Here also additional data sets and functions can be included which can be displayed in the same as well as in different data windows.
Currently language support is given for english and german.
Kpl is free software, released under the GNU General Public License.
Enhancements:
- Multiple spline items can be fitted simultaneously to the same array item.
- Colored symbol pixmaps are displayed in item list.
- Text of legend and text items is displayed in item list.
<<lessMultidimensional nonlinear parameter fits of functions to data sets can be performed using the Levenberg-Marquardt algorithm. Also general linear least square parameter fits are possible.
A DCOP interface can be used to control Kpl by other applications and scripts.
All settings necessary for a complete description of the presentation can be saved in plot files. These files as well as data files may be chosen by command line parameters, using the File menu, or by drag and drop.
Automatic scaling and normalization allow the easy graphical presentation of data. Also parameter fits can be performed automatically.
The settings of a presentation may be changed using the Edit menu. Here also additional data sets and functions can be included which can be displayed in the same as well as in different data windows.
Currently language support is given for english and german.
Kpl is free software, released under the GNU General Public License.
Enhancements:
- Multiple spline items can be fitted simultaneously to the same array item.
- Colored symbol pixmaps are displayed in item list.
- Text of legend and text items is displayed in item list.
Download (0.52MB)
Added: 2005-12-28 License: GPL (GNU General Public License) Price:
1399 downloads
Zoem 07-205
Zoem is a macro/programming language. more>>
Zoem is a macro/programming language. Zoem project can be used as an all-round macro language, but has more specialized uses as well.
One such specific use is its support for creating small mark-up languages that map to different devices. It has character filtering capabilities tailored to this application.
Two such languages come packaged with zoem; one for creating manual pages that can be output either in troff or in HTML, the other for creating FAQs again in either troff or HTML output.
It supports arithmetic evaluation, regular expressions, multidimensional data storage, iteration, comprehensive IO, control operators, dictionary stacks, system commands, and more.
Enhancements:
- Zoem is now licensed under the GNU General Public License version 3 (or later).
- The bottom user dictionary functions as a global namespace, and syntax exists to access this global namespace directly.
- A macro set#3 was added that provides the modalities of existing set variants (optional warning and expansion) as well as additional modalities.
- The primitive done was reimplemented as throw{done} and throw{done} can be be used to cleanly cut processing in a variety of ways.
- Two example solutions to the N-queen problem illustrate various zoem capabilities.
<<lessOne such specific use is its support for creating small mark-up languages that map to different devices. It has character filtering capabilities tailored to this application.
Two such languages come packaged with zoem; one for creating manual pages that can be output either in troff or in HTML, the other for creating FAQs again in either troff or HTML output.
It supports arithmetic evaluation, regular expressions, multidimensional data storage, iteration, comprehensive IO, control operators, dictionary stacks, system commands, and more.
Enhancements:
- Zoem is now licensed under the GNU General Public License version 3 (or later).
- The bottom user dictionary functions as a global namespace, and syntax exists to access this global namespace directly.
- A macro set#3 was added that provides the modalities of existing set variants (optional warning and expansion) as well as additional modalities.
- The primitive done was reimplemented as throw{done} and throw{done} can be be used to cleanly cut processing in a variety of ways.
- Two example solutions to the N-queen problem illustrate various zoem capabilities.
Download (0.49MB)
Added: 2007-07-25 License: GPL (GNU General Public License) Price:
822 downloads
Secleted [ 0 ] software to compare
- Page: 1 of 1
- 1
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above multidimensional search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed