计算机数值分析:埃特金插值法(python实现

埃特金插值法
这里要说明,我没有按照书中所给流程图来写。不过为了完整,还是将流程图贴上来
在这里插入图片描述
实际上,我是按照下面这个表,相当于是递推获得
在这里插入图片描述
代码如下

#0.3 0.29850 0.4 0.39646 0.5 0.49311 0.6 0.58813 0.7 0.68122  
#预测 0.462

def Data_in(list1,list2):
    list0=input("请输入离散点的值").split(" ");
    for i in range(0,len(list0)):
        if i%2==0:
            list1.append(float(list0[i]));
        else:
            list2.append(float(list0[i]));
    return list1,list2;
   
def Aitken_insert(list1,list2,x_in,n):
    #根据简单的推算  n个值 需要进行插值n-1次
    begin_index=0;   
    account=0;#我从1开始算起  正好代指的就是第account次插值嘛
    while account<=n-1:
        account+=1;  #开始
        end_index=begin_index+1;  #这个是用来统计第account次插值结束与否
        while end_index<n:  #也就是还没有运算到最后的数
            t1=(x_in-list1[end_index])/(list1[begin_index]-list1[end_index]);
            t2=(x_in-list1[begin_index])/(list1[end_index]-list1[begin_index]);
            #每次都是更新到end_index之中 这样能够很好的节省空间  
            list2[end_index]=t1*list2[begin_index]+t2*list2[end_index];   
            end_index+=1;
        #对于新一轮的插值   begin_index在变  所以要+1
        begin_index+=1;
        return list2[end_index-1];#因为到了最后 end_index会加1 就超过范围了

Data_x=[];
Data_y=[];  #我打算直接在这个式子的基础上修改  而不用重新创建一个数列表
Data_x,Data_y=Data_in(Data_x, Data_y);
length=len(Data_x);
x_pre=float(input("请输入想要预测的x:"));
y_pre=Aitken_insert(Data_x,Data_y,x_pre,length);
print(y_pre);

运行结果:

在这里插入图片描述

遇事不决,可问春风

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值