lagrange插值Dim x() As String '输入的X值 Dim y() As String '输入的Y值 Dim d() As Single Dim c() As Single Dim t() As String '输入的带求点的值 Dim k As Integer Dim n1 As Integer Dim n2 As Integer Dim p() As Single Dim q() As Single Dim str As String Private Sub Command1_Click() On Error Resume Next str = Text3.Text Call lagrange Text4.Text = "" For i = 1 To n2 Text4.Text = Text4.Text & p(i - 1) & "," Next Text4.Text = Left(Text4.Text, Len(Text4.Text) - 1)End SubPrivate Function lagrange() As Single x = Split(Text1.Text, ",") '给X赋值 y = Split(Text2.Text, ",") '给Y赋值 t = Split(str, ",") '给T赋值 If UBound(x) <> UBound(y) Then MsgBox " X与Y的个数必须相等" Text1.Text = "" Text2.Text = "" Exit Function End If n1 = UBound(x) + 1 'X数组元素的个数 n2 = UBound(t) + 1 'T数组元素的个数 ReDim d(n1 - 1) As Single ReDim c(n1 - 1) As Single ReDim p(n2 - 1) As Single ReDim q(n1) As Single For k = 1 To n1 d(k - 1) = 1 For i = 1 To n1 If i <> k Then d(k - 1) = d(k - 1) * (x(k - 1) - x(i - 1)) Next i c(k - 1) = y(k - 1) / d(k - 1) 'c(k-1)中保存的是Yk/(Xk-Xi) Next k For i = 1 To n2 p(i - 1) = 0 For j = 1 To n1 q(j - 1) = 1 For k = 1 To n1 If j <> k Then q(j - 1) = q(j - 1) * (t(i - 1) - x(k - 1)) 'q(j - 1)中保存的是X-Xi的值 Next p(i - 1) = p(i - 1) + q(j - 1) * c(j - 1) Next Next End Function Private Sub Form_Load() Text1.Text = "0,1,2,4" Text2.Text = "1,0.5,0.2,0.1" End Sub在text3中输入一个数,可以得到在该点的函数值。
Dim y() As String '输入的Y值
Dim d() As Single
Dim c() As Single
Dim t() As String '输入的带求点的值
Dim k As Integer
Dim n1 As Integer
Dim n2 As Integer
Dim p() As Single
Dim q() As Single
Dim str As String
Private Sub Command1_Click()
On Error Resume Next
str = Text3.Text
Call lagrange
Text4.Text = ""
For i = 1 To n2
Text4.Text = Text4.Text & p(i - 1) & ","
Next
Text4.Text = Left(Text4.Text, Len(Text4.Text) - 1)End SubPrivate Function lagrange() As Single
x = Split(Text1.Text, ",") '给X赋值
y = Split(Text2.Text, ",") '给Y赋值
t = Split(str, ",") '给T赋值
If UBound(x) <> UBound(y) Then
MsgBox " X与Y的个数必须相等"
Text1.Text = ""
Text2.Text = ""
Exit Function
End If
n1 = UBound(x) + 1 'X数组元素的个数
n2 = UBound(t) + 1 'T数组元素的个数
ReDim d(n1 - 1) As Single
ReDim c(n1 - 1) As Single
ReDim p(n2 - 1) As Single
ReDim q(n1) As Single
For k = 1 To n1
d(k - 1) = 1
For i = 1 To n1
If i <> k Then d(k - 1) = d(k - 1) * (x(k - 1) - x(i - 1))
Next i
c(k - 1) = y(k - 1) / d(k - 1) 'c(k-1)中保存的是Yk/(Xk-Xi)
Next k
For i = 1 To n2
p(i - 1) = 0
For j = 1 To n1
q(j - 1) = 1
For k = 1 To n1
If j <> k Then q(j - 1) = q(j - 1) * (t(i - 1) - x(k - 1)) 'q(j - 1)中保存的是X-Xi的值
Next
p(i - 1) = p(i - 1) + q(j - 1) * c(j - 1)
Next
Next
End Function
Private Sub Form_Load()
Text1.Text = "0,1,2,4"
Text2.Text = "1,0.5,0.2,0.1"
End Sub在text3中输入一个数,可以得到在该点的函数值。