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

a7f4a3f590493a1e451dd952a488fd7c.gif 用Python实现内推外插法

(5页)

c1727ff9882e3809ee35b5dcfee72262.png

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

7.9 积分

用Python实现内推外插法"""Author: ZDate: 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) < 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 > 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<=y2: lef = lef rig = rig else: lef = mid2 rig = rig epoch += 1 if epoch >= max_epochs or (rig-lef)<=min_error: break x 关 键 词: Python 实现 内推外插法

4d91c43bfc72ca913299809b07b4968f.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值