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

1 Решение нелинейных уравнений хорд

Метод хорд применяют для решения нелинейных уравнений

F(x)=0 обычно в тех случаях , когда получить выражение для

производной dF(x)/dx либо трудно, либо оно имеет громоздкий вид . В

этом случае выражение для производной в формуле (4.3)

заменяют его разностным аналогом, после чего формула (4.3)

принимает вид

Можно дать и геометрическую интерпретацию метода хорд (рис. 4.5).

Рис 4.5 Геометрическая интерпретация метода хорд для решения

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

Для начала решения выбираются две произвольные точки на оси x.

На нашем рисунке это точки x0 и x1. Затем через две точки (x0,F(x0))

и (x1,F(x1)) проводится хорда. Эта хорда пересекает линию y=0

в точке x2. Эта точка считается первым приближением к корню.

Далее , если |F(x2)|>eps или |(x0-x1)|>eps (eps - требуемая погрешность в

вычислении корня) , тогда точки x1 и x2 выбирают в качестве новых

стартовых точек , т.е. x0=x1, x1=x2 и вновь проводят хорду и т.д.

Критерием окончания итерационного процесса считается достаточная

близость модуля значения функции |F(x2)| к нулю , а также достаточно

близкие значения двух последовательных приближений к корню x0 и x1.

Чтобы найти, в какой точке хорда, проведенная через точки (x0,F(x0))

и (x1,F(x1)), пересекает ось x, напишем уравнение этой хорды:

y(x)=F(x1) + (F(x1)-F(x0))*(x-x1)/(x1-x0).

Решая уравнение y(x2)=0, получаем формулу (4.4).

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

имеет следующий вид (рис 4.6).

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

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

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

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

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

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

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

3 Приложение

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

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

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

П.4.График функции с хордами .

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()

X0 = Val(Text1)

X1 = Val(Text2)

c = Val(Text3)

Do While Abs(X0 - X1) > c

X2 = X1 - (3 * X1 - 14 + Exp(X1) - Exp(-X1)) * (X1 - X0) / (3 * X1 - 14 + Exp(X1) - Exp(-X1) - 3 * X0 + 14 - Exp(X0) + Exp(-X0))

X0 = X1

X1 = X2

Loop

Text4.Text = X2

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 = 0 To 10 Step 0.001

Picture1.PSet (x, 3 * x - 14 + Exp(x) - Exp(-x)), BackColor

Picture1.PSet (x, 3 - 14 + Exp(1) - Exp(-1) + (3 - 14 + Exp(1) - Exp(-1) + 14) * (x - 1)), BackColor

Picture1.PSet (x, 6 - 14 + Exp(2) - Exp(-2) + (6 - 14 + Exp(2) - Exp(-2) - 3 + 14 - Exp(1) + Exp(-1)) * (x - 2)), BackColor

Next x

Picture1.DrawWidth = 2

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

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

Picture1.DrawWidth = 1

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

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

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

Next x

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

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

Next x

Picture1.DrawWidth = 3

For x = 0.001 To 10 Step 0.001

Picture1.PSet (x, (3 * x - 14 + Exp(x) - Exp(-x)) / 20), vbBlack

Picture1.PSet (x, (9 - 14 + Exp(3) - Exp(-3) + (9 - 14 + Exp(3) - Exp(-3) - 6 + 14 - Exp(2) + Exp(-2)) * (x - 3)) / 20), vbBlue

Picture1.PSet (x, (6 - 14 + Exp(2) - Exp(-2) + (6 - 14 + Exp(2) - Exp(-2) - 3 + 14 - Exp(1) + Exp(-1)) * (x - 2)) / 20), vbYellow

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 Basic5