如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
from numpy import * import numpy as np import matplotlib.pyplot as plt plt.close() fig = plt.figure() plt.grid( True ) plt.axis([ 0 , 10 , 0 , 8 ]) #列出数据 point = [[ 1 , 2 ],[ 2 , 3 ],[ 3 , 6 ],[ 4 , 7 ],[ 6 , 5 ],[ 7 , 3 ],[ 8 , 2 ]] plt.xlabel( "X" ) plt.ylabel( "Y" ) #用于求出矩阵中各点的值 XSum = 0.0 X2Sum = 0.0 X3Sum = 0.0 X4Sum = 0.0 ISum = 0.0 YSum = 0.0 XYSum = 0.0 X2YSum = 0.0 #列出各点的位置 for i in range ( 0 , len (point)): xi = point[i][ 0 ] yi = point[i][ 1 ] plt.scatter(xi,yi,color = "red" ) show_point = "(" + str (xi) + "," + str (yi) + ")" plt.text(xi,yi,show_point) XSum = XSum + xi X2Sum = X2Sum + xi * * 2 X3Sum = X3Sum + xi * * 3 X4Sum = X4Sum + xi * * 4 ISum = ISum + 1 YSum = YSum + yi XYSum = XYSum + xi * yi X2YSum = X2YSum + xi * * 2 * yi # 进行矩阵运算 # _mat1 设为 mat1 的逆矩阵 m1 = [[ISum,XSum, X2Sum],[XSum, X2Sum, X3Sum],[X2Sum, X3Sum, X4Sum]] mat1 = np.matrix(m1) m2 = [[YSum], [XYSum], [X2YSum]] mat2 = np.matrix(m2) _mat1 = mat1.getI() mat3 = _mat1 * mat2 # 用list来提取矩阵数据 m3 = mat3.tolist() a = m3[ 0 ][ 0 ] b = m3[ 1 ][ 0 ] c = m3[ 2 ][ 0 ] # 绘制回归线 x = np.linspace( 0 , 10 ) y = a + b * x + c * x * * 2 plt.plot(x,y) show_line = "y=" + str (a) + "+(" + str (b) + "x)" + "+(" + str (c) + "x2)" ; plt.title(show_line) plt.show() |
以上这篇Python实现二维曲线拟合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/changye777/article/details/78437479