• Предмет: Информатика
  • Автор: aiken055a
  • Вопрос задан 5 месяцев назад

ПРОГРАММИСТЫ ПОМОГИТЕ ПОЖАЛУЙСТА MATLAB Метод золотого сечения Задана одномерная функция J(U) унимодальная на отрезке u€[a,b] Необходимо: найти min J(u) u€[a,b] Задаётся маленькая константа дельта и вычисляется 2 точки если J(u1) больше или равно J(u2) a1=u1 b1=u2 процедура повторяется для интервала [а1 b1]. нужен скрипт для матлаба ​

Ответы

Ответ дал: olegtrofimenko1991
0

Ответ:

Объяснение:

Для решения данной задачи можно использовать метод золотого сечения. Ниже приведен скрипт на MATLAB для поиска минимума функции J(u) на отрезке [a,b].

% Задаем функцию J(u)

J = @(u) u.^2 - 2*u + 1;

% Задаем отрезок [a, b]

a = -1;

b = 3;

% Задаем маленькую константу delta

delta = 0.0001;

% Находим количество итераций для достижения заданной точности

N = ceil(log(delta/(b-a))/log((sqrt(5)-1)/2));

% Находим начальные точки u1 и u2

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

u2 = b - u1 + a;

% Выполняем итерации

for i = 1:N

   if J(u1) >= J(u2)

       a = u1;

       u1 = u2;

       u2 = b - u1 + a;

   else

       b = u2;

       u2 = u1;

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

   end

end

% Находим минимум функции

u_min = (a + b)/2;

J_min = J(u_min);

disp(['Минимум функции J(u) на отрезке [', num2str(a), ', ', num2str(b), ']']);

disp(['u_min = ', num2str(u_min)]);

disp(['J_min = ', num2str(J_min)]);

В данном скрипте задается функция J(u) как анонимная функция, а также отрезок [a,b] и маленькая константа delta. Затем находится количество итераций N, необходимое для достижения заданной точности. Далее задаются начальные точки u1 и u2, после чего выполняются итерации. В конце находится минимум функции J(u) и выводится на экран.

Обратите внимание, что для решения задачи необходимо задать свою функцию J(u) в скрипте.

Вас заинтересует