Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet.doc
Скачиваний:
19
Добавлен:
12.03.2015
Размер:
164.86 Кб
Скачать

Тема 3. Решение дифференциальных уравнений

Постановка задачи:

Решить дифференциальное уравнение y=x+sin(y/3) с начальными условиями y(x0)=4,6 методом Эйлера и методом Рунге-Кутта на интервале [a;b]=[1,6;2,6] с шагом интегрирования h=0,1.

Решение:

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

Sub метод_эйлера()

h = 0.1

x0 = 1.6

xk = 2.6

y0 = 4.6

x = x0

y = y0

i = 2

Do

f = x + Sin(y / 3)

y = y + h * f

x = x + h

Worksheets("Лист3").Cells(i, 1).Value = x

Worksheets("Лист3").Cells(i, 2).Value = y

i = i + 1

Loop While x > xk

End Sub

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

Function f1(x, y)

f1 = x + Sin(y / 3)

End Function

Sub метод_рунге_кутта()

h = 0.1

x0 = 1.6

xk = 2.6

y0 = 4.6

x = x0

y = y0

i = 2

Do

k0 = f1(x, y) * h

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

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

k3 = f1(h + h, y + k2) * h

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

x = x + h

Worksheets("Лист3").Cells(i, 6).Value = x

Worksheets("Лист3").Cells(i, 7).Value = y

i = i + 1

Loop While x < xk

End Sub

Результаты:

x=

y=

x=

y=

1,7

4,85993

1,7

4,839965

1,8

5,129809

1,8

5,087877

1,9

5,408842

1,9

5,343028

2

5,69616

2

5,604665

2,1

5,990831

2,1

5,871996

2,2

6,291888

2,2

6,144214

2,3

6,598345

2,3

6,420505

2,4

6,909227

2,4

6,700074

2,5

7,223592

2,5

6,982156

2,6

7,540557

2,6

7,266036

метод Эйлера

метод Рунге-Кутта

Вывод:

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

Тема 4. Численное интегрирование

Постановка задачи:

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

Решение:

Function f(x)

f = (1 + 0.4 * x ^ 2) / (1.2 + Sqr(1.2 * x ^ 2 + 1))

End Function

Sub метод_средних_прямоугольников()

a = 1.4

b = 2.84

n = 50

s = 0

h = (b - a) / n

For x = a + h To b Step h

s = s + f(x + h / 2)

Next x

I = s * h

Worksheets("Лист5").Range("B2").Value = I

End Sub

Sub метод_левых_прямоугольников()

a = 1.4

b = 2.84

n = 50

s = 0

h = (b - a) / n

For x = a To b - h Step h

s = s + f(x + h)

Next x

I = s * h

Worksheets("Лист5").Range("C2").Value = I

End Sub

Sub метод_правых_прямоугольников()

a = 1.4

b = 2.84

n = 50

s = 0

h = (b - a) / n

For x = a - h To b - h Step h

s = s + f(x + h)

Next x

I = s * h

Worksheets("Лист5").Range("D2").Value = I

End Sub

Sub метод_средних_прямоугольников1()

a = 1.4

b = 2.84

n = 100

s = 0

h = (b - a) / n

For x = a + h To b Step h

s = s + f(x + h / 2)

Next x

I = s * h

Worksheets("Лист5").Range("B4").Value = I

End Sub

Sub метод_левых_прямоугольников1()

a = 1.4

b = 2.84

n = 100

s = 0

h = (b - a) / n

For x = a To b - h Step h

s = s + f(x + h)

Next x

I = s * h

Worksheets("Лист5").Range("C4").Value = I

End Sub

Sub метод_правых_прямоугольников1()

a = 1.4

b = 2.84

n = 100

s = 0

h = (b - a) / n

For x = a - h To b - h Step h

s = s + f(x + h)

Next x

I = s * h

Worksheets("Лист5").Range("D4").Value = I

End Sub

Sub Метод_трапеции()

a = 1.4

b = 2.84

n = 50

h = (b - a) / n

s = (f(a) + f(b)) / 2

For x = a + h To b - h Step h

s = s + f(x)

Next x

I = s * h

Worksheets("Лист5").Range("I2").Value = I

End Sub

Sub Метод_Симпсона()

a = 1.4

b = 2.84

n = 50

h = (b - a) / n

s = f(a) + f(b)

c = 1

For x = a + h To b - h Step h

s = f(x) * (3 + c) + s

c = -c

Next x

I = (s * h) / 3

Worksheets("Лист5").Range("H2").Value = I

End Sub

Sub Метод_трапеции1()

a = 1.4

b = 2.84

n = 50

h = (b - a) / n

s = (f(a) + f(b)) / 2

For x = a + h To b - h Step h

s = s + f(x)

Next x

I = s * h

Worksheets("Лист5").Range("I4").Value = I

End Sub

Sub Метод_Симпсона1()

a = 1.4

b = 2.84

n = 50

h = (b - a) / n

s = f(a) + f(b)

c = 1

For x = a + h To b - h Step h

s = f(x) * (3 + c) + s

c = -c

Next x

I = (s * h) / 3

Worksheets("Лист5").Range("H4").Value = I

End Sub

Результаты:

n=50

1,098887

1,093712

1,110664

1,08856

1,088566

мд ср пр

мд лев пр

мд пр пр

мд трап

мд симпс

n=100

1,080063

1,077513

1,085989

1,08856

1,088566

Вывод:

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