HP Forums
Some of Python's linalg commands in HP Prime - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: HP Prime (/forum-5.html)
+--- Thread: Some of Python's linalg commands in HP Prime (/thread-16897.html)



Some of Python's linalg commands in HP Prime - Eddie W. Shore - 05-08-2021 01:49 PM

Matrix Format [ [ row ], [ row ], … [ row ] ]

linspace(start, stop, number of points desired + 1)

arange(start, stop, step size); default step size: 1; returns a 1 row array from start to stop using step size

identity(n): returns an identity matrix as n x n

transpose(matrix): transpose of a matrix

inv(matrix): inverse of a matrix

shape(matrix): returns the dimensions of the matrix in an ordered pair (row, columns)

rref(matrix): row reduced echelon form of a matrix

det(matrix): determinant of a square matrix

peval(array of coefficients, x): polynomial evaluation (order is from high to low), can take complex arguments

horner(array of coefficients, x): polynomial evaluation using Horner’s method

pceoff(array of roots): returns an array representing a polynomial’s coefficients, can take complex arguments

proot(array of coefficients): returns an array of roots, can take complex arguments

add(array, array) or add(matrix, matrix): addition element by element

sub(array, array) or sub(matrix, matrix): subtraction element by element

dot(array, array): dot product

cross(array, array): cross product

imag(complex number): imaginary part – works on arrays and matrices

real(complex number): real part – works on arrays and matrices

I believe that fft and ifft have to do with fast fourier transforms.


RE: Some of Python's linalg commands in HP Prime - cdmackay - 05-08-2021 11:00 PM

thanks Eddie.

(05-08-2021 01:49 PM)Eddie W. Shore Wrote:  I believe that fft and ifft have to do with fast fourier transforms.

yup; the integrated Help has a few examples…


RE: Some of Python's linalg commands in HP Prime - John Keith - 05-09-2021 05:36 PM

Those sound like the function names from the Prime CAS and the 50g.

BTW, pcoeff is misspelled. Smile


RE: Some of Python's linalg commands in HP Prime - Eddie W. Shore - 05-09-2021 05:58 PM

(05-09-2021 05:36 PM)John Keith Wrote:  Those sound like the function names from the Prime CAS and the 50g.

BTW, pcoeff is misspelled. Smile

Sorry. Good catch!


RE: Some of Python's linalg commands in HP Prime - cdmackay - 05-11-2021 06:47 PM

oops, sorry, my comment re Help of course refers to the CAS commands, whereas this thread is about Python… I need more coffee.


RE: Some of Python's linalg commands in HP Prime - robmio - 09-08-2021 10:10 PM

(05-08-2021 01:49 PM)Eddie W. Shore Wrote:  Matrix Format [ [ row ], [ row ], … [ row ] ]

linspace(start, stop, number of points desired + 1)

arange(start, stop, step size); default step size: 1; returns a 1 row array from start to stop using step size

identity(n): returns an identity matrix as n x n

transpose(matrix): transpose of a matrix

inv(matrix): inverse of a matrix

shape(matrix): returns the dimensions of the matrix in an ordered pair (row, columns)

rref(matrix): row reduced echelon form of a matrix

det(matrix): determinant of a square matrix

peval(array of coefficients, x): polynomial evaluation (order is from high to low), can take complex arguments

horner(array of coefficients, x): polynomial evaluation using Horner’s method

pceoff(array of roots): returns an array representing a polynomial’s coefficients, can take complex arguments

proot(array of coefficients): returns an array of roots, can take complex arguments

add(array, array) or add(matrix, matrix): addition element by element

sub(array, array) or sub(matrix, matrix): subtraction element by element

dot(array, array): dot product

cross(array, array): cross product

imag(complex number): imaginary part – works on arrays and matrices

real(complex number): real part – works on arrays and matrices

I believe that fft and ifft have to do with fast fourier transforms.

Hi, I found it difficult to transpose a matrix with PYTHON. For instance:
transpose ([[1,2,3], [4,5,6]]) gives me this result: [[1,4], [3,2], [5,6]]
The correct result is: [[1,4], [2,5], [3,6]].
Is there a bag perhaps?


RE: Some of Python's linalg commands in HP Prime - parisse - 09-10-2021 04:55 AM

There is indeed a bug in transpose for non square matrices.


RE: Some of Python's linalg commands in HP Prime - robmio - 09-11-2021 09:13 AM

(09-10-2021 04:55 AM)parisse Wrote:  There is indeed a bug in transpose for non square matrices.

Thanks for the answer, Parisse. Since I had to use the "transpose" command in my Python program, I had to write a subroutine to transpose the arrays:

Code:

from linalg import *

def transposeRr(matriceRr):
    L=shape(matriceRr);
    r=L[0];
    c=L[1];
    matricezero=zeros(c,r);
    for u in range(0,r):
        for uu in range (0,c):
            matricezero[uu][u]=matriceRr[u][uu];
    return matricezero;



RE: Some of Python's linalg commands in HP Prime - Albert Chan - 09-11-2021 10:36 AM

(09-11-2021 09:13 AM)robmio Wrote:  Since I had to use the "transpose" command in my Python program, I had to write a subroutine to transpose the arrays ...

Is matrix simply list of list ? If yes, we can transpose with a 1-liner.

>>> transpose = lambda a: [list(r) for r in zip(*a)]
>>> transpose([[1,2,3], [4,5,6]])
[[1, 4], [2, 5], [3, 6]]


RE: Some of Python's linalg commands in HP Prime - robmio - 09-11-2021 11:17 AM

(09-11-2021 10:36 AM)Albert Chan Wrote:  
(09-11-2021 09:13 AM)robmio Wrote:  Since I had to use the "transpose" command in my Python program, I had to write a subroutine to transpose the arrays ...

Is matrix simply list of list ? If yes, we can transpose with a 1-liner.

>>> transpose = lambda a: [list(r) for r in zip(*a)]
>>> transpose([[1,2,3], [4,5,6]])
[[1, 4], [2, 5], [3, 6]]

Congratulations! This short solution you proposed works very well in my program


RE: Some of Python's linalg commands in HP Prime - Ioncubekh - 10-27-2022 07:43 PM

matrix() doesn't follow rules of matrix dot product. Possible bug related to post#7

Code:
from linalg import *
M1= matrix([ [1,2,3], [10,100,1000] ])

# Sum of rows of any Matrix
EachRowSum= dot( M1, ones( len(M1[0]), 1 ) )

# Sum of columns of any Matrix ... NOT WORKING
EachColSum= dot( ones( 1, len(M1) ), M1 )



RE: Some of Python's linalg commands in HP Prime - Ioncubekh - 11-02-2022 02:20 AM

In the absence of multi-dimensional arrays (numpy) following commands using native zip(), map(), lambda, list constructions ...can be used to have similar effect while considering dimensions as well.
Few array examples & their equivalents

Code:

# x + b21 * k1 + b32 * k2
# where x, k1 & k2 are numpy arrays while b21 & b32 is some scalar value
[sum(i) for i in zip(x, [b21*i for i in k1], [b32*i for i in k2] )]
# r  / ( q*( abs(x)+abs(k1) ) )
# where r, x & k1 are equal shaped arrays & q is scalar value
[ (r[i] / ( q*( abs(x[i]) + abs(k1[i]) ) ) ) for i in range(len(x) ) ]