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发腾讯微博代码分享
Jan 10 Python
Python计算三维矢量幅度的方法
Jun 15 Python
python Celery定时任务的示例
Mar 13 Python
Python列表生成式与生成器操作示例
Aug 01 Python
python openpyxl使用方法详解
Jul 18 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
Python的三个重要函数详解
Jan 18 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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/04/17 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
星球大战与Python之间的那些事
2016/01/07 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
python字符串与url编码的转换实例
2018/05/10 Python
python代码编写计算器小程序
2020/03/30 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
Collection和Collections的区别
2016/05/02 面试题
Oracle的内存结构(Memory structures)
2015/06/10 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
文科生自我鉴定
2014/02/15 职场文书
纠风工作实施方案
2014/03/15 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
预备党员党支部意见
2015/06/02 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js