Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУЛР.doc
Скачиваний:
11
Добавлен:
19.11.2019
Размер:
1.12 Mб
Скачать

3. Порядок выполнения работы

3.1. Работа выполняется в среде Matlab.

Для запуска системы Matlab щелкнуть левой кнопкой мыши по ярлыку с логотипом Matlab на рабочем столе Windows. Появляется командное окно с командной строкой.

3.2. Найти параметры производственной функции Кобба- -Дугласа по данным табл. 2.1, используя пакет оптимизации системы Matlab - Optimization Toolbox.

Для этого вводятся обозначения для элементов табл. 2.1 по следующей схеме

и составляется квадратичный критерий качества (целевая функция) исходя из наблюдений за 12 лет

. (2.1)

Параметры , при которых критерий качества достигает минимума, считаются наилучшими (оптимальными).

3.2.1. Найти параметры производственной функции с помощью процедуры fminunc, которая предназначена для поиска минимума функции многих переменных без ограничений

Запись функции:

х= fminunc(fun, x0).

Она возвращает значение точки минимума функции fun при начальном приближении х0.

Предварительно создается m–файл-функция. На панели инструментов окна Matlab щелкнуть New \M-file. В появившемся окне набрать текст программы, описывающей формирование целевой функции (2.1):

function F=myfun(x)

Y=[180.0 197.0 215.5 230.7 245.0 251.5 284.0 304.4 336.0 368.7 393.0 426.0];

К=[151 166.7 189.0 212.5 237.6 265.0 283.0 316.0 353.0 398.4 455.7 520.0];

L=[1863 1931 1971 2031 2162 2277 2457 2601 2798 2983 3110 3268];

t=1:12;

S(t) = (Y(t)-x(1)*K(t).^x(2).*L(t).^(1-x(2))).^2;

F=sum(S);

В этой программе через обозначена невязка для момента времени , а через - функция (2.1). Сохраняется файл-функция под именем myfun.

Затем составляется m–файл–сценарий:

% Program нахождение параметров производственной функции

х0 = [0.1 0.5]; % Задание начального приближения

[х, resnorm,exitflag, output] =fminunc(@myfun,x0) % Решение задачи.

При нажатии клавиши F5 в командном окне появляется сообщение о решении задачи:

х = 0.2752 0.4040 resnorm = 267.7279

exitflag = 1

output =

iterations: 18 funcCount: 93 stepsize: 1.0001 firstorderopt: 0.1673 algorithm: 'medium-scale: Quasi-Newton line search'.

Здесь resnorm - значение функции (2.1) в точке минимума; exitflag - сообщение о характере завершения вычислительной процедуры. Если эта величина положительна, вычисления закончились нахождением решения; если она равна нулю, то останов произошел по исчерпанию лимита итераций; если данная величина отрицательная - решение не найдено. Величина iterations показывает число итераций процедуры оптимизации; funcCount — число вычислений функции; stepsize - величина конечного шага поиска; firstorderopt — показывает норму градиента в конечной точке поиска.

Оценить качество оптимизации можно по величине resnorm - сумме квадратов невязок или визуально на графике. Для этого в командной строке Matlab или в файле–сценарии следует набрать

t=1:12;

plot(t,Y(t),t,x(1)*K(t).^x(2).*L(t).^(1-x(2)))

и нажать клавишу Enter или F5. Полученный график сохранить.

3.2.2. Решить задачу методом Нелдера-Мида, используя функцию fminsearch, которая имеет ту же структуру, что и рассмотренная в п. 3.2.1. Сравнить полученные результаты.

3.2.3. Найти параметры производственной функции квазиньютоновским методом с помощью процедуры fminunc,

Предварительно вычисляется градиент целевой функции, после чего составляется m–файл–функция

function [F,G] = myfunGr(x)

Y=[180.0 197.0 215.5 230.7 245.0 251.5 284.0 304.4 336.0 368.7 393.0 426.0];

К=[151 166.7 189.0 212.5 237.6 265.0 283.0 316.0 353.0 398.4 455.7 520.0];

L=[1863 1931 1971 2031 2162 2277 2457 2601 2798 2983 3110 3268];

t=1:12;

S1(t) = (Y(t)-x(1)*K(t).^x(2).*L(t).^(1-x(2))).*K(t).^x(2).*L(t).^(1-x(2));

S2(t) = (Y(t)-x(1)*K(t).^x(2).*L(t).^(1-x(2))).*K(t).^x(2).*L(t).^(1-

- x(2))*x(1).*(log(K(t))-log(L(t)));

S(t)= (Y(t)-x(1)*K(t).^x(2).*L(t).^(1-x(2))).^2;

dF1 = -2*sum(S1);

F=sum(S);

dF2 = -2*sum(S2);

G = [dF1 dF2];

Здесь символом обозначается производная невязки по переменной , символом - производная невязки по переменной , символом - производная целевой функции (2.1) по переменной , символом - производная целевой функции (2.1) по переменной .

Затем, как и ранее, составляется m–файл–сценарий:

х0 = [0.1 0.5];

OPTIONS = optimset('gradobj','on');

[x,fval,exitflag,output] = fminunc(@myfunGr,xO,OPTIONS)

Проанализировать сообщение о решении задачи и зафиксировать результаты в протоколе.

3.2.4. Решить задачу нелинейным МНК с помощью функции Isqnonlin.

Для этого скорректировать m–файл–функцию п. 3.2.1, строки 6,7 выражением:

F=(Y(t)-x(1)*K(t).^ x(2).*L(t).^ (1-x(2))).^2;

В m–файле–сценарии производится запись:

[x,resnorm,residual,exitflag,output]=lsqnonlin(@myfun_MHK,x0)

Результаты фиксируются в протоколе.