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中__call__用法实例
Aug 29 Python
简单说明Python中的装饰器的用法
Apr 24 Python
Python自动重试HTTP连接装饰器
Apr 28 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
pandas ix &amp;iloc &amp;loc的区别
Jan 10 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
一分钟理解js闭包
2016/05/04 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
python绘制趋势图的示例
2020/09/17 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
大学应届生的自我评价
2014/03/06 职场文书
教堂婚礼主持词
2014/03/14 职场文书
职工小家建设活动方案
2014/08/25 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
库房管理员岗位职责
2015/02/12 职场文书
支行行长岗位职责
2015/02/15 职场文书
体育委员竞选稿
2015/11/21 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS