Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по информатике.docx
Скачиваний:
7
Добавлен:
09.09.2019
Размер:
535 Кб
Скачать
☆
  1. Описание программы

Интерполяция методом Ньютона

Поиск минимума методом

золотого сечения

  • Код модуля

Option Strict On

Option Explicit On

Imports System.Math

Module Module1

Public eps As Double = 0.0001

Public y1, y2 As Double

Sub KonechnyyeRaznosti(ByVal f() As Double, ByRef DY(,) As Double, ByVal n As Integer)

Dim i, j As Integer

For i = 0 To n

DY(i, 0) = f(i)

For j = 1 To n

DY(i, j) = 0

Next j

Next i

For j = 1 To n

For i = 0 To n - j

DY(i, j) = DY(i + 1, j - 1) - DY(i, j - 1)

Next i

Next j

End Sub

Sub newton(ByVal q As Double, ByVal m As Integer, ByVal DY(,) As Double, ByRef p As Double, ByRef R As Double)

Dim qq, fact As Double

Dim j As Integer

p = DY(0, 0)

qq = 1

fact = 1

For j = 1 To m

fact = fact * j

qq = qq * (q - j + 1)

R = qq * DY(0, j) / fact

p = p + R

Next j

End Sub

Function interp_po_newtonu(ByVal x As Double, ByVal DY(,) As Double, ByVal x0 As Double, ByVal h As Double, ByVal n As Integer) As Double

Dim i As Integer

Dim p As Double

Dim q As Double, R As Double

q = (x - x0) / h

i = 1

newton(q, i, DY, p, R)

Do While Abs(R) > eps And i < n

i = i + 1

newton(q, i, DY, p, R)

Loop

Return p

End Function

Function F(ByVal x As Double) As Double

Return y1 * x ^ 2 - 2.5 * y2 * x - 3

End Function

Sub sechenie(ByVal a As Double, ByVal b As Double, _

ByVal eps As Double, ByRef xmin As Double, _

ByRef z As String)

Dim x1, x2, F1, F2, k1, k2 As Double

z = ""

k1 = (3 - Sqrt(5)) / 2

k2 = 1 - k1

x1 = a + k1 * (b - a)

x2 = a + k2 * (b - a)

F1 = F(x1)

F2 = F(x2)

z = Format(a, "0.00000") + Space(3) + Format(b, "0.00000") _

+ Space(3) + Format(x1, "0.00000") + Space(3) + _

Format(x2, "0.00000") + Space(3) + Format(F1, "0.00000") _

+ Space(3) + Format(F2, "0.00000") + Space(3) + _

Format(b - a, "0.00000") + vbNewLine

Do Until b - a < eps

If F1 < F2 Then

b = x2

x2 = x1

F2 = F1

x1 = a + k1 * (b - a)

F1 = F(x1)

Else

a = x1

x1 = x2

x2 = a + k2 * (b - a)

F1 = F2

F2 = F(x2)

End If

z = z + Format(a, "0.00000") + Space(3) + Format(b, "0.00000") _

+ Space(3) + Format(x1, "0.00000") + Space(3) + _

Format(x2, "0.00000") + Space(3) + Format(F1, "0.00000") _+ Space(3) + Format(F2, "0.00000") + Space(3) + _Format(b - a, "0.00000") + vbNewLine

Loop

xmin = (a + b) / 2

End Sub

End Module

  • Код Form1

Option Strict On

Option Explicit On

Public Class Form1

Sub vvod(ByRef x() As Double, ByRef y() As Double, ByRef x1 As Double, ByRef x2 As Double)

Dim i As Integer

For i = 0 To UBound(x)

x(i) = Val(RichTextBox1.Lines(i))

y(i) = Val(RichTextBox2.Lines(i))

Next

x1 = Val(TextBox1.Text)

x2 = Val(TextBox2.Text)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim x(6), y(6) As Double

Dim x1, x2 As Double

Dim DY(6, 6) As Double

Dim g(6) As Double

vvod(x, y, x1, x2)

KonechnyyeRaznosti(y, DY, 6)

y1 = interp_po_newtonu(x1, DY, 0, 0.1, 6)

g = y

Array.Reverse(g)

KonechnyyeRaznosti(g, DY, 6)

y2 = interp_po_newtonu(x2, DY, 0.6, -0.1, 6)

TextBox4.Text = CStr(y1)

TextBox5.Text = CStr(y2)

Button2.Enabled = True

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Form2.Show()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

End

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label6.Click

End Sub

End Class

  • Код Form2

Public Class Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim a, b, xmin As Double

Dim z As String = ""

a = Val(TextBox1.Text)

b = Val(TextBox2.Text)

sechenie(a, b, eps, xmin, z)

TextBox3.Text = z

TextBox4.Text = CStr(xmin)

TextBox5.Text = CStr(F(xmin))

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

End

End Sub

End Class