Решение задач оптимального управления с использованием математической системы MATLAB и пакета имитационного моделирования SIMULINK. Сивохин А.В - 32 стр.

UptoLike

% Проверка значений функции на границах отрезка
if feval(fname, left)*feval(fname, right) > 0
error('Одинаковые знаки функции на границах отрезка')
end
% Деление отрезка пополам
while (right - left) > epsilon
center = (right + left)/2; % вычисление середины отрезка
% проверка на равенство f(x) нулю в середине отрезка
if feval(fname, center) == 0
break % найден точный корень, дальше делить нет смысла
end
% Выбор нужной половины отрезка, на границах которой
% f(x) принимает значения разных знаков
if feval(fname, left)*feval(fname, center) < 0
right = center;
else
left = center;
end
end
% Приближенное значение корня равно координате любой границы
% последнего полученного отрезка
root = center;
if nargout == 2
varargout{1} = feval(fname, root);
end
%
% Файл-функция simple с подфункцией f в одном файле
%
function simple;
% Основная функция
f1 = f(1.1,2.1)
f2 = f(3.1,4.2)
f3 = f(-2.8,0.7)
function z = f(x,y)
% Подфункция
z = x^3 - 2*y^3 + 3*(x^2+y^2)- x*y + 9;
% Проверка значений функции на границах отрезка
if feval(fname, left)*feval(fname, right) > 0
   error('Одинаковые знаки функции на границах отрезка')
end
% Деление отрезка пополам
while (right - left) > epsilon
   center = (right + left)/2; % вычисление середины отрезка
   % проверка на равенство f(x) нулю в середине отрезка
   if feval(fname, center) == 0
      break % найден точный корень, дальше делить нет смысла
   end
   % Выбор нужной половины отрезка, на границах которой
   % f(x) принимает значения разных знаков
   if feval(fname, left)*feval(fname, center) < 0
      right = center;
   else
      left = center;
   end
end
% Приближенное значение корня равно координате любой границы
% последнего полученного отрезка
root = center;
if nargout == 2
   varargout{1} = feval(fname, root);
end


%
% Файл-функция simple с подфункцией f в одном файле
%

function simple;
% Основная функция
f1 = f(1.1,2.1)
f2 = f(3.1,4.2)
f3 = f(-2.8,0.7)

function z = f(x,y)
% Подфункция
z = x^3 - 2*y^3 + 3*(x^2+y^2)- x*y + 9;