python 内推_用Python实现内推外插法.doc

用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

num = 10*num + float(new_string[i])

i = i + 1

self.power.append(num)

else:

self.power.append(1.)

index = new_string.find('x',index+1)

if new_string[-1] != 'x':

ll = len(new_string) - 1

num = ""

while ll>=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(star

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值