ВУЗ: Московский технический университет связи и информатики
Категория: Учебное пособие
Дисциплина: Информатика
Добавлен: 15.11.2018
Просмотров: 12825
Скачиваний: 228
111
2.4.2. Лабораторная работа по теме
«Технология решения обыкновенных
дифференциальных уравнений средствами Scilab»
1. Вопросы, подлежащие изучению
1) Вычисление числовых значений производных в точках.
2) Функция Scilab, предназначенная для решения ОДУ ode().
3) Вывод результатов решения ОДУ в виде таблицы.
4) Получение графического решения ОДУ.
2. Общее задание
1)
Изучите материал Темы 2.4 (п. 2.4.1).
2)
Выберите индивидуальный вариант задания из табл. 2.4.2-1.
3)
Найдите символьное выражение производной от функции f(x) и
вычислить значение производной от функции f(x) в произвольной
точке с;
4)
Найдите решение ОДУ на отрезке [a;b] с шагом h с
использованием функцииode() .
5)
Создайте матрицу решений, записав в первый столбец аргумент, во
второй и третий - решение, полученное с использованием функций
ode().
6)
Выведите полученную таблицу по столбцам.
7)
Постройте график полученных решений ОДУ.
8)
Сохраните текст рабочего окна на внешнем носителе.
9)
Предоставьте результаты работы преподавателю, ответьте на
поставленные вопросы.
10) Выполните команду clearall.
11) Оформите отчет по выполненной работе.
112
2.
Варианты индивидуальных заданий
Таблица 2.4.2-1
№
f(x)
ОДУ
Начальные
условия
b
h
1
)
2
(
8
x
Sin
x
e
y
x
y
2
(0)
1
y
0,5
0,5
2
x
e
x
Sin
/
2
)
1
(
xy
y
2
(1)
1
y
1.2
0.2
3
1
)
(
3
x
Cos
x
y
e
x
y
(0)
0
y
0.4
0.2
4
6
2
7
x
tgx
x
y
y
(0)
1
y
1
0,5
5
1
)
(
)
3
(
x
Cos
x
x
y
y
2
(0)
1
y
0.4
0,2
6
x
x
Sin
5
,
0
)
1
(
y
x
y
2
2
(0)
0
y
1
0.25
7
1
)
2
(
2
x
Cos
x
x
e
y
y
2
(0)
1
y
0.2
0,2
8
1
)
11
ln(
)
1
(
2
x
x
2
/
x
ye
y
(0)
1
y
0.5
0,25
9
2
)
5
,
0
(
x
x
Cos
x
e
y
x
(0)
1
y
0,25
0.25
10
2
2
)
sin(
x
x
x
x
y
y
2
(0)
1
y
1
0,5
11
2
)
1
(
2
x
e
x
x
e
y
y
2
(0)
1
y
0,3
0,15
12
18
3
2
6
x
e
x
y
x
y
y
2
(0)
1
y
0,5
0,25
13
)
4
7
ln(
x
x
)
1
(
2
/
5
.
1
2
y
x
y
(0)
0
y
0,5
0.5
14
x
x
Sin
Sin
5
,
0
))
(
(
x
y
y
/
)
1
(
(0)
1
y
1
0,5
15
))
(ln(
2
x
Sin
x
3
2
xy
y
(1)
1
y
2
0,5
16
)
(
4
3
/
1
x
Cos
x
e
x
2
)
(
y
x
y
(1)
1
y
2
0,5
17
3
2
3
x
x
e
x
y
xe
y
(1)
0
y
2
0,5
18
4
6
,
5
)
2
ln(
2
x
x
x
2
)
(
y
x
y
(1)
1
y
2
0,5
19
1
)
2
/
(
2
x
Sin
x
2
)
cos(
x
y
y
(1)
1
y
2
0,5
20
)
2
(
2
2
x
Sin
e
x
2
2
x
xy
y
(1)
1
y
2
0,25
21
)
4
7
ln(
x
x
y
x
y
x
2
(1)
1
y
2
0.25
22
)
2
(
8
x
Sin
e
x
x
y
y
2
(0)
1
y
1
0,5
23
x
e
x
Sin
/
2
)
1
(
y
x
y
2
(1)
1
y
1,5
0,5
24
1
)
(
3
x
Cos
x
1
2
xy
y
(1)
1
y
1.4
0.2
25
)
6
2
/(
7
x
tgx
x
y
y
x
(1)
1
y
2
0,5
26
x
e
x
Sin
/
2
)
1
(
2
x
y
y
x
(1)
1
y
2
0,5
27
)
4
7
ln(
x
x
2
x
y
y
x
(1)
1
y
2
0,5
28
2
)
5
,
0
(
x
x
Cos
)
1
/(
x
y
y
(0)
1
y
1,4
0,2
29
1
)
(
)
3
(
x
Cos
x
x
y
x
y
2
(1)
1
y
1,4
0,2
30
x
e
x
Sin
/
2
)
1
(
x
y
y
x
(1)
1
y
2
0.5
113
3.
Содержание отчета
1) В форме комментариев:
• Название лабораторной работы
• ФИО студента, номер группы
• № варианта
• Индивидуальное задание
2) Протокол вычислений (сессии) в Командном окне, снабженный
необходимыми комментариями.
2.4.3.
Контрольные вопросы по теме
1) Какие начальные условия должны быть заданы в соответствии с
задачей Коши при решении ОДУ средствами системы Scilab?
2) Какие численные методы реализованы в функции ode()?
3) Какие параметры являются в функции ode() обязательными?
4) В какой форме должны быть записаны функции ОДУ при
использовании ode()?
5) Какими средствами решается система ОДУ?
6) Что представляет собой решение ОДУ 1-го и 2-го порядка при
использовании функций ode()?
114
Тема 2.5. Технология решения задач одномерной
оптимизации
2.5.1. Решение задач одномерной оптимизации функций
2.5.2. Лабораторная работа
2.5.3. Контрольные вопросы по теме
2.5.1. Решение задач одномерной оптимизации
При решении задачи поиска экстремума (максимума или минимума)
функции y=f(x) одной переменной выделяют задачи поиска локального и
глобального экстремума. При этом задача нахождения максимума целевой
функции сводится к задаче нахождения минимума путем замены функции
f(x)на-f(x), поэтому в дальнейшем будем говорить только о поиске минимума
функции, то есть такогоx*[a, b], при котором f(x*) = minf(x).
Интервал, на котором локализован единственный минимум, называется
отрезком неопределенности.
Задача одномерной оптимизации имеет единственное решение в том
случае, если функция f(x) на отрезке [a;b] имеет только один экстремум.
Тогда говорят, что функция унимодальная на отрезке [a;b].
Известно, что необходимым условием существования экстремума
дифференцируемой функции f(x) является выполнение равенства f(х) = 0.
Достаточным условием унимодальности функции f(x) на отрезке [a;b]
является следующее: если функция f(x) дважды дифференцируема на отрезке
[a,b] и f(х*)>0 в любой точке этого отрезка, то функция f(x) - унимодальна
на отрезке [a,b].
Для решения задачи одномерной оптимизации с заданной степенью
точности используются методы: дихотомии, золотого сечения, средней
точки и многие другие. При этом суть методов одномерного поиска
заключается в том, что на каждой итерации интервал неопределенности
уменьшается и стягивается к точке минимума. Уменьшение отрезка
происходит до тех пор, пока на некоторой n-й итерации отрезок
неопределенности b
n
;a
n
не станет соизмеримым с заданной погрешностью
, то есть будет выполняться условие |b
n
-a
n
| <. Тогда за точку минимума
можно принять любую точку, принадлежащую этому отрезку, в частности,
его середину.
В Scilab поиск локального минимума любой функции (одномерной или
многомерной) осуществляет функция optim(). В случае решения задачи
одномерной оптимизации функция имеет следующий формат:
[f,xopt]=optim(costf,x0)
,
115
где входными параметрами функции optim() в случае решения
задачи одномерной оптимизации являются:
x0- начальное приближение к точке минимума;
constf- имя функции, для которой ищется минимум.
Функция optim() возвращает значения следующих параметров:
f- минимальное значение функции;
xopt - точку, в которой функция достигает этого значения.
Главной особенностью функции optim() является структура
вспомогательной функции costf():
unction [f,g,ind]=costf(x,ind)
f=gg(x);
g=numdiff(gg,x);
endfunction
где f- функция, минимум которой ищется, а выходной параметр g – ее
производная.
Если возвращаемое сформированной функцией costf() значение ind
равно 2, 3 или 4, то функция costf() обеспечивает поиск минимума, т.е. в
качестве результата функции optim возвращается f и xopt. Если ind=1, то в
функции optim() ничего не считается, условие ind<0 означает, что минимум
функции f(x) не может быть оценен, а ind=0 прерывает оптимизацию. ind
является внутренним параметром для связи между optim() и costf(). При
использовании функции optim необходимо помнить, что параметр ind
должен быть определен в функции costf().
Таким образом, при использовании функции optim() необходимо
сформировать функцию costf(), которая должна возвращать значение
минимизируемой функции f и ее производную.
Чтобы с использованием функции Scilab optim() вычислить локальный
максимум необходимо взять целевую функцию с противоположным знаком.
Пример2.5.1-1.Найти
локальный
минимум
функции
26
26
13
3
)
(
2
3
4
x
x
x
x
x
f
.
Решение задачи начнем с построения графика (рис.2.5.1-1 и 2.5.1-2).
Определим отрезок, содержащий точку минимума, исходя из вида графика
функции. Если это возможно, то на этом отрезке следует провести полное
исследование функции на унимодальность: от функции
)
( x
f
получить и
первую и вторую производные и показать, что
)
( x
f
должна быть
неубывающей, а
0
)
(
x
f
.