资源描述:
《Lagrange and newton插值法VB实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Lagrangeandnewton插值法程序结构如下窗体设计如下(一个空白窗体,大小下图中有)程序代码如下注意!!!!!!!!!!下面程序代码中深红色部分为VB6.0中自带的部分。而紫红色部分为在VB6.0中应写在一行中,但在本文中由于纸张限制出现分行的部分,此部分在写入VB6.0时应该写在一行中,否则会出现错误FunctionSS#(aaa#(),bbb#())Dimii&,jj&,kk&,mm&,nn&,rr&,uu&,ll#,lll#,xk#nn=UBound(aaa):mm=UBound(bbb)ll=0Forjj=0Tommxk=aaa(jj)Ifj
2、j3、b#(),v#)Dimi&,j&,k&,m&,n&,r&,u&,l#,ll#,g#Dimcs#(),aa1#(),bb1#()n=UBound(aa):m=UBound(bb)ReDimcs#(n)Fori=1TonReDimaa1#(i),bb1#(i)Forj=0Toiaa1(j)=aa(j)bb1(j)=bb(j)Nextjg=SS#(aa1(),bb1())cs(i)=gl=g*W(aa(),v,i)+lS=l+bb(0)Nextil=0Forr=1Tonl=cs(r)*W(aa(),v,r)+lNextrS=l+bb(0)EndFunctionFun
4、ctionW#(pp#(),x#,n&)Dimy&,ww#ww=1Fory=0Ton-1ww=(x-pp(y))*wwNextyW=wwEndFunctionFunctionLagrange#(x,aa#(),bb#())Dimi&,j&,k&,n&,m&,r&,ll#,lll#,l#,xk#,u&l=0n=UBound(aa):m=UBound(bb)Forj=0Tomll=1:lll=1xk=aa(j)Ifj5、serveaa(u)EndIfFori=0Toull=(x-aa(i))*lllll=(xk-aa(i))*lllNextil=bb(j)*ll/lll+lReDimPreserveaa(n)Forr=uTojStep-1aa(r+1)=aa(r)Nextraa(j)=xkNextjLagrange=lEndFunctionPrivateSubtt()Dimq&q=Val(InputBox("输入插值节点数","LangrangeandNewton插值",6))Ifq>1ThenDima()AsDouble,b()AsDoubleDimp&,m&,c&,o&,
6、v#,z#,z1#m=q-1ReDima#(0Tom),b#(0Tom)Forp=0Toma(p)=Val(InputBox("输入x"&p&"=","LangrangeandNewton插值"))b(p)=Val(InputBox("输入f"&p&"=","LangrangeandNewton插值"))NextpPrintTab(7);"Lagrange插值法";Tab(37);"Newton插值法"PrintForo=0To10v=0.2+0.02*o'(此处为初值和步长,根据自己情况自己定)z=Lagrange(v,a(),b())z1=S(a(),b(
7、),v)Print"L"&m&"(x"&o&"="&v&")="&z;Tab(30);"N"&m&"(x"&o&"="&v&")="&z1NextoPrintPrintPrintElseMsgBox"请输入插值节点数目(必须大于1)",5+vbExclamation,"警告"CallttEndIfEndSubPrivateSubForm_DblClick()Form1.ClsCallttEndSubPrivateSubForm_Load()FontSize=12FontName="宋体"EndSub