Е.Р. дл""C'-'I'В, О.Б. ЧеснОКDва Octave Введение в 2-е издание, исправленное Алексеев Е.Р. ЧеСНОКI)ва О.В. Национальный Ожрьпый Университет "ИНТУИТ" 2016 , Е.Р. дл""C'-'I'В, О.Б. ЧеснОКDва Бвед!'Нне в Daave Введ(>нн(> в Octavel ЕР. Алексе(>в, О.В. Чеснокова - М.: Национальный QThРЫ1ЫЙ Унив(>рситет" ИНТУИТ", 2016 Курс посвящен свободно раСПРОС1раня(>мому паке"!)' Octave. Описан ВС1роенный язык пакета, ПОдРобно раССМО1рены графические возможносm пакета. ПОдРобно раССМО1рено решение различных инженерных и матемаmческих задач. Особое внимание уделено операциям с ма1рицами, р(>ш(>нию нелин(>йных уравнений и систем, дифференцироваиию и интегрированию, решению дифференциальных уравн(>ний, опmмиэационным задачам и обрабОThе эксп(>римеитзльных данных (иитерполяции и аппроксимации. Наряду со ВС1роенным языкl)м пакета описана среда QtOctave. (с) 000 "ИНТУИТ.РУ", 2015-2016 (с) Алексеев Е.Р., Чеснокова О.В., 2015-2016 Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave Общие сведения, установка GNU Octave. Краткое описание курса и процесса установки Введение Курс посвящен GNU Octave - одной из самых интересных прикладных программ для решения инженерных и математических задач. GNU Осыуе - это свободный интерпретирующий язык для проведения математических вычислений. По возможностям и качеству реализации интерпретатора язык Octave можно сравнивать с проприетарной программой MAТLAB, причём синтаксис обоих языков очень схож. Существуют версии языка для различных дистрибугивов GNU Linux (ALT Linux, ОеЫап, Ubuntu, Mandriva и др.) и для ОС Windows. На наш взгляд, GNU Octave больше ориентирован на работу в Linux. Работа в ОС Windows возможна, но пользователю Windows надо быть готовым работать с простым текстовым редактором и командной строкой. GNU Octave, Когда авторы начинали знакомиться с основной проблемой было отсугствие хорошего русскоязычного введения в этот язык. Наша книга является попыткой восполнить этот пробел. Поэтому большое внимание было уделено самому языку (глава 3), операциям с матрицами (глава 5) и графическим возможностям пакета (глава 4). Наш многолетний опыт преподавания информационных дисциплин в Донецком национальном техническом университете говорит нам о том, что СТУденту и инженеру наряду с описанием функций, предназначенных для решения той или иной задачи, не ЛИlШlим будет напомнить и математическую постановку решаемой задачи, а зачастую и численные методы решения задачи. Именно поэтому в ряде глав приведены не только описания функций, но и описаны численные методы решения задач. Что касается графических оболочек, таких как qtOctave, Xoct ave и Kalculus, нами принято решение кратко описать наиболее стабильную из них, qt Octave, а основное внимание в книге Уделить собственно языку. Мы считаем, что GNU Octave - это в первую , Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave очередь мощный интерпретирующий язык. Зная его, пользователь сможет работать с любой графической оболочкой. Авторы выражают благодарность компании ALT Linux за многолетнее сотру,цничество и возможность издать очередную книгу Авторы заинтересованы в общении с читателями. Мы ж.цём ваши замечания и отзывы по адресам ЕАlеksееv@gmailсоmи сhеsп_о@list.ru. 2012 Донецк, апрель 1.1 Принципы работы с интерпретатором Octave высокоуровневый интерпретируемый язык программирования, предназначенный для решения задач вычислительной математики. В состав пакета входит интерактивный Octave). командный интерфейс (интерпретатор Интерпретатор Осыуе запускается из терминала ОС Linux или из его порта в Windows. После 1.1). запуска Осыуе пользователь видит окно интерпретатора (рис. в окне интерпретатора пользователь может вводить как отдельные команды языка Octave, так и группы команд, объединяемые в ";", программы. Если строка заканчивается символом результаты на ";" экран не выводятся. Если же в конце строки символ отсугствует, Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave ~айл Правка .ви.n IерМItНал .справка ,o ctave-3.2.3:2> a=(l 2 3:4 5 6:8 7 91 . 1 , , , , 4 , б octave-3.2.3:3~ inverse(a) '" ап~ ·0.33333 -8.ЗЗЗ3З 8.ЗЗЗЗ) -1.ЗЗЗ3З 1.6М67 ·В.66667 I.ЗЗЗЗЗ -1.88ВВВ В.ЗЗЗЗ) осtаvе-З.2.З:4~ а'ап~ ans '" 1 В88ее+8е -2.22e4~-16 1.6б5Зе-16 -2 22B4~-16 1.ввевнев ) ЗЗ87е-16 -4 44B9~-16 -4.4489~-lб 1.8888e+68 осtаvе-З.2.З:5~ О 1.1. Octave Рис. ОКНО интерпретатора ~Мf1 [!p(Ie",~ .111114 IepM",Hall Сnрае",а ,D( tаvе-З.2.З:S~ a=[l 2 3: 4 S 6;7 8 9] \ )'0 опреJ:1еление на'РИЦЫ а . ,1 , ,з 4 5 б D(tаvе-3.2.З:6~ b=[11 21 35; 41 25 16;17 83 93); % Это Dлререление маТРИЦЫ Ь ,DC Taye-3.2.):7~ с=а'Ь ~ Умноаение матрыц ~ 144 328 )46 351 787 778 558 HJ94 1218 D Dсtаvе-З.2.З:8~ Рис. 1.2. Использование символов ";" и '%" в Octave 1.2). результаты работы выводятся на экран (рис. Текст в строке после символа %(процент) является комментарием и интерпретатором не обрабатывается (рис. 1.2). (Строки комментариев авторы книrn будуг использовать для пояснения функций и текстов программ.) Рассмотрим несколько несложных примеров. Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave При мер 1.1. Решить систему линейных алгебраических уравнений (СЛАУ) з * + 5 * Х2 7 * Х::! = 11 Xl - * * + * { 3 Xl - 4 Х2 33 Х::! = 25 22 * "'1 - 11 * Х2 + 17. "'" = 22 Возможны два варианта решения любой задачи в Octave: 1. Терминальный режим. В этом режиме в окно интерпретатора последовательно вводятся отдельные команды. 2. Программный режим. В этом режиме создаётся текстовый файл с . расширением т. в котором хранятся последовательно выполняемые команды Octave. 3атем этот текстовый файл (программа на языке Octave) запускается на выполнение в среде Octave. Для решения СЛАУ в окне интерпретатора Octave последовательно введём следующие команды: % Определение матрицы коэффициентов системы линейных уравнени А=[З 5 -7; 3 -4 ЗЗ; 22 -1117]; Ь=[l1; 25; 22]; % Вектор правых частей СЛАУ. х=АЛ(-l)*Ь % Решение системы методом обратной матрицы. х= l.5БЗБl 2.55742 0.92542 octave -3.2.3:27 > А*х % Проверка. = аns 11.000 25.000 22.000 Листинг 1.1. Решение СЛАУ примера 1.1 , Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave Файл Правка .6.ид ПQИ(К С~рви( ~OKYMeHTЫ .kправка u е Открыть v ~ Сохранить ~ Отменить v д-[3 5 -7;3 -4 33;22 -11 17] bo[ll; 25; 22] хоД'(-I)'Ь Д·х Objective-C v Ширина таБУЛRЦИИ: В v СТр 4, СТлб 4 вет Рис. 1.3. Программа для решения примера 1.1 ans в переменной хранится результат последней операции, если команда не содержит знака присваивания. Следует помнить, что значение переменной аns изменяется после каждого вызова команды без операции присваивания. Теперь рассмотрим, как решить эту же задачу в программнам режиме. Вызовем любой текстовый редактор. (Именно текстовый редактор! Не пугайте с текстовыми процессорами типа Mk:rosoft Word или OpenOffice.orgILibreOffice Writer.) Например gedi t , в окне которого последовательно введём следУЮщие команды: А=[З 5 -7; 3 -4 ЗЗ; 22 -1117] Ь =[11; 25; 22] х=АЛ(-I)*Ь А*х Сохраним введённые команды в виде файла с расширением . т, например, /home/evgenl y/prl m1 1 . т (рис. 1.3). Теперь эту программу необходимо запустить на выполнение из интерпретатора. Для этого в окне интерпретатора введём команды: cd 'lhome/evgeniy'% Переход в каталог, где хранится про грамма. ргiш1_1 % 3апуск программы. , Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave ~Йf1 [!pCIEI"';!! .111114 Iep"''''H;!!fI СnраEl':;!! А о 3 :5 -7 3 -4 зз 22 -11 17 ь 11 25 " 1.56361 2S H42 8.92542 iln5 • 11.88е 25.вее 22. вее "iiQ I 1.4. Рис. ОКНО терминала после запуска программы ргiш1_1 Окно интерпретатора примет ВИД, представленный на рис. 1.4. Просмотрев результаты работы программы, нажмите q для возвращения в режим ввода команд терминала. , + + Пример 1.2. Решить квадратное уравнение ах- Ьх с = о. Напомним читателю, что корни квадратного уравнения определяют по формулам Х 1. "-) = -ь±2аv'D ' где дискриминант D вычисляется по - формуле D = ь' 4ас. в Octave, как и в большинстве математических пакетов, все математические функции определены сразу как для действительных, так и для комплексных чисел, поэтому нет необходимости в тексте программы проверять знак о. Текст программы решения задачи из 1.2 1.2. при мера приведён в листинге , Е.Р. дл""C'-'I'В, О.В. ЧеснОКDва В вед!'Нне в Daave a=input('a='); % Ввод значения переменной а. b=input('b='); % Ввод значения переменной Ь. c=input('c='); % Ввод значения переменной с. d=ЬЛ2-4*а*с; % Вычисление значения дискриминанта. x1=(-b+sqrt(d))/2/a % Вычисление значения х1. x2=(-b-sqrt(d))/2/a % Вычисление значения х2. Листинг 1.2. Решение хвадратного уравнения (принер 1.2). Для запуска программы на выполнения в окне интерпретатора введём текст: cd 'lhome/evgeniy' ргirп1_2 j \ I \ I \ I -0.5 _.L-______ \/ j ____ \/ / _______ _' ~-, ~~~~ ~~L- -Н " Рис. 1.5. Графики функций у = sin(x), z = cos(x) /home/evgeniy - Здесь имя папки, где хранится программа, prlm1 2 .т - имя файла в папке /home/evgeni y, где хранится "