python多维数组拟合_Python实现二维曲线拟合的方法

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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值