Мегаобучалка Главная | О нас | Обратная связь


ОБЫКНОВЕННЫЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ



2016-01-05 298 Обсуждений (0)
ОБЫКНОВЕННЫЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ 0.00 из 5.00 0 оценок





Задание
1. Решить дифференциальное уравнение , , ,
, на отрезке

· аналитическим методом (решение )

· методом Эйлера с шагом ( ) .

· методом Рунге-Кутта -го порядка (программно)


2. Вычислить погрешность для ,

, , .

3. Вычислить погрешность , .
4. Дать графическую иллюстрацию решений.

Исследование задания
Аналитический способ решения данного уравнения – метод разделения переменных.
Запишем уравнение в виде и проинтегрируем с учётом начальных условий.

Получаем , Из начальных условий следует , следовательно, аналитическое решение ОДУ имеет вид .

Решение уравнения методом Эйлера: , .

Для интегрирования дифференциального уравнения методом Рунге-Кутта 4-го порядка воспользуемся формулами:
, .
,

,

,

.

 

 

Воспользуемся программными средствами для решения уравнения методом Эйлера.

Скриншот работы программы

Исходный код программы

  Imports System.Math Public Class Form1   Function f(ByVal x As Single, ByVal y As Single) f = y * Exp(-2 * x) End Function Function F_toch(ByVal x As Single) Return Exp((1 / 2) - ((Exp(-2 * x)) / (2))) End Function Function vvod(ByVal T As TextBox) Return CSng(Val(T.Text)) End Function Sub vivod(ByVal x As Single, ByVal T As TextBox) T.Text = CStr(x) End Sub Sub vivodint(ByVal x As Integer, ByVal T As TextBox) T.Text = CStr(x) End Sub     Sub difur(ByVal x0 As Single, ByVal y0 As Single, ByVal b As Single, _ ByVal h0 As Single, ByRef L As ListBox) Dim h, y, ep As Single, z, z1, z2 As String Dim i, n As Integer n = (b - x0) / h0 z1 = Format(F_toch(x0), "0.0000000") + Space(3) z2 = Format(y, "0.000000") + Space(4) z = Format(x0, "0.00") + Space(6) + z1 L.Items.Add(z) For i = 1 To n h = h0 y = rung((x0), (y0), h)   x0 = x0 + h0 y0 = y ep = Abs(F_toch(x0) - y) If F_toch(x0) > 100 Then z1 = Format(F_toch(x0), "0.0000000") + Space(3) ElseIf F_toch(x0) >= 10 Then z1 = Format(F_toch(x0), "0.0000000") + Space(5) Else z1 = Format(F_toch(x0), "0.0000000") + Space(7) End If If y > 100 Then z2 = Format(y, "0.0000000") + Space(4) ElseIf y >= 10 Then z2 = Format(y, "0.0000000") + Space(6) Else z2 = Format(y, "0.0000000") + Space(8) End If z = Format(x0, "0.00") + Space(6) + z1 + Space(3) + z2 + Space(3) + Format(ep, "0.000000") L.Items.Add(z) Next End Sub Function rung(ByVal x As Single, ByVal y As Single, ByVal h As Single) Dim k1 As Single k1 = f(x, y)   y = y + h * k1 x = x + h   rung = y End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim y0, b, x0, h0 As Single   x0 = vvod(TextBox1) y0 = vvod(TextBox2) b = vvod(TextBox3)   h0 = vvod(TextBox4) difur(x0, y0, b, h0, ListBox1) End Sub   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class  

 

 

Воспользуемся программными средствами для решения уравнения методом Рунге-Кутта 4-го порядка.

Скриншот работы программы


Исходный код программы

Imports System.Math Public Class Form1   Function f(ByVal x As Single, ByVal y As Single) f = y * Exp(-2 * x) End Function   Function F_toch(ByVal x As Single) Return Exp((1 / 2) - ((Exp(-2 * x)) / (2))) End Function Function vvod(ByVal T As TextBox) Return CSng(Val(T.Text)) End Function Sub vivod(ByVal x As Single, ByVal T As TextBox) T.Text = CStr(x) End Sub Sub vivodint(ByVal x As Integer, ByVal T As TextBox) T.Text = CStr(x) End Sub Function rung(ByVal x As Single, ByVal y As Single, ByVal h As Single, ByVal m As Integer) Dim k1, k2, k3, k4 As Single Dim j As Integer For j = 1 To m k1 = f(x, y) k2 = f(x + h / 2, y + h * k1 / 2) k3 = f(x + h / 2, y + h * k2 / 2) k4 = f(x + h, y + h * k3) y = y + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6 x = x + h Next j rung = y End Function Sub difur(ByVal x0 As Single, ByVal y0 As Single, ByVal b As Single, ByVal eps As Single, _ ByVal h0 As Single, ByRef L As ListBox) Dim h, x, y, y1 As Single, z, z1, z2 As String Dim i, m, n As Integer n = (b - x0) / h0   For i = 1 To n h = h0 m = 1 y = rung((x0), (y0), (h), (m)) Do y1 = y : h = h / 2 x = x0 : y = y0 : m = 2 * m y = rung((x), (y), (h), (m)) Loop Until Abs(y - y1) < eps x0 = x0 + h0 y0 = y   If F_toch(x0) > 100 Then z1 = Format(F_toch(x0), "0.0000000") + Space(3) ElseIf F_toch(x0) >= 10 Then z1 = Format(F_toch(x0), "0.0000000") + Space(5) Else z1 = Format(F_toch(x0), "0.0000000") + Space(7) End If If y > 100 Then z2 = Format(y, "0.0000000") + Space(4) ElseIf y >= 10 Then z2 = Format(y, "0.0000000") + Space(6) Else z2 = Format(y, "0.0000000") + Space(8) End If z = Format(x0, "0.00") + Space(6) + z1 + Space(5) + z2 + Space(3) L.Items.Add(z) Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim y0, b, x0, eps, h0 As Single   x0 = vvod(TextBox1) y0 = vvod(TextBox4) b = vvod(TextBox2) eps = vvod(TextBox3) h0 = vvod(TextBox5) difur(x0, y0, b, eps, h0, ListBox1) End Sub   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class  

 

Таблица решений уравнения

       


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

 

 

6. АЛГОРИТМЫ РЕШЕНИЯ ЗАДАЧИ ОДНОМЕРНОЙ ОПТИМИЗАЦИИ

Задание
1.Решить задачу оптимизации функции c точностью методом золотого сечения.
2. Вычислить число итераций, необходимых, чтобы локализовать точку минимума с точностью .
3. Методом дихотомии решить задачу оптимизации (три итерации).
4. Определить длину конечного отрезка, содержащего точку минимума.
5. Вычислить теоретическую точность оптимизации. Сравнить с результатом, полученным в п. 4.
6. Проиллюстрировать графическое решение задачи.

Исследование задания

График функции

1) Определим отрезок унимодальности функции . Практический критерий унимодальности функции требует непрерывности функции и выполнение условия при или неубывания .
Вторая производная при , т.е. функция - унимодальная на отрезке .

Отрезок - начальный отрезок неопределённости.

 

2) Теоретическая величина погрешности определяется соотношениями:
– длина конечного отрезка после итераций для метода дихотомии, - длина начального отрезка.

Для метода золотого сечения длина конечного отрезка после итераций
.

Полагаем, что длина конечного отрезка неопределённости – мера погрешности.
3) Воспользуемся программными средствами для решения задачи оптимизации методом золотого сечения.


Скриншот работы программы

 

Исходный код программы

 

Imports System.Math Public Class Form1 Function f(ByVal x As Single) f = Sqrt(x) + 2 + x ^ 2 End Function   Function vvod(ByVal T As TextBox) Return CSng(Val(T.Text)) End Function Sub vivod(ByVal x As Single, ByVal T As TextBox) T.Text = CStr(x) End Sub Sub vivodint(ByVal x As Integer, ByVal T As TextBox) T.Text = CStr(x) End Sub Sub gold(ByVal a As Single, ByVal b As Single, ByVal eps As Single, _ ByRef x As Single, ByRef n As Integer, ByRef L As ListBox) Dim k1, k2, x1, x2, f1, f2 As Single, z As String k1 = (3 - Sqrt(5)) / 2 k2 = (Sqrt(5) - 1) / 2 x1 = a + k1 * (b - a) x2 = a + k2 * (b - a) f1 = f(x1) f2 = f(x2) n = 0 Do Until (b - a) < eps / 2 n = n + 1 If n > 100 Then z = CStr(n) + Space(2) ElseIf n >= 10 Then z = CStr(n) + Space(4) Else z = CStr(n) + Space(6) End If z = z + Format(a, "0.00000") + Space(3) + Format(b, "0.00000") + Space(3) + Format(f(a), "0.00000") + Space(3) z = z + Format(f(b), "0.00000") + Space(5) + Format(b - a, "0.00000") L.Items.Add(z) If f1 < f2 Then b = x2 : x2 = x1 x1 = a + k1 * (b - a) f2 = f1 : f1 = f(x1) Else a = x1 : x1 = x2 : f1 = f2 x2 = a + k2 * (b - a) f2 = f(x2) End If Loop x = (a + b) / 2 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, b, x, eps As Single Dim n As Integer a = vvod(TextBox1) b = vvod(TextBox2) eps = vvod(TextBox3) gold(a, b, eps, x, n, ListBox1) vivodint(n, TextBox4) vivod(x, TextBox5) vivod(f(x), TextBox6)   End Sub   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub   End Class
, .

Определим число итераций , необходимых для локализации точки минимума с точностью из условия, что длина конечного отрезка неопределённости не превышает заданной точности.

.
𝑁≥ , .

При длина конечного отрезка равна .
Точность достигнута при , т.е. расчёт примерно совпадает с теоретической оценкой.

4) Воспользуемся программными средствами для решения задачи оптимизации методом дихотомии.

 

Скриншот работы программы

 

 

Исходный код программы

 

Imports System.Math Public Class Form1 Function f(ByVal x As Single) f = Sqrt(x) + 2 + x ^ 2 End Function   Function vvod(ByVal T As TextBox) Return CSng(Val(T.Text)) End Function Sub vivod(ByVal x As Single, ByVal T As TextBox) T.Text = CStr(x) End Sub Sub vivodint(ByVal x As Integer, ByVal T As TextBox) T.Text = CStr(x) End Sub Sub dihot(ByVal a As Single, ByVal b As Single, ByVal eps As Single, _ ByRef x As Single, ByRef n As Integer, ByRef L As ListBox) Dim d, x1, x2, f1, f2 As Single, z As String d = eps / 10 n = 0 Do x1 = (a + b) / 2 - d x2 = (a + b) / 2 + d f1 = f(x1) f2 = f(x2) n = n + 1 If n > 100 Then z = CStr(n) + Space(2) ElseIf n >= 10 Then z = CStr(n) + Space(4) Else z = CStr(n) + Space(6) End If z = z + Format(a, "0.00000") + Space(3) + Format(b, "0.00000") + Space(3) + Format(f(a), "0.00000") + Space(3) z = z + Format(f(b), "0.00000") + Space(5) + Format(b - a, "0.00000") L.Items.Add(z) If f1 > f2 Then a = x1 Else b = x2 End If Loop Until (b - a) < eps / 2 x = (a + b) / 2 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, b, x, eps As Single Dim n As Integer a = vvod(TextBox1) b = vvod(TextBox2) eps = vvod(TextBox3) dihot(a, b, eps, x, n, ListBox1) vivodint(n, TextBox4) vivod(x, TextBox5) vivod(f(x), TextBox6)   End Sub   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class  


При определим длину конечного отрезка неопределённости и сравним с расчётом.
. .

.

Расчётная длина . .
Как мы видим, теоретическая точность оптимизации почти в 2 раза больше расчётной точности.


Графическая иллюстрация процесса оптимизации.

 



2016-01-05 298 Обсуждений (0)
ОБЫКНОВЕННЫЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ 0.00 из 5.00 0 оценок









Обсуждение в статье: ОБЫКНОВЕННЫЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (298)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)