资源描述:
《插值算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、插值算法实验目的通过上机实现拉格朗日、牛顿和三次自然样条三种插值算法,了解并掌握拉格朗日、牛顿和三次自然样条三种插值算法的内涵。通过动态演示曲线生成全过程,分析并比较三种插值算法的优缺点,深刻理解这些算法。实验内容与要求已知f(xn)=yn,n=0,1,2,…,N;求通过这N+1个节点{(xn,yn)
2、n=0,1,2,…,N}的插值函数Pn(x)。设计出具体的程序,分别使用拉格朗日插值,牛顿插值和三次自然样条三种算法绘制出相应的插值曲线。用三条不同颜色的曲线来表示三种插值方法在一段区间内的插值函数。要求动态显示曲线绘制全过程。实验四拉格朗日插值算法拉格朗
3、日插值公式:一.参考算法1.Input{N,x0,y0,…,xn,yn}2.Until无新的x2.1Input{x},S←02.2Fork=0,1,2,…,N2.2.1p←yk2.2.2Fori=0,1,2,…,N2.2.2.1Ifi!=k,Thenp←p*(x-xi)/(xk-xi)2.2.3S←S+p2.3Output{y}二.源代码importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassLagrange{/***Createsanewinstanceof4、>Lagrange
.*/publicLagrange(){}/***@paramargsthecommandlinearguments*/publicstaticvoidmain(String[]args){newnewFrame().init();}}classnewFrameextendsJFrame{publicvoidinit(){MyPanelhello=newMyPanel();getContentPane().add(hello);hello.thread.start();//以下代码设置JFrame窗体的外观setSize(
5、400,400);setLocation(200,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}}classMyPanelextendsJPanelimplementsRunnable{Threadthread;doublexpoint[],ypoint[];doublex[]={0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0};//doubley[]={1,1.414214,1.732051,2,2.236068,2.449
6、490,2.645751};doubley[]={0.0,5,20,45,80,125,180,245,320};intN=4;doublet=1.0;doubles=0.0;intnum;publicMyPanel(){xpoint=newdouble[80];ypoint=newdouble[80];setSize(500,500);thread=newThread(this);////////////////////////以下计算拉格朗日插值for(inti=0,k=0;i<80;i++){xpoint[i]=k;k++;s=0.0;for(in
7、tm=0;m8、te);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(inti=0;i9、awString("x[]={1.0,2.0,3.0,4.0,5.0,6.0,7