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中操作字符串之startswith()方法的使用
May 20 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
python解析json串与正则匹配对比方法
Dec 20 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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通用检测函数集合
2006/11/25 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
php异常处理使用示例
2014/02/25 PHP
php HTML无刷新提交表单
2016/04/05 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
python实现Windows电脑定时关机
2018/06/20 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
政风行风建设整改方案
2014/10/27 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
SpringBoot详解执行过程
2022/07/15 Java/Android