ОПРЕДЕЛЕНИЕ ЭКСТРЕМУМОВ ФУНКЦИИ МЕТОДОМ ЗОЛОТОГО СЕЧЕНИЯ

ЗАДАНИЕ. На отрезке [a,b] найти: а) все экстремумы функции f(x); б) максимальное
значение модуля функции G=max|f(x)|. Построить график функции f(x)/G.
Алгоритм поиска экстремумов состоит из двух этапов:
I) Выделение (локализация) внутри [a,b] таких отрезков [c,d], каждый из которых содержит
только один экстремум. Это можно сделать, отделяя корни уравнения f '(x)=0 (см.тему
"Решение нелинейных уравнений"). При этом производную можно заменить конечной
разностью f '(x)=[f(x+t)-f(x)]/t, где t- малая величина (например, t=0.0001).
При составлении подпрограммы отделения точек экстремума в качестве параметров
подпрограммы желательно указать следующие:
Входные параметры:
a1, b1 - граничные точки отрезка, внутри которого ищутся экстремумы;
f - имя функции;
h - шаг перебора значений x при анализе поведения функции f(x).
Выходные параметры:
c, d - границы отрезка внутри [a1,b1], содержащий первый (справа от a1) экстремум;
m - переменная, по значению которой можно судить, содержит ли отрезок [c,d] max
или min : m=1 соответствует max, а m=-1 - min;
ier - код ошибки; ier=0 если [c,d] найден; ier=1 если экстремума на [a1,b1] нет.
В качестве алгоритма отделения экстремума можно предложить следующий: задать x=a1 и
вычислить y=[f(x+t)-f(x)]/t; менять x с шагом h x=x+h до тех пор, пока либо произведение
y*[f(x+t)-f(x)]/t не станет меньше 0, либо x не выйдет за пределы отрезка
[a1,b1], т.е. x не станет больше b1; в первом случае c=x-h, d=x, ier=0; если значение
[f(c+t)-f(c)]/t больше 0, то m=1, иначе m=-1; во втором случае ier=1 и осуществляется возврат в
вызывающую программу.
II) Уточнение до заданной точности экстремума функции f(x) методом золотого сечения.
Золотым сечением отрезка называют деление отрезка на две части так, что отношение длины
всего отрезка к длине большей его части равно отношению длины большей части к меньшей.
Золотое сечение отрезка [c,d] производят две симметрично расположенные точки x1,x2:
x1=c+(1-v)*(d-c), x2=c+v*(d-c), где v=(-1+sqrt(5))/2=0.6180339. При этом x1 производит
золотое сечение [c,x2], а x2 - золотое сечение [x1,d].
При составлении подпрограммы метода золотого сечения в качестве параметров
подпрограммы желательно указать следующие:
Входные параметры:
c, d - граничные точки отрезка, внутри которого содержится только один экстремум;
f - имя функции;
eps - точность вычисления абциссы экстремума;
Выходные параметры:
x0 - абцисса точки экстремума;
m - переменная, по значению которой можно судить, является ли найденный экстремум
max или min : m=1 соответствует max, а m=-1 - min;
ier - код ошибки; ier=0 если экстремум найден; ier=1 если экстремума на [c,d] нет.
Опишем возможный алгоритм поиска max функции m*f(x) на участке [c,d] (m={1,-1}). a)
выполним проверку наличия экстремума на [c,d]: если [f(c+t)-f(c)] * [f(d+t)-f(d)]>0, то ier=1 и
осуществляется возврат в вызывающую программу; в противном случае ier=0 и
осуществляется поиск экстремума;
b) для сохранения исходных значений c, d определим новые переменные: c1=c,d1=d.
c) вычислим значение m: если f(c1+t)-f(c1)>0, то m=1, иначе m=-1.
d) вычислим значения x1, x2: x1=c1+(1-v)*(d1-c1), x2=c1+v*(d1-c1).
e) вычислим значения функции в точках x1, x2: y=m*f(x1), z=m*f(x2).
f) если yeps повторяем (f).
h) за точку max функции m*f(x) принимаем точку x0=(d1+c1)/2.
При вычислении G=max|f(x)| надо иметь в виду, что функция f(x) может достигать max
(min) либо в точках экстремумов, либо на концах отрезка [a,b].
При выполнении задания НЕОБХОДИМО составить: а) подпрограмму локализации
экстремумов функции f(x); б) подпрограмму метода золотого сечения; в) подпрограмму-
функцию f(x); г) головную программу для определения экстремумов функции f(x),
максимального значения модуля функции G=max|f(x)|, вычисления на отрезке [a,b]
(табулирования) значений функции f(x)/G.
В головной программе при первом обращении к подпрограмме отделения экстремума в
качестве отрезка [a1,b1] необходимо выбрать заданный отрезок [a,d] (a1=a,b1=b). При
повторном обращении к этой же подпрограмме переменной a1 присваивается значение
переменной d, вычисленной на предыдущем шаге поиска экстремумов (a1=d). Поиск
экстремумов прекращается, если ier=1.
ВАРИАНТЫ ЗАДАНИЯ.
Для всех вариантов a=0., b=1.
Функция f(x) задается в виде: f x ui v i x wi
i
( ) = ∗ sin[ ∗ ( ∗ + )]
= Σ
π
1
3
.
Величины ui, vi, wi для i=1,2,3 вычисляются по формулам:
ui = 1+(0.3-p1)*(i-1), vi = 2*i-(i-p2)/2+(i+p4)/3, wi = i/6-(i-p3)/3+(i+p5)/2
Значения p1-:-p5 определите следующим образом: переведите свой номер по журналу в
двоичный код, допишите перед полученным числом нули так, чтобы у Вас получился
пятизначный код из нулей и единиц. Значение p1 будет равно цифре в первой позиции кода,
p2 - во второй позиции, и т.д. Например, если Ваш номер по журналу - 9, то Ваш код будет
01001, значения p равны: p1=0, p2=1, p3=0, p4=0, p5=1, а функция f(x) примет вид
f(x) = sin[pi*(14*x+5)/6] + 1.3*sin[pi*(25*x+7)/6] + 1.6*sin[pi*(36*x+9)/6], pi=3.1415926.

Powered by Drupal - Design by artinet