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批量发送post请求的实现代码
May 05 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
详解python做UI界面的方法
Feb 27 Python
python的依赖管理的实现
May 14 Python
python实现批量nii文件转换为png图像
Jul 18 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
Django REST Swagger实现指定api参数
Jul 07 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
Django中的DateTimeField和DateField实现
Feb 24 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
谈谈PHP语法(4)
2006/10/09 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
优秀员工个人的自我评价
2013/11/29 职场文书
企业年会主持词
2014/03/27 职场文书
单位接收证明格式
2015/06/18 职场文书
宾馆客房管理制度
2015/08/06 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python