Nội suy tuyến tính là quá trình ước tính giá trị chưa biết của hàm giữa hai giá trị đã biết. is the process of estimating an unknown value of a function between two known values.
Với hai giá trị đã biết [x1, y1] và [x2, y2], chúng ta có thể ước tính giá trị y cho một số điểm X bằng cách sử dụng công thức sau:
y = y1 + [x-x1] [y2-y1]/[x2-x1]
Chúng ta có thể sử dụng cú pháp cơ bản sau đây để thực hiện phép nội suy tuyến tính trong Python:
import scipy.interpolate y_interp = scipy.interpolate.interp1d[x, y] #find y-value associated with x-value of 13 print[y_interp[13]]
Ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế.
Ví dụ: Nội suy tuyến tính trong Python
Giả sử chúng ta có hai danh sách các giá trị sau đây trong Python:
x = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] y = [4, 7, 11, 16, 22, 29, 38, 49, 63, 80]
Chúng ta có thể tạo ra một cốt truyện nhanh x so với y:
import matplotlib.pyplot as plt
#create plot of x vs. y
plt.plot[x, y, '-ob']
Bây giờ giả sử rằng chúng tôi muốn tìm giá trị y được liên kết với & nbsp; giá trị X mới của & nbsp; 13.13.
Chúng ta có thể sử dụng mã sau để làm như vậy:
import scipy.interpolate
y_interp = scipy.interpolate.interp1d[x, y]
#find y-value associated with x-value of 13
print[y_interp[13]]
33.5
Giá trị y ước tính hóa ra là 33,5.33.5.
Nếu chúng ta thêm điểm [13, 33,5] vào cốt truyện của chúng ta, nó dường như phù hợp với chức năng khá tốt:
import matplotlib.pyplot as plt
#create plot of x vs. y
plt.plot[x, y, '-ob']
#add estimated y-value to plot
plt.plot[13, 33.5, 'ro']
Chúng ta có thể sử dụng công thức chính xác này để thực hiện phép nội suy tuyến tính cho bất kỳ giá trị X mới nào.
Tài nguyên bổ sung
Các hướng dẫn sau đây giải thích cách khắc phục các lỗi phổ biến khác trong Python:
Cách sửa KeyError trong Pandas Cách sửa: ValueError: Không thể chuyển đổi Float Nan thành Integer Cách sửa: ValueError: Toán tử không thể được phát cùng với các hình dạng
How to Fix: ValueError: cannot convert float NaN to integer
How to Fix: ValueError: operands could not be broadcast together with shapes
Để nội suy giá trị của biến phụ thuộc y tại một số điểm độc lập X bằng phép nội suy tuyến tính, chúng tôi sẽ lấy hai điểm, tức là nếu chúng tôi cần nội suy y tương ứng với X nằm giữa X0 và X1 thì chúng tôi sẽ lấy hai điểm [x0, Y0] và [ x1, y1] và xây dựng các nội suy tuyến tính là đường thẳng giữa các điểm này, tức là.Linear Interpolation, we take two points i.e. if we need to interpolate y corresponding to x which lies between x0 and x1 then we take two points [x0, y0] and
[x1, y1] and constructs Linear Interpolants which is the straight line between these points i.e.
y - y0 = [[y1 - y0]/[x1 - x0]] * [x - x0]
Và nếu cần có giá trị của Y thì sử dụng phương trình trên, chúng tôi tính toán YP tại x = xp As:
yp = y0 + [[y1 - y0]/[x1 - x0]] * [xp - x0]
Tương tự, nếu chúng ta cần nội suy y tương ứng với x nằm giữa x1 và x2 thì chúng ta sẽ lấy hai điểm [x1, y1] và [x2, y2] và xây dựng các nội suy tuyến tính là đường thẳng giữa các điểm này, tức là.Linear Interpolants which is the straight line between these points i.e.
y - y1 = [[y2 - y1]/[x2 - x1]] * [x - x1]
Và nếu cần có giá trị của Y thì sử dụng phương trình trên, chúng tôi tính toán YP tại x = xp As:
yp = y1 + [[y2 - y1]/[x2 - x1]] * [xp - x1]
Chương trình Python này thực hiện thuật toán nội suy tuyến tính như đã thảo luận ở trên để nội suy giá trị trung gian.Linear interpolation algorithm as discussed above to interpolate intermediate value.
Mã nguồn Python: iterpolation tuyến tính
# Linear interpolation in python
# Input section
# Reading first point
print['Enter first point:']
x0 = float[input['x0 = ']]
y0 = float[input['y0 = ']]
# Reading second point
print['Enter second point:']
x1 = float[input['x1 = ']]
y1 = float[input['y1 = ']]
# Reading calculation point
xp = float[input['Enter calculation point xp: ']]
# Calculating interpolated value
yp = y0 + [[y1-y0]/[x1-x0]] * [xp - x0]
# Displaying result
print['Interpolated value at %0.4f is %0.4f' %[xp,yp]]
Đầu ra: Nội suy tuyến tính Python
Hãy xem xét chúng tôi có vấn đề nội suy được nêu là: "Từ một số quan sát, người ta thấy rằng áp suất được ghi ở nhiệt độ 35 ° C là 5,6kPa và ở 40 ° C là 7,4 kPa. Sau đó, nó được yêu cầu sử dụng áp suất ở 37 ° C mà không Bảng quan sát. Vì vậy, giá trị áp suất ở 37 ° C cần được nội suy và điều này có thể được tính toán bằng chương trình trên như: "
x = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] y = [4, 7, 11, 16, 22, 29, 38, 49, 63, 80]0