import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
from matplotlib.pylab import mpl mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # 计算以p为参数的直线与原始数据之间误差
def f(p):
k, b = p
return Y - (k * X + b) if __name__ == '__main__':
X = np.array([8.19, 2.72, 6.39, 8.71, 4.7, 2.66, 3.78])
Y = np.array([7.01, 2.78, 6.47, 6.71, 4.1, 4.23, 4.05])
# leastsq使得f的输出数组的平方和最小,参数初始值为[1,0]
r = leastsq(f, [1, 0]) # 数初始值可以随便设个合理的
k, b = r[0]
x = np.linspace(0, 10, 1000)
y = k * x + b # 画散点图,s是点的大小
plt.scatter(X, Y, s=100, alpha=1.0, marker='o', label=u'数据点')
# 话拟合曲线,linewidth是线宽
plt.plot(x, y, color='r', linewidth=2, linestyle="-", markersize=20, label=u'拟合曲线')
plt.xlabel('安培/A')
plt.ylabel('伏特/V')
plt.legend(loc=0, numpoints=1) # 显示点和线的说明
# plt.plot(X, Y)
plt.show() print('k = ', k)
print('b = ', b)

k = 0.6134953491930442
b = 1.794092543259387

  • 下面是用anaconda写的
import numpy as np
import matplotlib.pyplot as plt np.set_printoptions(suppress=True) # 取消科学计数法 x = np.array([8.19,2.72,6.39,8.71,4.7,2.66,3.78])
y = np.array([7.01,2.78,6.47,6.71,4.1,4.23,4.05]) plt.figure()
plt.scatter(x,y)
plt.show()

from scipy.optimize import leastsq

def error(p,x,y):
return p[0]*x + p[1] - y p0 = [2,2] #设置初始值 res = leastsq(error,p0,args=(x,y)) k,b = res[0]
print(k)
print(b)

0.6134953485739788
1.7940925393506084
x1 = np.linspace(0,9,1000)
y1 = k*x1+b
plt.scatter(x,y,color= 'orange',label = 'Sample Point')
plt.plot(x1,y1,color= 'red',label = 'Fitting Line')
plt.legend()
plt.show()

最新文章

  1. js 对多sheet Excel赋值操作
  2. MVC之路随记3--Html辅助方法
  3. Android 生成颜色器
  4. BZOJ1816 [Cqoi2010]扑克牌
  5. ubuntu14.04配置Hive1.2.1
  6. UDP丢包和无序 问题的解决方法
  7. Extjs事件继承注意事项
  8. mysql-积累管理sql语句
  9. discuz x2 个人资料项排序问题解决方法、添加自定义字段、修改栏目名称和介绍
  10. Html input 限制输入中英文字符,及字符数量统计
  11. Google开源的Deep-Learning项目word2vec
  12. HTML学习(八)列表和块
  13. redis5.0.4多实例安装
  14. flutter-开发总结
  15. 【python接口自动化框架-unittest】【一】unittest单元测试框架概念
  16. Promise的简单用法
  17. 深度学习原理与框架-RNN网络框架-LSTM框架 1.控制门单元 2.遗忘门单元 3.记忆门单元 4.控制门单元更新 5.输出门单元 6.LSTM网络结构
  18. C++ MFC常用函数(转)
  19. MyEclipse中设置jsp页面为默认utf-8编码
  20. BCGcontrolBar(一) MFC界面库简介

热门文章

  1. js工厂模式和构造函数
  2. vue开发组件开发中的小技巧
  3. .NET 反向代理-YARP 根据域名转发
  4. 2.1pip的安装和使用
  5. 7.云原生之Docker容器Dockerfile镜像构建浅析与实践
  6. ProxySQL 定时调度
  7. 路径参数:Path Parameters
  8. Elasticsearch:使用_update_by_query更新文档
  9. MySQL 中 datetime 和 timestamp 的区别与选择
  10. 自定义mapping与常见参数