- •Методы математического моделирования и вычислительной математики Никитина т.П. Оглавление
- •Введение
- •Основы моделирования
- •Классификация математических моделей
- •Основные этапы математического моделирования
- •Математические модели аналитического типа
- •Эмпирические математические модели
- •Методы вычислительной математики
- •Постановка задачи
- •Этапы решения задачи
- •Локализация корня
- •Метод половинного деления
- •Метод хорд
- •Метод касательных (Метод Ньютона)
- •Комбинированный метод хорд и касательных
- •Решение систем линейных уравнений (слау)
- •Приближенные методы решения систем линейных уравнений Метод простой итерации ( Метод Якоби)
- •Метод Гаусса - Зейделя
- •1. Использованием обратной матрицы
- •2. Решение системы уравнений методом Гаусса
- •Интерполяция
- •Постановка задачи
- •Полиномиальная (алгебраическая) интерполяция
- •Интерполяция по Лагранжу
- •Вычисление определенных интегралов вида Постановка задачи
- •Метод прямоугольников
- •Метод трапеций
- •Метод Симпсона (метод парабол)
- •Решение обыкновенных дифференциальных уравнений Постановка задачи
- •Численные методы решения задачи Коши оду первого порядка
- •Метод Эйлера
- •Усовершенствованный метод Эйлера. Метод Гюна.
- •Методы прогноза и коррекции
- •Метод Рунге-Кутта
- •Решение задачи оптимизации
- •Постановка задачи
- •Численные методы решения задачи одномерной оптимизации
- •Этапы решения задачи
- •Метод двойного половинного деления
- •Метод золотого сечения
- •Численные методы решения задачи линейного программирования
- •Постановка задачи
- •Реализация симплекс метода
- •Литература
Метод золотого сечения
При построении процесса оптимизации стараются сократить объем вычислений и время поиска. Этого достигают обычно путем сокращения количества вычислений значений целевой функции f(x).Одним из наиболее эффективных методов, в которых при ограниченном количестве вычисленийf(x)достигается наилучшая точность, является метод золотого сечения.
Если известно, что функция f(x)унимодальная на отрезке[a;b], то положение точки минимума можно уточнить, вычисливf(x) в двух внутренних точках отрезка. При этом возможны две ситуации:
f(x1)<f(x2) минимум находится на отрезке [a, x2]. | |
f(x1)>f(x2) минимум находится на отрезке [x1, b]. |
В методе золотого сечения каждая из точек x1иx2 делит исходный интервал на две части так, что отношение целого к большей части равно отношении большей части к меньшей, т.е. равно так называемому "золотому отношению". Это соответствует следующему простому геометрическому представлению:
Здесь
|
или |
|
|
Обозначив , получаем , откуда
Итак, длины отрезков равны и составляют 0,382от длины интервала(a,b). Соотношением значенийf(x1) иf(x2)определяется новый отрезок[a; x1]или[x2; b], в котором локализован минимум. Найденный интервал снова делится двумя точками в том же отношении, причем одна из новых точек деления совпадает с уже использованной. Поэтому, начиная со второй итерации, расчет функции необходимо производить только в одной точке, что для сложныхf(x) позволяет существенно сократить время решения задачи.
Алгоритм метода
Ввод исходных данных: a, b, ε.
Определение положения точек x1, x2: x1=a+0,0,382×(b-a); x2=a+0,0,618×(b-a).
Проверка условия f(x1) < f(x2). Если условие выполняется, то b= x2, иначе a= x1.
Проверка условия (b-a)<= ε. Если условие выполняется, то переход к пункту 5, иначе переход к пункту 2.
Расчет закончен. Минимум находится в точке х*=(a+b)/2, минимальное значение функции на отрезке [a;b] равно f(x*).
Реализация метода золотого сечения в MS Excel
Дано: функция и точность ε=0,01. Найти минимум функции на отрезке [0; 1].
Заполнение клеток листа MS Excel:
Адрес клетки |
Содержание |
Тип |
A1 |
a |
Текст |
B1 |
b |
Текст |
C1 |
x1 |
Текст |
D1 |
x2 |
Текст |
E1 |
f(x1) |
Текст |
F1 |
f(x2) |
Текст |
G1 |
b-a |
Текст |
I1 |
точность |
Текст |
J1 |
0,01 |
Число |
A2 |
0 - значение a |
Число |
B2 |
1 - значение b |
Число |
C2 |
=A2+0,318*(B2-A2) |
Формула |
D2 |
=A2+0,618*(B2-A2) |
Формула |
E2 |
=(0,25*C2+LN(0,5*C2+1)-EXP(-C2*0,75))^2 |
Формула |
F2 |
=(0,25*D2+LN(0,5*D2+1)-EXP(-D2*0,75))^2 |
Формула |
G2 |
=B2-A2 |
Формула |
A3 |
=ЕСЛИ(E2<F2;A2;C2) |
Формула |
B3 |
=ЕСЛИ(E2<F2;D2;B2) |
Формула |
C3 |
=ЕСЛИ(E2<F2;A3+0,318*(B3-A3);D2) |
Формула |
D3 |
=ЕСЛИ(E2<F2;C2;A3+0,618*(B3-A3)) |
Формула |
E3 |
=ЕСЛИ(E2<F2;(0,25*C3+LN(0,5*C3+1)- EXP(-C3*0,75))^2;F2) |
Формула |
F3 |
=ЕСЛИ(E2<F2;E2;(0,25*D3+LN(0,5*D3+1)-EXP(-D3*0,75))^2) |
Формула |
G3 |
Автозаполнение формулой из клетки G2 |
Формула |
Вид листа MS Excel:
Ответ:х*=0,813 f(x*)= 0,0 n=11.
Реализация метода в MatLab
В MatLab вычисление минимума функции одной переменной можно выполнить с помощью функции fminbnd(fun,x1,x2), которая возвращает значение х, являющееся локальным минимумом функции fun(x) на интервале x1<x<x2. Функцию fun(x) зададим, используя функцию inline: f=inline('(x/4+log(x/2+1)-exp(-0,75*x))^2', 'x').
Результаты решения представлены на рисунке: