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按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python绘制热力图heatmap
Mar 23 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
PyTorch的Debug指南
May 07 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 Python
Python anaconda安装库命令详解
Oct 16 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数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
模拟select的代码
2011/10/19 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
python非递归全排列实现方法
2017/04/10 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
华为的Java面试题
2014/03/07 面试题
2014年上半年工作自我评价
2014/01/18 职场文书
开业典礼主持词
2014/03/21 职场文书
应届生找工作求职信
2014/06/24 职场文书
开发房地产协议书
2014/09/14 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
社区活动总结范文
2015/05/07 职场文书
集结号观后感
2015/06/08 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL