1. ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ»
КРАТКОЕ ВВЕДЕНИЕ В СИСТЕМУ OCTAVE
Учебно-методическое пособие для вузов
Составитель
Я.А. Израилевич
Издательско-полиграфический центр
Воронежского государственного университета
2009
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2. Утверждено научно-методическим советом математического факультета
30 апреля 2009 г., протокол № 8
Рецензент А.В. Костин
Учебно-методическое пособие подготовлено на кафедре математического
анализа математического факультета Воронежского государственного уни-
верситета.
Рекомендуется для студентов 3–5 курсов математического факультета очной
формы обучения.
Для специальности 010101 – Математика и направления 010100 – Математика
2
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
3. 3
ВВЕДЕНИЕ
В последнее время усилился интерес к свободно распространяемому
программному обеспечению (freeware) — как альтернативе коммерческому
лицензионному программному обеспечению (proprietary software), причем
этот интерес характерен для самых различных сфер деятельности, включая
образование и бизнес. Стоит отметить, что основной альтернативой коммер-
ческому лицензионному пакету Microsoft Office является свободно распро-
страняемый пакет OpenOffice.org, и что имеется достаточно широкий выбор
свободно распространяемых средств программирования и разработки баз
данных, а в качестве альтернатив таким коммерческим лицензионным паке-
там компьютерной математики, как Mathematica, Maple и MATLAB, часто
используют программы Maxima и scilab, существенно уступающие своим
коммерческим лицензионным конкурентам (как это обычно и бывает). Оп-
ределенный интерес может представлять такая свободно распространяемая
программа компьютерной математики, как GNU Octave. Ее возможности в
решении задач математического программирования шире, чем у Maxima,
scilab и OpenOffice.org Calc, а документация по Octave вполне удобочитаема
и подробна. Отметим наличие в Octave основных финансовых функций, ак-
тивно используемых в финансовой математике и финансовом анализе; это
позволяет в ряде случаев сравнивать результаты расчетов в Octave и
OpenOffice.org Calc. Несмотря на примитивизм интерфейса Octave и даже
некоторую неустойчивость в работе, к Octave можно быстро приспособиться
и успешно ее использовать, по крайней мере для определенного ограниченно-
го круга задач. Дистрибутив и описание GNU Octave Вы можете получить
легально и бесплатно на сайтах
http://www.octave.org
http://www.gnu.org/software/octave/
или по адресу
http://freestatistics.altervista.org/click/fclick.php?fid=48
или там, где найдете (также легально и бесплатно).
Ниже дано беглое введение в систему GNU Octave и описано примене-
ние Octave к решению некоторых простых задач учебного характера, связан-
ных с математическим программированием и финансовой математикой.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
4. 4
НАЧАЛО РАБОТЫ
Мы описываем версии 2.9.11 – 3.0.0 программы GNU Octave. Запуск
программы Octave в MS Windows производится обычным образом. Начать
работу стоит с приведения окна консоли в удобочитаемый вид; это можно
сделать (если необходимо) через меню Edit-Settings-Appearance, установив
параметр Size, равным, скажем, 14, Custom color — ярко-зеленым и проставив
птичку в поле Save settings to user directory.
В открывшемся окне консоли программы стало видно приглашение
octave:1>
Вы можете выйти из программы, набрав в приглашении quit или exit
octave:1>quit
или octave:1>exit
Выйти из программы можно и через строку меню окна консоли.
Если же Вы хотите попробовать начать работу, наберите в приглаше-
нии команду A = [1, 1,2;3,5.5,8 ;13,21, 34 ]
octave:1> A = [1, 1,2;3,5.5,8 ;13,21, 34 ]
Эта команда создает матрицу и помещает ее в переменную. До элемен-
тов матрицы A можно добраться командами вида A(3, 2)
octave:2> A(3, 2)
Команда a= rand (3, 2);
octave:3> a= rand (3, 2);
создает матрицу 3 х 2, элементы которой ― случайные числа между 0 и 1.
Точка с запятой подавляет вывод результата. Вывести матрицу a можно
командой a
octave:4> a
Выведя аналогичным образом матрицу A
octave:5> A
убеждаемся, что Octave различает строчные и заглавные буквы. Заметим
также, что пробелы внутри имен, чисел и операторов не допускаются.
В Octave есть средства редактирования командной строки. Однако без
них вполне можно обойтись, редактируя команды в Блокноте и вставляя их
не слишком большими порциями в командную строку через строку меню или
контекстное меню (Edit-Paste).
Команды
octave:6> A * a
octave:7> a * A
octave:8> a' * A
и
octave:9>(a')*A
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
5. 5
приводят к естественным результатам. Отметим наличие в Octave большого
числа операций над матрицами, в том числе для поэлементных
арифметических действий (операции .* , ./ , . и др.). Так
octave:10>A*A
– обычный квадрат квадратной матрицы, а операция .* поэлементного
умножения
octave:11>A .* A
даст матрицу, составленную из квадратов элементов матрицы A.
ДОКУМЕНТАЦИЯ/СПРАВКА
Дистрибутив программы GNU Octave содержит обширную докумен-
тацию, из которой наиболее полезными, по-видимому, являются документы
GNU Octave-Documentation-HTML-Octave
и GNU Octave-Documentation-PDF-FAQ Octave ,
доступные из меню «Все программы» кнопки «Пуск» после установки
программы GNU Octave.
Справка, доступная из меню окна консоли программы GNU Octave, не
особенно полезна.
Из командной строки можно запускать команды
octave.exe:1> help
– это приводит к выводу большого количества информации, которой не
очень удобно пользоваться; можно также запускать команды вида
octave.exe:1> help command
например,
octave.exe:1> help rand
Много новой и полезной информации можно найти по адресам
http://www.octave.org
http://www.gnu.org/software/octave/
РЕШЕНИЕ УРАВНЕНИЙ
Мы будем рассматривать алгебраические и трансцендентные уравнения
вида f(x) = 0. Сначала определим графически начальные приближения к
корням уравнения, а затем численно уточним их.
Для построения графиков будем использовать функцию plot. Скажем,
для построения графика функции y = sin t на отрезке [-10,10] зададим
вектор аргументов t командой
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
6. 6
octave.exe:1> t = -10:0.1:10;
и построим график командой
octave.exe:2> plot (t, sin(t));
– эта команда откроет графическое окно, в котором и покажет нам
график. Заметим, что передвигая курсор этого окна, мы можем в левом
нижнем углу графического окна видеть абсциссы и ординаты различных
точек на графике.
Для численного уточнения корня применим функцию fsolve .. Для
этого сначала зададим функцию y = f(x)
octave.exe:3>function y = f (x)
y=sin(x)
endfunction
а затем уточним начальное приближение (скажем, 3.0) к корню
octave.exe:4>[x, info] = fsolve (@f, [3.0])
Octave сообщит нам о том, что корень найден, выдав
info = 1
Командой octave.exe:5> x, получим x = 3.1416
Рассмотрим теперь несколько более сложное уравнение
x3-5sin(3x)=0.
Ясно, что вне промежутка [-2,2] корней у этого уравнения нет.
Командами
octave.exe:6>t=-2:0.1:2;
octave.exe:7>plot (t, t.*t.*t.-5*sin(3*t));
построим график левой части уравнения на промежутке [-2,2]. Кроме
очевидного корня x=0 на графике видна пара симметричных относительно
нуля корней, приближенно равных –1 и 1. Зададим функцию g командой
octave.exe:6>function y = g(x)
y=x^3-5*sin(3*x)
endfunction
и уточним начальные приближения командами
octave.exe:7>[x, info] = fsolve (@g, [1])
octave.exe:8>x
что даст нам x=0.98341
и
octave.exe:9>[x, info] = fsolve (@g, [-1])
octave.exe:10>x
что даст нам x=-0.98341
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
7. 7
РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Рассмотрим следующую несложную задачу линейного
программирования:
max{3x-4y}
x >= 0
y >= 0
x+y <=1
Решим ее численно с помощью доступной в Octave функции glpk из
GNU GLPK library. Для этого зададим вектор коэффициентов целевой
функции командой
octave:1> C = [3,-4]'
и параметр s = –1, что означает максимизацию, командой
octave:2> s = -1;
(Обратите внимание на символ транспонирования ‘ )
Ограничения x >= 0 , y >= 0 зададим командой
octave:3> lb = [0,0]';
означающей, что обе переменные ограничены снизу нулем, и командой
octave:4> ub = [];
означающей, что обе переменные формально не ограничены сверху.
(Симвод l в команде lb = [0,0]'; – это, конечно строчная буква, соответст-
вующая заглавной L – от lower bounds – нижние границы, а отнюдь не единица.)
Для учета ограничения x+y <=1 зададим матрицу A и вектор B
командами
octave:5>A= [1,1]
octave:6>B= [1]
а также зададим параметр ctype = "U" командой
octave:7>ctype = "U";
что означает знак "<=" в ограничении, которое задается с помощью A и B в
данном случае. Команда
octave:8>vartype="CC";
указывает, что обе переменные непрерывны (не дискретны). Далее зададим
нормальный уровень вывода командой
octave:9> param.msglev = 2;
и ограничим количество шагов симплекс-метода величиной 100 с помощью
команды
octave:10> param.itlim = 100;
Теперь запустим функцию glpk командой
octave:11>[xmin, fmin, status, extra] = ...
glpk (C, A, B, lb, ub, ctype, vartype, s, param);
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8. 8
Многоточие “…” здесь обозначает, что команда продолжается на
следующей строке.
В качестве результата получаем среди прочего значение целевой
функции в точке максимума
objval = 3.000000000e+000
и саму точку максимума
xmin = 1 0
Рассмотрим теперь следующую задачу линейного программирования;
она получена из примера, приведенного на листе «График занятости» файла
SOLVSAMP.xls из пакета Microsoft Office.
min { x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+x(7)}
x(2)+x(3)+x(4)+x(5)+x(6) >= 22
x(3)+x(4)+x(5)+x(6)+x(7) >= 17
x(1)+x(4)+x(5)+x(6)+x(7) >= 13
x(1)+x(2)+x(5)+x(6)+x(7) >= 14
x(1)+x(2)+x(3)+x(6)+x(7) >= 15
x(1)+x(2)+x(3)+x(4)+x(7) >= 18
x(1)+x(2)+x(3)+x(4)+x(5) >= 24
x(i) целые
x(i) >= 0
Решим ее численно с помощью доступной в Octave функции glpk из
GNU GLPK library. Для этого зададим вектор коэффициентов целевой
функции командой
octave:1> c = [1, 1, 1,1,1, 1,1]';
и параметр s = 1, что означает минимизацию, командой
octave:2> s = 1;
Ограничения x(i) >= 0 зададим командой
octave:3> lb = [0, 0, 0,0, 0, 0,0]';
означающей, что все переменные ограничены снизу нулем, и командой
octave:4> ub = [];
означающей, что все переменные формально не ограничены сверху.
Команда octave:5> vartype = "IIIIIII" указывает, что все перемен-ные –
целые. (Здесь символ I –заглавная буква, соответствующая строчной i ).
Для учета оставшихся ограничений зададим матрицу a и вектор b
командами
octave:6> a = [ 0,1,1, 1, 1,1,0;
0,0,1, 1, 1,1,1;
1,0,0, 1, 1,1,1;
1,1,0, 0, 1,1,1;
1,1,1, 0,0,1,1;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
9. 9
1,1,1,1, 0,0,1;
1,1,1,1, 1,0,0;];
octave:7> b = [ 22, 17, 13, 14, 15, 18, 24]';
а также зададим параметр ctype = "LLLLLLL" командой
octave:8> ctype = "LLLLLLL";
что означает знак ">=" в ограничениях, которые задаются с помощью a и b в
данном случае. Далее зададим нормальный уровень вывода командой
octave:9> param.msglev = 2;
и ограничим количество шагов симплекс-метода величиной 100 с помощью
команды
octave:10> param.itlim = 100;
Теперь запустим функцию glpk командой
octave.exe:11> [xmin, fmin, status, extra] = ...
glpk (c, a, b, lb, ub, ctype, vartype, s, param);
Многоточие “…” здесь обозначает, что команда продолжается на
следующей строке.
В качестве результата получаем значение целевой функции в точке
минимума
octave.exe:12> fmin
fmin = 25
и саму точку минимума
octave.exe:13> xmin
xmin =
3
5
7
4
6
0
0
Эта точка минимума не единственная, в чем можно убедиться с
помощью вышеупомянутого файла SOLVSAMP.xls, подставляя найденные в
Octave значения в SOLVSAMP.xls и сравнивая значения целевой функции для
точек, найденнвх численно в Octave и в MS Excel – в SOLVSAMP.xls.
РЕШЕНИЕ ЗАДАЧ МАТЕМАТИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Рассмотрим следующую несложную задачу математического
программирования:
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
10. 10
min{–3x+y2}
x >= 0
x2+y2 <=1
Решим ее численно с помощью доступной в Octave функции sqp. Для
этого зададим целевую функцию phi
octave:1> function obj = phi (x)
obj = -3*x(1)+x(2)^2;
endfunction
и вектор-функцию ограничений h
octave:2> function r = h (x)
r = [ -x(1)^2-x(2)^2+1; x(1)];
endfunction
Зададим начальное приближение x0
octave:3> x0 = [1.8; 1.7];
Теперь запустим функцию sqp командой
octave:4> [x,obj,info,iter,nf,lambda] = ...
sqp(x0, @phi, [], @h)
В качестве результата получаем точку минимума
x =
1.0000e+000
–7.5246e-009
и значение целевой функции в точке минимума
obj = -3.0000
Рассмотрим теперь следующую транспортную задачу; она получена из
примера, приведенного на листе «Транспортная задача» файла SOLVSAMP.xls,
входящего в состав пакета Microsoft Office. Конечно, транспортные задачи –
это специальный класс задач линейного программирования, но решать их
удобнее, используя средства решения задач математического
программирования. Это связано с тем, что выписывание векторов и матриц для
стандартной формы задачи линейного программирования, соответствующей
транспортной задаче, является малоприятным упражнением на
интеллектуальную выносливость, в то время как целевая функция и вектор-
функция ограничений для стандартной формы задачи математического
программирования, соответствующей транспортной задаче, выписываются
естественным образом. (Под стандартной формой мы понимаем форму,
используемую в той или иной программе. Отметим, что сделанное выше заме-
чание справедливо, пока не вмешиваются соображения, связанные с возможны-
ми большими размерами реальных задач.)
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
11. 11
Итак, рассмотрим задачу
min { 10*x(1;1)+8*x(1;2)+6*x(1;3)+5*x(1;4)+4*x(1;5) ...
+6*x(2;1)+5*x(2;2)+3*x(2;3)+3*x(2;4)+6*x(2;5) ...
+3*x(3;1)+4*x(3;2)+5*x(3;3)+5*x(3;4)+9*x(3;5) }
x(1;1)+x(1;2)+x(1;3)+x(1;4)+x(1;5) <= 310
x(2;1)+x(2;2)+x(2;3)+x(2;4)+x(2;5) <= 260
x(3;1)+x(3;2)+x(3;3)+x(3;4)+x(3;5) <= 280
x(1;1)+x(2;1)+x(3;1) >= 180
x(1;2)+x(2;2)+x(3;2) >= 80
x(1;3)+x(2;3)+x(3;3) >= 200
x(1;4)+x(2;4)+x(3;4) >= 160
x(1;5)+x(2;5)+x(3;5) >= 220
x(i;j)>=0
Решим ее численно с помощью доступной в Octave функции sqp. Для
этого зададим целевую функцию phi
octave:1> function obj = phi (x)
xxx = rand (3, 5);
xxx(1,1)=x(1); xxx(1,2)=x(2);xxx(1,3)=x(3); xxx(1,4)=x(4); xxx(1,5)=x(5);
xxx(2,1)=x(6); xxx(2,2)=x(7);xxx(2,3)=x(8); xxx(2,4)=x(9); xxx(2,5)=x(10);
xxx(3,1)=x(11); xxx(3,2)=x(12); xxx(3,3)=x(13); xxx(3,4)=x(14); xxx(3,5)=x(15);
y1=10*xxx(1,1)+8*xxx(1,2)+6*xxx(1,3)+5*xxx(1,4)+4*xxx(1,5);
y2=6*xxx(2,1)+5*xxx(2,2)+4*xxx(2,3)+3*xxx(2,4)+6*xxx(2,5);
y3=3*xxx(3,1)+4*xxx(3,2)+5*xxx(3,3)+5*xxx(3,4)+9*xxx(3,5);
obj=y1+y2+y3
endfunction
Зададим вектор-функцию ограничений h
function r = h (x)
xx = rand (3, 5);
xx(1,1)=x(1); xx(1,2)=x(2);xx(1,3)=x(3); xx(1,4)=x(4); xx(1,5)=x(5);
xx(2,1)=x(6); xx(2,2)=x(7);xx(2,3)=x(8); xx(2,4)=x(9); xx(2,5)=x(10);
xx(3,1)=x(11); xx(3,2)=x(12);xx(3,3)=x(13); xx(3,4)=x(14); xx(3,5)=x(15);
r = [x(1); x(2); x(3);x(4);x(5);x(6); x(7);x(8);x(9);x(10); x(11);x(12);
x(13); x(14); x(15);
310 - xx(1,1)-xx(1,2)-xx(1,3)-xx(1,4)-xx(1,5);
260 - xx(2,1)-xx(2,2)-xx(2,3)-xx(2,4)-xx(2,5);
280 - xx(3,1)-xx(3,2)-xx(3,3)-xx(3,4)-xx(3,5);
- 180 + xx(1,1)+xx(2,1)+xx(3,1) ;
- 80 + xx(1,2)+xx(2,2)+xx(3,2) ;
- 200 + xx(1,3)+xx(2,3)+xx(3,3) ;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
12. 12
xx(1,4)+xx(2,4)+xx(3,4) - 160;
xx(1,5)+xx(2,5)+xx(3,5) - 220]
endfunction
Зададим начальное приближение x0
octave:3> x0 = [9;9;9;9;9;9;9;9;9;9;9;9;9;9;9];
Теперь запустим функцию sqp командой
octave:4> [x, obj, info, iter, nf, lambda] = sqp (x0, @phi, [], @h)
В качестве результата получаем точку минимума
x =
0.00000
0.00000
45.00000
35.00000
220.00000
0.00000
0.00000
135.00000
125.00000
0.00000
180.00000
80.00000
20.00000
0.00000
0.00000
и значение целевой функции в точке минимума obj = 3200
Эта точка минимума не единственная, в чем можно убедиться с
помощью вышеупомянутого файла SOLVSAMP.xls, подставляя найденные в
Octave значения в SOLVSAMP.xls и сравнивая значения целевой функции для
точек, найденнвх численно в Octave и в MS Excel – в SOLVSAMP.xls.
ФИНАНСОВЫЕ ФУНКЦИИ
Дадим описание некоторых финансовых функций Octave.
Функция: fv (r, n, p, l, method)
Возвращает будущее значение в конце промежутка времени из n перио-
дов для потока платежей, состоящего из n платежей при ставке r для каждого
периода. Необязательный аргумент l может использоваться для задания до-
полнительной начальной суммы платежа. Необязательный аргумент method
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
13. 13
может быть использован для указания того, что платежи производятся в конце
( "e" , по умолчанию), или же в начале ("b") каждого периода. Заметим, что
ставку r следует задавать как дробь (т. е., 0.05, а не 5 %).
Функция: fvl (r, n, l)
Возвращает будущее значение в конце промежутка времени из n пе-
риодов для начальной инвестиции l при ставке r для каждого периода. Ставку
r следует задавать как дробь (т. е., 0.05, а не 5 %).
Функция: irr (p, i)
Возвращает внутреннюю доходность потока платежей p, порожденного
начальной инвестицией i ( другими словами,. решение относительно r урав-
нения npv (r, p, i) = 0; сравните с описанием функции npv).
Функция nper (r, p, a, l, method)
Возвращает количество регулярных платежей величины p, необходимых
для выплаты займа величины a при процентной ставке r. Необязательный ар-
гумент l может использоваться для задания дополнительной суммы платежа в
конце последнего периода платежа. Необязательный аргумент method может
быть использован для указания того, что регулярные платежи производятся в
конце ( "e" , по умолчанию), или же в начале ("b" ) каждого периода. Заме-
тим, что ставку r следует задавать как дробь (т. е., 0.05, а не 5 %).
Функция npv (r, p, i)
Возвращает чистое приведённое (текущее) значение потока нерегуляр-
ных (т.е. не обязательно равных) платежей, осуществляемых в концах n по-
следовательных промежутков времени (периодов). Аргумент r задаёт одно-
периодные процентные ставки и может быть как скаляром (в случае постоян-
ной процентной ставки), так и вектором той же длины, что и p.
Необязательный аргумент i может использоваться для задания началь-
ной суммы платежа.
Заметим, что ставку r следует задавать как дробь (т. е., 0.05, а не 5 %).
Функция pmt (r, n, a, l, method)
Возвращает размер периодического платежа, необходимый для выпла-
ты займа величины a за n периодов при однопериодной процентной ставке r
Необязательный аргумент l может использоваться для задания дополнитель-
ной конечной суммы платежа. Необязательный аргумент method может быть
использован для указания того, что платежи производятся в конце ("e" , по
умолчанию), или же в начале ( "b" ) каждого периода.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
14. 14
Заметим, что ставку r следует задавать как дробь (т. е., 0.05, а не 5 %).
Функция pvl (r, n, p)
Возвращает текущее (настоящее) значение вклада, по которому по завер-
шении n периодов при однопериодной процентной ставке r будет выплачена ве-
личина p. Заметим, что ставку r следует задавать как дробь (т. е., 0.05, а не 5 %).
Функция rate (n, p, v, l, method)
Возвращает ставку доходности по вкладу с настоящим (текущим) зна-
чением v, порождающему выплаты величины p за n последовательных пе-
риодов.
Необязательный аргумент l может использоваться для задания допол-
нительной конечной суммы платежа. Необязательный аргумент method мо-
жет быть использован для указания того, что платежи производятся в конце
("e" , по умолчанию), или же в начале ( "b" ) каждого периода.
Рассмотрим следующие задачи.
1. Определить, какой вклад следует положить на депозит, чтобы через
3 года на счете оказалась сумма 44 000 при номинальной ставке 16.5 % годо-
вых и начислении процентов 2 раза в год.
Решение:
octave.exe:1> l=44000
l = 44000
octave.exe:2> n=3*2
n = 6
octave.exe:3> r=0.165/2
r = 0.082500
octave.exe:4> p=0
p = 0
octave.exe:5> pv (r, n, p, l, "e")
ans = 2.7345e+004
octave.exe:6> format long e
octave.exe:7> pv (r, n, p, l, "e")
ans = 2.73454608150543e+004
2. Ссуда размером a погашается платежами размера p при номинальной
ставке i в течение n лет m раз в год. Определите n по известным a=5000,
p=141.7, r=16 %, m=12.
Решение:
octave.exe:1> a=5000, p=141.7, r=0.16/12
a = 5000
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
15. 15
p = 141.70
r = 0.013333
octave.exe:2> nper (r, p, a)
ans = 48.001
octave.exe:3> 48/12
ans = 4
3. Рассчитайте годовую процентную ставку i по вкладу размером
100 000, если за 13 лет сумма возросла до 1 000 000 при начислении процен-
тов 4 раза в год.
Решение:
octave.exe:1> n=13*4, p=0, v= 100 000, l=1 000 000
n = 52
p = 0
v = 100 000
l = 1 000 000
octave.exe:2> rate (n, p, v, l)*4
ans = 0.18110
4. Рассчитайте внутреннюю доходность потока платежей 15 000,
16 000, 17 000, порожденного начальной инвестицией 20000.
Решение:
octave.exe:1> i=20000, p=[15000,16000,17000]
i = 20000
p =
5000 16000 17000
octave.exe:2> irr (p, i)
ans = 0.58964
Литература
1. GNU Octave. Documentation. (http://www.octave.org,http://
www.gnu.org/ software/octave/).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
16. Учебное издание
КРАТКОЕ ВВЕДЕНИЕ В СИСТЕМУ OCTAVE
Учебно-методическое пособие для вузов
Составитель
Израилевич Яков Аронович
Редактор И.Г. Валынкина
Подписано в печать 20.07.09. Формат 60×84/16. Усл. печ. л. 0,9.
Тираж 25 экз. Заказ 1161.
Издательско-полиграфический центр
Воронежского государственного университета.
394000, г. Воронеж, пл. им. Ленина, 10. Тел. 208-298, 598-026 (факс)
http://www.ppc.vsu.ru; e-mail: pp_center@ppc.vsu.ru
Отпечатано в типографии Издательско-полиграфического центра
Воронежского государственного университета.
394000, г. Воронеж, ул. Пушкинская, 3. Тел. 204-133
16
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»