python实现拉格朗日插值及作图
本文实例为大家分享了python实现拉格朗日插值及作图,供大家参考,具体内容如下
python代码
import numpy as np import matplotlib.pyplot as plt X = input("x的值:").split(' ') Y = input("y的值:").split(' ') x = input("要预测的值:") print('\n') X = np.array(X).astype(np.float64) Y = np.array(Y).astype(np.float64) x = np.array(x).astype(np.float64) n = len(X) # 原函数 def fun(x): return np.sin(x) # 累乘函数 def T(x, i, X): T_i = 1 for x_i in X: if X[i] == x_i: continue T_i = T_i * (x-x_i) return T_i # 插值基函数 def P(i, x, X, Y): P_i = T(x, i, X)/T(X[i], i, X) * Y[i] return P_i # 计算预测值 def L(x, X, Y): result = 0 for i in range(n): result = result + P(i, x, X, Y) return result y = L(x, X, Y) print("预测结果:" + str(y) + '\n') print("误差:" + str(fun(x) - y)) # 画图 X_n = np.linspace(0, 1, 50) Y_n = fun(X_n) x_n = np.linspace(0, 1, 50) y_n = L(x_n, X, Y) l1, = plt.plot(X_n, Y_n, label='theory') l2, = plt.plot(x_n, y_n, label='prediction',linestyle='--') plt.legend(handles=[l1,l2,],labels=['theory','prediction'], loc='best') plt.show()
代码测试结果(输入方式如图所示):
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python实现的拉格朗日插值法示例
本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解.在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个简单函数,其恰好在各个现测的点取到观测到的值,这个函数可以是代数多项式,三角多项式等. 完整Python示例: # -*- coding:utf-8 -*- #拉格朗日
-
python实现三次样条插值
本文实例为大家分享了python实现三次样条插值的具体代码,供大家参考,具体内容如下 函数: 算法分析 三次样条插值.就是在分段插值的一种情况. 要求: 在每个分段区间上是三次多项式(这就是三次样条中的三次的来源) 在整个区间(开区间)上二阶导数连续(当然啦,这里主要是强调在节点上的连续) 加上边界条件.边界条件只需要给出两个方程.构建一个方程组,就可以解出所有的参数. 这里话,根据第一类样条作为边界.(就是知道两端节点的导数数值,然后来做三次样条插值) 但是这里也分为两种情况,分别是这个数值是
-
python中的插值 scipy-interp的实现代码
具体代码如下所示: import numpy as np from matplotlib import pyplot as plt from scipy.interpolate import interp1d x=np.linspace(0,10*np.pi,num=20) y=np.sin(x) f1=interp1d(x,y,kind='linear')#线性插值 f2=interp1d(x,y,kind='cubic')#三次样条插值 x_pred=np.linspace(0,10*np.
-
Python对数据进行插值和下采样的方法
使用Python进行插值非常方便,可以直接使用scipy中的interpolate import numpy as np x1 = np.linspace(1, 4096, 1024) x_new = np.linspace(1, 4096, 4096) from scipy import interpolate tck = interpolate.splrep(x1, data) y_bspline = interpolate.splev(x_new, tck) 其中y_bspline就是从1
-
python使用插值法画出平滑曲线
本文实例为大家分享了python使用插值法画出平滑曲线的具体代码,供大家参考,具体内容如下 实现所需的库 numpy.scipy.matplotlib 实现所需的方法 插值 nearest:最邻近插值法 zero:阶梯插值 slinear:线性插值 quadratic.cubic:2.3阶B样条曲线插值 拟合和插值的区别 简单来说,插值就是根据原有数据进行填充,最后生成的曲线一定过原有点. 拟合是通过原有数据,调整曲线系数,使得曲线与已知点集的差别(最小二乘)最小,最后生成的曲线不一定经过原有点
-
python用插值法绘制平滑曲线
本文实例为大家分享了python用插值法绘制平滑曲线的具体代码,供大家参考,具体内容如下 原图: 平滑处理后: 代码实现如下: # 1. 随机构造数据 import numpy as np x = range(10) y = np.random.randint(10,size=10) # 2. 绘制原图 import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline # jupyter notebook显示绘
-
python利用插值法对折线进行平滑曲线处理
在用python绘图的时候,经常由于数据的原因导致画出来的图折线分界过于明显,因此需要对原数据绘制的折线进行平滑处理,本文介绍利用插值法进行平滑曲线处理: 实现所需的库 numpy.scipy.matplotlib 插值法实现 nearest:最邻近插值法 zero:阶梯插值 slinear:线性插值 quadratic.cubic:2.3阶B样条曲线插值 - 拟合和插值的区别 1.插值:简单来说,插值就是根据原有数据进行填充,最后生成的曲线一定过原有点. 2拟合:拟合是通过原有数据,调整曲线系
-
python实现各种插值法(数值分析)
一维插值 插值不同于拟合.插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过.常见插值方法有拉格朗日插值法.分段插值法.样条插值法. 拉格朗日插值多项式:当节点数n较大时,拉格朗日插值多项式的次数较高,可能出现不一致的收敛情况,而且计算复杂.随着样点增加,高次插值会带来误差的震动现象称为龙格现象. 分段插值:虽然收敛,但光滑性较差. 样条插值:样条插值是使用一种名为样条的特殊分段多项式进行插值的形式.由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项
-
Python实现线性插值和三次样条插值的示例代码
(1).函数 y = sin(x) (2).数据准备 #数据准备 X=np.arange(-np.pi,np.pi,1) #定义样本点X,从-pi到pi每次间隔1 Y= np.sin(X)#定义样本点Y,形成sin函数 new_x=np.arange(-np.pi,np.pi,0.1) #定义差值点 (3).样条插值 #进行样条差值 import scipy.interpolate as spi #进行一阶样条插值 ipo1=spi.splrep(X,Y,k=1) #样本点导入,生成参数 iy1
-
python实现拉格朗日插值及作图
本文实例为大家分享了python实现拉格朗日插值及作图,供大家参考,具体内容如下 python代码 import numpy as np import matplotlib.pyplot as plt X = input("x的值:").split(' ') Y = input("y的值:").split(' ') x = input("要预测的值:") print('\n') X = np.array(X).astype(np.float64)
-
使用Python中的tkinter模块作图的方法
python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1]已经成为最受欢迎的程序设计语言之一.2011年1月,它被TIOBE编程语言排行榜评为2010年度语言.自从2004年以后,python的使用率是呈线性增长. tkinter模块介绍 tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以
-
python实现数学模型(插值、拟合和微分方程)
问题1 车辆数量估计 题目描述 交通管理部门为了掌握一座桥梁的通行情况,在桥梁的一端每隔一段不等的时间,连续记录1min内通过桥梁的车辆数量,连续观测一天24h的通过车辆,车辆数据如下表所示.试建立模型分析估计这一天中总共有多少车辆通过这座桥梁. python 实现(关键程序) def get_line(xn, yn): def line(x): index = -1 # 找出x所在的区间 for i in range(1, len(xn)): if x <= xn[i]: index = i
-
Python如何根据时间序列数据作图
本例子程序展示了长白山火山气体地球化学2002年观测数据中CO2和He两种气体元素深度的时间序列.程序中用到了常用的时间序列python数据处理方法,箭头标识方法,适合学习基本python作图学习使用.程序中所用到的no09.csv数据样式如下: 代码如下 import pandas as pd import matplotlib.pyplot as plt import datetime df = pd.read_csv('no09.csv') t = df.iloc[0:200, 0] t
-
python如何去除异常值和缺失值的插值
1.使用箱型法去除异常值: import numpy as np import pandas as pd import matplotlib as plt import os data = pd.read_excel('try.xls', header=0) # print(data.shape) # print(data.head(10)) # print(data.describe()) neg_list = ['位移'] print("(1)数据的行数为:") R = data.
-
python实现图像最近邻插值
目录 引言: 1.最近邻插值算法思想 2.python实现最邻近插值 引言: 最近邻插值Nearest Neighbour Interpolate算法是图像处理中普遍使用的图像尺寸缩放算法,由于其实现简单计算速度快的特性深受工程师们的喜爱. 图像插值技术是图像超分辨率领域的重要研究方法之一,其目的是根据已有的低分辨率图像(Low Resolution,LR)获得高分辨率图像(High Resolution,HR). 本文一方面对最邻近插值算法的流程进行分析,另一方面借助python实现基本的最近
-
用Python实现插值算法
数模比赛中,常常需要对数据进行处理和分析,但有时候数据不多,就需要一些方法“模拟产生”一些靠谱的值来满足需求,这就是插值的作用.本文不再具体介绍每个插值算法的内在原理,将直接通过调包实现. 下面,先上三件套,看一下原始数据的大致情况: import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('data.xlsx') 拉格朗日插值算法 原始数据我们采用sin(x)的形式,
随机推荐
- java selenium使用浏览器调试工具实现方法
- 使用aggregate在MongoDB中查询重复数据记录的方法
- 浅析正则表达式中的lastIndex以及预查
- 用replace实现替换正在使用的文件
- Swift学习笔记之构造器重载
- 据说是雅虎的一份PHP面试题附答案
- PHP中几种常见的超时处理全面总结
- 在C语言中使用对数函数的方法
- 求数组最大最小值方法适用于任何数组
- Ajax基础详解教程(二)
- JQuery调用绑定click事件的3种写法
- MongoDB的下载、安装与部署方法
- SQL 判断给定日期值(或时间段)所在星期的星期一和星期天的日期
- Ubuntu apt-get指令autoclean,clean,autoremove的区别
- 简述Java编程之关系操作符
- jQuery学习笔记之jQuery原型属性和方法
- javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
- 对象特征检测法判断浏览器对javascript对象的支持
- Android获取assets文件夹中的数据并写入SD卡示例
- 基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能