Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-для курсового проектирования4.doc
Скачиваний:
16
Добавлен:
23.08.2019
Размер:
2.36 Mб
Скачать

1.4.4. Контрольные вопросы

  1. Можно ли методом Рунге-Кутта решить дифференциальные уравнения 4-порядка и, что при этом измениться?

  2. Можно ли типы переменных, описанных в начале программы в области General определить в операторах присваивания внутри программы?

  3. Что собой представляют переменные xmin, xmax, ymin, ymax и где они определяются?

  4. Для чего необходим оператор присваивания Label1.Visible=False?

  5. Поясните в программе, где и каким образом рисуются координатные оси, график, масштабная сетка и метки на рисунке.

1.5. Решение систем нелинейных уравнений

Цель работы: изучение методов численного решения систем нелинейных уравнений и приобретение практических навыков по их реализации на ЭВМ.

1.5.1. Теоретическая часть

    • Алгоритм решение системы нелинейных уравнений методом простой итерации.

    • Исходную систему преобразуем к виду .

    • Последовательные приближения к решению системы (определению корня) осуществляется по итерационным формулам: .

    • Решение уточняется до тех пор, пока не выполнится условие Abs(xn-xn-1)< and Abs(yn-yn-1)<. Условие сходимости итерационного процесса будет:

    • Другой метод решения системы нелинейных уравнений, когда трудно отыскать решение на заданном интервале, состоит в использовании дополнительных коэффициентов (шагов интегрирования) a и b, подбираемых путем изменения лишь знака. Значения этих коэффициентов должны находиться в диапазоне от 0.1 до 0.01. Слишком маленькие значения шагов (например, 0.001) приводят к переполнению памяти и затягиванию процесса вычисления (уменьшению быстродействия). Значения коэффициентов близкие к единице приводят к переполнению переменных x,y или к невозможности вычисления их значения из-за наличия логарифмических функций, входящих в уравнения f1 и f2. При этом, исходные уравнения должны быть представлены в следующем виде:

.

1.5.2. Практическая часть

  • Постановка задачи 1. Решить методом простой итерации систему нелинейных уравнений следующего вида:

.

Исходную систему преобразуем к виду .

Последовательные приближения к решению системы осуществляется по формулам

.

Для нахождения условия сходимости итерационного процесса определим производные: Условие сходимости выполняется для точек расположенных внутри области (0,5<x<; -0,7<y<0,7). Зададимся начальными значениями корня для последующего уточнения: x0 =0.9; y0 = -0.45.

    • Программный код решения системы нелинейных уравнений методом простой итерации.

Private Function f1(x As Double, y As Double) As Double

f1 = x ^ 2 + y ^ 2 - 1

End Function

Private Function f2(x As Double, y As Double) As Double

f2 = Log(x) + 2 * y + 1

End Function

Private Function fi1(x As Double, y As Double) As Double

fi1 = Sqr(1 - y * y)

End Function

Private Function fi2(x As Double, y As Double) As Double

fi2 = (1 + Log(x)) / 2

End Function

Private Sub Form_Load()

ss$ = ""

Caption = "Система нелинейных уравнений"

e# = InputBox("Введите точность вычисления",,0.000001)

x0# = InputBox("Начальное нач. приближение корня для Х",,2)

y0# = InputBox("Начальное нач. приближение корня для У",,0.1)

y# = y0

x# = x0

Do

ss = ss & "X = " & Format(x, "#0.00000000") & Space(5) & _

"Y = " & Format(y, "#0.00000000") & vbCrLf

x

Рис.9

0 = fi1(x, y)

y0 = fi2(x, y)

d1# = Abs(x - x0)

d2# = Abs(y - y0)

x = x0

y = y0

Loop Until d1 <= e And d2 <= e

ss = ss + "Решение системы " & vbCrLf

ss = ss & "Х = " & _

Format(x, "#0.00000000") &_Space(5) & _

"Y = " & Format(y, "#0.00000000")

Text1 = ss

End Sub

Постановка задачи 2. Решить систему нелинейных уравнений с помощью метода дополнительных коэффициентов a и b:

.

    • Программный код решения системы уравнений, используя метод дополнительных коэффициентов.

Private Const a = 0.01, b = 0.01

Private Function f1(x As Double, y As Double) As Double

f1 = x + 3 * Log(x) / Log(10) - y ^ 2

End Function

Private Function f2(x As Double, y As Double) As Double

f2 = 2 * x ^ 2 - y * x + 1 - 5 * x

End Function

Private Function f(x As Double, y As Double) As Double

f = x + a * f1(x, y)

End Function

Private Function p(x As Double, y As Double) As Double

p = y + b * f2(x, y)

End Function

Private Sub Form_Load()

ss$ = ""

Caption = "Система нелинейных уравнений"

e# = InputBox("Введите точность вычисления",,0.0000001)

x0# = InputBox("Начальное нач. приближение корня для Х",,4)

y0# = InputBox("Начальное нач. приближение корня для У",,3)

Do

y# = y0

x# = x0

ss = ss & "X = " & Format(x, "#0.00000000") & Space(5) & _

"Y=" & Format(y, "#0.00000000") & vbCrLf

x0 = f(x, y)

y0 = p(x, y)

d1# = Abs(x - x0)

d2# = Abs(y - y0)

x = x0

y = y0

Loop Until d1 <= e And d2 <= e

ss= ss +"Решение системы " & vbCrLf & " Х= " & _

Format(x, "#0.00000000") & Space(5) & "Функция F1(x,y)= "

ss = ss & Format(f1(x, y), "#0.00000000") & vbCrLf

ss = ss & "Y = " & Format(y, "#0.00000000") & Space(5) & _

"Функция F2(x,y)= " & Format(f2(x, y), "#0.00000000")

Text1 = ss

End Sub

Рис.10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]