VB开发的N次多项式拟和程序.docx
《VB开发的N次多项式拟和程序.docx》由会员分享,可在线阅读,更多相关《VB开发的N次多项式拟和程序.docx(11页珍藏版)》请在冰豆网上搜索。
![VB开发的N次多项式拟和程序.docx](https://file1.bdocx.com/fileroot1/2023-2/7/0c5e3304-2c03-4eca-a287-58b95388a6d1/0c5e3304-2c03-4eca-a287-58b95388a6d11.gif)
VB开发的N次多项式拟和程序
PrivateSubCommand1_Click()
Fori=0ToText1.Count-1
Text1(i).Text=""
Nexti
DimEAsInteger
DimTmpAsDouble
K=Val(Combo2.Text)'数据组数
N=Val(Combo1.Text)*3'n次方的多项式拟合;实际是3*N+1个元素
Callgrid
'xi,yi,x2,x3,x3,x4,,xi*yi,xi^2*yi
ReDimData(K+1,N+1)
T=Val(Combo1.Text)*2
F=Val(Combo1.Text)
E=F+1
ReDima(E,E+1)
ReDimX(E)
Fori=1To10
Data(i,0)=i
Nexti
OpenApp.Path&"\X.dat"ForInputAs1'
Fori=1ToK
Input#1,Data(i,1)
Nexti
Close#1
OpenApp.Path&"\Y.dat"ForInputAs1'
Fori=1ToK
Input#1,Data(i,2)
Nexti
Close#1
Forj=3To(T+1)
Fori=1ToK
Tmp=Data(i,1)
Data(i,j)=Tmp^(j-1)
Nexti
Nextj
'X^(n)*Y
ForP=1ToF'3
Fori=1ToK'9
Q=2*F+P+1
Data(i,Q)=Data(i,1)^(P)*Data(i,2)
Nexti
NextP
DimsumAsDouble
sum=0
Forj=1To(N+1)
Fori=1ToK
sum=Data(i,j)+sum
Nexti
Data(K+1,j)=sum
sum=0
Nextj
a(1,1)=K
a(1,2)=Data(K+1,1)
Forj=3ToE
a(1,j)=Data(K+1,j)
Nextj
a(2,1)=Data(K+1,1)
Forj=2ToF+1
a(2,j)=Data(K+1,j+1)
Nextj
'*************************************************
F=F
Fori=1ToE'列
Forj=3ToE'行
P=j+2-3+i
a(j,i)=Data(K+1,P)
Nextj
Nexti
X
(1)=Data(K+1,2)
ForP=1ToF'3
Q=2*F+P+1
X(P+1)=Data(K+1,Q)
NextP
Forj=1ToE
a(j,E+1)=X(j)
Nextj
DimZmax,HmaxAsDouble
'Fori=1ToE
'Forj=1ToE+1
'
'MSFlexGrid1.TextMatrix(i-1,j-1)=a(i,j)
'Nextj
'Nexti
Fori=1To(E-1)
Zmax=Abs(a(i,i))
Hmax=i
Forj=i+1ToE
If(Abs(a(j,i))>Zmax)Then
Hmax=j
Zmax=Abs(a(j,i))
EndIf
Nextj
'*****************************************
If(Hmax<>i)Then
ForK=iToE+1
T=a(Hmax,K)
a(Hmax,K)=a(i,K)
a(i,K)=T
NextK
EndIf'****************************
Forj=i+1ToE
Y=a(j,i)/a(i,i)
ForK=iToE+1
a(j,K)=a(j,K)-a(i,K)*Y
NextK
Nextj
Nexti
X(E)=a(E,E+1)/a(E,E)
Fori=E-1To1Step-1
Y=0
Forj=EToi+1Step-1
Y=Y+a(i,j)*X(j)
Nextj
X(i)=(a(i,E+1)-Y)/a(i,i)
Nexti
Forj=1ToE
Text1(j-1).Text=X(j)
Nextj
'
MSFlexGrid2.TextMatrix(0,1)="X"
MSFlexGrid2.TextMatrix(0,2)="Y"
Fori=3To2*F+1
P=i-1
MSFlexGrid2.TextMatrix(0,i)="X^"&(P)
Nexti
Fori=1ToF
P=2*F+i
MSFlexGrid2.TextMatrix(0,P+1)="X^"&(i)&"*Y"
Nexti
Fori=1To(Val(Combo2.Text)+1)
Forj=1ToN+1
MSFlexGrid2.TextMatrix(i,j)=Data(i,j)
Nextj
Nexti
Fori=0ToMSFlexGrid2.Cols-1
MSFlexGrid2.ColAlignment(i)=4
'MSFlexGrid2.TextMatrix(i,15)=X
(1)+X
(2)*Data(i,1)+X(3)*Data(i,1)^2+X(4)*Data(i,1)^3+X(5)*Data(i,1)^4+X(6)*Data(i,1)^5+X(7)*Data(i,1)^6
Nexti
DimA0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10AsDouble
A0=Val(Text1(0).Text)
A1=Val(Text1
(1).Text)
A2=Val(Text1
(2).Text)
A3=Val(Text1(3).Text)
A4=Val(Text1(4).Text)
A5=Val(Text1(5).Text)
A6=Val(Text1(6).Text)
A7=Val(Text1(7).Text)
A8=Val(Text1(8).Text)
A9=Val(Text1(9).Text)
A10=Val(Text1(10).Text)
MSFlexGrid2.TextMatrix(0,3)="VB(=Y)"
MSFlexGrid2.TextMatrix(0,5)="VB(-Y)"
Fori=1ToVal(Combo2.Text)
MSFlexGrid2.Row=i
MSFlexGrid2.Col=3
MSFlexGrid2.CellBackColor=&HC0FFC0
MSFlexGrid2.Row=i
MSFlexGrid2.Col=2
MSFlexGrid2.CellBackColor=&H80C0FF
C=Val(MSFlexGrid2.TextMatrix(i,1))
D=A0+A1*C+A2*C^2+A3*C^3+A4*C^4+A5*C^5+A6*C^6+A7*C^7+A8*C^8+A9*C^9+A10*C^10
MSFlexGrid2.TextMatrix(i,3)=Format(D,"0.00000")
'MSFlexGrid2.TextMatrix(i,3)=Int(D)
MSFlexGrid2.Row=i
MSFlexGrid2.Col=5
MSFlexGrid2.CellBackColor=&HC0FFC0
MSFlexGrid2.TextMatrix(i,5)=Format(D-Val(MSFlexGrid2.TextMatrix(i,2)),"0.00000")
Nexti
Text2.Text="Y="&Text1(0).Text&"+"&Val(Text1
(1).Text)&"*x"&"+"&Val(Text1
(2).Text)&"*x^2"&"+"&Val(Text1(3).Text)&"*x^3"
EndSub
Subgrid()
'
'Forj=0ToMSFlexGrid1.Cols-1
'
'MSFlexGrid1.ColWidth(j)=800
'
'Nextj
'Forj=0ToMSFlexGrid1.Cols-1
'
'MSFlexGrid1.ColAlignment(j)=4
'
'Nextj
Forj=0ToMSFlexGrid2.Cols-1
MSFlexGrid2.ColWidth(j)=1200
Nextj
EndSub
PrivateSubCommand2_Click()
DimA0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10AsDouble
A0=Val(Text3(0).Text)
A1=Val(Text3
(1).Text)
A2=Val(Text3
(2).Text)
A3=Val(Text3(3).Text)
A4=Val(Text3(4).Text)
A5=Val(Text3(5).Text)
A6=Val(Text3(6).Text)
A7=Val(Text3(7).Text)
A8=Val(Text3(8).Text)
A9=Val(Text3(9).Text)
A10=Val(Text3(10).Text)
MSFlexGrid2.TextMatrix(0,4)="Excel(=Y)"
MSFlexGrid2.TextMatrix(0,6)="Excel(-Y)"
Fori=1ToVal(Combo2.Text)
MSFlexGrid2.Row=i
MSFlexGrid2.Col=4
MSFlexGrid2.CellBackColor=&HC0FFFF
C=Val(MSFlexGrid2.TextMatrix(i,1))
D=A0+A1*C+A2*C^2+A3*C^3+A4*C^4+A5*C^5+A6*C^6+A7*C^7+A8*C^8+A9*C^9+A10*C^10
MSFlexGrid2.TextMatrix(i,4)=Format(D,"0.00000")
MSFlexGrid2.Row=i
MSFlexGrid2.Col=6
MSFlexGrid2.CellBackColor=&HC0FFFF
MSFlexGrid2.TextMatrix(i,6)=Format(D-Val(MSFlexGrid2.TextMatrix(i,2)),"0.00000")
Nexti
EndSub
PrivateSubCommand3_Click()
Fori=0ToText1.Count-1
Text3(i).Text=""
Nexti
EndSub
PrivateSubForm_Load()
Fori=0ToText1.Count-1
Text1(i).Text=""
Text3(i).Text=""
Nexti
Callgrid
EndSub