Genere una array Pseudo Vandermonde del polinomio de Chebyshev y Legendre en Python

En este artículo, generaremos una array Pseudo Vandermonde de la array flotante de puntos x, y y z de los polinomios de Chebyshev y Legendre en Python.

Ejemplo 1

Generando una array Pseudo Vandermonde de la función Legendre..legvander3d()

Usamos el método legendre.legvander3d() presente en el módulo Numpy de python para producir una array de Vandermonde del polinomio de Legendre con x, y y z como puntos de muestra. Como resultado, se devuelven las arrays pseudo-Vandermonde de grados ‘grados’ y puntos de muestra (x, y, z). Los parámetros x, y y z son arrays de coordenadas de puntos con una forma similar. Dependiendo de si alguno de los elementos es complejo, los dtypes se cambiarán a float64 o complex128. Si hay algún escalar presente, se convertirá en una array unidimensional. El parámetro ‘grado’ es una lista de los grados máximos mencionados en forma de [x grado, y grado, z grado].

Sintaxis: legendre.legvander3d(x, y, z, grados)

Parámetro:

  • x,y,z = Estas son las arrays de las coordenadas de puntos de la misma forma.
  • deg = Es la lista de grados máximos de la forma [x_deg, y_deg, z_deg].

Return : Devuelve una array de Vandermonde.

Python3

# import numpy and legendre libraries
import numpy as np
from numpy.polynomial import legendre
  
# Create arrays of point coordinates x, y and z
x = np.array([2.4, 1.2])
y = np.array([7.1, 2.7])
z = np.array([3.4, 2.2])
  
# Assign degrees to x, y and z
deg_of_x = 3
deg_of_y = 1
deg_of_z = 2
  
# use chebvander3d() function to generate a 
# pseudo Vandermonde matrix of the 
# Chebyshev polynomial and x, y, z sample points
print(legendre.legvander3d(x, y, z, [deg_of_x, deg_of_y, deg_of_z]))

Producción :

[[1.00000000e+00 3.40000000e+00 1.68400000e+01 7.10000000e+00

  2.41400000e+01 1.19564000e+02 2.40000000e+00 8.16000000e+00

  4.04160000e+01 1.70400000e+01 5.79360000e+01 2.86953600e+02

  8.14000000e+00 2.76760000e+01 1.37077600e+02 5.77940000e+01

  1.96499600e+02 9.73250960e+02 3.09600000e+01 1.05264000e+02

  5.21366400e+02 2.19816000e+02 7.47374400e+02 3.70170144e+03]

 [1.00000000e+00 2.20000000e+00 6.76000000e+00 2.70000000e+00

  5.94000000e+00 1.82520000e+01 1.20000000e+00 2.64000000e+00

  8.11200000e+00 3.24000000e+00 7.12800000e+00 2.19024000e+01

  1.66000000e+00 3.65200000e+00 1.12216000e+01 4.48200000e+00

  9.86040000e+00 3.02983200e+01 2.52000000e+00 5.54400000e+00

  1.70352000e+01 6.80400000e+00 1.49688000e+01 4.59950400e+01]]

Ejemplo 2: 

Generando una array Pseudo Vandermonde de la función Chebyshev.chebvander()

Usamos la función chebyshev.chebvander() presente en el módulo Numpy de python para construir una pseudo array de Vandermonde del polinomio de Chebyshev y x, y y z como puntos de muestra. Esta función devuelve la array pseudo-Vandermonde de grados ‘grados’ y puntos de muestra (x, y, z).

Los parámetros x, y y z son arrays de coordenadas de puntos con la misma forma. Dependiendo de si alguno de los elementos es complejo, los dtypes se cambiarán a float64 o complex128. Si hay algún escalar presente, se convertirá en una array unidimensional. Además, el parámetro ‘grado’ es una lista de grados máximos con el formato [x grado, y grado, z grado].

Sintaxis: chebyshev.chebvander(x, y, z, [grados_de_x, grados_de_y, grados_de_z])

Parámetro:

  • x,y,z = Estas son las arrays de las coordenadas de puntos de la misma forma.
  • deg = Es la lista de grados máximos de la forma [x_deg, y_deg, z_deg].

Retorno : Devuelve ‘vander3d’ que es un ndarray.

Python3

# import numpy and chebyshev libraries
import numpy as np
from numpy.polynomial import chebyshev as C
  
# Create arrays of point coordinates x, y and z
x = [1.2, 2.1]
y = [2.3, 3.2]
z = [3.1, 1.3]
  
# Assign degrees to x, y and z
deg_of_x = 2
deg_of_y = 1
deg_of_z = 3
  
# use chebvander3d() function to generate a 
# pseudo Vandermonde matrix of the 
# Chebyshev polynomial and x, y, z sample points
print(C.chebvander3d(x, y, z, [deg_of_x, deg_of_y, deg_of_z]))

Producción :

[[ 1. 3.1 18.22 109.864 2.3 7.13

   41.906 252.6872 1.2 3.72 21.864 131.8368

    2,76 8,556 50,2872 303,22464 1,88 5,828

   34.2536 206.54432 4.324 13.4044 78.78328 475.051936]

 [ 1. 1.3 2.38 4.888 3.2 4.16

    7.616 15.6416 2.1 2.73 4.998 10.2648

    6,72 8,736 15,9936 32,84736 7,82 10,166

   18.6116 38.22416 25.024 32.5312 59.55712 122.317312]]

Publicación traducida automáticamente

Artículo escrito por siddheshsagar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *