zoukankan      html  css  js  c++  java
  • 关于拉格朗日和内维尔插值算法的python实现

    系统:windows7  编辑器:eclipse+pydev  环境:python 3.4

    先是逐步插值,主体十分简单,关键在于算法部分,我运用了二维数组的数据结构来存储每次迭代后的新值。角标的循环初看可能有些复杂,自己动手走一遍就会很清楚啦

     1 #coding=gbk
     2 '''
     3 Created on 2014-8-31
     4 
     5 @author: Administrator
     6 '''
     7 
     8 def Neville(xt,m,n,x):
     9     for i in range(1,n):
    10         for j in range(1,n):
    11             w[i-j][i]=(x-xt[i-j])/(xt[i]-xt[i-j])
    12             m[i][j]=m[i-1][j-1]+w[i-j][i]*(m[i][j-1]-m[i-1][j-1])
    13     for i in range(n):
    14         for j in range(0,i+1):
    15             if j%n==0:
    16                 print("
    ")
    17             print(' %f' %m[i][j])
    18 
    19 n = int(input('插入节点个数:'))
    20 x = float(input('输入x的值:'))
    21 m = [[0 for i in range(n)] for j in range(n)]    #创建n*n矩阵
    22 w = [[0 for i in range(n)] for j in range(n)]
    23 xt = [0]*n
    24 for i in range(n):
    25     m[i][0] = float(input('插入第%d个y值:' %(i+1)))
    26 for i in range(n):
    27     xt[i] = float(input('插入第%d个x值:' %(i+1)))
    28 Neville(xt,m,n,x)

    下面的是拉格朗日插值算法,十分简单,分享借鉴。

     1 #coding=gbk
     2 '''
     3 Created on 2014-8-31
     4 
     5 @author: Administrator
     6 '''
     7 def lagrange(x,xt,yt,n):
     8     y = 0
     9     for i in range(n):
    10         t = 1
    11         for j in range(n):
    12             if i!=j:
    13                 t = t*(x-xt[j])/(xt[i]-xt[j])
    14         y = y+t*yt[i]
    15     print("结果为:%f" %y)
    16 
    17 xt = []
    18 yt = []
    19 x = float(input("插值x;"))
    20 n = int(input("节点数目;"))
    21 for i in range(n):
    22     xt.append(float(input("第%d个x的值" %(i+1))))
    23 for i in range(n):
    24     yt.append(float(input("第%d个x的值" %(i+1))))
    25   
    26 lagrange(x,xt,yt,n)
  • 相关阅读:
    无题
    无题
    Windows NT 和 VMS: 其余的故事 (The Rest of the Story)
    Lachesis Shield Released!
    最近几年来看到的最强的照片
    有关 Nintendo GameCube
    那些带给我欢乐的游戏
    习惯了 .#
    Rootkits
    我写的IDA插件发布了
  • 原文地址:https://www.cnblogs.com/lovecc/p/3961091.html
Copyright © 2011-2022 走看看