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

Đưa các ô vuông ít nhất của chuỗi Legendre phù hợp với dữ liệu bằng Python

Để đưa các ô vuông ít nhất của chuỗi Legendre phù hợp với dữ liệu, hãy sử dụng phương thức legendre.legfit () trong Pythonnumpy. Phương thức trả về các hệ số Legendre được sắp xếp từ thấp đến cao. Nếu y là 2-D, hệ số cho dữ liệu trong cột k của y nằm trong cột k.

Tham số, x là tọa độ x của M điểm (dữ liệu) mẫu (x [i], y [i]). Tham số, y là tọa độ y của các điểm mẫu. Một số tập hợp các điểm mẫu chia sẻ cùng một tọa độ có thể phù hợp (độc lập) với một lệnh gọi đến polyfit bằng cách chuyển cho y một mảng 2-D chứa một tập dữ liệu trên mỗi cột.

Tham số, deg là Độ của các đa thức phù hợp. Nếu deg là một số nguyên duy nhất, tất cả các số hạng tối đa và bao gồm cả số hạng thứ đều được đưa vào phù hợp. Tham số, rcond là số điều kiện tương đối của sự phù hợp. Giá trị số ít nhỏ hơn rcond, liên quan đến giá trị số ít lớn nhất, sẽ bị bỏ qua. Giá trị mặc định là len (x) * eps, trong đó eps là độ chính xác tương đối của loại platform’sfloat, khoảng 2e-16 trong hầu hết các trường hợp. Tham số, đầy đủ là công tắc xác định bản chất của giá trị đó. Khi False (mặc định) chỉ các hệ số được trả về; khi True, thông tin chẩn đoán từ phân tách giá trị đơn lẻ cũng được trả về.

Tham số, w là trọng số. Nếu không Không, trọng số w [i] áp dụng cho phần dư chưa được kiểm tra y [i] - y_hat [i] tại x [i]. Lý tưởng nhất là các trọng số được chọn sao cho sai số của các sản phẩm w [i] * y [i] đều có cùng phương sai. Khi sử dụng trọng số phương sai nghịch đảo, hãy sử dụng w [i] =1 / sigma (y [i]). Giá trị mặc định là Không.

Các bước

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

import numpy as np
from numpy.polynomial import legendre as L

Tọa độ x -

x = np.linspace(-1,1,51)

Hiển thị tọa độ x -

print("X Co-ordinate...\n",x)

Tọa độ y -

y = x**3 - x + np.random.randn(len(x))
print("\nY Co-ordinate...\n",y)

Để đưa các ô vuông ít nhất của chuỗi Legendre phù hợp với dữ liệu, hãy sử dụng phương thức legendre.legfit () trong Pythonnumpy. Phương thức trả về các hệ số Legendre được sắp xếp từ thấp đến cao. Nếu y là 2-D, hệ số cho dữ liệu trong cột k của y nằm trong cột k -

c, stats = L.legfit(x,y,3,full=True)
print("\nResult...\n",c)
print("\nResult...\n",stats)

Ví dụ

import numpy as np
from numpy.polynomial import legendre as L

# The x-coordinate
x = np.linspace(-1,1,51)

# Display the x-coordinate
print("X Co-ordinate...\n",x)

# The y-coordinate
y = x**3 - x + np.random.randn(len(x))
print("\nY Co-ordinate...\n",y)

# To get the Least squares fit of Legendre series to data, use the legendre.legfit() method in Python numpy
c, stats = L.legfit(x,y,3,full=True)
print("\nResult...\n",c)
print("\nResult...\n",stats)

Đầu ra

X Co-ordinate...
  [-1.   -0.96 -0.92 -0.88 -0.84 -0.8  -0.76 -0.72 -0.68 -0.64 -0.6  -0.56
   -0.52 -0.48 -0.44 -0.4  -0.36 -0.32 -0.28 -0.24 -0.2  -0.16 -0.12 -0.08
   -0.04  0.    0.04  0.08  0.12  0.16  0.2   0.24  0.28  0.32  0.36  0.4
    0.44  0.48  0.52  0.56  0.6   0.64  0.68  0.72  0.76  0.8   0.84  0.88
    0.92  0.96  1. ]

   Y Co-ordinate...
  [-5.28795520e-02 -7.61252904e-03  7.35194215e-02 -1.33072588e-01
   -1.21785636e+00  7.75679385e-02  6.55168668e-01  1.42872448e+00
    8.42326214e-01  2.49667989e+00  9.58942508e-01 -2.67332869e-01
   -7.85575928e-01  1.93333045e+00  7.32492468e-01  5.23576961e-01
   -1.91529521e+00 -1.41434385e+00  4.44787373e-01  3.81831261e-01
    3.74128321e-01  1.20562789e+00  1.44870029e+00  1.01091575e-03
    8.94334713e-01  1.22342199e+00  9.52055370e-01 -7.29520012e-01
   -2.42648820e-01 -9.78434555e-02  1.27468237e-01  9.39489448e-01
    1.08795136e+00  2.31230197e+00  1.93107556e-02 -6.13335407e-01
    1.93170835e-01 -8.77958854e-01 -3.59868085e-01  4.31331759e-01
    7.24929856e-01 -2.22736540e-01 -1.29623093e+00  4.13226024e-01
    7.82155644e-01 -1.56618537e-01  1.25043737e+00  6.32386988e-01
   -2.75716271e-01  8.80669895e-02 -3.20225560e-01]

Result...
 [ 0.29249467 -0.10521942 -0.24847572 0.2010877 ]

Result...
 [array([39.35467561]), 4, array([1.0425003 , 1.02126704, 0.97827074, 0.95561139]), 1.1324274851176597e-14]