Python实现分段线性插值


Posted in Python onDecember 17, 2018

本文实例为大家分享了Python实现分段线性插值的具体代码,供大家参考,具体内容如下

函数:

Python实现分段线性插值

算法

这个算法不算难。甚至可以说是非常简陋。但是在代码实现上却比之前的稍微麻烦点。主要体现在分段上。

图像效果

Python实现分段线性插值

代码

import numpy as np
from sympy import *
import matplotlib.pyplot as plt


def f(x):
 return 1 / (1 + x ** 2)


def cal(begin, end):
 by = f(begin)
 ey = f(end)
 I = (n - end) / (begin - end) * by + (n - begin) / (end - begin) * ey
 return I


def calnf(x):
 nf = []
 for i in range(len(x) - 1):
  nf.append(cal(x[i], x[i + 1]))
 return nf


def calf(f, x):
 y = []
 for i in x:
  y.append(f.subs(n, i))
 return y


def nfSub(x, nf):
 tempx = np.array(range(11)) - 5
 dx = []
 for i in range(10):
  labelx = []
  for j in range(len(x)):
   if x[j] >= tempx[i] and x[j] < tempx[i + 1]:
    labelx.append(x[j])
   elif i == 9 and x[j] >= tempx[i] and x[j] <= tempx[i + 1]:
    labelx.append(x[j])
  dx = dx + calf(nf[i], labelx)
 return np.array(dx)


def draw(nf):
 plt.rcParams['font.sans-serif'] = ['SimHei']
 plt.rcParams['axes.unicode_minus'] = False
 x = np.linspace(-5, 5, 101)
 y = f(x)
 Ly = nfSub(x, nf)
 plt.plot(x, y, label='原函数')
 plt.plot(x, Ly, label='分段线性插值函数')
 plt.xlabel('x')
 plt.ylabel('y')
 plt.legend()

 plt.savefig('1.png')
 plt.show()


def lossCal(nf):
 x = np.linspace(-5, 5, 101)
 y = f(x)
 Ly = nfSub(x, nf)
 Ly = np.array(Ly)
 temp = Ly - y
 temp = abs(temp)
 print(temp.mean())


if __name__ == '__main__':
 x = np.array(range(11)) - 5
 y = f(x)

 n, m = symbols('n m')
 init_printing(use_unicode=True)

 nf = calnf(x)
 draw(nf)
 lossCal(nf)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用select模块实现非阻塞的IO
Feb 03 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
深入解析Python中的上下文管理器
Jun 28 Python
python+splinter自动刷新抢票功能
Sep 25 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
Python面向对象程序设计示例小结
Jan 30 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
python函数声明和调用定义及原理详解
Dec 02 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
如何基于Python实现自动扫雷
Jan 06 Python
pytorch之inception_v3的实现案例
Jan 06 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
Python 获取主机ip与hostname的方法
Dec 17 #Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 #Python
python样条插值的实现代码
Dec 17 #Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 #Python
python3爬虫获取html内容及各属性值的方法
Dec 17 #Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 #Python
python实现三次样条插值
Dec 17 #Python
You might like
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
php实现字符串翻转的方法
2015/03/27 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
python中的随机函数random的用法示例
2018/01/27 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
宣传标语大全
2014/07/01 职场文书
李白故里导游词
2015/02/12 职场文书
北京导游词
2015/02/12 职场文书
2015初中团委工作总结
2015/07/28 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
用Python创建简易网站图文教程
2021/06/11 Python