Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ
УРАЛЬСКИЙ ТЕХНИЧЕСКИЙ ИНСТИТУТ СВЯЗИ И ИНФОРМАТИКИ
Факультет телекоммуникаций
Визуализация численных методов
Выполнила: студентка гр. МЕ-52 Раздрогина Т.А.
Руководитель: Минина Е.Е.
Екатеринбург, 2006
Содержание
Введение……………………………………………………………………………………3
Постановка задачи…………………………………………………………………………4
Суть используемых методов………………………………………………………………5
Описание методов решения……………………………………………………………….6
Блок схема основных процедур…………………………………………………………...8
Исходная форма……………………………………………………………………………11
Форма конечный вид………………………………………………………………………12
Листинг программы………………………………………………………………………..13
Решение задачи в MathCAD……………………………………………………………….15
Заключение………………………………………………………………………………….16
Существует множество технических систем и технологических процессов, характеристики которых непрерывно меняются со временем t. Такие явления обычно подчиняются физическим законам, которые формируются в виде дифференциальных уравнений.
Дифференциальными называются уравнения, содержащие одну или несколько производных. Лишь очень немногие из них удаётся решить без помощи вычислительной техники. Поэтому численные методы решения дифференциальных уравнений играют важную роль в практике инженерных расчётов.
В зависимости от числа независимых переменных и типа, входящих в них производных дифференциальные уравнения делятся на две существенно различные категории: обыкновенные, содержание одну независимую переменную и производные по ней, и уравнения в частных производных, содержащие несколько независимых переменных и производные по ним, которые называются частными.
Чтобы решить обыкновенное дифференциальное уравнение, необходимо знать значения зависимой переменой и (или) её производных при некоторых значениях независимой переменной. Если эти дополнительные условия задаются при одном значении независимой переменной, то такая задача называется задачей с начальными условиями, или задачей Коши.
В курсовой работе необходимо решить задачу Коши для дифференциального уравнения первого порядка на отрезке [x0, xк ] с шагом h и начальным условием y(x0)= y0 методами Эйлера и Эйлера модифицированный.
Дано дифференциальное уравнение: (x+1)2 dy+ydx =0,
Общее уравнение: ln׀y׀= -arctg(x)+c
Начальные условия x0 =0
xk =1.8
h=0.1
y0 =1
Численное решение задачи Коши сводится к табулированию искомой функции. Ответ должен быть получен в виде таблицы результатов. Данные таблицы визуализировать на форме в виде графиков.
Метод Эйлера. Иногда этот метод называют методом Рунге Кутта первого порядка точности.
Данный метод одношаговый. Табулирование функции происходит поочерёдно в каждой точке. Для расчёта значения функции в очередном узле необходимо использовать значения функции в одном предыдущем узле.
Метод Эйлера модифицированный. Для уменьшения погрешности вычислений часто используется модифицированный метод Эйлера. Этот метод имеет так же следующие названия: метод Эйлера-Коши или метод Рунге Кутта второго порядка точности. При использовании модифицированного метода Эйлера шаг h делится на два отрезка.
Дано дифференциальное уравнение первого порядка
(x+1)2 dy+ydx =0
с начальным условием
y(x0)= y0.
Выберем шаг h=0.1 и введём обозначения:
xi = x0+h*i и yi=y(xi)., i=1,2,3…
xi узлы сетки,
yi - значение интегральной функции в узлах сетки.
Начальные условия задачи:
x0 =1
xk =1.8
y0 =1
1. Метод Эйлера
Иллюстрации к решению приведены на рисунке 1.
Проведём прямую AB через точку (x (i),y (i)) под углом α. При этом
tgα = f(x(i),y(i)). (1)
В соответствии с геометрическим смыслом задачи, прямая АВ является касательной к интегральной функции. Произведём замену точки интегральной функции точкой, лежащей на касательной АВ.
Тогда y(i+1)=y(i)+∆y (2)
Из прямоугольного треугольника ABC tgα = ∆y / h (3)
Приравняем правые части (1) и (3). Получим ∆y / h = f(x(i),y(i)).
Отсюда ∆y = h* f(x(i),y(i)).
Подставим в это выражение формулу (2), а затем преобразуем его. В результате получаем формулу расчёта очередной точки интегральной функции:
y(i+1) = y(i) + h* f(x(i),y(i)) (4).
Из формулы (4) видно, что для расчёта каждой следующей точки интегральной функции необходимо знать значение только одной предыдущей точки. Таким образом, зная начальные условия, можно построить интегральную кривую на заданном промежутке. На рисунке погрешность вычислений для i го шага обозначена е.
2. Метод Эйлера модифицированный
При использовании модифицированного метода Эйлера шаг h делится на два отрезка. Иллюстрации к решению приведены на рисунке 2.
Решение происходит в несколько этапов:
tgα = f (x(i),y(i))
tgα1 = f (x(i)+h/2,y(i)+ h/2*f (x(i),y(i)))
y(i+1) = y(i) + h*f(x(i)+h/2, y(i)+h/2*f(x(i),y(i))
Модифицированный Эйлер даёт меньшую погрешность. На рисунке 2 это хорошо видно. Так величина Е1 характеризует погрешность метода Эйлера, а Е погрешность метода Эйлера модифицированного.
Блок схема основных процедур.
Исходная форма.
Форма конечный вид
Dim X(9) As Single
Dim Y(9) As Single
Dim Y1(9) As Single
Dim Y2(9) As Single
Private Function f(t As Single, z As Single) As Single
f = -z / (1+t)2
End Function
Private Function f1(l As Single) As Single
f1 = Exp (-atan(l)+3.14/4)
End Function
Private Sub Command1_Click()
x0 = Val(Text1.Text)
xk = Val(Text2.Text)
y0 = Val(Text3.Text)
h = Val(Text4.Text)
MSFlexGrid1.TextMatrix(0, 0) = "X"
MSFlexGrid1.TextMatrix(0, 1) = "Y"
MSFlexGrid1.TextMatrix(0, 2) = "Y1"
MSFlexGrid1.TextMatrix(0, 3) = "Y2"
n = (xk - x0) / h
MSFlexGrid1.Rows = n + 2
Max = f1(X(0))
Min = f1(X(0))
X(0)=x0
Y1(0) = y0
Y2(0) = y0
For i = 0 To n
X(i) = x0 + i * h
Y(i) = Round(f1(X(i)))
Y1(i + 1) = Round(Y1(i) + h * f(X(i), Y1(i)))
Y2(i + 1) = Round(Y2(i) + h * f(X(i) + h / 2, Y2(i) + h / 2 * f(X(i), Y2(i))))
MSFlexGrid1.TextMatrix(i + 1, 0) = X(i)
MSFlexGrid1.TextMatrix(i + 1, 1) = Y(i)
MSFlexGrid1.TextMatrix(i + 1, 2) = Y1(i)
MSFlexGrid1.TextMatrix(i + 1, 3) = Y2(i)
If Y(i) > Max Then Max = Y(i)
If Y(i) < Min Then Min = Y(i)
If Y1(i) > Max Then Max = Y1(i)
If Y1(i) < Min Then Min = Y1(i)
If Y2(i) > Max Then Max = Y2(i)
If Y2(i) < Min Then Min = Y2(i)
Next i
For i = 0 To n - 1
d = 2412 / (xk - x0)
d1 = 3368 / (Min - Max)
z1 = Round((X(i) - X(0)) * d + 240, 0)
z2 = Round(3720 - Abs((Y(i) - Min) * d1), 0)
z3 = Round((X(i + 1) - X(0)) * d + 240, 0)
z4 = Round(3720 - Abs((Y(i + 1) - Min) * d1), 0)
q1 = Round(3720 - Abs((Y1(i) - Min) * d1), 0)
q2 = Round(3720 - Abs((Y1(i + 1) - Min) * d1), 0)
o1 = Round(3720 - Abs((Y2(i) - Min) * d1), 0)
o2 = Round(3720 - Abs((Y2(i + 1) - Min) * d1), 0)
Picture1.Line (z1, z2)-(z3, z4)
Picture1.Line (z1, q1)-(z3, q2)
Picture1.Line (z1, o1)-(z3, o2)
Next i
End Sub
Заключение
В данной курсовой работе мы решили задачу Коши для дифференциального уравнения первого порядка на отрезке [x0, xк ] с шагом h и начальным условием y(x0)= y0 методами Эйлера и Эйлера модифицированный, предварительно тщательно ознакомившись с этими методами.
Ответ получен в виде таблицы результатов. Данные таблицы визуализированы на форме в виде графиков. Для уменьшения погрешности вычислений очень удобен модифицированный метод Эйлера.
B
О
x(i)
x(i+1)
hаавывывывысывсывсывсысысысысыссчс
y(i)
y
x
е
y= y(x)
y(i+1)
α
A
Рис. 1
B
C
A
x
α1
α
h/2
x(i)
O
y
h
x(i+1)
E1
E
y= y(x)
Рис. 2
Начало
x0, xk, y0, h
n = (xk x0)/h
Max = f1(x0)
Min = f1(x0)
i = 0 … n
Y1(0) = y0
Y2(0) = y0
X(i) = x0 + i*h
X(i), Y(i), Y1(i), Y2(i)
Y(i)>max
1
4
2
3
-
+
Y(i) = f1(X(i))
1(i+1) = Y(i)+h*f(X(i),Y(i))
Y2(i + 1) = Y2(i) + h * f(X(i) + h / 2, Y2(i) + h / 2 * f(X(i), Y(i))
-
+
Max = Y(i)
4
3
Y(i)<min
Min = Y(i)
Шаблон графика
d = 2412 / (xk - x0)
d1 = 3368 / (Max - Min)
z1 = (X(i) - X(0)) * d + 240
z2 = 3720 - (Y(i) - Min) * d1
z3 = (X(i + 1) - X(0)) * d + 240
z4 = 3720 - (Y(i + 1) - Min) * d1
Line (z1, z2) - (z3, z4)
q1 = 3720 - (Y1(i) - Min) * d1
q2 = 3720 - (Y1(i + 1) - Min) * d1
Line (z1, q1) - (z2, q2)
2
o1 = 3720 - (Y2(i) - Min) * d1
o2 = 3720 - (Y2(i + 1) - Min) * d1
1
Line (z1, o1) - (z2, o2)
Конец
f (t)
f = -z / 1+t2
Конец
f1 (l)
f1=Exp(-arctg(1)+π/4)
Конец
+
Max = Y1(i)
Y2(i)<min
Min = Y2(i)
Max = Y2(i)
+
+
+
Y2(i)>max
Min = Y1(i)
Y1(i)<min
Y1(i)>max
i = 0 … n-1
6
6