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

informatika_6

.docx
Скачиваний:
41
Добавлен:
23.03.2016
Размер:
74.66 Кб
Скачать

Министерство образования и Науки Российской Федерации

Казанский национальный исследовательский технологический университет

Кафедра химической кибернетики

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

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

Выполнили студентки

гр.1121-51

Абдуллина А.,

Исхакова А.

Проверил: Шулаев М.В.

Казань, 2013

Работа 6.

Дано: дифференциальное уравнение с начальным условием у0(1,7) = 5,3 на интервале [1,7; 2,7].

Задача:

1). Решить дифференциальное уравнение методом Эйлера и Рунге-Кутта в таблице Excel с h = 0,1.

2). Решить дифференциальное уравнение методом Эйлера и Рунге-Кутта в программе Visual Basic c h = 0,01, с шагом печати hp = 0,1 по результатам решения построить точечную диаграмму.

1. Решение ДУ в таблице Excel.

2. Решение ДУ в программе Visual Basic.

Метод Эйлера.

Sub Metod_E1()

x0 = Val(InputBox("Ввод х0", "Начальное значение "))

y0 = Val(InputBox("Ввод y0", "Начальное значение"))

h = Val(InputBox("Ввод h", "Шаг интегрирования"))

hp = Val(InputBox("Ввод hp", "Шаг печати"))

b = Val(InputBox("Ввод b", "Конец интервала"))

x = x0: y = y0

i = 12

While x < b

f = x + Cos(y / 3.14)

y = y + h

x = x + h

Do While x > hp

i = i + 1

Worksheets("лаба6").Cells(i, 1).Value = x

Worksheets("лаба6").Cells(i, 2).Value = y

hp = hp + 1

Loop

Wend

End Sub

Метод Рунге-Кутта.

Sub Runge_Kytta()

h = 0.01

hp = 0.1

x0 = Val(InputBox(“Введите начальное значение x0", "Ввод х0"))

xk = Val(InputBox(“Введите начальное значение xk", "Ввод xk"))

y0 = Val(InputBox("Введите начальное значение y0", "Ввод y0"))

x = x0: y = y0

i = 20: j = 1

While x < xk

k0 = z(x, y) * h

k1 = z(x + h / 2, y + k0 / 2) * h

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

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

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

x = x + hp

Do While x > hp

i = i + 1

Worksheets("лаба6").Cells(i, j).Value = x

Worksheets("лаба6").Cells(i, j + 1).Value = y

hp = hp + 1

Loop

Wend

End Sub

Самостоятельная работа.

Задание: Решить в программе Visual Basic методом Эйлера систему дифференциальных уравнений: при начальных значениях х0=0; у00)= -83; z0(x0)=17; на интервале [0; 10], шаг интегрирования h = 0,5.

Вычисления в программе.

Sub Metod_Euler_sist()

x = Val(InputBox("Ввести х0", "Ввод х"))

y = Val(InputBox("Ввести y0", "Ввод у"))

z = Val(InputBox("Ввести z0", "Ввод z"))

h = Val(InputBox("h-шаг интегрирования", "Ввод h"))

b = Val(InputBox("Ввести конечное значение b", "Ввод b"))

i = 2

While x <= b

f1 = -0.5 * y + 0.05 * z

f2 = 0.5 * y - 0.05 * z

y = y + h * f1

z = z + h * f2

x = x + h

Worksheets("СРС").Cells(i, 1).Value = x

Worksheets("СРС").Cells(i, 2).Value = y

Worksheets("СРС").Cells(i, 3).Value = z

i = i + 1

Wend

End Sub

Вывод: мы решили обыкновенные дифференциальные уравнения методами Эйлера и Рунге-Кутта в таблице Excel и в программе Visual Basic. Метод Рунге-Кутта оказался более точным, так как он является методом решения обыкновенных дифференциальных уравнений четвертого порядка . Этот метод с повышенной точностью и позволяет производить расчеты с более крупным шагом.

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