• 背景


最近在抖音直播数学答疑的时候,恰好有一位朋友问到了这个问题,已知x,z,y三列数据如上图所示,请问y的最后一位数是多少?

乍一看,还以为很简单,拎(抡)起粉笔就一顿操作(猛如虎)

(1)分别将x,z,y三列数据记作3个数列{xn},{zn}\{x_n\}, \{z_n\}{xn​},{zn​} 和 {yn}\{y_n\}{yn​}, 其中n表示其所在数列的序号或位置。

(2)很容易发现如下规律
zn−xn=6(1)z_n-x_n=6 \tag{1}zn​−xn​=6(1)

xn+yn=xn+1(2)x_n+y_n=x_{n+1} \tag{2}xn​+yn​=xn+1​(2)
以及

zn+yn=zn+1(3)z_n+y_n=z_{n+1} \tag{3}zn​+yn​=zn+1​(3)

将(2)和(3)组合一下便得到(1),即

zn−xn=zn+1−xn+1=6(4)z_n-x_n=z_{n+1}-x_{n+1} =6 \tag{4}zn​−xn​=zn+1​−xn+1​=6(4)

而问题相当于是要求{yn}\{y_n\}{yn​}的下一个yn+1y_{n+1}yn+1​,上面3个关系式中却没有任何项涉及到,故这些关系不能解决根本问题,现在摆在我们面前的有两条路

  • 找出数列 {xn}\{x_n\}{xn​} ,{zn}\{z_n\}{zn​} 的下一项 m 和 m+6,然后利用(1)-(4)的关系进行求解yny_{n}yn​ 下一项 λ\lambdaλ;
序号 1 2 3 4 5 6 7 8 9
x -5 5 0 2 9 6 4 10 m
z 1 11 6 8 15 12 10 16 m+6
y 10 -5 2 7 -3 -2 6 λ\lambdaλ
  • 直接找出 {yn}和{xn},{zn}\{y_n\} 和\{x_n\}, \{z_n\}{yn​}和{xn​},{zn​} 之间的关系表达式, 即

yn=f(xn,zn)(5)y_n = f(x_n, z_n) \tag{5}yn​=f(xn​,zn​)(5)

由 {xn}\{x_n\}{xn​} 和 {zn}\{z_n\}{zn​}的关系,(5)又可以改写成

yn=f(xn)(6)y_n = f(x_n) \tag{6}yn​=f(xn​)(6)

第一条道路相当于绕了一圈,简称间接法,第二条道路更直接,简称直接法,我们先采用直接法来进行解答

  • 先画出{yn}和{xn}\{y_n\} 和\{x_n\}{yn​}和{xn​}散点图

为了找出{yn}和{xn}\{y_n\} 和\{x_n\}{yn​}和{xn​}之间的函数关系,我们可以先建立一个最简单最纯粹的假设

y=ax+b(7)y =ax+b \tag{7}y=ax+b(7)

没错,就是最简单的线性关系,然后拟合出来系数 a 和 b分别是 -0.97580645和5.0702765 (保留8位小数),这样{yn}和{xn}\{y_n\} 和\{x_n\}{yn​}和{xn​}之间的函数关系便是

y=−0.9758x+5.07(8)y = -0.9758 x + 5.07\tag{8}y=−0.9758x+5.07(8)

然后画出来拟合函数,观察其与原数列之间的差距


我们看到除了第1个点和第5个点靠得近,其余的点差距还是挺大的,既然一次拟合性能太差,那么我来个2次函数呗,即假设

y=ax2+bx+c(9)y =ax^2+bx+c \tag{9}y=ax2+bx+c(9)


观察发现2次函数拟合和1次函数拟合没啥大的区别,再继续提高拟合函数次数

4次时候

观察发现第1,3,4,5四个点都靠的比较近,差距在缩小,继续提高次数
5次的时候

观察发现第2,6,7三个点拟合的还不够完美,继续提高次数

6次的时候

此时,拟合曲线恰好经过数列{yn}\{y_n\}{yn​}的7点,可以认为拟合效果比较完美,此时的拟合函数为

y=−0.01265x6+0.2035x5−0.591x4−4.176x3+22.7x2−24.32x+2(10)y = -0.01265 x^6 + 0.2035 x^5 - 0.591 x^4 - 4.176 x^3 + 22.7 x^2 - 24.32 x + 2 \tag{10}y=−0.01265x6+0.2035x5−0.591x4−4.176x3+22.7x2−24.32x+2(10)

将x = 10代入上(10)式,求得 y = -351.60606060605966
从y值可以猜出这是一个无限循环小数,循环节为6060,故最后所求的y值为

−351.6060˙-351.\dot{6060}−351.6060˙

  • 完整代码
# -*- coding: utf-8 -*-
"""
Project name: 找规律
Description:
Created on Sun Sep 20 17:27:34 2020
@author: 帅帅de三叔
"""
import numpy as np #导入数值分析模块
import matplotlib.pyplot as plt #导入绘图模块x0 = [1, 2, 3, 4, 5, 6, 7]
x = [-5, 5, 0, 2, 9, 6, 4]
z = [1, 11, 6, 8, 15, 12, 10]
y = [10, -5, 2, 7, -3, -2, 6]plt.figure(figsize = (6,4))
plt.scatter(x0, x, color = 'r', label = "x")
plt.scatter(x0, z, color = 'g', label = "z")
plt.scatter(x0, y, color ="brown", label = "y")coef = np.polyfit(x, y, 6) #求出系数
print('拟合函数的系数 :\n', coef ) #打印出系数
funExpression = np.poly1d(coef) #求出表达式
print('拟合表达式 :\n',funExpression)  #打印出表达式
yFit =np.polyval(funExpression, x) #求出拟合函数的y值
print("拟合出来的y值:\n", yFit)
plt.plot(x0, yFit, color = 'blue', label ="fitting line")nextY = np.polyval(funExpression, 10) #求出拟合函数的y值
print("所求的y的值为:", nextY )
plt.legend(loc = "upper left")
plt.show()

参考文献
1, https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.polyfit.html

python函数拟合相关推荐

  1. python函数拟合不规则曲线_python曲线拟合

    Python曲线拟合 前言 这篇文章的由来:前几天在做大学物理居家实验水滴法测量声速的时候需要使用phyphox软件导出的数据拟合y=1/(a+b*x)曲线.虽然老师要求使用Origin软件拟合,但是 ...

  2. python函数拟合编程_Python应用实现双指数函数及拟合代码实例

    双指数函数 待拟合曲线为 y(x) = bepx + ceqx import matplotlib.pyplot as plt x = ([0.05, 0.1, 0.15, 0.2, 0.25, 0. ...

  3. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...

    第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式.具体示例如下. ###拟合年龄 import numpy as np import matplotlib.pyplot as p ...

  4. python函数拟合求导_python – 使用scipy curve_fit通过两个数据点拟合指数函数

    如果你想从两个数据点找到目标函数中的两个参数,这对于最小二乘拟合不一定是个问题:只需求解联立方程式y1 = b(x1 a)^ p和y2 = b( x2 a)^ p参数a和b: import numpy ...

  5. python函数拟合不规则曲线_python中的多变量(多项式)最佳拟合曲线?

    接受的答复 this question 提供了 a small multi poly fit library,它将使用numpy完成所需的任务,您可以将结果插入到绘图中,如下所述. 您只需将x和y点的 ...

  6. Python对自定义离散点进行指定多项式函数拟合

    自定义离散点进行指定多项式函数拟合 用户自己自己输入坐标点,拟合函数可根据用户输入的多项式的最高次方进行自动拟合函数,拟合方法采用最小二乘法进行函数拟合. (1,2),(2,5),(3,10),(4, ...

  7. python散点图拟合曲线-python散点图拟合

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 下面是我在文本文件中绘制数据散点图的代码. 我打开的文件包含两列. 左列为x坐标 ...

  8. [转载] Python 多项式拟合(一元回归)

    参考链接: Python | 多项式回归的实现 一元一阶线性拟合: 假设存在一条线性函数尽量能满足所有的点:y=ax+b .对所有点的的公式为: 残差值β = 实际值y - 估计值y,β 应尽量小,当 ...

  9. python数据拟合

    python数据拟合 文章目录 python数据拟合 1.多项式拟合 1.1 多项式拟合描述 1.2 多项式拟合实现 2.自定义函数拟合 2.1 自定义函数拟合描述 2.1 自定义函数拟合的实现 1. ...

  10. Python数据拟合幂函数y=ax^b

    Python数据拟合--幂函数y=ax^b from scipy.optimize import curve_fit import numpy as np import matplotlib.pypl ...

最新文章

  1. 《2020城市大脑全球标准研究报告》全文正式开放申领
  2. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
  3. android eclipse 导入idea项目
  4. 《走遍中国》珍藏版(七)
  5. IPMI远程管理一点记录
  6. ppt计算机控制系统实例,第部分计算机控制系统的应用实例.ppt
  7. Git-根据tag创建分支
  8. 2021了,不会还有测试人员认为Jmeter就等于性能测试吧!
  9. nginx做下载文件服务器
  10. 听杨中科吹牛B—《杨中科:我的大学生活》
  11. 大数据第一季--java基础(day2)-徐培成-专题视频课程
  12. 新闻发布系统设计说明书
  13. 爬取当当网评论(1)
  14. TIJ阅读笔记(第十四章)[转]
  15. 查看centos是多少位的方式
  16. 【杂谈】从零开始组建团队开发一款APP的人力成本以及时间成本解析
  17. 能够PING通同网段的节点, 但却PING不通其他网段的所有节点的最可能的原因是
  18. mfc 多边形裁剪算法
  19. java_微信公众号扫码绑定个人信息(微信公众号场景值二维码的使用)
  20. python模拟鼠标键盘点击,简单自动化动物餐厅

热门文章

  1. Jmeter 面试题
  2. python函数和代码复用思维导图_函数式编程库:Ramda函数思维导图,帮你快速选择要用的函数...
  3. 巴特沃斯(Butterworth)滤波器的设计和幅频特性曲线绘制
  4. win7用计算机名共享打印机,WIN7共享打印机 可以同时多少台电脑共享一台打印机-win7一键共享打印机,win7一键共享工具软件...
  5. Linux显示器超频黑屏怎么办,显示器超频黑屏怎么办
  6. idea svn分支与分支合并_Idea svn 合并分支方式(坑)
  7. linux 打包qt可执行文件
  8. dcs world f15c教学_开源声码器WORLD在语音合成中的应用
  9. 初级计算机课,教学ppt课件计算机初级培训.ppt
  10. rs485接收中断函数使能_RS485通讯几种常见问题