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实现爬虫下载漫画示例
Feb 16 Python
scrapy爬虫完整实例
Jan 25 Python
对Python中9种生成新对象的方法总结
May 23 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
python配置文件写入过程详解
Oct 19 Python
Django实现分页显示效果
Oct 31 Python
Python 使用type来定义类的实现
Nov 19 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
如何在向量化NumPy数组上进行移动窗口
May 18 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 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python读写unicode文件的方法
2015/07/10 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
用python实现名片管理系统
2020/06/18 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
入党申请书自我鉴定
2013/10/12 职场文书
食品安全工作方案
2014/05/07 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
高考升学宴主持词
2019/06/21 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python