如,
 x      y
 0      0
10      0.459
20      0.849
30      1.047
40      1.114
50      1.097
60      1.029
70      0.918
80      0.775

解决方案 »

  1.   

    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中输入一个数,可以得到在该点的函数值。