如下所示:
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