拉格朗日插值python实现
日期: 2015-08-27 分类: 个人收藏 328次阅读
拉格朗日插值公式
其中
也就是两层for循环,内层求Pj(x),然后与外层的yi相乘结果存在返回值中,主要注意公式中相乘的条件是i!=j
代码如下:
import matplotlib.pyplot as mpl
import numpy as np
import scipy as sp
def getdata():
a = np.zeros(10,np.double)
b = np.zeros(10,np.double)
for i in range(len(a)):
a[i] = np.random.uniform(-255,255)
b[i] = np.random.uniform(-255,255)
print '(%f,%f)' %(a[i],b[i]),
print
return a,b
a = np.array([0,10,20,30,40,50,60,70,80,90,100,110,120],np.float32)
b = np.array([5,1,7.5,3,4.5,8.8,15.5,6.5,-5,-10,-2,4.5,7],np.float32)
# a = np.array([-2,2,5],np.float32)
# b = np.array([0,3,6],np.float32)
def Larange(x,y,a):
#t = np.zeros(len(a))
#t = a.copy()
ans = 0.0
for i in range(len(y)):
t = y[i]
for j in range(len(y)):
if i != j:
t *= (a-x[j])/(x[i]-x[j])
ans += t
return ans
y2 = Larange(a,b,65)
print y2
mpl.plot(a,b,'--*')
# y1 = Larange(a,b,10)
# print y1
# xi = np.arange(-20,20,1)
# yi = np.zeros(len(xi))
#
# for i in range(len(xi)):
# yi[i] = Larange(a,b,xi[i])
# mpl.plot(xi,yi)
"""
ai = np.array([1,2])
bi = np.array([1,3])
for i in range(len(xi)):
yi[i] = Larange(ai,bi,xi[i])
mpl.plot(xi,yi)
print Larange(ai,bi,18)
"""
mpl.show()
通过x=1,2 y= 1,3得到的拉格朗日差值一次函数图像
通过随机生成的10个点生成的拉格朗日差值函数图像
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: 将qint8类型的数组放进float类型的数组里面
下一篇: Github错误:fatal: Authentication failed for 'https://github.com/ ...
精华推荐