收藏 分享(赏)

插值算法.doc

上传人:j35w19 文档编号:9331990 上传时间:2019-08-02 格式:DOC 页数:16 大小:96KB
下载 相关 举报
插值算法.doc_第1页
第1页 / 共16页
插值算法.doc_第2页
第2页 / 共16页
插值算法.doc_第3页
第3页 / 共16页
插值算法.doc_第4页
第4页 / 共16页
插值算法.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、 插值算法实验目的通过上机实现拉格朗日、牛顿和三次自然样条三种插值算法,了 解 并 掌 握拉格朗日、牛顿和三次自然样条三种插值算法的 内 涵 。 通 过 动态演示曲线生成全过程,分析并比较三种插值算法的优缺点,深 刻 理 解 这 些 算 法 。实验内容与要求已知 f(xn)=yn ,n=0,1,2,N;求通过这 N+1 个节点(x n,y n)| n=0,1,2,N 的插值函数 Pn (x)。 设计出具体的程序,分别使用拉格朗日插值,牛顿插值和三次自然样条三种算法绘制出相应的插值曲线。用三条不同颜色的曲线来表示三种插值方法在一段区间内的插值函数。要求动态显示曲线绘制全过程。实验四 拉格朗日插值

2、算法拉格朗日插值公式: nkkiixyxf0,)(一参考算法1. InputN,x0,y0,xn,yn2. Until 无新的 x2.1 Inputx,S02.2 For k=0,1,2,N2.2. 1py k2.2.2 For i=0,1,2,N2.2.2.1 If i!=k,Then pp*(x-x i)/(xk-xi)2.2.3 SS+p2.3 Outputy二源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Lagrange /* Creates a new instance o

3、f Lagrange.*/public Lagrange() /* param args the command line arguments*/public static void main(String args) new newFrame().init();class newFrame extends JFramepublic void init() MyPanel hello=new MyPanel();getContentPane().add(hello);hello.thread.start();/以下代码设置 JFrame 窗体的外观setSize(400,400);setLoc

4、ation(200,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);class MyPanel extends JPanel implements RunnableThread thread;double xpoint,ypoint;double x=0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0;/double y=1,1.414214,1.732051,2,2.236068,2.449490,2.645751;double y=0.0,5,20,45,80,125,

5、180,245,320;int N=4;double t=1.0;double s=0.0;int num;public MyPanel() xpoint=new double80;ypoint=new double80;setSize(500, 500); thread=new Thread(this);/以下计算拉格朗日插值for(int i=0,k=0;iNewton.*/public Newton() /* param args the command line arguments*/public static void main(String args) new newFrame()

6、.init();class newFrame extends JFramepublic void init() MyPanel hello=new MyPanel();getContentPane().add(hello);hello.thread.start();/以下代码设置 JFrame 窗体的外观setSize(400,400);setLocation(200,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);class MyPanel extends JPanel implements Runna

7、bleThread thread;double xpoint,ypoint;double x=1.0,2.0,3.0,4.0,5.0,6.0,7.0;/double y=1.0,1.414214,1.732051,2.0,2.236068,2.449490,2.645751;double y=0.1,0.4,0.9,1.6,2.5,3.6,4.9;double a;double p;int N=7;int num;public MyPanel() xpoint=new double100;ypoint=new double100;setSize(500, 500); thread=new Th

8、read(this);a=new double7;/以下计算差商值保存在数组 a 中for(int i=0;i=k;j-)aj=(aj-aj-1)/(xj-xj-k);/以下计算牛顿插值for(int i=0,k=-50;i=0;j-)p=p*(xpointi-xj)+aj;k+;ypointi=p; public void run() for(num=2;numNewton.*/public threeTimes() /* param args the command line arguments*/public static void main(String args) new newFr

9、ame().init();class newFrame extends JFramepublic void init() MyPanel hello=new MyPanel();getContentPane().add(hello);hello.thread.start();/以下代码设置 JFrame 窗体的外观setSize(400,400);setLocation(200,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);class MyPanel extends JPanel implements

10、RunnableThread thread;double xpoint,ypoint;double x=0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0;/double y=1.0,1.414214,1.732051,2.0,2.236068,2.449490,2.645751;double y=0.0,5,20,45,80,125,180,245,320;double h,a,c,d,b,s2,s1,s;double m;int N=9,i=0;int num;public MyPanel() xpoint=new double90;ypoint=new d

11、ouble90;setSize(500, 500); thread=new Thread(this);h=new doubleN;a=new doubleN;c=new doubleN;d=new doubleN;b=new doubleN;/s1=new doubleN;s2=new doubleN;for(int k=0;k0;k-)s2k=(bk-hk*s2k+1)/ak;*/s20=0;s2N-1=0;for(int k=0;kN-1;k+)for(m=xk;m=xk+1;m+) xpointi=m;s1=ck+1-s2k+1*hk/6-s2k*hk/3;/s=yk+s1*(m-xk)

12、+s2k*(m-xk)*(m-xk)+(s2k+1-s2k)*(m-xk)*(m-xk)*(m-xk)/(6*hk);s=yk + s1 * (m - xk) + s2k * (m - xk) * (m - xk) / 2 + (s2k + 1 - s2k) * (m - xk) * (m - xk) * (m - xk) / (6 * hk);ypointi=s;i+;public void run() for(num=2;num79;num+) /显示前 num 个点repaint();trythread.sleep(50);catch(InterruptedException e)pub

13、lic void paintComponent(Graphics g) g.setColor(Color.white); g.clearRect(0, 0, 400, 440); g.setColor(Color.red); g.drawLine(0, 300, 400, 300); g.drawLine(200, 400, 200, 0); g.translate(200,300);g.setColor(Color.blue);for(int i=0;inum;i+)g.drawLine(int)xpointi,-(int)(ypointi),(int)xpointi+1,-(int)(ypointi+1);g.setColor(Color.black);g.drawString(“x =0,10,20,30,40,50,60,70,80“,-190,-280);g.drawString(“y =0.0,5,20,45,80,125,180,245,320“,-190,-260);g.drawString(“三次自然样条“,-180,-200);/g.drawString(“+xpoint60+“ “+ypoint60,-180,-150);三 运行结果截图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报