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计算回文数的方法
Mar 11 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python3计算三角形的面积代码
Dec 18 Python
pycharm重命名文件的方法步骤
Jul 29 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
python 实现两个线程交替执行
May 02 Python
python名片管理系统开发
Jun 18 Python
python用分数表示矩阵的方法实例
Jan 11 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/10/09 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
详解Document.Cookie
2015/12/25 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
Python探索之创建二叉树
2017/10/25 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
python 下载文件的几种方法汇总
2021/01/06 Python
python中常用的数据结构介绍
2021/01/12 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
工作决心书范文
2014/03/11 职场文书
奥利奥广告词
2014/03/20 职场文书
我的小天地教学反思
2014/04/30 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python
Python如何使用循环结构和分支结构
2022/04/13 Python