http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-linalg3D/pyfc-linalg3D_400.png

The fc_linalg3D Python package is an experimental package which contains all the code used in the report

Efficient algorithms to perform linear algebra operations on 3D arrays in vector languages, April 2018, F. Cuvelier.

Introduction:

More documentation is available on fc_linalg3D Python package dedicated web page with an User's Guide (pdf).

This package was tested under:

Installation:

The fc_linalg3D Python package is available from the Python Package Index, so to install/upgrade simply type

pip install fc_linalg3D-0.0.1.tar.gz -U

Testing :

There are demos functions in the fc_linalg3D.demos module named linalg3D_*. For example, run the following code under Python:

from fc_linalg3D import demos
demos.linalg3D_Lagrange()

The output of this code is:

#---------------------------------------------------------------------------
# Benchmarking functions:
#  fun[0],            Lag: fc_linalg3D.demos.Lagrange
#  fun[1],         lagint: fc_linalg3D.demos.lagint
# cmpErr[i], error between fun[0] and fun[i] outputs computed with function
#    lambda o1,o2: np.linalg.norm(o1-o2,np.inf)
# where
#    - 1st input parameter is the output of fun[0]
#    - 2nd input parameter is the output of fun[i]
#---------------------------------------------------------------------------
# Setting inputs of Lagrange polynomial functions: y=LAGRANGE(X,Y,x)
# where X is numpy.linspace(a,b,n+1), Y=fun(X) and x is random values on [a,b]
#   n is the order of the Lagrange polynomial
#   fun function is: lambda x: np.sin(x)
#   [a,b]=[-1,1]
#   X: (n+1,) numpy array
#   Y: (n+1,) numpy array
#   x: (m,)   numpy array
#   Error[i] computed with fun[i] output:
#     lambda y: np.linalg.norm(y-fun(x),np.inf)
#---------------------------------------------------------------------------
#date:2018/05/03 10:16:55
#nbruns:5
#numpy:      i4     i4        f4          f4           f4          f4           f4
#format:  {:>5}  {:>5}   {:8.3f}    {:10.3e}     {:11.3f}    {:10.3e}     {:11.3e}
#labels:      m      n    Lag(s)    Error[0]    lagint(s)    Error[1]    cmpErr[1]
            100      5     0.012   1.163e-05        0.014   1.163e-05    3.331e-16
            100      9     0.020   2.859e-10        0.023   2.859e-10    8.882e-16
            100     15     0.036   2.143e-14        0.038   2.143e-14    2.565e-14
            500      5     0.056   1.162e-05        0.071   1.162e-05    5.551e-16
            500      9     0.102   2.901e-10        0.118   2.901e-10    1.443e-15
            500     15     0.178   2.232e-14        0.188   2.232e-14    2.287e-14
           1000      5     0.111   1.163e-05        0.146   1.163e-05    5.551e-16
           1000      9     0.202   2.902e-10        0.235   2.902e-10    1.554e-15
           1000     15     0.361   2.576e-14        0.377   2.576e-14    2.620e-14