Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4 Лаборторная работа ВМ

.docx
Скачиваний:
0
Добавлен:
02.01.2024
Размер:
220.86 Кб
Скачать

Федеральное агентство связи Ордена

Трудового Красного Знамени

федеральное бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

(МТУСИ)

Кафедра Информатики

Предмет: Вычислительные модели

Лабораторная работа № 4

Тема:

««Методы решения обыкновенных дифференциальных уравнений»

Вариант 00

Выполнил:

Проверил(а): Величайший преподаватель

_________________

Москва 0000

Вариант

вар

Уравнение

x0

y0

h0

a

b

18

y' = y (x – 1)

0

1

0.4

0

4

  • дифференциальное уравнение y' = y (x – 1)

  • интервал [0; 4];

  • начальные условия x0=0, y0=1;

  • шаг интегрирования h0=0.4.

Точное аналитическое решение заданного дифференциального уравнения

Найдем точное аналитическое решение заданного дифференциального уравнения (решение y=y(x)) методом разделения переменных. Для этого запишем уравнение в виде и проинтегрируем с учетом начальных условий

+ x + C

y=

c=ln(1)+(

Получаем аналитическое решение уравнения

Значения точного решения ОДУ - y(x)

Вычислим значения полученного решения y(xi) на отрезке [0;4] с шагом изменения аргумента h=0.4:

Численное решение заданного ДУ методом Эйлера

Найдем значения численного решение ОДУ методом Эйлера ( ) в точках отрезка [0;4] с шагом h=0.4. Для этого ДУ записывают в виде y’=f(x,y) . Тогда общая формула для определения очередного значения функции по методу Эйлера имеет вид yi+1=yi+h×f(xi,yi), где , :

Значения погрешностей:

Вычислим значения погрешностей для , , :

Решения, полученные по составленной программе «расчетом на ПК»

Выполним программу и получим решение (то есть получим значения с шагом h= 0.4 и Е =10-4 ):

Схема Алгоритмов проекта

Рисунок 1 - Схема Алгоритмов проекта

Программный код

Option Strict On

Option Explicit On

Imports System.Math

Public Class Form1

Function fy(ByVal x As Double, ByVal y As Double) As Double

Dim z As Double

z = y * (x - 1)

Return z

End Function

Function r(ByVal x As Double, ByVal y As Double, ByVal h As Double, ByVal m As Double) As Double

Dim k1, k2, k3, k4 As Double

For j = 1 To m

k1 = fy(x, y)

k2 = fy(x + h / 2, y + h * k1 / 2)

k3 = fy(x + h / 2, y + h * k2 / 2)

k4 = fy(x + h, y + h * k3)

y = y + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)

x = x + h

Next

Return y

End Function

Sub diff(ByVal x0 As Double, ByVal y0 As Double, ByVal b As Double, ByVal h0 As Double, ByVal eps As Double)

Dim h, y, y1, x As Double

Dim n As Integer

Dim m As Integer

n = CInt((b - x0) / h0)

ListBox1.Items.Add(x0) : ListBox1.Items.Add(vbNewLine)

ListBox2.Items.Add(y0) : ListBox2.Items.Add(vbNewLine)

ListBox4.Items.Add(h0) : ListBox4.Items.Add(vbNewLine)

ListBox5.Items.Add(vbNewLine) : ListBox5.Items.Add(vbNewLine)

For i = 1 To n

h = h0

m = 1

y = r(x0, y0, h, m)

Do

y1 = y : h = h / 2

x = x0 : y = y0

m = 2 * m

y = r(x, y, h, m)

Loop Until Abs(y - y1) / 15 < eps

x0 = x0 + h0

y0 = y

ListBox1.Items.Add(Format(x0, "0.0"))

ListBox2.Items.Add(Format(y0, "0.000000000000000"))

ListBox4.Items.Add(h)

ListBox5.Items.Add(m)

Next

End Sub

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

Dim x0, y0, b, h0, eps As Double

x0 = Val(TextBox1.Text)

y0 = Val(TextBox2.Text)

b = Val(TextBox3.Text)

h0 = Val(TextBox4.Text)

eps = Val(TextBox5.Text)

diff(x0, y0, b, h0, eps)

End Sub

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

End

End Sub

End Class

Результат выполнения программы

Рисунок 2 - Результат выполнения программы

Все решения, полученные выше, сведем в табл. результатов

xi

y(xi)

Ei

0

1

1

0

1

0

0.4

0.72615

0.6

0.12615

0.7261499

10e-8

0.8

0.61878

0.456

0.16278

0.61878411

4.11e-6

1.2

0.61878

0.41952

0.19926

0.61878410

4.1e-6

1.6

0.72615

0.45308

0.27307

0.7261496

4e-7

2

1

0.56182

0.43818

0.999998

2e-6

2.4

1.61607

0.78655

0.82952

1.61605064

1.936e-5

2.8

3.06485

1.22702

1.83784

3.06479905

5.095e-5

3.2

6.82096

2.11047

4.71049

6.820771418

1.886e-4

3.6

17.81427

3.96768

13.84659

17.81375721

5.128e-4

4

54.59815

8.094075

46.5040753

54.59655693429

1.593e-3

– аналитическое решение ОДУ,

- решение ОДУ, полученное методом Эйлера, ,

- решение ОДУ методом Рунге-Кутты 4-го порядка,

Графическая иллюстрация решений

Рисунок 3 - Графическая иллюстрация решений