![python-曲线拟合-原理-代码_第1页](http://file4.renrendoc.com/view/9cf51f9a9a1f7d11e19036652b5ac489/9cf51f9a9a1f7d11e19036652b5ac4891.gif)
![python-曲线拟合-原理-代码_第2页](http://file4.renrendoc.com/view/9cf51f9a9a1f7d11e19036652b5ac489/9cf51f9a9a1f7d11e19036652b5ac4892.gif)
![python-曲线拟合-原理-代码_第3页](http://file4.renrendoc.com/view/9cf51f9a9a1f7d11e19036652b5ac489/9cf51f9a9a1f7d11e19036652b5ac4893.gif)
![python-曲线拟合-原理-代码_第4页](http://file4.renrendoc.com/view/9cf51f9a9a1f7d11e19036652b5ac489/9cf51f9a9a1f7d11e19036652b5ac4894.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概念最小二乘法多项式曲线拟合,根据给定的m个点,并不要求这条曲线精确地经过这些点,而是曲线y=f(x)的近似曲线y=φ(x)。原理[原理局部由个人根据互联网上的资料进行总结,希望对大家能有用]给定数据点pi(xi,yi),其中i=1,2,…,m。求近似曲线y=φ(x)。并且使得近似曲线与y=f(x)的偏差最小。近似曲线在点pi处的偏差δi=φ(xi)-y,i=1,2,...,m。常见的曲线拟合方法:按偏差平方和最小的原那么选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。推导过程:1.设拟合多项式为:2.各点到这条曲线的距离之和,即偏差平方和如下:3.为了求得符合条件的a值,对等式右边求ai偏导数,因而我们得到了:.......4.将等式左边进行一下化简,然后应该可以得到下面的等式:.......5.把这些等式表示成矩阵的形式,就可以得到下面的矩阵:6.将这个范德蒙得矩阵化简后可得到:7.也就是说X*A=Y,那么A=(X'*X)-1*X'*Y,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。实现运行前提:Python运行环境与编辑环境;Matplotlib.pyplot图形库,可用于快速绘制2D图表,与matlab中的plot命令类似,而且用法也根本相同。代码:[python]viewplaincopy#
coding=utf-8'''''作者:Jairus
Chan程序:多项式曲线拟合算法'''import
matplotlib.pyplot
as
plt
import
math
import
numpy
import
random
fig
=
plt.figure()
ax
=
fig.add_subplot(111)
#阶数为9阶order=9#生成曲线上的各个点x
=
numpy.arange(-1,1,)
y
=
[((a*a-1)*(a*a-1)*(a*a-1)+)*numpy.sin(a*2)
for
a
in
x]
#ax.plot(x,y,color='r',linestyle='-',marker='')#,label="(a*a-1)*(a*a-1)*(a*a-1)+0.5"#生成的曲线上的各个点偏移一下,并放入到xa,ya中去i=0xa=[]
ya=[]
for
xx
in
x:
yy=y[i]
d=float(random.randint(60,140))/100#ax.plot([xx*d],[yy*d],color='m',linestyle='',marker='.')
i+=1
xa.append(xx*d)
ya.append(yy*d)
'''''for
i
in
range(0,5):
xx=float(random.randint(-100,100))/100
yy=float(random.randint(-60,60))/100
xa.append(xx)
ya.append(yy)'''ax.plot(xa,ya,color='m',linestyle='',marker='.')
#进行曲线拟合matA=[]
for
i
in
range(0,order+1):
matA1=[]
for
j
in
range(0,order+1):
tx=
for
k
in
range(0,len(xa)):
dx=
for
l
in
range(0,j+i):
dx=dx*xa[k]
tx+=dx
matA1.append(tx)
matA.append(matA1)
#print(len(xa))#print(matA[0][0])matA=numpy.array(matA)
matB=[]
for
i
in
range(0,order+1):
ty=
for
k
in
range(0,len(xa)):
dy=
for
l
in
range(0,i):
dy=dy*xa[k]
ty+=ya[k]*dy
matB.append(ty)
matB=numpy.array(matB)
matAA=numpy.linalg.solve(matA,matB)
#画出拟合后的曲线#print(matAA)xxa=
numpy.arange(-1,,)
yya=[]
for
i
in
range(0,len(xxa)):
yy=
for
j
in
range(0,order+1):
dy=
for
k
in
range(0,j):
dy*=xxa[i]
dy*=matAA[j]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/TR 23975:2025 EN Traditional Chinese medicine - Priority list of single herbal medicines for developing standards
- 2025年度店铺转租双方责任划分合同
- 2025年度房地产项目风险评估合同模板
- 2025年度财务合同签订与履行管理合同
- 2025年度铸件研发与生产承包协议
- 2025年度员工敬业度提升与企业文化融合合同
- 艺术创作活动的组织与管理计划
- 现代青年财务观念调查计划
- 财务内控体系的构建与完善计划
- 小学美术教育工作规划计划
- 2024新版《药品管理法》培训课件
- 浙江省杭州市2024年中考英语真题(含答案)
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- 2024初中数学课程标准测试题(含答案)精华版
- 人文关怀与优质护理课件
- 知识图谱可视化-Neo4j(windows)
- 光伏电站作业危险点分析及预控措施手册
- 水文流量测验
- 第二讲共振理论、有机酸碱理论
- 研究性学习课题——有趣对联
- 电镀工业园项目可行性研究报告-用于立项备案
评论
0/150
提交评论