Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУИКАЦИЙ ИИНФОРМАТИКИ
Кафедра физики, прикладной математики и информатики
Курсовая по информатике
На тему: «Визуализация численных методов»
Студент: Паршуков Артем Алексеевич
Группа: МЕ-51
Преподаватель: Минина Елена Евгеньевна
Екатеринбург 2006
[1] Оглавление [1.1] Постановка задачи: [1.2] Математическая модель:
[2] [2.1] Метод Эйлера модифицированного [2.2] Блок-схема описания функции: [2.3] Исходная форма: [2.4] Итоговая форма: [3] Листинг программы на языке Visual Basic [4] Вывод |
Введение
В данной курсовой работе у меня состоит задача в том, чтобы решить дифференциальное уравнение с помощью двух методов:1)Эйлер 2) Эйлер Модифицированный
В курсовой работе требуется написать программу на языке Visual Basic, для решения и визуализации данного дифференциального уравнения первого порядка при помощи графика. В программе я сравню эти два метода и затем попытаюсь оценить погрешность и правильность решения.
Постановка задачи и математическая модель
Дано дифференциальное уравнение и начальное условие . Требуется найти функцию , удовлетворяющую как указанному уравнению, так и начальному условию. Также получить результаты в виде таблицы, и затем их отобразить на графиках.
Дано:
X0=0
Xk=0.8
h=0.05
Y0=4
Найти:
Y - массив значений искомого решения в узлах сетки.
Метод Эйлера:
Данный метод одношаговый. Табулирование функции происходит поочередно в каждой точке. Для расчета значения функции в очередном узле необходимо использовать значение функции в одном предыдущем узле.
Пусть дано дифференциальное уравнение первого порядка:
с начальным условием:
Выберем шаг h=0.1 и введём обозначения:
и , где =0,1,2…,
-узлы сетки,
-значение интегральной функции в узлах.
В соответствии с геометрическим смыслом задачи, прямая АВ является касательной к интегральной функции. Произведём замену точки интегральной функции точкой, лежащей на касательной АВ.
Тогда (2).
Из прямоугольного треугольника АВС: (3).
Приравняем правые части (1) и(3). Получим .
Отсюда
Подставим в это выражение формулу (2), а затем преобразуем его. В результате получаем формулу расчёта очередной точки интегральной функции: (4).
Из формулы (4) видно, что для расчета каждой следующей точки интегральной функции необходимо знать значение только одной предыдущей точки. Таким образом, зная начальные условия, можно построить интегральную кривую на заданном промежутке.
Этот метод используется для уменьшения погрешности вычислений.
Пусть дано дифференциальное уравнение первого порядка:
с начальным условием:
Выберем шаг h=0.1 и введём обозначения: и , где =0,1,2…,
-узлы сетки,
-значение интегральной функции в узлах.
При использовании модифицированного метода Эйлера шаг h делится на два отрезка.
Иллюстрации к решению приведены на рисунке 4.
Проведем решение в несколько этапов:
1. Обозначим точки: А(хi; уi), C(xi+h/2, yi+h/2*f(xi; yi)) и В(хi+1; yi+1).
2. Через точку А проведем прямую под углом , где
3. На этой прямой найдем точку C(xi+h/2, yi+h/2*f(xi; yi)).
4. Через точку С проведем прямую под углом, где
5. Через точку А проведем прямую, параллельную последней прямой.
6. Найдем точку B(хi+1; yi+1). Будем считать В(хi+1; yi+1) решением дифференциального уравнения при х= хi+1.
7. После проведения вычислений, аналогичных вычислениям, описанным в методе Эйлера, получим формулу для определения значения yi+1:
Модифицированный метод Эйлера дает меньшую погрешность. На рисунке 4 это хорошо видно. Так величина характеризует погрешность метода Эйлера, а - погрешность метода Эйлера модифицированного.
Блок-схемы
Виды формы проекта
Dim x(25) As Single, y1(25) As Single, y2(25) As Single, y3(25) As Single
Private x0 As Single
Private xk As Single
Function f(x, y As Single) As Single
f = 2 * y * x / (x + 1)
End Function
Private Sub Command1_Click()
Dim k, k1, k2, k3, k4, y0, r As Single
Dim i
x0 = Val(text1.Text)
xk = Val(Text2.Text)
h = Val(Text3.Text)
y0 = Val(Text4.Text)
e = 2.7
n = Round((xk - x0) / h)
c = (y0 * (x0 + 1) ^ 2) / Ee ^ (2 * x0)
MSFlexGrid1.Rows = n + 2
MSFlexGrid1.TextMatrix(0, 0) = "X"
MSFlexGrid1.TextMatrix(0, 1) = "Y(Э)"
MSFlexGrid1.TextMatrix(0, 2) = "Y(ЭМ)"
MSFlexGrid1.TextMatrix(0, 3) = "Y(О)"
Max = 0
Min = y0
y2(i) = y0
y3(i) = y0
For i = 0 To n
x(i) = x0 + i * h
MSFlexGrid1.TextMatrix(i + 1, 0) = x(i)
y1(i) = (e ^ (2 * x(i))) * c / (x(i) + 1) ^ 2
MSFlexGrid1.TextMatrix(i + 1, 3) = Str(Round(y1(i), 4))
y2(i + 1) = y2(i) + h * f(x(i) + h / 2, y2(i) + h / 2 * f(x(i), (y2(i))))
MSFlexGrid1.TextMatrix(i + 1, 2) = Str(Round(y2(i), 4))
y3(i + 1) = y3(i) + h * f(x(i), y3(i))
MSFlexGrid1.TextMatrix(i + 1, 1) = Str(Round(y3(i), 4))
If y1(i) > Max Then Max = y1(i)
If y1(i) < Min Then Min = y1(i)
Next i
Label5.Caption = Str(Round(Max, 4))
Label6.Caption = Str(Round(Min, 4))
Label7.Caption = Str(x0)
Label8.Caption = Str(xk)
Picture1.Cls
kx = (Picture1.Width - 1000) / (xk - x0)
ky = (Picture1.Height - 1050) / (Max - Min)
For i = 1 To n - 1
z1 = Round(250 + (x(i) - x0) * kx)
z2 = Round(5045 - (y1(i) - Min) * ky)
z3 = Round(250 + (x(i + 1) - x0) * kx)
z4 = Round(5045 - (y1(i + 1) - Min) * ky)
Picture1.Line (z1, z2)-(z3, z4)
z1 = Round(250 + (x(i) - x0) * kx)
z2 = Round(5045 - (y3(i) - Min) * ky)
z3 = Round(250 + (x(i + 1) - x0) * kx)
z4 = Round(5045 - (y3(i + 1) - Min) * ky)
Picture1.Line (z1, z2)-(z3, z4)
z1 = Round(250 + (x(i) - x0) * kx)
z2 = Round(5045 - (y2(i) - Min) * ky)
z3 = Round(250 + (x(i + 1) - x0) * kx)
z4 = Round(5045 - (y2(i + 1) - Min) * ky)
Picture1.Line (z1, z2)-(z3, z4)
Next i
End Sub
В данной курсовой работе было рассмотрено два метода решения дифференциального уравнения: Эйлер и Эйлер модифицированный. Значения этих двух методов и общего решения сводится в таблицу, на основании которой строится график.
Из графика видно, что метод Эйлера имеет большую погрешность, чем метод Эйлера модифицированного. Кривая общего решения находится между двумя этими кривыми, ближе к кривой Эйлера модифицированного.
Начало
X0,Xk,Y0,h
n=(Xk-X0)/h
X(i)=Xo+i*h
C=y^2+(1-x)^2
Y3(i)
i=0..n
X(i)
Y1(i)
y1(i)=(e ^ (2 * x(i))) * c / (x(i) + 1) ^ 2
Y1(i)>MAX
MAX=Y1(i)
MIN=Y1(i)
Y1(i)<MIN
y2(i + 1)=y2(i) + h*f(x(i) + h / 2, y2(i) + h / 2 * f(x(i), (y2(i))))
Y2(i)
2
y3(i + 1) = y3(i) + h * f(x(i), y3(i))
Y2(i)
Label7
Label8
2
Label6
Z4=(y1(i+1)-MIN)*KY
Z3= (X(i+1)-X0)*KX
Z2=(y1(i)-MIN)*KY
Z1= (X(i)-X0)*KX
i=0..n-1
KY=(Height-1050)/(MAX-MIN)
KX=(Width-1000)/(Xk-X0)
Line(Z1,Z2)-(Z3,Z4)
Z2=(y2(i)-MIN)*KY
Z1= (X(i)-X0)*KX
2
2
Z4=(y2(i+1)-MIN)*KY
Z3=(X(i+1)-X0)*KX
Line(Z1,Z2)-(Z3,Z4)
Line(Z1,Z2)-(Z3,Z4)
Z4=(y3(i+1)-MIN)*KY
Z3= (X(i+1)-X0)*KX
Z2=(y3(i)-MIN)*KY
Z1= (X(i)-X0)*KX
Конец
f=2xy/(x+1)
F(x,y)
Конец
1
3
1
3
1
3
1
3
Text3
Label4
Text4
Label2
Text2
Label3
Label1
Text1
MSFlexGrid1
EMBED Equation.DSMT4
EMBED Equation.DSMT4
Label5
Command1
Picture1
Min=y0, Max=0,
Y2=y0, y3=y0
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4