NAME
Math::GSL::Vector - Functions concerning vectors
SYNOPSIS
use Math::GSL::Vector qw/:all/;
my $vec1 = Math::GSL::Vector->new([1, 7, 94, 15 ]);
my $vec2 = $vec1 * 5;
my $vec3 = Math::GSL::Vector>new(10); # 10 element zero vector
# set the element at index 1 to 9
# and the element at index 3 to 8
$vec3->set([ 1, 3 ], [ 9, 8 ]);
my @vec = $vec2->as_list; # return elements as Perl list
my $dot_product = $vec1 * $vec2;
my $length = $vec2->length;
my $first = $vec1->get(0);
Objected Oriented Interface to GSL Math::GSL::Vector
Math::GSL::Vector->new()
Creates a new Vector of the given size.
my $vector = Math::GSL::Matrix->new(3);
You can also create and set directly the values of the vector like this :
my $vector = Math::GSL::Vector->new([2,4,1]);
raw()
Get the underlying GSL vector object created by SWIG, useful for using gsl_vector_* functions which do not have an OO counterpart.
my $vector = Math::GSL::vector->new(3);
my $gsl_vector = $vector->raw;
my $stuff = gsl_vector_get($gsl_vector, 1);
min()
Returns the minimum value contained in the vector.
my $vector = Math::GSL::Vector->new([2,4,1]);
my $minimum = $vector->min;
max()
Returns the minimum value contained in the vector.
my $vector = Math::GSL::Vector->new([2,4,1]);
my $maximum = $vector->max;
length()
Returns the number of elements contained in the vector.
my $vector = Math::GSL::Vector->new([2,4,1]);
my $length = $vector->length;
as_list()
Gets the content of a Math::GSL::Vector object as a Perl list.
my $vector = Math::GSL::vector->new(3);
...
my @values = $vector->as_list;
get()
Gets the value of an of a Math::GSL::Vector object.
my $vector = Math::GSL::vector->new(3);
...
my @values = $vector->get(2);
You can also enter an array of indices to receive their corresponding values:
my $vector = Math::GSL::vector->new(3);
...
my @values = $vector->get([0,2]);
set()
Sets values of an of a Math::GSL::Vector object.
my $vector = Math::GSL::vector->new(3);
$vector->set([1,2], [8,23]);
This sets the second and third value to 8 and 23.
DESCRIPTION
Here is a list of all the functions included in this module :
gsl_vector_alloc($x)
- create a vector of size $xgsl_vector_calloc($x)
- create a vector of size $x and initializes all the elements of the vector to zerogsl_vector_alloc_from_block
gsl_vector_alloc_from_vector
gsl_vector_free($v)
- free a previously allocated vector $vgsl_vector_view_array
gsl_vector_view_array_with_stride
gsl_vector_const_view_array_with_stride
gsl_vector_subvector($v, $offset, $n)
- return a vector_view type which contains a subvector of $v, with a size of $size, starting from the $offset positiongsl_vector_subvector_with_stride($v, $offset, $stride, $size)
- return a vector_view type which contains a subvector of $v, with a size of $size, starting from the $offset position and with a $stride step between each element of $vgsl_vector_const_subvector
gsl_vector_get($v, $i)
- return the $i-th element of a vector $vgsl_vector_set($v, $i, $x)
- return the vector $v with his $i-th element set to $xgsl_vector_ptr
gsl_vector_const_ptr
gsl_vector_set_zero($v)
- set all the elements of $v to 0gsl_vector_set_all($v, $x)
- set all the elements of $v to $xgsl_vector_set_basis($v, $i)
- set all the elements of $v to 0 except for the $i-th element which is set to 1 and return 0 if the operation succeded, 1 otherwise.gsl_vector_fread($file, $v)
- This function reads into the vector $v from the open stream $file opened with fopen in binary format. The vector $v must be preallocated with the correct length since the function uses the size of $v to determine how many bytes to read. The return value is 0 for success and 1 if there was a problem reading from the file.gsl_vector_fwrite($file, $v)
- This function writes the elements of the vector $v to the stream $file opened with fopen in binary format. The return value is 0 for success and 1 if there was a problem writing to the file. Since the data is written in the native binary format it may not be portable between different architectures.gsl_vector_fscanf($file, $v)
This function reads formatted data from the stream $file opened with fopen into the vector $v. The vector $v must be preallocated with the correct length since the function uses the size of $v to determine how many numbers to read. The function returns 0 for success and 1 if there was a problem reading from the file.gsl_vector_fprintf($file, $v, $format)
-This function writes the elements of the vector $v line-by-line to the stream $file opened with fopen using the format specifier format, which should be one of the "%g", "%e" or "%f" formats for floating point numbers and "%d" for integers. The function returns 0 for success and 1 if there was a problem writing to the file.gsl_vector_memcpy($dest, $src)
- This function copies the elements of the vector $src into the vector $dest and return 0 if the opertaion succeded, 1 otherwise. The two vectors must have the same length.gsl_vector_reverse($v)
- reverse the order of the elements of the vector $v and return 0 if the opertaion succeded, 1 otherwisegsl_vector_swap($v, $v2)
- swap the values of the vectors $v and $v2 and return 0 if the opertaion succeded, 1 otherwisegsl_vector_swap_elements($v, $i, $j)
- permute the elements at position $i and $j in the vector $v and return 0 if the operation succeded, 1 otherwise.gsl_vector_max($v)
- return the maximum value in the vector $vgsl_vector_min($v)
- return the minimum value in the vector $vgsl_vector_minmax($v)
- return two values, the first is the minimum value in the vector $v and the second is the maximum value.gsl_vector_max_index($v)
- return the position of the maximum value in the vector $vgsl_vector_min_index($v)
- return the position of the minimum value in the vector $vgsl_vector_minmax_index
- return two values, the first is the position of the minimum value in the vector $v and the second is the position of the maximum value.gsl_vector_add($v, $v2)
- add the elements of $v2 to the elements of $v, the two vectors must have the same lenght and return 0 if the operation succeded, 1 otherwise.gsl_vector_sub($v, $v2)
- substract the elements of $v2 from the elements of $v, the two vectors must have the same lenght and return 0 if the operation succeded, 1 otherwise.gsl_vector_mul($v, $v2)
- multiply the elements of $v by the elements of $v2, the two vectors must have the same lenght and return 0 if the operation succeded, 1 otherwise.gsl_vector_div($v, $v2)
- divides the elements of $v by the elements of $v2, the two vectors must have the same lenght and return 0 if the operation succeded, 1 otherwise.gsl_vector_scale($v, $x)
- multiplty the elements of the vector $v by a constant $x and return 0 if the operation succeded, 1 otherwise.gsl_vector_add_constant($v, $x)
- add a constant $x to the elements of the vector $v and return 0 if the operation succeded, 1 otherwise.gsl_vector_isnull($v)
- verify if all the elements of the vector $v are null, return 0 if it's the case, 1 otherwise.gsl_vector_ispos($v)
- verify if all the elements of the vector $v are positive, return 0 if it's the case, 1 otherwise.gsl_vector_isneg($v)
- verify if all the elements of the vector $v are negative, return 0 if it's the case, 1 otherwise.gsl_vector_isnonneg($v)
- verify if all the elements the vector $v are not negative, return 0 if it's the case, 1 otherwise.
You have to add the functions you want to use inside the qw /put_funtion_here / with spaces between each function. You can also write use Math::GSL::Complex qw/:all/ to use all avaible functions of the module.
Precision on the vector_view type : every modification you'll make on a vector_view will also modify the original vector. For example, the following code will zero the even elements of the vector $v of length $size, while leaving the odd elements untouched :
$v_even= gsl_vector_subvector_with_stride ($v, 0, 2, $size/2);
gsl_vector_set_zero ($v_even->{vector});
For more informations on the functions, we refer you to the GSL offcial documentation: http://www.gnu.org/software/gsl/manual/html_node/ Tip : search on google: site:http://www.gnu.org/software/gsl/manual/html_node/ name_of_the_function_you_want
EXAMPLES
use Math::GSL::Vector qw/:all/;
print "We'll create this vector : [0,1,4,9,16] \n";
my $vector = Math::GSL::Vector->new([0,1,4,9,16]);
my ($min, $max) = gsl_vector_minmax_index($vector->raw);
print "We then check the index value of the maximum and minimum values of the vector. \n";
print "The index of the maximum should be 4 and we received $max \n";
print "The index of the minimum should be 0 and we received $min \n";
print "We'll then swap the first and the third elements of the vector \n";
gsl_vector_swap_elements($vector->raw, 0, 3);
my @got = $vector->as_list;
print "The vector should now be like this : [9,1,4,0,16] \n";
print "and we received : [";
for (my $element=0; $element<4; $element++) {
print "$got[$element],"; }
print "$got[4]] \n";
AUTHOR
Jonathan Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2008 Jonathan Leto and Thierry Moisan
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.