Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
83.18 Кб
Скачать

3. Метод дихотомии

Метод относится к последовательным стратегиям. Задается начальный интервал неопределенности и требуемая точность. Алгоритм опирается на анализ значений функции в двух точках. Для их нахождения текущий интервал неопределенности делится пополам и в обе стороны от середины откладывается по , где малое положительное число. Поиск заканчивается, если длина текущего интервала неопределенности меньше заданной величины.

Листинг программы:

a(1)=0;

b(1)=3;

alpha=0.02;

eps=0.004;

k=1;

L(1)=b(1)-a(1);

while L(k)>alpha

y(k)=(a(k)+b(k)-eps)/2;

fy=-0.2*y(k)-sin(2*y(k));

z(k)=(a(k)+b(k)+eps)/2;

fz=-0.2*z(k)-sin(2*z(k));

if fy>fz

a(k+1)=y(k);

b(k+1)=b(k);

else

a(k+1)=a(k);

b(k+1)=z(k);

end;

L(k+1)=b(k+1)-a(k+1);

k=k+1;

end;

k

xmin=(a(k+1)+b(k+1))/2;

fmin=-0.2*xmin-sin(2*xmin);

xmin

fmin

R=1/(2^(k/2))

Результат:

k = 9

xmin = 0.8350

fmin = -1.1621 fmax=1.1621

R = 0.0442

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

В методе золотого сечения в качестве двух внутренних точек выбираются точки золотого сечения.

Точка производит золотое сечение, если отношение длины всего отрезка к большей части равно отношению большей части к меньшей части. На отрезке имеются две симметричные относительно его концов точки и :

.

Точка производит золотое сечение отрезка , а точка – отрезка .

Метод относится к последовательным стратегиям. Задается начальный интервал неопределенности и требуемая точность. Алгоритм опирается на анализ значений функции в двух точках. В качестве точек вычисления функции выбираются точки золотого сечения. На каждой итерации, кроме первой, требуется только одно новое вычисление функции. Поиск заканчивается, если длина текущего интервала неопределенности меньше заданной величины.

Листинг программы:

a(1)=0;

b(1)=3;

alpha=0.02;

delta(1)=b(1)-a(1);

k=1;

while delta(k)>alpha

y(k)=a(k)+(3-sqrt(5))*(b(k)-a(k))/2;

z(k)=a(k)+b(k)-y(k);

fy=-0.2*y(k)-sin(2*y(k));

fz=-0.2*z(k)-sin(2*z(k));

if fy<=fz

a(k+1)=a(k);

b(k+1)=z(k);

y(k+1)=a(k+1)+b(k+1)-y(k);

z(k+1)=y(k);

else

a(k+1)=y(k);

b(k+1)=b(k);

y(k+1)=z(k);

z(k+1)=a(k+1)+b(k+1)-z(k);

end;

delta(k+1)=b(k+1)-a(k+1);

k=k+1;

end;

k

xmin=(a(k)+b(k))/2;

fmin=-0.2*xmin-sin(2*xmin);

xmin

fmin

R=0.618^(k-1)

Результат:

k = 12

xmin = 0.8341

fmin = -1.1621 fmax=1.1621

R = 0.0050

5. Метод Фибоначчи

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

.

Последовательность чисел Фибоначчи имеет вид 1,1,2,3,5,8,13,23,34,55,89,144,233,.. .

Метод относится к последовательным стратегиям. Задается начальный интервал неопределенности и количество вычислений функции. Алгоритм опирается на анализ значений функции в двух точках. Точки вычисления функции находятся с использованием последовательности из чисел Фибоначчи. На каждой итерации, кроме первой, требуется только одно новое вычисление функции. Поиск заканчивается, если длина текущего интервала неопределенности меньше заданной величины.

Листинг программы:

a(1)=0;

b(1)=3;

alpha=0.02;

eps=0.004;

N=2;

L(1)=b(1)-a(1);

fi(1)=1;

fi(2)=1;

while fi(N)<(L(1)/alpha)

fi(N+1)=fi(N)+fi(N-1);

N=N+1;

end;

k=1;

y(k)=a(1)+(fi(N-2)/fi(N))*(b(1)-a(1));

z(k)=a(1)+(fi(N-1)/fi(N))*(b(1)-a(1));

while k~=N-2

fy=-0.2*y(k)-sin(2*y(k));

fz=-0.2*z(k)-sin(2*z(k));

if fy<=fz

a(k+1)=a(k);

b(k+1)=z(k);

z(k+1)=y(k);

y(k+1)=a(k+1)+(fi(N-k-3)/fi(N-k-1))*(b(k+1)-a(k+1));

else

a(k+1)=y(k);

b(k+1)=b(k);

y(k+1)=z(k);

z(k+1)=a(k+1)+(fi(N-k-2)/fi(N-k-1))*(b(k+1)-a(k+1));

end;

k=k+1;

end;

y(N-2)=z(N-2);

y(N-1)=y(N-2);

z(N-1)=y(N-1)+eps;

fy=-0.2*y(N-1)-sin(2*y(N-1));

fz=-0.2*z(N-1)-sin(2*z(N-1));

if fy<=fz

a(N-1)=a(N-2);

b(N-1)=z(N-1);

else

a(N-1)=y(N-1);

b(N-1)=b(N-2);

end;

k

xmin=(a(N-1)+b(N-1))/2;

fmin=-0.2*xmin-sin(2*xmin);

xmin

fmin

R=1/fi(N)

Результаты:

k = 11

xmin = 0.8458

fmin = -1.1619 fmax=1.1619

R = 0.0043

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]