插值法

Python实现拉格朗日插值法

匿名 (未验证) 提交于 2019-12-02 22:11:45
已知sinx的一组x,y对应关系,用拉格朗日插值法估计sin(0.3367)的值. x x0.32 0.34 0.36 y 0.314567 0.333487 0.352274 / / class Interpolation: def __init__(self, x, y): self.x = x self.y = y def func(self, X): s = 0 for i in range(len(self.x)): W = 1 w = (X - self.x[i]) for j in range(len(self.x)): W *= (X - (self.x[j])) if i == j: continue else: w *= (self.x[i] - self.x[j]) L = self.y[i] * W / w s += L print(round(s, 8)) while (True): x=input('x:') y=input('y:') X=input('X:') if x=='Q' or y=='Q' or X=='Q': break else: p1 = Interpolation(eval(x),eval(y)) # 前面是x的取值,后面是y的取值; p1.func(eval(X)) # 现在要计算的是 sin(0.3367) 的值

拉格朗日插值法学习笔记

做~自己de王妃 提交于 2019-12-01 06:56:53
拉格朗日插值法学习笔记 ​ 在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起。 ​ 给定 \(n + 1​\) 个横坐标不相同的点,可以唯一确定一个 \(n​\) 次的多项式,我们可以直接列方程利用高斯消元求解,时间复杂度 \(O(n^3)​\) 。 ​ 而另一种方法拉格朗日插值可以在 \(O(n^2)\) 的时间复杂度内完美的求解出答案,可以说是十分完美了。 拉格朗日插值法 为了接下来的讲解方便,我们引进一些函数和变量来辅助讲解。 拉格朗日插值法基函数(后文内简称为基函数) \(g(x)​\) : 下面给出 \(g(x)​\) 的定义式: \(g(x)=\Pi_{i=1,i!=x}^{n

数值计算方法三次样条插值法三种边界条件求插值函数并画出图像的python代码

大憨熊 提交于 2019-11-30 00:47:55
数值计算方法三次样条插值法求插值函数并画出图像的python代码 第一类插值条件 #三次样条插值法 import matplotlib . pyplot as plt import numpy as np from sympy import * #第一类插值条件函数 def one ( x , y , a , b , n ) : h = np . zeros ( n ) u = np . zeros ( n - 1 ) r = np . zeros ( n - 1 ) g = np . zeros ( n + 1 ) A = np . zeros ( shape = ( n + 1 , n + 1 ) ) q = np . zeros ( n ) w = np . zeros ( n ) e = np . zeros ( n ) t = np . zeros ( n ) #计算和,u,r,g for i in range ( 0 , n ) : h [ i ] = x [ i + 1 ] - x [ i ] print ( "h=" , h ) for i in range ( 0 , n - 1 ) : u [ i ] = h [ i ] / ( h [ i ] + h [ i + 1 ] ) print ( "u=" , u ) for i in range ( 0 , n -

YUV420转YUV444 , YUV420转RGB

两盒软妹~` 提交于 2019-11-29 21:42:27
我想大家应该知道了YUV的颜色表示原理即:   Y = 0.299R + 0.587G + 0.114B   U = -0.147R - 0.289G + 0.436B   V = 0.615R - 0.515G - 0.100B   R = Y + 1.14V   G = Y - 0.39U - 0.58V   B = Y + 2.03U 如果通过上面的公式从RGB转换成YUV的话,得出的YUV一帧图片和RGB一样大(如果都用8bit表示一个像素分量值) 而YUV采样格式有: YUV 4:4:4 YUV 4:2:2 YUV 4:2:0 等 我就介绍下YUV4:2:0采样怎么转换成YUV4:4:4 YUV444示意图(4*4大小):4*4大小的图中每个像素都对应三个YUV分量,如下图。所占空间为 4*4*3=48 bytes YUV4:2:0 采样方式为: U分量和V分量隔行采样, 同时UV分量在其采样行也是隔行采样 Y00 Y01 Y02 Y03 Y10 Y11 Y12 Y13 Y20 Y21 Y22 Y23 Y30 Y31 Y32 Y33 U00 ? U02 ? ? ? ? ? U20 ? U22 ? ? ? ? ? ? ? ? ? V10 ? V12 ? ? ? ? ? V30 ? V32 ? 从上面的比较可知,要将YUV420转换成YUV444的关键就在于插值到采样的缺口处

目标检测论文解读11——Mask R-CNN

不想你离开。 提交于 2019-11-28 05:15:30
目的   让Faster R-CNN能做实例分割的任务。 方法   模型的结构图如下。      与Faster R-CNN相比,主要有两点变化。   (1) 用RoI Align替代RoI Pool。   首先回顾一下RoI Pool,流程为:将RPN产生的原图侯选框映射到CNNs输出的feature map上,显然原图比feature map大,所以映射后的像素坐标可能会有小数,这里的做法是用近邻插值法,通俗讲,坐标四舍五入。   而这种做法肯定会带来一些空间位置上的小误差,而我们后面的实例分割是逐像素的,接受不了这种误差,因此采用RoI Align,用双线性插值法替代近邻插值法(具体可以参考博客: https://zhuanlan.zhihu.com/p/49832888 )   (2)添加了一个基于FCN的Mask分支,用来对feature map上的RoI进行实例分割。   经过RoI Align得到的feature map,经过几层卷积,最终得到一个m*m的二值特征图,object与background,逐像素分类即可。这里之所以采用FCN,是因为我们最终所做的实例分割,需要保留空间信息;如果最后一层接FC的话得到的就是一维向量。 总结   Mask R-CNN的实例分割效果很好,尤其对于那种目标偏小的图片效果也很好,主要是因为他是先通过前面的RoI

拉格朗日插值法

删除回忆录丶 提交于 2019-11-28 02:04:44
拉格朗日插值法 #include " iostream " #include " math.h " using namespace std; int n; int main() { int N; double x[ 3 ] = { 0.2 , 0.3 , 0.4 }, y[ 3 ] = { 1.2214 , 1.3499 , 1.4918 }, Y = 0 , X1 = 0.285 ,b,m; int i,j,k; for (k = 0 ;k < 3 ;k ++ ) { double p = 1 ; for (j = 0 ;j < 3 ;j ++ ) { if (j == k) continue ; else { p = p * (X1 - x[j]) / (x[k] - x[j]); } } Y = Y + p * y[k]; } /* X1=0.285时的近似值 */ printf( " e(%.3lf)=%.6lf\n " ,X1,Y); cout << " Please Input N value( 2 or 3 ) " << endl << " N= " ; while (cin >> N) { if (N == 2 || N == 3 ) { double x[ 3 ] = { 0.2 , 0.3 , 0.4 }, y[ 3 ] = { 1.2214 , 1.3499

Codeforces D. The Sum of the k-th Powers(拉格朗日插值)

戏子无情 提交于 2019-11-27 05:56:39
题目描述: The Sum of the k-th Powers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There are well-known formulas: , , . Also mathematicians found similar formulas for higher degrees. Find the value of the sum modulo 109 + 7 (so you should find the remainder after dividing the answer by the value 109 + 7). Input The only line contains two integers n ,  k (1 ≤  n  ≤ 109, 0 ≤  k  ≤ 106). Output Print the only integer a — the remainder after dividing the value of the sum by the value 109 + 7. Examples Input Copy 4 1 Output Copy 10 Input