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获取当前时间对应unix时间戳的方法
May 15 Python
Python进阶篇之字典操作总结
Nov 16 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python抓取需要扫微信登陆页面
Apr 29 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
如何在django中实现分页功能
Apr 22 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
TensorFlow的自动求导原理分析
May 26 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函数代码
2010/04/22 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python使用sorted排序的方法小结
2017/07/28 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Python正则表达式学习小例子
2020/03/03 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
python为什么要安装到c盘
2020/07/20 Python
linux面试题参考答案(11)
2012/05/01 面试题
写好自荐信的要点
2013/11/06 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
开学典礼策划方案
2014/05/28 职场文书
验房委托书
2014/08/30 职场文书
学前教育专业求职信
2014/09/02 职场文书
党员民主评议自我评价
2014/10/20 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
数学备课组工作总结
2015/08/12 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技
mysql中关键词exists的用法实例详解
2022/06/10 MySQL