用Python实现内推外插法
用 Python 实现内推外插法 Author Z Date 2015 12 3 import numpy as np class node object def init self self power self a def set self ar p for i in xrange len ar self a append ar i self power append p i def printf self print a is for i in xrange np array self a shape 0 print self a i print print power is for i in xrange np array self power shape 0 print self power i print base function area def parse self string parse str string into list a and power a means the factor of x power means the index of x self power self a string string replace eq string find new string string eq 1 index new string find x while index 1 if new string index 1 and new string index 2 isdigit i index 2 num while i 0 and new string i isdigit num new string i num i i 1 if i 0 and new string i num num self a append float num else self a append 1 if new string index 1 num 0 i index 2 while i 0 and new string ll isdigit num new string ll num ll ll 1 if ll 0 and new string ll num num self a append float num self power append 0 def get fun value self num ret 0 for i in xrange np array self a shape 0 ret self a i pow num self power i return ret tool function area def Min push forward self start step if self get fun value start y3 x1 x2 x2 x3 else break return x1 x3 def Min insert forword self lef rig max epochs min error epoch 0 while True mid1 3 lef rig 2 mid2 lef rig 2 y1 self get fun value mid1 y2 self get fun value lef y3 self get fun value mid2 y4 self get fun value rig if y1 y2 and y1 y3 and y1 y4 lef mid1 rig lef elif y2 y1 and y2 y3 and y2 y4 lef mid1 rig mid2 elif y3 y4 and y3 y1 and y3 max epochs or rig lef self get fun value start step step len 1 step x1 start x2 start step y2 self get fun value x2 while True x3 x2 step y3 self get fun value x3 if y2 y2 and y1 y3 and y1 y4 lef mid1 rig lef elif y2 y1 and y2 y3 and y2 y4 lef mid1 rig mid2 elif y3 y4 and y3 y1 and y3 y2 lef lef rig rig else lef mid2 rig rig epoch 1 if epoch max epochs or rig lef min error break x lef rig 2 y self get fun value x return x y def min fun self start step max epochs min error lef rig self Min push forward start step x y self Min insert forword lef rig max epochs min error print x x print y y def max fun self start step max epochs min error lef rig self Max push forward start step x y self Max insert forword lef rig max epochs min error print x x print y y if name main ss f x x 3 2 x 1 a node a parse ss a printf max epochs 1000 min error 0 001 start 0 0 step 0 2 a min fun start step max epochs min error