- •Оглавление
- •Глава 1. Краткие основы работы в matlab
- •1.1. Интерфейс.
- •1.2. Редактирование м-файлов
- •1.3. Построение графиков
- •1.4. Построение поверхности
- •1.5. Операции с матрицами.
- •1.6. Нелинейные уравнения и системы
- •1.7. Интегрирование
- •1.8. Решение обыкновенных дифференциальных уравнений и систем.
- •1.9. Поиск экстремума функции одной переменной.
- •1.10. Поиск экстремума функции нескольких переменной.
- •Глава 2. Одномерная оптимизация с применением пакета matlab минимальный шаг по аргументу
- •Минимальное изменение функции
- •2.1. Метод сканирования
- •2.2. Метод чисел Фибоначчи
- •2.3. Метод локализации экстремума
- •2.4. Метод обратного половинного шага
- •2.5. Метод золотого сечения
- •Глава 3. Двухмерная оптимизация с применением пакета matlab
- •3.1. Метод сканирования
- •3.2. Метод Гаусса–Зейделя
- •3.3. Метод пробных движений
- •Соломатин Алексей Сергеевич Решение типовых задач одномерной и многомерной оптимизации с применением пакета matlab
- •125047, Москва, Миусская пл. 9.
1.8. Решение обыкновенных дифференциальных уравнений и систем.
Дифференциальным уравнением n-го порядка называется уравнение:
H(t, x, x’, x’’, … , x(n))=0
Решением дифференциального уравнения называется функция x(t), которая обращает уравнение в тождество.
Системой дифференциальных уравнений n-го порядка называется система вида:
x1’=f1(t, x1, x2, x3, … , xn)
x2’=f1(t, x1, x2, x3, … , xn)
…………………………..
xn’=f1(t, x1, x2, x3, … , xn)
Системой линейных дифференциальных уравнений называют систему вида:
x1’=xj + b1
x2’=xj + b1
.…………………..
xn’=xj + b1
Решением системы является вектор x(t)=x1(t), x2(t), … ,xn(t), который обращает вышеприведенные системы уравнений в тождества.
Различают:
Задачу Коши, когда все дополнительные условия заданы в одной (чаще всего в начальной) точке интервала значений t.
Краевую задачу, когда дополнительные условия заданы на границах интервала значений t.
Есть много встроенных функций, обеспечивающих решение вышеуказанных задач.
Ниже описаны некоторые из них с примерами их использования.
Входными параметрами этих функций являются:
f вектор-функция для вычисления правой части уравнения вида x’=f(x,t), удовлетворяющей начальному условию x(t0)=x0 или системы дифференциальных уравнений, данных в матричном виде dx/dt=f(t,x) с начальным условием x(t0)=x0 данным в матричном виде.
interval массив из двух чисел, определяющий интервал интегрирования дифференциального уравнения или системы.
X0 вектор начальных условий системы дифференциальных уравнений.
options параметры управления ходом решения дифференциального уравнения или системы уравнений.
Все функции возвращают:
Массив Т содержащий координаты узлов сетки, в которых ищется решение.
Матрицу Х в которой i-й столбец является значением вектор-функции решения в узле Ti.
Решим задачу Коши: Рис. 1.10. функция D(t,x)
dx/dt + x =sin xt при x(0)=1.5. Напишем М-функцию (рис. 1.10)
Используем функцию ode113, которая реализует метод Адамса. В качестве ее параметров используются: @D ссылка на М-функцию, [0 35] интервал интегрирования уравнения, начальное условие x(0)=1.5 указано в виде 1,5 на соответствующем месте в списке параметров.
Обращение к функции: ode113(@D, [0 35], 1.5). Она строит график решения (см.рис.1.11).
Рис. 1.11. функция ode113 строит график решения
Напишем М-функцию syst (см. рис.1.12)
Используем функцию ode23 решающую методом Рунге-Кутта 2-3 порядка. Ее вызов
[T, Y]=ode23(@syst, [0 10], [0 0]); Рис. 1.12. функция syst(t,y)
где явно указаны выходные параметры вектор Т и матрица Y, а также указаны интервал [0 10] и начальные значения [0 0].
Затем формируем график решения plot(T,Y,’k-‘). Получаем график (см.рис.1.13)
Рис. 1.13. график решения
1.9. Поиск экстремума функции одной переменной.
При решении задач поиска максимума (минимума) выделяют локальный (с указанием границ) и глобальный максимум (минимум). Локальный минимум функции одной переменной ищет встроенная функция [x, y]=fminbnd(name, a, b, options). В ней:
name имя М-функции,
a, b границы поиска,
options параметры управляющие ходом решения,
x, y координаты точки минимума.
Для вычисления локального максимума, надо взять функцию name с другим знаком. Для примера, рассмотрим функцию y(x)=x4-0.5x3-28x2+140
Сначала найдем минимум на интервале, например, от -4 до -2.
[x,y]=fminbnd(@ext,-4,-2), где @ext обращение к М-функции вычисляющей интересующую нас функцию.
Потом найдем максимум на интервале от -6 до 6, для этого обратимся не к @ext, а к @ext_2, в которой функция y(x) взята с другим знаком, то есть y(x)=-(x4-0.5x3-28x2+140). То есть ее минимум будет максимумом исходной функции.
Получим и в том, и в другом случае координаты точки минимума (максимума) на заданном отрезке, что и требовалось.