Computer >> Máy Tính >  >> Lập trình >> Python

Tạo ma trận Pseudo-Vandermonde có mức độ đã cho và mảng điểm phức x, y, z trong Python

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

Các bước

Đầu tiên, hãy nhập các thư viện được yêu cầu -

 import numpy as npfrom numpy.polynomial.polynomial import polyvander3d 

Tạo các mảng tọa độ điểm, tất cả đều có cùng hình dạng bằng cách sử dụ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 ("Array1 ... \ n", x) print ("\ nArray2 ... \ n", y) print ("\ nArray3 ... \ n", z) 

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

 print ("\ nArray1 datatype ... \ n", x.dtype) print ("\ nArray2 datatype ... \ n", y.dtype) print ("\ nArray3 datatype ... \ n", z.dtype) 

Kiểm tra các thứ nguyên -

 print ("\ nDiện tích của Mảng1 ... \ n", x.ndim) print ("\ nDiện tích của Mảng2 ... \ n", y.ndim) print ("\ nDiện tích của Mảng 3 ... \ n ", z.ndim) 

Kiểm tra hình dạng -

 print ("\ nShape of Array1 ... \ n", x.shape) print ("\ nShape of Array2 ... \ n", y.shape) print ("\ nShape of Array3 ... \ n ", z.shape) 

Để tạo ma trận Vandermonde có mức độ và điểm mẫu đã cho (x, y, z)., Hãy sử dụng polynomial.polyvander3d () trong Python Numpy -

 x_deg, y_deg, z_deg =2, 3, 4print ("\ nResult ... \ n", polyvander3d (x, y, z, [x_deg, y_deg, z_deg])) 

Ví dụ

 import numpy as npfrom numpy.polynomial.polynomial import polyvander3d # Tạo mảng tọa độ điểm, tất cả đều có cùng hình dạng bằng cách sử dụ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ị mảng in ("Mảng1 ... \ n", x) print ("\ nArray2 ... \ n", y) print ("\ nArray3 ... \ n", z) # Hiển thị kiểu dữ liệu ( "\ nArray1 datatype ... \ n", x.dtype) print ("\ nArray2 datatype ... \ n", y.dtype) print ("\ nArray3 datatype ... \ n", z.dtype) # Kiểm tra Dimensionsprint ("\ nDimension of Array1 ... \ n", x.ndim) print ("\ nDimension of Array2 ... \ n", y.ndim) print ("\ nDimension of Array3 ... \ n ", z.ndim) # Kiểm tra Shapeprint (" \ nShape of Array1 ... \ n ", x.shape) print (" \ nShape of Array2 ... \ n ", y.shape) print (" \ nShape của Array3 ... \ n ", z.shape) # Để tạo ma trận Vandermonde có mức độ và điểm mẫu đã cho (x, y, z)., hãy sử dụng polynomial.polyvander3d () trong Python Numpyx_deg, y_deg, z_deg =2 , 3, 4print ("\ nResult ... \ n", polyvander3d (x, y, z, [x_deg, y_deg, z_deg]))  

Đầu ra

 Array1 ... [- 2. + 2.j -1. + 2.j] Array2 ... [0. + 2.j 1. + 2.j] Array3 ... [2. + 2 .j 3. + 3.j] Kiểu dữ liệu của mảng1 ... kiểu dữ liệu complex128Array2 ... kiểu dữ liệu complex128Array3 ... complex128 Kiểu dữ liệu của mảng1 ... 1 Kiểu dữ liệu của mảng2 ... 1 Kiểu dữ liệu của mảng3 ... 1 Kiểu của mảng1 ... (2 ,) Hình dạng của Mảng2 ... (2,) Hình dạng của Mảng3 ... (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.280 e + 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 + 0 1 + 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.000 e + 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.120 e + 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.600 e + 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.000 e + 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]]