Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
103
Добавлен:
02.05.2014
Размер:
257.54 Кб
Скачать

1 Решение нелинейных уравнений методом Ньютона

В методе Ньютона решается уравнение F(x)=0. На рис. 4.3

показана геометрическая интерпретация метода Ньютона для решения

нелинейных уравнений.

Рис. 4.3 Геометрическая интерпретация метода Ньютон

решения нелинейного уравнения F(x)=0

Алгоритм метода Ньютона для поиска корней уравнения F(x)=0 состоит

в следующем.

1. Выберем произвольную точку x0 на оси x и погрешность eps определения корня.

2. Проведем касательную к функции F(x) в точке (x0,F(x0)).

Определим точку, в которой касательная пересекает линию y=0.

Обозначим эту точку x1.

3. Вычислим значение функции F(x) в точке x1. Если |F(x1)|>eps

или |x0-x1|>eps, тогда в качестве новой точки x0 выберем x1 (т.е. x0=x1)

и перейдем к пункту 2. Если |F(x1)|<eps и |x0-x1|<eps - считаем ,

что корень найден с требуемой погрешностью eps и выходим из программы.

Уравнение касательной к функции F(x) в точке (x0,F(x0)) имеет вид

Решая уравнение y(x1)=0 получим

Блок-схема программы для решения нелинейного уравнения методом Ньютона

Figure 4. Блок- схема программы для решения нелинейного упавнения F(x)=0 методом Ньютона

Рис. 4.4 Блок- схема программы для решения нелинейного уравнения F(x)=0 методом Ньютона

2 Разработка меню

Я разрабатывал меню следующим образом : щелкнул правой кнопкой мыши на форму и выбрал Menu Editor . Заполнял Menu Editor так:

После закрытия Menu Editor появляется меню (выделено)

Когда кликаем левой кнопкой мыши на «Файл» поя

Когда кликаем левой кнопкой мыши на «Решение лин. ур-я» появляются 3-и команды «Вычисление корня», «График ур-я с касательными», «График точности» .Первая команда открывает форму ,где выполняются вычисления(П.3) . Вторая команда открывает форму, где выполняется графическая визуализация данного метода(П.4). Третья команда открывает форму ,где показана зависимость точности от числа касательных(П.5).

3 Приложение

П.1.Титульный лист .При нажатии кнопки «ОК» титульный лист закрывается и открывается Форма меню.

П.2. Форма меню. При нажатии кнопки «Вычислить корни» открывается форма ,где выполняются вычисления .В случае если необходимо выйти жмем на кнопку «Выход» или кликнем на «Фаил» ® «Выход».

П.3.Форма ,где выполняются вычисления . При нажатии кнопки «Вычислить» выполняются вычисления . При нажатии кнопки «График» открывается форма графической визуализации данного метода(П.4.). При нажатии кнопки «Точность» открывается форма ,где показана зависимость точности от числа касательных(П.5.).

П.4.График функции с тремя касательными .

П.5.График зависимости точности от числа касательных.

4 Коды

На форме 1

Private Sub Command1_Click()

Form2.Show

Form1.Hide

End Sub

На форме 2

Private Sub Command1_Click()

Load Form3

Form3.Show 1, Form2

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub mnuDiff_c_Click()

Load Form3

Form3.Show 1

End Sub

Private Sub mnuDiff_g_Click()

Load Form4

Form4.Show 1

End Sub

Private Sub mnuExit_Click()

End

End Sub

Private Sub mnuFileSave_Click()

Form6.Show 1

End Sub

Private Sub mnuInt_b_Click()

Load Form4

Form4.Show 1

End Sub

Private Sub mnuInt_g_Click()

Load Form5

Form5.Show 1

End Sub

На форме 3

Private Sub Command1_Click()

a = Val(Text1)

b = Val(Text2)

c = Val(Text3)

Picture1.Cls

Picture2.Cls

x0 = b

If (3 - 4 / x0) * (4 / x0 ^ 2) > 0 Then

X1 = x0 - (3 * x0 - 4 * Log(x0) - 5) / (3 - 4 / x0)

s = Abs(X1 - x0)

x0 = X1

Picture2.Print X1

End If

For Xk = a To b Step 0.1

If (3 * Xk - 4 * Log(Xk) - 5) * (3 - 4 / Xk) > 0 Then

Do While s > c

Xk1 = Xk - (3 * Xk - 4 * Log(Xk) - 5) / (3 - 4 / Xk)

s = Abs(Xk1 - Xk)

Xk = Xk1

y = (3 * Xk1 - 4 * Log(Xk1) - 5)

Loop

Picture1.Print Xk1, " ", y

End If

Next Xk

End Sub

Private Sub Command2_Click()

Load Form4

Form4.Show 1

End Sub

Private Sub Command4_Click()

Load Form5

Form5.Show 1

End Sub

На форме 4

Private Sub Form_Load()

Dim x As Byte

Picture1.Scale (-11, 1.1)-(11, -1.1)

MsgBox "Установите значения параметров и" _

& " щелкните в графическом окне", vbInformation, "Начало работы"

End Sub

Private Sub Picture1_Click()

For x = 1 To 10 Step 0.001

Picture1.PSet (x, 3 * x - 4 * Log(x) - 5), BackColor

Picture1.PSet (x, 1 - 4 * Log(2) + (x - 2)), BackColor

Picture1.PSet (x, 4 - 4 * Log(3) + (3 - 4 / 3) * (x - 3)), BackColor

Picture1.PSet (x, 7 - 4 * Log(4) + 2 * (x - 4)), BackColor

Next x

Picture1.DrawWidth = 2

Picture1.Line (-11, 0)-(11, 0)

Picture1.Line (0, 1.1)-(0, -1.1)

Picture1.DrawWidth = 1

Picture1.DrawStyle = 2 'Пунктир

For x = -10 To 10 Step 1 'Вертикальные оси

Picture1.Line (x, -1)-(x, 1)

Next x

For x = 1 To -1.1 Step -0.1 'Горизонтальные оси

Picture1.Line (-10, x)-(10, x)

Next x

Picture1.DrawWidth = 1

For x = 0.001 To 10 Step 0.001

Picture1.PSet (x, (3 * x - 4 * Log(x) - 5) / 10), vbYellow

Picture1.PSet (x, (1 - 4 * Log(2) + (x - 2)) / 10), vbRed

Picture1.PSet (x, (4 - 4 * Log(3) + (3 - 4 / 3) * (x - 3)) / 10), vbRed

Picture1.PSet (x, (7 - 4 * Log(4) + 2 * (x - 4)) / 10), vbRed

Next x

End Sub

На форме 5

Private Sub Form_Load()

Dim x As Byte

Picture1.Scale (-11, 1.1)-(11, -1.1)

MsgBox "Установите значения параметров и" _

& " щелкните в графическом окне", vbInformation, "Начало работы"

End Sub

Private Sub Picture1_Click()

For x = 1 To 2 Step 0.001

Picture1.PSet (x, 1), BackColor

Next x

Picture1.DrawWidth = 2

Picture1.Line (-11, 0)-(11, 0)

Picture1.Line (0, 1.1)-(0, -1.1)

Picture1.DrawWidth = 1

Picture1.DrawStyle = 1 'Пунктир

For x = -10 To 10 Step 1 'Вертикальные оси

Picture1.Line (x, -1)-(x, 1)

Next x

For x = 1 To -1.1 Step -0.1 'Горизонтальные оси

Picture1.Line (-10, x)-(10, x)

Next x

Picture1.DrawWidth = 4

For x = 1 To 2.6 Step 0.001

Picture1.PSet (x, 3 / 10), vbBlue

Next x

For y = 2.6 To 6 Step 0.001

Picture1.PSet (y, 1), BackColor

Next y

Picture1.DrawWidth = 1

Picture1.Line (-11, 0)-(11, 0)

Picture1.Line (0, 1.1)-(0, -1.1)

Picture1.DrawWidth = 1

Picture1.DrawStyle = 1 'Пунктир

For y = -10 To 10 Step 1 'Вертикальные оси

Picture1.Line (y, -1)-(y, 1)

Next y

For y = 1 To -1.1 Step -0.1 'Горизонтальные оси

Picture1.Line (-10, y)-(10, y)

Next y

Picture1.DrawWidth = 4

For y = 2.6 To 6 Step 0.001

Picture1.PSet (y, 4 / 10), vbBlue

Next y

For z = 6 To 10 Step 0.001

Picture1.PSet (x, 1), BackColor

Next z

Picture1.DrawWidth = 2

Picture1.Line (-11, 0)-(11, 0)

Picture1.Line (0, 1.1)-(0, -1.1)

Picture1.DrawWidth = 1

Picture1.DrawStyle = 1 'Пунктир

For z = -10 To 10 Step 1 'Вертикальные оси

Picture1.Line (x, -1)-(x, 1)

Next z

For z = 1 To -1.1 Step -0.1 'Горизонтальные оси

Picture1.Line (-10, x)-(10, x)

Next z

Picture1.DrawWidth = 4

For z = 6 To 10 Step 0.001

Picture1.PSet (z, 5 / 10), vbBlue

Next z

For q = 2.6 To 2.6 Step 0.001

Picture1.PSet (q, 1), BackColor

Next q

Picture1.DrawWidth = 2

Picture1.Line (-11, 0)-(11, 0)

Picture1.Line (0, 1.1)-(0, -1.1)

Picture1.DrawWidth = 1

Picture1.DrawStyle = 1 'Пунктир

For q = -10 To 10 Step 1 'Вертикальные оси

Picture1.Line (q, -1)-(q, 1)

Next q

For q = 1 To -1.1 Step -0.1 'Горизонтальные оси

Picture1.Line (-10, q)-(10, q)

Next q

Picture1.DrawWidth = 4

For q = 2.6 To 2.6 Step 0.001

Picture1.PSet (q, 3.3 / 10), vbBlue

Next q

Соседние файлы в папке Курсовая работа по Visual Basic4