Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой;

1. Строим оси координат;

2. Отмечаем А(1; 0) – первую точку интегральной кривой;

3. Ищем угол наклона касательной к графику в точке A:

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

4. Строим касательную l0 в точке А под углом α0;

5. Находим х1 по формуле: xi = х0 + ih, где h – шаг интегрирования

x1 = 0 + 1 · 0,2 = 1,2;

6. Отмечаем середину отрезка x0x1: x0 + h/2, проводим прямую из этой точки до прямой l0, отмечаем точку B(xB; yB);

7. Ищем координаты В:

xB = x0 + h/2 = 0 + 0,2/2 = 0.1

yB = y0 + h/2 · f(x0; y0) = -1.8 + 0,2/2 · 0 = -1.8

Следовательно, точка B имеет координаты (0.1; -1,8);

8. Ищем угол наклона касательной к графику в точке B:

αB = arctg(f(xB; yB)) = arctg((0.1 –( -1.8 )2+2*0.1*(-1.8)) = arctg(-0.036) = 2°

9. Строим касательную l1 в точке B под углом αB;

10. Проводим прямую x = x1 = 1,2 до пересечения с прямой l1, отмечаем точку C(x1; y1);

11. Ищем y точки C:

y1 = yB + h/2(f(xB;yB)) = -1.8+ 0,2/2 · (-0.036) = -1.8036

Следовательно, точка C имеет координаты (1,2; -1.8036).

Алгоритм решения задачи.

Алгоритм функции.

 
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Алгоритм программы.

 
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

             
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru
 
    Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru
 
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru
 
    Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

 
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

           
   
z1 = Round(600 + (x(i) - x0) * kx) z2 = Round(6480 - (em (i) - miny) * ky) z3 = Round(600 + (x(i+1) - x0) * kx) z4 = Round(6480- (em(i+1) - miny) * ky)  
 
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru
 
    Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru



Форма программы.

 
  Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru



Листинг программы.

Private x() As Single, e() As Single, em() As Single, o() As Single, y() As Single

Private i, n As Integer

Private x0, xk, y0, h, miny, maxy, minx, maxx As Single

Function f(x, y) As Single

' Сама функция

f = x * y ^ 2 + 2 * x * y

End Function

Private Sub Eiler()

ReDim x(n)

ReDim e(n)

x(0) = x0

e(0) = y0

For i = 0 To n - 1

x(i) = Round(x0 + (i * h), 3)

e(i + 1) = Round(e(i) + h * f(x(i), e(i)), 3)

Next i

End Sub

Private Sub EilerM()

ReDim x(n)

ReDim em(n)

x(0) = x0

em(0) = y0

For i = 0 To n - 1

x(i) = Round(x0 + i * h, 3)

em(i + 1) = Round(em(i) + h * f(x(i) + h / 2, em(i) + h / 2 * f(x(i), em(i))), 3)

Next i

End Sub

Private Sub Obshee()

ReDim x(n)

ReDim o(n)

x(0) = x0

o(0) = y0

' maxy = y0

' miny = y0

' maxx = x0

' minx = x0

For i = 1 To n

x(i) = Round(x0 + i * h, 3)

' If x(i) > maxx Then maxx = x(i)

' If x(i) > maxx Then maxx = x(i)

o(i - 1) = (-2) / (1 + f(x(i), o(i)) * (Exp(-x(i)) ^ 2))

o(i) = Round(ft * (x(i) - 1), 3)

Next i

End Sub

Private Sub Command1_Click()

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

h = Val(Text3.Text)

y0 = Val(Text4.Text)

n = Round((xk - x0) / h)

ReDim x(n)

ReDim e(n)

ReDim em(n)

ReDim o(n)

' Готовим таблицу

MSFlexGrid1.Cols = 4

MSFlexGrid1.Rows = n + 2

MSFlexGrid1.TextMatrix(0, 0) = "x"

MSFlexGrid1.TextMatrix(0, 1) = "Общее рещение"

MSFlexGrid1.TextMatrix(0, 2) = "эйлер"

MSFlexGrid1.TextMatrix(0, 3) = "Эйлер модиф."

Eiler

EilerM

Obshee

For i = 0 To n ' Заполняем таблицу

MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))

MSFlexGrid1.TextMatrix(i + 1, 1) = Str(o(i))

MSFlexGrid1.TextMatrix(i + 1, 2) = Str(e(i))

MSFlexGrid1.TextMatrix(i + 1, 3) = Str(em(i))

Next i

minx = x(0)

maxx = x(n)

' miny =

' maxy = 1

For i = 0 To n

If miny > o(i) Then miny = o(i)

If miny > e(i) Then miny = e(i)

If miny > em(i) Then miny = em(i)

If maxy < o(i) Then maxy = o(i)

If maxy < e(i) Then maxy = e(i)

If maxy < em(i) Then maxy = em(i)

Next i

If miny = maxy Then

miny = -2

maxy = 2

End If

' Находим верхнюю границу граффика

If e(n) > o(n) Then maxy = e(n)

If em(n) > o(n) Then maxy = em(n)

If e(n) > em(n) Then maxy = e(n)

Picture1.Cls

Label10.Caption = Str(miny)

Label11.Caption = Str(maxy)

Label8.Caption = Str(minx)

Label12.Caption = Str(maxx)

' пытаемся найти правильный маштаб

kx = (Picture1.Width - 1200) / (maxx - minx)

ky = (Picture1.Height - 1200) / Abs(maxy - miny)

For i = 0 To n - 1 ' Рисуем Эйлер

z1 = Round(600 + (x(i) - x0) * kx)

z2 = Round(6480 - (e(i) - miny) * ky)

z3 = Round(600 + (x(i + 1) - x0) * kx)

z4 = Round(6480 - (e(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)

Next i

For i = 0 To n - 1 ' Рисуем ЭйлерМ

z1 = Round(600 + (x(i) - x0) * kx)

z2 = Round(6480 - (em(i) - miny) * ky)

z3 = Round(600 + (x(i + 1) - x0) * kx)

z4 = Round(6480 - (em(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)

Next i

For i = 0 To n - 1 ' Рисуем общее решение

z1 = Round(600 + (x(i) - x0) * kx)

z2 = Round(6480 - (o(i) - miny) * ky)

z3 = Round(600 + (x(i + 1) - x0) * kx)

z4 = Round(6480 - (o(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)

Next i

End Sub

Решение задачи в MathCad.

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru

Метод Эйлера модифицированный. 2. Отмечаем А(1; 0) – первую точку интегральной кривой; - student2.ru
Заключение.

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

В связи с полученными данными, вычисленными через программы выяснилось, что точки графиков функции не совпадают, то есть имеется погрешность с каждым увеличением шага или с вычислением последующей точки.

С точки зрения вычислений данного дифференциального уравнения, на мой взгляд, проще решается с помощью метода Эйлера, но при этом возникает небольшая погрешность.

Наши рекомендации