Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум

.pdf
Скачиваний:
57
Добавлен:
28.01.2022
Размер:
1.52 Mб
Скачать

4.3. Варианты задания

Таблица 4-1

Уравнение

x0

y0

h0

a

b

вар

 

 

 

 

 

 

1

y' = x y2

0

-2

0.5

0

1.5

2

y' = y2 (x2+ x + 1)

0

-2

0.2

0

0.6

3

y' = x3 y2

0

-2

0.4

0

1.2

4

y' = y / cos2(x)

0

1

0.25

0

0.75

5

y' = y cos(x)

0

1

0.5

0

1.5

6

y' = y2cos(x)

0

-1

0.4

0

1.2

7

y' = x2 y + y

0

1

0.2

0

0.6

8

y' = (x – 1)2 y2

0

-1

0.5

0

1.5

9

y' = x3 y

0

1

0.2

0

0.6

10

y' = y2 sin(x)

0

0.5

0.2

0

0.6

11

y' = y sin(x)

0

1

0.4

0

1.2

12

y' = x y

0

1

0.2

0

0.6

13

y' = y2 / x

1

1

0.2

1

1.6

14

y' = x2 y

0

1

0.2

0

0.5

15

y' = y2 (2 – x)

0

-1

0.4

0

1.2

16

y' = 3 x2 y2

0

-4

0.2

0

0.6

17

y' = y2 (ex + 4x)

0

-1

0.4

0

1.2

18

y' = y (x – 1)

0

1

0.4

0

1.2

19

y' = x (1 + y2)

0

0

0.25

0

0.75

20

y' = x / (2y)

0

1

0.4

0

1.2

21

y' = y / (3 x2)

1

1

0.2

1

1.6

22

y' = 4 x e-3y

1

0

0.2

1

1.6

23

y' = 2 x y

0

1

0.2

0

0.6

24

y' = 2 x (y1/2)

0

1

0.4

0

1.2

25

y' = y2 ex

0

-2

0.4

0

1.2

26

y' = x (1 – y2)1/2

0

0

0.4

0

1.2

27

y' = (1 + x) y

0

1

0.2

0

0.6

28

y' = x2 (1 – y2)1/2

0

0

0.1

0

0.3

29

y' = (x2 + x) y2

0

-1

0.4

0

1.2

30

y' = y2 / cos2(x)

0

-1

0.3

0

1.5

4.4.Содержание отчета

1.Индивидуальное задание.

2.Решение ОДУ аналитическим методом.

3.Создать в сценарии функцию для вычисления решения y(x) на отрезке [a;b] с шагом h0 , и записать его в табл. 4-2.

4.Создать в сценарии функцию для вычисления решения ОДУ методом Эйлера - yЭ (x) в точках отрезка [a;b] с шагом h0, и записанные в табл. 4-2.

5.

Вычислить значения погрешностей

E | y(x

) yЭ (x

) |

для x

i

x

0

ih ,

 

 

 

 

 

i

i

i

 

 

 

 

 

i 0,1...,n , n

b a

, записать в табл. 4-2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

6.

Создать в сценарии функцию для вычисления решения ОДУ методом

 

 

 

Рунге-Кутта 4-го порядка ypk (x

) с шагом

h и записать его в табл. 4-2

 

 

 

 

i

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

7.Вычислить значения погрешностей записать их в табл. 4-2.

i

|

 

y(x

)

i

 

y

pk

(x

) |

 

 

 

i

 

,

i

0,1...,n

, и

8.Решить ОДУ, с использованием функции пакета Scilab ode (ys(xi)), и записать его в табл. 4-2.

9.Построить график решений, полученных решений с использованием аналитического метода, метода Эйлера, метода Рунге-Кутта в одной системе координат.

Все решения в итоге должны быть оформлены в виде табл. 4-2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 4-2

 

 

xi

 

 

y(xi )

 

 

y Ý (xi )

 

 

Ei

 

y p.k. (xi )

 

i

 

ys(xi)

 

 

x

0

 

 

y(x

0

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

1

 

 

y(x

1

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

n

 

 

y(x

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.5.Пример выполнения задания

1.Задание для численного решения обыкновенных дифференциальных уравнений:

дифференциальное уравнение

y '

y

;

интервал [0;0.4];

начальные условия x0=0, y0=1;

шаг интегрирования h0=0.1.

2.Точное аналитическое решение заданного дифференциального уравнения

Найдем точное аналитическое решение заданного дифференциального

уравнения (решение y=y(x))методом разделения переменных. Для этого

запишем уравнение в виде

dy

dx и проинтегрируем с учетом начальных

y

 

 

условий. Получим

ln(y) x c,

y

e

x c

 

. Из начальных условий следует,

что с=0.

Аналитическое решение дифференциального уравнения

y(x) e

x

 

.

3.Значения точного решения ОДУ – y(x)

Вычислим в сценарии значения полученного решения y(xi) на отрезке [0;0.4] с шагом изменения аргумента h=0.1:

xi

y(xi)

0

1

0.1

1.1051711

0.2

1.2214026

0.3

1.3498585

0.4

1.4918243

32

4.Численное решение заданного ОДУ методом Эйлера

Вычислим в сценарии значения численного решение ОДУ методом

5.

Эйлера ( y

(xi ) ) в точках отрезка [0;0.4] с шагом h=0.1. Для этого ОДУ

э

 

записывают в виде y’=f(x,y) . Общая формула для определения очередного значения функции по методу Эйлера имеет вид yi+1=yi+h f(xi,yi), где

i 0,1...,n ,

n

b a

:

h

 

 

 

 

xi

 

y ý (xi )

 

0

 

1

 

 

0.1

 

1.1000

 

0.2

1.210000

 

0.3

1.331000

 

0.4

1.4641001

 

 

 

 

 

 

 

 

Э

(x ) |

 

 

 

Значения погрешностей

E | y(x ) y

 

 

 

i

i

 

i

 

 

 

 

 

 

 

 

 

| y(xi

) y

(xi ) | для

Вычислим в сценарии значения погрешностей Ei

 

 

 

 

 

 

 

 

 

 

Э

 

xi

x0 ih , i 0,1...,n , n

b a

:

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi

Ei

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0.1

0.005171

 

 

 

 

 

 

 

 

 

 

0.2

0.011403

 

 

 

 

 

 

 

 

 

 

0.3

0.018858

 

 

 

 

 

 

 

 

 

 

0.4

0.027724

 

 

 

 

 

 

 

 

 

6.Результаты решения ОДУ методом Рунге-Кутта 4-го порядка,

дополненным методом автоматического выбора шага, обеспечивающим точность 10-4

Вычислим в программе значения численного решения ОДУ с точностью

10-4, и получим решение в точках отрезка [0;0.4] с шагом h=0.1 ( методом Рунге-Кутта 4-го порядка, используя формулы:

yi 1 yi h6 (k1 2k2 2k3 k4 ),

где

k1 f(xi,yi );

k2 f(xi h / 2,yi hk1 / 2); k3 f(xi h / 2,yi hk2 / 2); k4 f(xi h,yi hk3 ).

y

pk

(x

)

 

 

 

i

 

)

В нашем случае получены следующие значения.

xi

y pk (xi )

0

1

0.1

1.105171

0.2

1.221403

0.3

1.349859

0.4

1.491825

33

7.Значения погрешностей i | y(xi ) ypk (xi ) |

Вычислим в сценарии значения погрешностей

xi

i

 

0

0

 

0.1

0.0000001

 

0.2

0.0000004

 

0.3

0.0000005

 

0.4

0.0000007

 

i

|

 

y(x

)

i

 

y

pk

(x

) |

 

 

 

i

 

,

i 0,1

...n :

Все решения, полученные выше,

сведем в табл. результатов 4-2:

 

 

 

 

 

xi

 

 

y(xi)

 

 

y ý (xi )

 

Ei

 

 

y pk (xi )

 

i

 

ys(xi)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

1

 

 

1

 

0

 

 

1

 

0

 

1

 

 

 

0.1

 

 

1.1051711

 

 

1.1000

 

0.005171

 

 

1.105171

 

0.0000001

 

1.1051711

 

 

 

0.2

 

 

1.2214026

 

 

1.210000

 

0.011403

 

 

1.221403

 

0.0000004

 

1.2214026

 

 

 

0.3

 

 

1.3498585

 

 

1.331000

 

0.018858

 

 

1.349859

 

0.0000005

 

1.3498585

 

 

 

0.4

 

 

1.4918243

 

 

1.4641001

 

0.027724

 

 

1.491825

 

0.0000007

 

1.4918243

 

y(xi ) – аналитическое решение ОДУ,

 

 

 

 

э

(xi ) - решение ОДУ, полученное методом Эйлера,

Ei

 

э

(xi ) ,

y

y(xi ) y

y

pk

(x

)

 

 

 

i

 

- решение ОДУ методом Рунге-Кутты 4-го порядка,

i

 

y(x

)

 

i

 

y

pk

(x

 

 

i

 

 

 

)

.

8. Решение ОДУ с использованием функции ode пакета Scilab

//Решение ОДУ y'=y function yd=f(t,y)

yd=y endfunction z=ode(y,t0,t,f);

disp(‘Решение ОДУ функцией ode’);

zz=[t;z]; zz' //таблица решения ОДУ функций ode

--> y=1; t0=0; t=0:0.1:0.4; --> exec(‘odu.sce’;0);

Решение ОДУ функцией ode ans =

0.1.

0.11.1051709

0.21.2214027

0.31.3498588

0.41.4918248

--> // Решение ОДУ аналитическим методом

--> y=[1 1.1051711 1.2214026 1.3498585 1.4918243]; --> // решение ОДУ методом Эйлера

--> y1=[1 1.1 1.21 1.331 1.4641];

--> //решение ОДУ методом Рунге-Кутта 4-го порядка

--> y4=[1 1.105171 1.221403 1.349859 1.491825]; --> plot(t,z,'k-o',t,y1,'b-',t,y4,'r-')

--> xtitle('Решение ОДУ','x','y(x),y1(x),y4(x)'); --> xgrid(); legend('y(x)','y1(x)','y4(x)');

34

Вывод: В данном примере значения решений ОДУ методом Рунге-Кутта 4-го порядка (y4(x)) и аналитическим методом (y(x)), практически совпадают. В решении ОДУ методом Эйлера (y1(x)), по мере удаления от начальной точки, погрешность накапливается за счет допущений, принятых в методе.

Контрольные вопросы по теме Методы решения дифференциальных уравнений

1.Что такое обыкновенное дифференциальное уравнение?

2.Что такое порядок ОДУ?

3.Что называется аналитическим решением ОДУ 1-го порядка?

4.Что является общим решением ОДУ y f(x, y) ?

5.Что является геометрической интерпретацией общего решения ОДУ

y

 

f(x, y) ?

 

6. Что является численным решением ОДУ

y

f(x, y)

?

7.Что относится к начальным условиям при решении ОДУ 1-го порядка численными методами?

8.По какому правилу проводят оценку погрешности решения методов Рунге-Кутты?

9.Как выглядит формула для определения очередного значения функции

по методу Рунге-Кутты 1-го порядка?

10.Уменьшение шага интегрирования при использовании методов РунгеКутты приводит к уменьшению или увеличению погрешности?

35

11.В обыкновенном дифференциальном уравнении присутствуют производные разных порядков от одной переменной или только первая производная от нескольких переменных?

12.Методы Рунге-Кутты являются одношаговыми или многошаговыми методами?

13.Сколько раз на каждом шаге необходимо вычислять

 

в

y (x,y)

модифицированном методе Эйлера?

14.Очередная точка решения ОДУ методом Рунге-Кутты вычисляется на основании одного или двух предыдущих значений функции?

15.Возможно ли в методах Рунге-Кутты применение переменного шага интегрирования?

16.Процесс решения дифференциального уравнения называется интегрированием или дифференцированием?

17.Каковы формулы оценки погрешности методов Рунге-Кутты? 18.Почему метод Эйлера называют методом Рунге-Кутты первого

порядка?

19.С помощью чего при оценке погрешности метода автоматического выбора шага учитывается порядок используемого метода Рунге-Кутты?

20.Можно ли оценить погрешность решения ОДУ, не зная точного решения?

36

Лабораторная работа по теме №5

«Одномерная оптимизация»

5.1.Вопросы, подлежащие изучению

1.Постановка задачи одномерной оптимизации.

Методы оптимизации: метод дихотомии; метод золотого сечения.

2.Условия сходимости методов.

3.Оценка погрешности оптимизации.

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

5.Сравнение методов по точности, эффективности деления отрезка унимодальности, по числу итераций, по числу отсчетов исследуемой функции.

5.2.Задание

1.Выбрать индивидуальное задание по номеру варианта из табл. 5-1 для решения задачи одномерной оптимизации:

функцию f(x), минимум которой необходимо найти;

метод золотое сечение – четные номера п.3, нечетные –п.4

метод дихотомии - четные номера п.4, нечетные –п.3

2.Провести исследование индивидуального варианта задания:

построить график функции

y

f(x)

;

выбрать начальный отрезок неопределенности (отрезок, содержащий точку минимума);

проверить выполнение аналитического условия унимодальности функции на выбранном отрезке.

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

4.Написать и выполнить программу, реализующую программу метода,

вычисляющую координаты точки минимума функции с заданной точностью 10-4.

5.Вычислить число итераций, необходимых, чтобы локализовать точку минимума с точностью E1 = 10-4 методами дихотомии и золотого сечения.

6.Решить задачу оптимизации с использованием функции optim пакета

Scilab.

37

 

 

5.3. Варианты задания

 

 

 

 

 

 

 

Таблица .5-1

 

 

 

Целевая функция

 

 

вар.

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

f(x) = – 2 (1 + x) e–x – 2 cos(x)

 

 

2

 

 

f(x) = (x – 1) e

x

2

/ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

f(x) = 10 sin(x3) cos(-x)

 

 

4

 

 

f(x) = x2cos(x + 3) – 4

 

 

5

 

 

f(x) = cos(x – 5) e2x / 3

 

 

6

 

 

f(x) = – 4 sin(x) + x1 / 2

 

 

7

 

 

f(x) = – 5 sin3(x) – cos3(x)

 

 

8

 

 

f(x) = – cos(2x + 1) ln(2 / x) + 3

 

 

9

 

 

f(x) = x sin(x + 1) – cos(x – 5)

 

 

10

 

 

f(x) = (1 + x2)1 / 2 + e–x

 

 

11

 

 

f(x) = – 8 sin(- x3) e–x

 

 

12

 

 

f(x) = 5 e–x + 4 x + x3 / 3

 

 

13

 

 

f(x) = sin(x – 1) – x cos(x + 3)

 

 

14

 

 

f(x) = 3 cos(x2) / ln(x + 5)

 

 

15

 

 

f(x) = sin(x2) + 1 / (2 – x)

 

 

16

 

 

f(x) = sin(ex) – e–x + 1

 

 

17

 

 

f(x) = sin(x + 1) e2 / x

 

 

18

 

 

f(x) = – 5 x sin(x + 1) + 2 cos(x)

 

 

19

 

 

f(x) = 1 + sin(4x) / ln(x)

 

 

20

 

 

f(x) = 2 sin(4x) ln(– x) – 3

 

 

21

 

 

f(x) = x3 / 2 – 2 x sin(x)

 

 

22

 

 

f(x) = x sin(x) + cos(x) + 5

 

 

23

 

 

f(x) = e–x sin(2x)

 

 

 

24

 

 

f(x) = sin(2x) – 2 sin(x)

 

 

25

 

 

f(x) = sin(2x) – x

 

 

 

26

 

 

f(x) = cos(– 2x) e–x

 

 

27

 

 

f(x) = e–x sin(– 2x)

 

 

28

 

 

f(x) = e–xcos(– 2x)

 

 

29

 

 

f(x) = cos(x + 2) + cos(2x) + x

 

 

30

 

 

f(x) = cos(2x) + 2 sin(x)

 

.

5.5.Содержание отчета

1.Индивидуальное задание.

2.Результаты исследования индивидуального варианта задания:

график функции y f(x) ;

начальный отрезок неопределенности;

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

3.Результаты расчета трех итераций ручным методом представить в табл.

5.2.

38

Таблица 5-2

№ итерации

a

b

x1

x2

f(x1)

f(x2)

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

4.Программа, реализующая заданный метод с точностью 10-4.

5.Число итераций, необходимые для локализации точки минимума используемыми методами.

6.Решение задачи оптимизации с использованием функции пакета Scilab optim

5.6.Пример выполнения контрольного задания

1.Задание для решения задачи одномерной оптимизации:

функция, для которой необходимо найти минимум –

f(x)

x cos(x)

sin(x)

;

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

график функции y f(x) , построенный на достаточно большом

отрезке ОДЗ функции:

выберем по построенному графику функции начальный отрезок неопределенности (отрезок, содержащий точку минимума): отрезок

[2.5;3.5];

проверим выполнение аналитического условия унимодальности функции на выбранном отрезке:

f (x) cos(x) x sin(x) cos(x) x sin(x) ;

f (x) (sin(x) x cos(x)) 0 при

x [2.5;3.5] , так как sin(x) и cos(x) не

 

 

обращаются в нуль одновременно и x 0 .

39

Значения

f (x)

сведем в следующую таблицу:

 

х

 

 

2.5

 

 

2.6

 

 

2.7

 

 

2.8

 

 

2.9

 

 

3.0

 

 

3.1

 

 

3.2

 

 

3.3

 

 

3.4

 

 

3.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f’(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1.44

 

 

-1.34

 

 

-1.15

 

 

-0.94

 

 

-0.69

 

 

-0.42

 

 

-0.13

 

 

0.19

 

 

0.52

 

 

0.87

 

 

1.23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На отрезке [2.5;3.5] функция

f (x)

монотонно возрастает,

 

 

 

следовательно, функция f(x) - на выбранном отрезке унимодальная.

Метод золотого сечения

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

Для проведения расчетов по методу золотого сечения следует создать сценарий и выполнить расчеты 3-х итераций. Ниже приведен пример 1-й итерации:

1).

k

0.382;

k

2

0.618;

a

2.5;

b

3.5;

x

a

k (b

a

) 2.88197;

1

 

 

 

0

 

0

 

1

0

1

0

0

 

x2 a0 k2(b0 a0) 3.11803

f(x

) -3.04210;

f(x

2

) -3.14073;

 

 

 

 

1

 

 

 

 

 

f (x ) f (x

)

следовател ьно

a1 x1;

b1 b0;

 

 

0.61803;

1

2

 

 

 

 

 

 

 

1

 

Вычислить аналогично следующие 2 итерации, а результаты расчетов свести в таблицу 5.2:

Таблица 5-2

 

N

 

 

a

 

 

b

 

 

x1

 

 

x2

 

 

f(x1)

 

 

f(x2)

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

2.5

 

 

3.5

 

 

2.88197

 

 

3.11803

 

 

-3.04210

 

 

-3.14073

 

0.61803

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2.88197

 

 

3.5

 

 

3.11803

 

 

3.26393

 

 

-3.14073

 

 

-3.11750

 

0.38197

 

 

2

 

 

2.88197

 

 

3.26393

 

 

3.02786

 

 

3.11803

 

 

-3.12179

 

 

-3.14073

 

0.23607

 

 

3

 

 

3.02786

 

 

3.26393

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

неопределенности после трех итераций равна

3 0.6183(b3 a3 )

отрезка

0.23607 ,

что совпадает с полученной длиной отрезка неопределенности.

4. Число итераций, необходимых для локализации точки минимума и Е=10-4

Теоретическая

определяется Nитераций LN

величина погрешности для метода золотого сечения

длиной конечного отрезка

неопределенности после

0.618N(b a) . Отсюда имеем

0.618N 10 4 ,

 

lg10

4

 

N

 

,N 19

lg0.618

 

 

(L20=0.000066034).

Длина отрезка равна 0.00011при расчете на ПК(N=19) . Точность достигнута при N=20. То есть, расчет совпадает с теоретической оценкой.

40

Соседние файлы в предмете Численные методы