Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tạo ma trận Vandermonde giả của bậc cho trước và mảng điểm phức x, y, z trong Python


Để tạo ma trận Vandermonde của bậc cho trước và các điểm mẫu (x, y, z), hãy sử dụng polynomial.polyvander3d() trong Python Numpy. Phương thức này trả về ma trận Vandermonde giả của các bậc deg và các điểm mẫu (x, y, z). Tham số x, y, z là các mảng tọa độ điểm, tất cả có cùng hình dạng. Các kiểu dữ liệu sẽ được chuyển đổi thành float64 hoặc complex128 tùy thuộc vào việc có phần tử phức hay không. Các scalar được chuyển đổi thành mảng 1-D. Tham số deg là danh sách các bậc tối đa dạng [x_deg, y_deg, z_deg].

Các bước thực hiện

Trước tiên, nhập các thư viện cần thiết:

import numpy as np
from numpy.polynomial.polynomial import polyvander3d

Tạo các mảng tọa độ điểm, tất cả có cùng hình dạng bằng phương thức numpy.array():

x = np.array([-2.+2.j, -1.+2.j])
y = np.array([0.+2.j, 1.+2.j])
z = np.array([2.+2.j, 3. + 3.j])

Hiển thị các mảng:

print("Mảng 1...\n", x)
print("\nMảng 2...\n", y)
print("\nMảng 3...\n", z)

Hiển thị kiểu dữ liệu:

print("\nKiểu dữ liệu Mảng 1...\n", x.dtype)
print("\nKiểu dữ liệu Mảng 2...\n", y.dtype)
print("\nKiểu dữ liệu Mảng 3...\n", z.dtype)

Kiểm tra số chiều:

print("\nSố chiều của Mảng 1...\n", x.ndim)
print("\nSố chiều của Mảng 2...\n", y.ndim)
print("\nSố chiều của Mảng 3...\n", z.ndim)

Kiểm tra hình dạng:

print("\nHình dạng của Mảng 1...\n", x.shape)
print("\nHình dạng của Mảng 2...\n", y.shape)
print("\nHình dạng của Mảng 3...\n", z.shape)

Để tạo ma trận Vandermonde của bậc cho trước và các điểm mẫu (x, y, z), sử dụng polynomial.polyvander3d():

x_deg, y_deg, z_deg = 2, 3, 4
print("\nKết quả...\n", polyvander3d(x, y, z, [x_deg, y_deg, z_deg]))

Ví dụ hoàn chỉnh

import numpy as np
from numpy.polynomial.polynomial import polyvander3d

# Tạo các mảng tọa độ điểm, tất cả có cùng hình dạng
x = np.array([-2.+2.j, -1.+2.j])
y = np.array([0.+2.j, 1.+2.j])
z = np.array([2.+2.j, 3. + 3.j])

# Hiển thị các mảng
print("Mảng 1...\n", x)
print("\nMảng 2...\n", y)
print("\nMảng 3...\n", z)

# Hiển thị kiểu dữ liệu
print("\nKiểu dữ liệu Mảng 1...\n", x.dtype)
print("\nKiểu dữ liệu Mảng 2...\n", y.dtype)
print("\nKiểu dữ liệu Mảng 3...\n", z.dtype)

# Kiểm tra số chiều
print("\nSố chiều của Mảng 1...\n", x.ndim)
print("\nSố chiều của Mảng 2...\n", y.ndim)
print("\nSố chiều của Mảng 3...\n", z.ndim)

# Kiểm tra hình dạng
print("\nHình dạng của Mảng 1...\n", x.shape)
print("\nHình dạng của Mảng 2...\n", y.shape)
print("\nHình dạng của Mảng 3...\n", z.shape)

# Tạo ma trận Vandermonde
x_deg, y_deg, z_deg = 2, 3, 4
print("\nKết quả...\n", polyvander3d(x, y, z, [x_deg, y_deg, z_deg]))

Đầu ra

Mảng 1...
 [-2.+2.j -1.+2.j]
Mảng 2...
 [0.+2.j 1.+2.j]
Mảng 3...
 [2.+2.j 3.+3.j]
Kiểu dữ liệu Mảng 1...
 complex128
Kiểu dữ liệu Mảng 2...
 complex128
Kiểu dữ liệu Mảng 3...
 complex128
Số chiều của Mảng 1...
 1
Số chiều của Mảng 2...
 1
Số chiều của Mảng 3...
 1
Hình dạng của Mảng 1...
 (2,)
Hình dạng của Mảng 2...
 (2,)
Hình dạng của Mảng 3...
 (2,)
Kết quả...
 [[ 1.000e+00+0.000e+00j 2.000e+00+2.000e+00j 0.000e+00+8.000e+00j  -1.600e+01+1.600e+01j -6.400e+01+0.000e+00j 0.000e+00+2.000e+00j  -4.000e+00+4.000e+00j -1.600e+01+0.000e+00j -3.200e+01-3.200e+01j  -0.000e+00-1.280e+02j -4.000e+00+0.000e+00j -8.000e+00-8.000e+00j  -0.000e+00-3.200e+01j 6.400e+01-6.400e+01j 2.560e+02-0.000e+00j  0.000e+00-8.000e+00j 1.600e+01-1.600e+01j 6.400e+01+0.000e+00j  1.280e+02+1.280e+02j 0.000e+00+5.120e+02j -2.000e+00+2.000e+00j  -8.000e+00+0.000e+00j -1.600e+01-1.600e+01j 0.000e+00-6.400e+01j  1.280e+02-1.280e+02j -4.000e+00-4.000e+00j  0.000e+00-1.600e+01j 3.200e+01-3.200e+01j 1.280e+02+0.000e+00j 2.560e+02+2.560e+02j  8.000e+00-8.000e+00j 3.200e+01+0.000e+00j 6.400e+01+6.400e+01j  0.000e+00+2.560e+02j -5.120e+02+5.120e+02j 1.600e+01+1.600e+01j  0.000e+00+6.400e+01j -1.280e+02+1.280e+02j -5.120e+02+0.000e+00j  -1.024e+03-1.024e+03j 0.000e+00-8.000e+00j 1.600e+01-1.600e+01j  6.400e+01+0.000e+00j 1.280e+02+1.280e+02j 0.000e+00+5.120e+02j  1.600e+01+0.000e+00j 3.200e+01+3.200e+01j 0.000e+00+1.280e+02j  -2.560e+02+2.560e+02j -1.024e+03+0.000e+00j 0.000e+00+3.200e+01j  -6.400e+01+6.400e+01j -2.560e+02+0.000e+00j -5.120e+02-5.120e+02j  -0.000e+00-2.048e+03j -6.400e+01+0.000e+00j -1.280e+02-1.280e+02j  -0.000e+00-5.120e+02j 1.024e+03-1.024e+03j 4.096e+03-0.000e+00j]  [ 1.000e+00+0.000e+00j 3.000e+00+3.000e+00j 0.000e+00+1.800e+01j  -5.400e+01+5.400e+01j -3.240e+02+0.000e+00j 1.000e+00+2.000e+00j  -3.000e+00+9.000e+00j -3.600e+01+1.800e+01j -1.620e+02-5.400e+01j  -3.240e+02-6.480e+02j -3.000e+00+4.000e+00j -2.100e+01+3.000e+00j  -7.200e+01-5.400e+01j -5.400e+01-3.780e+02j 9.720e+02-1.296e+03j  -1.100e+01-2.000e+00j -2.700e+01-3.900e+01j 3.600e+01-1.980e+02j  7.020e+02-4.860e+02j 3.564e+03+6.480e+02j -1.000e+00+2.000e+00j -9.000e+00+3.000e+00j -3.600e+01-1.800e+01j -5.400e+01-1.620e+02j  3.240e+02-6.480e+02j -5.000e+00+0.000e+00j -1.500e+01-1.500e+01j  -0.000e+00-9.000e+01j 2.700e+02-2.700e+02j 1.620e+03-0.000e+00j -5.000e+00-1.000e+01j 1.500e+01-4.500e+01j 1.800e+02-9.000e+01j  8.100e+02+2.700e+02j 1.620e+03+3.240e+03j 1.500e+01-2.000e+01j  1.050e+02-1.500e+01j 3.600e+02+2.700e+02j 2.700e+02+1.890e+03j -4.860e+03+6.480e+03j -3.000e+00-4.000e+00j 3.000e+00-2.100e+01j  7.200e+01-5.400e+01j 3.780e+02+5.400e+01j 9.720e+02+1.296e+03j  5.000e+00-1.000e+01j 4.500e+01-1.500e+01j 1.800e+02+9.000e+01j  2.700e+02+8.100e+02j -1.620e+03+3.240e+03j 2.500e+01+0.000e+00j  7.500e+01+7.500e+01j 0.000e+00+4.500e+02j -1.350e+03+1.350e+03j -8.100e+03+0.000e+00j 2.500e+01+5.000e+01j -7.500e+01+2.250e+02j -9.000e+02+4.500e+02j -4.050e+03-1.350e+03j -8.100e+03-1.620e+04j]]