Recently, the class often needs interpolation and fitting. I think I need to summarize the tools used. I mainly use three ways to realize them.
matlab
1. matlab toolbox is preferred
Give the prepared data to the variables in advance (I don't remember what it should be called here, but put down my data here)
x = [760,2240,3480,3805,4720,5960,7200,9920] y1 = [273,215,153.5,111.5,83,64,53,47.5]
Enter after
cftool
After that, you will enter the toolbox interface. The meaning of fitting parameters and what fitting to choose are not introduced here. You can choose freely
Select as follows to enter the normal drawing page
You can look at the graphics like an ordinary drawing
2. Using the fitting function ployfit
polyfit function is a function used for curve fitting in matlab. Its mathematical basis is the least square curve fitting principle. Curve fitting: when the data set on the discrete point is known, that is, the function value on the point set is known, an analytical function (its graph is a curve) is constructed to make it as close to the given value as possible on the original discrete point.
The example I use here is as follows:
x=[760,2240,3480,3805,4720,5960,7200,9920]; y1=[273,215,153.5,111.5,83,64,53,47.5]; y2=[215,211.5,172.5,125,98,80,69,64.5]; y3=[153.5,172.5,182.5,154.5,113.5,87.5,71.5,64]; y4=[111.5,125,154.5,171.5,149,113.5,93,83]; P1 = polyfit(x,y1,3); % Get a polynomial, followed by the degree of the polynomial P2 = polyfit(x,y2,3); % Get polynomial P3 = polyfit(x,y3,3); % Get polynomial P4 = polyfit(x,y4,3); % Get polynomial %mapping xi = 0:100:10000; yy1 = polyval(P1,xi); yy2 = polyval(P2,xi); yy3 = polyval(P3,xi); yy4 = polyval(P4,xi); subplot(2,2,1) plot(xi,yy1,x,y1,'r*'); subplot(2,2,2) plot(xi,yy2,x,y2,'r*'); subplot(2,2,3) plot(xi,yy3,x,y3,'r*'); subplot(2,2,4) plot(xi,yy4,x,y4,'r*'); hold on
The image results are as follows
It can be seen that the fitting effect is also good.
excle
First, prepare the required data
Select more from the trend line to enter the rich settings page
The formula and R square can be shown at the bottom. R square is related to the correlation coefficient. There is no derivation here. Basically, you only need to know that the closer the value is to 1, the better the fitting effect is.
python
python is also a good fitting tool. The fitting function is very similar to matlab
import numpy as np import matplotlib.pyplot as plt x = [760,2240,3480,3805,4720,5960,7200,9920] y = [273,215,153.5,111.5,83,64,53,47.5] plt.scatter(x,y,color="red") plt.title("demo") plt.xlabel("X") plt.ylabel("Y") linear_model=np.polyfit(x,y,3) # Cubic fitting linear_model_fn=np.poly1d(linear_model) # Get the fitting function x_s=np.arange(0,10000) #Generation point plt.plot(x_s,linear_model_fn(x_s),color="green") #Draw fitting curve plt.show()
The fitting results are as follows. Here we can directly move the mouse to see the coordinates, which is more convenient than matlab.
Add horizontal and vertical curves to view the required data
import numpy as np import matplotlib.pyplot as plt x = [760,2240,3480,3805,4720,5960,7200,9920] y = [273,215,153.5,111.5,83,64,53,47.5] plt.scatter(x,y,color="red") plt.title("demo") plt.xlabel("X") plt.ylabel("Y") linear_model=np.polyfit(x,y,3) # Cubic fitting linear_model_fn=np.poly1d(linear_model) # Get the fitting function x_s=np.arange(0,10500,100) #Generation point plt.plot(x_s,linear_model_fn(x_s),color="green",linewidth=2) #Draw fitting curve x1 = [375,875,2675,3975,5775,7075,8875,10125] y1 = linear_model_fn(x1) for x in x1: plt.plot([x,x],[0,linear_model_fn(x)],color="black",linewidth=1) plt.plot([0,x1[-1]],[0,0],color="black",linewidth=1) plt.plot([0,0],[0,linear_model_fn(0)],color="black",linewidth=1) plt.show()
Just traverse the required points one by one
This is basically enough for my class