数值分析小白学习之路(二) 插值法

插值法

  • 设函数 y=f(x),x[a,b],ax0<x1<<xnby1,y2,,yn, , 存在函数 P(x) , 使得 P(xi)=yi,i=0,1,,n 成立, 则称 P(x) f(x) 的插值函数. xi,i=0,1,,n 为插值节点, [a,b] 为插值区间, 求插值函数 P(x) 的方法称为插值法.
  • 插值函数的作用就是用于函数的拟合. 通常插值函数的应用就是通过函数表来构造一个足够简单, 并且能够反映函数 f(x) 的特征的函数.
  • 一般来说, 我们可以将每个函数都看做是一个多项式, 对于一个不超过 n 次的多项式函数, 我们给出其定义 P(x)=a0+a1x++anxn .
  • 根据 P(x) 的类型, 我们对 P(x) 有不同的称呼. 如果插值函数是一个多项式, 那么我们就称 P(x) 为插值多项式, 相应的插值法称之为多项式插值. 若 P(x) 为分段的多项式, 则称之为分段插值. 若 P(x) 为三角多项式, 就称之为三角插值.

插值函数的唯一性

  • 对于区间 [a,b] , 我们给出这个区间内的 n + 1个点 ax0<x1<<xnb 和其对应的函数值 yi=f(xi)(i=0,1,n) , 对于给定的这个条件, 我们可以得到一个简单函数并且使其满足 P(xi)=yi,i=0,1,,n .
  • 将 n+1个点依次代入函数 P(x)=a0+a1x++anxn 中, 我们就可以得到一个关于系数 a0,a1,,an 的 n+1元线性方程组.

    a0+a1x0++anxn0=y0,a0+a1x1++anxn1=y1,a0+a1xn++anxnn=yn

  • 系数矩阵

    A=111x0x1xnxn0xn1xnn

  • 对于这个行列式, 我们可以通过范德蒙德公式来求得其行列式的值.
    detA=n1i,j=0,i>j(xixj0)
  • detA0 , 则根据行列式的性质, 可以知道A 是可逆的, 即 AX = 0 只存在零解, AX = b只存在唯一解.
  • 对应的参数确定下来, 则由参数唯一确定的插值多项式的也随之确定下来了, 故我们得到的插值函数 P(x) 也是唯一的.

参考资料

数值分析实验 插值法 java版 import java.awt.*; import java.awt.event.*; import java.util.StringTokenizer; import javax.swing.Box; class chazhifa extends Frame implements ActionListener { TextArea area, result, result2; Button butt, butt2, butt3; Label lab, lab3; Box box1, box2, box3, box4, box5, box6, box7; TextField field, field2; chazhifa() { super("插值法:"); area = new TextArea(5, 34); result = new TextArea(4, 8); result.setEditable(false); result2 = new TextArea(4, 8); result2.setEditable(false); butt = new Button("拉格朗日插值:"); butt3 = new Button("牛顿插值:"); butt2 = new Button("清除"); field = new TextField(5); field2 = new TextField(5); lab = new Label("依次输入xi和yi的值:"); lab3 = new Label("输入n和x:"); box2 = Box.createHorizontalBox(); box1 = Box.createVerticalBox(); box3 = Box.createHorizontalBox(); box4 = Box.createHorizontalBox(); box5 = Box.createHorizontalBox(); box6 = Box.createHorizontalBox(); box7 = Box.createVerticalBox(); setLayout(new FlowLayout()); box2.add(lab3); box2.add(field); box2.add(field2); box2.add(butt2); box3.add(lab); box4.add(area); box5.add(butt); box5.add(butt3); box6.add(result); box6.add(result2); box7.add(Box.createVerticalStrut(6)); box7.add(box2); box7.add(Box.createVerticalStrut(5)); box7.add(box3); box7.add(Box.createVerticalStrut(5)); box7.add(box4); box7.add(Box.createVerticalStrut(5)); box7.add(box5); box7.add(Box.createVerticalStrut(5)); box7.add(box6); box7.add(Box.createVerticalStrut(5)); add(box7); butt.addActionListener(this); butt2.addActionListener(this); butt3.addActionListener(this); validate(); setBounds(200, 200, 300, 330); setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值