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 ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
Python实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
Python中join和split用法实例
Apr 14 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
Python求离散序列导数的示例
Jul 10 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
scrapy-splash简单使用详解
Feb 21 Python
总结Python连接CS2000的详细步骤
Jun 23 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python调用C++程序的方法详解
2017/01/24 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
公司会计主管岗位责任制
2014/03/01 职场文书
投标服务承诺书
2014/05/28 职场文书
购房委托书范本
2014/09/18 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python