The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Matrix::Simple - Some simple matrix operations

SYNOPSIS

    use Matrix::Simple;

    my $matrix = stand($in_file_name);
    my $matrix = stand(\@data, $row, $col);

    my $value = det($matrix);
    my $value = det(\@matrix);

    my $tran_matrix = tran($matrix);
    my $tran_matrix = tran(\@matrix);

    my $adj_matrix = adj($matrix);
    my $adj_matrix = adj(\@matrix);

    my $inv_matrix = inv($matrix, $round);
    my $inv_matrix = inv(\@matrix, $round);

    my $new_matrix = num_mult($num, $matrix);
    my $new_matrix = num_mult($num, \@matrix);

    my $new_matrix = sub($matrix_1, $matrix_2);
    my $new_matrix = sub(\@matrix_1, \@matrix_2);
    
    my $new_matrix = add($matrix_1, $matrix_2);
    my $new_matrix = add(\@matrix_1, \@matrix_2);

    my $new_matrix = mult($matrix_1, $matrix_2);
    my $new_matrix = mult(\@matrix_1, \@matrix_2);

    show($matrix);
    show(\@matrix);
    show($matrix, $out_file_name);
    show(\@matrix, $out_file_name);

VERSION

1.04

DESCRIPTION

This module provides 10 subroutines for simple matrix operations. With this module, you can:

  1. generate standard two-dimensional matrix form

  2. calculate the determinant of the matrix

  3. get the transposed matrix of the matrix

  4. get the adjoint matrix of the matrix

  5. get the inverse matrix of the matrix

  6. multiplication between number and matrix

  7. subtraction between matrix and matrix

  8. addition between matrix and matrix

  9. multiplication between matrix and matrix

  10. display matrix to designated terminal

FUNCTION

The specific function and usage of each subroutine as follows:

stand

Standardize data into two-dimensional array form (two method).

    1. read data from text file (each line is separated by white space)
    my $matrix = stand($in_file_name);
    
    2. normalize a one-dimensional array into a two-dimensional array
    my $matrix = stand(\@data, $row, $col);

    notice: $row and $col are the number of rows and columns, respectively
det

Calculate the determinant of a matrix by Laplace expansion.

    my $value = det($matrix);  #two-dimensional array reference
    my $value = det(\@matrix); #two-dimensional array
tran

Get the transposed matrix of the matrix.

    my $tran_matrix = tran($matrix);  #two-dimensional array reference
    my $tran_matrix = tran(\@matrix); #two-dimensional array
adj

Get the adjugate matrix of the matrix.

    my $adj_matrix = adj($matrix);  #two-dimensional array reference
    my $adj_matrix = adj(\@matrix); #two-dimensional array
inv

Get the inverse matrix of the matrix.

    my $inv_matrix = inv($matrix, $round);  #two-dimensional array reference
    my $inv_matrix = inv(\@matrix, $round); #two-dimensional array
    
    notice: $round is the number of decimal places to keep(default : 2)
num_mult

Multiplication of number and matrix.

    my $new_matrix = num_mult($num, $matrix);  #two-dimensional array reference
    my $new_matrix = num_mult($num, \@matrix); #two-dimensional array
sub

Subtraction of matrix and matrix.

    my $new_matrix = sub($matrix_1, $matrix_2);   #two-dimensional array reference
    my $new_matrix = sub(\@matrix_1, \@matrix_2); #two-dimensional array
add

Addition of matrix and matrix.

    my $new_matrix = add($matrix_1, $matrix_2);   #two-dimensional array reference
    my $new_matrix = add(\@matrix_1, \@matrix_2); #two-dimensional array
mult

Multiplication of matrix and matrix.

    my $new_matrix = mult($matrix_1, $matrix_2);   #two-dimensional array reference
    my $new_matrix = mult(\@matrix_1, \@matrix_2); #two-dimensional array
show

Show matrix to specified place (two place).

    1. show to STDOUT
    show($matrix);  #two-dimensional array reference
    show(\@matrix); #two-dimensional array

    2. show to file
    show($matrix, $out_file_name);  #two-dimensional array reference
    show(\@matrix, $out_file_name); #two-dimensional array

AUTHOR

Xiangjian Gou

EMAIL

862137261@qq.com

DATE

11/30/2018