• 背景


最近在抖音直播数学答疑的时候,恰好有一位朋友问到了这个问题,已知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. hibernate三级缓存概括
  2. php适配器模式应用,什么是适配器模式,它有哪些应用场景
  3. Sentinel 发布里程碑版本,添加集群流控功能
  4. *.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z
  5. 操作系统:Linux 环境变量配置的 6 种方法!
  6. (转)WCF教程系列(1)-创建第一个WCF程序
  7. P4139-上帝与集合的正确用法【欧拉定理】
  8. spring pom设置_Spring社交Twitter设置
  9. mysql的相关技术说明_MySQL 系统架构 说明
  10. eslint是什么_一起来用 eslint 吧
  11. Axure自动幻灯片制作
  12. 土地转移矩阵的计算步骤
  13. CRMEB制作docker-compose
  14. Android OpenGL ES 2.0(六)--- 纹理过滤
  15. 现代通用计算机析雏形,计算机作业一、选择题 1.______B______是现代通用计算机的雏形。 A. 宾州大学于1946年2月研制成功的E...
  16. 独上高楼望尽天涯路;为伊得人憔悴、衣带渐宽终不悔;几处早莺争暖树,乱花渐欲迷人眼;梅先菊后何须较、好似人生各有时;
  17. java.lang.Integer常用方法
  18. 题解 UVA12304 【2D Geometry 110 in 1!】
  19. 诱人的Siri 开启人机交互的大门
  20. Linux libusb USB开发(一)—— USB设备基础概念

热门文章

  1. TS流基本知识【HI3798 AVPLAY播放TS流】
  2. MapGIS67及Map2Shp安装教程
  3. 有感于《游戏脚本高级编程》的劣质翻译
  4. VSCode 中文乱码设置
  5. 【D-S证据理论】学习笔记
  6. python程序设计与实验_用于创建实验的Python应用程序和库
  7. 朴素模式匹配算法和KMP匹配算法 详细
  8. matlab中英文文献,matlab外文文献
  9. c语言的编译器手机版,C语言编译器下载_C语言编译器APP手机最新版安装 - 风云下载...
  10. 用flash做古诗动画_Flash制作跟我学 用遮罩技术制作古诗动画-FLASH课件制作(FLASH课件制作教程)-flash课件吧(湖北金鹰)...