Table Of ContentВ серии: Библиотека ALT Linux
Введение в Octave для
инженеров и математиков
Е.Р.Алексеев, О.В.Чеснокова
Москва
ALT Linux
2012
m
УДК 519.67
ББК 22.1
А47
Введение в Octave для инженеров и математиков:
А47 / Е.Р.Алексеев, О.В.Чеснокова — М.: ALT Linux, 2012. —
368с.: ил. — (Библиотека ALT Linux).
ISBN 978-5-905167-10-2
КнигапосвященасвободнораспространяемомупакетуOctave.Чи-
тательдержитврукахпервоеописаниепакетанарусскомязыке.Опи-
сан встроенный язык пакета, подробно рассмотрены графические воз-
можностипакета.
Подробнорассмотренорешениеразличныхинженерныхиматема-
тическихзадач.Особоевниманиеуделенооперациямсматрицами,ре-
шению нелинейных уравнений и систем, дифференцированию и инте-
грированию, решению дифференциальных уравнений, оптимизацион-
нымзадачамиобработкеэкспериментальныхданных(интерполяциии
аппроксимации). Наряду со встроенным языком пакета описана среда
QtOctave.
Сайткниги:http://www.altlinux.org/Books:Octave
Книгаадресованастудентам,преподавателяминженерныхимате-
матическихспециальностей,атакженаучнымработникам.
УДК 519.67
ББК 22.1
По вопросам приобретения обращаться: ООО «Альт
Линукс» (495)662-38-83 E-mail: [email protected]
http://altlinux.ru
Материалы,составляющиеданнуюкнигу,распространяютсянаусловияхли-
цензии GNU FDL. Книга содержит следующий текст, помещаемый на первую
страницу обложки: «В серии “Библиотека ALT Linux”». Название: «Введение в
Octave для инженеров и математиков». Книга не содержит неизменяемых раз-
делов. Авторы разделов указаны в заголовках соответствующих разделов. ALT
Linux — торговая марка компании ALT Linux. Linux — торговая марка Линуса
Торвальдса. Прочие встречающиеся названия могут являться торговыми марка-
мисоответствующихвладельцев.
ISBN 978-5-905167-10-2 © Е.Р.Алексеев,О.В.Чеснокова,2012
© ALTLinux,2012
m
Оглавление
Введение 6
Глава 1. Общие сведения, установка 8
1.1 Принципы работы с интерпретатором . . . . . . . . . 8
1.2 Установка Octave . . . . . . . . . . . . . . . . . . . . 14
1.3 Графическая оболочка QtOctave. . . . . . . . . . . . 17
Глава 2. Основы работы 24
2.1 Элементарные математические выражения . . . . . . 24
2.2 Текстовые комментарии . . . . . . . . . . . . . . . . 25
2.3 Представление вещественного числа . . . . . . . . . 25
2.4 Переменные . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Функции . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6 Массивы . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.7 Символьные вычисления . . . . . . . . . . . . . . . . 43
Глава 3. Программирование 46
3.1 Основные операторы языка программирования . . . 46
3.2 Обработка массивов и матриц . . . . . . . . . . . . . 56
3.3 Обработка строк . . . . . . . . . . . . . . . . . . . . . 62
3.4 Работа с файлами . . . . . . . . . . . . . . . . . . . . 65
3.5 Функции . . . . . . . . . . . . . . . . . . . . . . . . . 79
Глава 4. Построение графиков 87
4.1 Построение двумерных графиков . . . . . . . . . . . 87
4.2 Построение трёхмерных графиков . . . . . . . . . . . 109
4.3 Анимация . . . . . . . . . . . . . . . . . . . . . . . . 125
4.4 Графические объекты. . . . . . . . . . . . . . . . . . 127
Глава 5. Задачи линейной алгебры 141
5.1 Ввод и формирование векторов и матриц . . . . . . 141
5.2 Действия над векторами . . . . . . . . . . . . . . . . 144
m
4 Оглавление
5.3 Действиям над матрицами . . . . . . . . . . . . . . . 147
5.4 Функции для работы с матрицами и векторами . . . 152
5.5 Решение некоторых задач алгебры матриц . . . . . . 179
5.6 Решение систем линейных уравнений . . . . . . . . . 185
5.7 Собственные значения и собственные векторы . . . . 198
5.8 Норма и число обусловленности матрицы . . . . . . 201
5.9 Задачи линейной алгебры в символьных вычислениях 203
Глава 6. Векторная алгебра и аналитическая
геометрия 206
6.1 Векторная алгебра . . . . . . . . . . . . . . . . . . . 206
6.2 Аналитическая геометрия . . . . . . . . . . . . . . . 223
Глава 7. Нелинейные уравнения и системы 241
7.1 Решение алгебраических уравнений . . . . . . . . . . 241
7.2 Решение трансцендентных уравнений . . . . . . . . . 249
7.3 Решение систем нелинейных уравнений . . . . . . . . 252
7.4 Решение уравнений и систем в символьных
переменных . . . . . . . . . . . . . . . . . . . . . . . 259
Глава 8. Интегрирование и дифференцирование 262
8.1 Вычисление производной . . . . . . . . . . . . . . . . 262
8.2 Исследование функций . . . . . . . . . . . . . . . . . 266
8.3 Численное интегрирование . . . . . . . . . . . . . . . 269
Глава 9. Решение обыкновенных
дифференциальных уравнений 280
9.1 Общие сведения о дифференциальных уравнениях . 280
9.2 Численные методы решения дифференциальных
уравнений . . . . . . . . . . . . . . . . . . . . . . . . 282
9.3 Реализация численных методов . . . . . . . . . . . . 289
9.4 Решение систем дифференциальных уравнений . . . 297
9.5 Функции для решения дифференциальных уравнений 298
Глава 10. Решение оптимизационных задач 304
10.1 Поиск экстремума функции . . . . . . . . . . . . . . 304
10.2 Решение задач линейного программирования . . . . 311
Глава 11. Метод наименьших квадратов 326
11.1 Постановка задачи . . . . . . . . . . . . . . . . . . . 326
ВведениевOctaveдляинженеровиматематиков ©2012АлексеевЕ.Р.
m
Оглавление 5
11.2 Подбор параметров экспериментальной зависимости 327
11.3 Уравнение регрессии и коэффициент корреляции . . 332
11.4 Нелинейная корреляция . . . . . . . . . . . . . . . . 334
11.5 Подбор зависимостей методом наименьших квадратов 335
Глава 12. Интерполяция функций 346
12.1 Постановка задачи . . . . . . . . . . . . . . . . . . . 346
12.2 Интерполяция сплайнами . . . . . . . . . . . . . . . 354
Список литературы 362
Предметный указатель 363
m
Введение
Книга, которую держит в руках читатель, посвящена GNU
Octave—однойизсамыхинтересныхприкладныхпрограммдляре-
шения инженерных и математических задач.
GNU Octave—этосвободныйинтерпретирующийязыкдляпро-
ведения математических вычислений. По возможностям и качеству
реализацииинтерпретатораязыкOctaveможносравниватьспропри-
етарнойпрограммойMATLAB,причёмсинтаксисобоихязыковочень
схож.
Существуют версии языка для различных дистрибутивов GNU
Linux(ALTLinux,Debian,Ubuntu,Mandrivaидр.)идляОСWindows.
На наш взгляд, GNU Octave больше ориентирован на работу в
Linux. Работа в ОС Windows возможна, но пользователю Windows
надо быть готовым работать с простым текстовым редактором и ко-
мандной строкой.
Когда авторы начинали знакомиться с GNU Octave, основной
проблемойбылоотсутствиехорошегорусскоязычноговведениявэтот
язык. Наша книга является попыткой восполнить этот пробел. По-
этому большое внимание было уделено самому языку (глава 3), опе-
рациям с матрицами (глава 5) и графическим возможностям пакета
(глава 4).
Наш многолетний опыт преподавания информационных дисци-
плин в Донецком национальном техническом университете говорит
нам о том, что студенту и инженеру наряду с описанием функций,
предназначенных для решения той или иной задачи, не лишним бу-
дет напомнить и математическую постановку решаемой задачи, а за-
частую и численные методы решения задачи. Именно поэтому в ряде
глав приведены не только описания функций, но и описаны числен-
ные методы решения задач.
m
Введение 7
Чтокасаетсяграфическихоболочек,такихкакqtOctave,Xoctave
иKalculus,намиприняторешениекраткоописатьнаиболеестабиль-
нуюизних,qtOctave,аосновноевниманиевкнигеуделитьсобствен-
но языку. Мы считаем, что GNU Octave — это в первую очередь
мощныйинтерпретирующийязык.Знаяего,пользовательсможетра-
ботать с любой графической оболочкой.
Авторы выражают благодарность компании ALT Linux за много-
летнее сотрудничество и возможность издать очередную книгу.
Авторы заинтересованы в общении с читателями. Мы ждём
ваши замечания и отзывы по адресам [email protected] и
[email protected].
Донецк, апрель 2012
m
Глава 1
Общие сведения, установка
1.1 Принципы работы с интерпретатором
Octave — высокоуровневый интерпретируемый язык программи-
рования,предназначенныйдлярешениязадачвычислительноймате-
матики. В состав пакета входит интерактивный командный интер-
фейс (интерпретатор Octave). Интерпретатор Octave запускается
из терминала ОС Linux или из его порта в Windows. После запус-
ка Octave пользователь видит окно интерпретатора (см. рис. 1.1).
В окне интерпретатора пользователь может вводить как отдель-
ные команды языка Octave, так и группы команд, объединяемые в
программы. Если строка заканчивается символом «;», результаты на
экран не выводятся. Если же в конце строки символ «;» отсутствует,
Рис. 1.1. Окно интерпретатора Octave
m
1.1. Принципы работы с интерпретатором 9
Рис. 1.2. Использование символов «;» и «%» в Octave
результаты работы выводятся на экран (см. рис. 1.2). Текст в строке
после символа % (процент) является комментарием и интерпретато-
ромнеобрабатывается1 (см.рис.1.2).Рассмотримнескольконеслож-
ных примеров.
Пример 1.1. Решить систему линейных алгебраических уравне-
ний (СЛАУ)
3x +5x 7x =11
1 2 3
−
3x 4x +33x =25
1 2 3
−
22x1 11x3+17x3 =22
−
Возможны два варианта решения любой задачи в Octave:
1. Терминальный режим. В этом режиме в окно интерпретатора
последовательно вводятся отдельные команды.
2. Программныйрежим.Вэтомрежимесоздаётсятекстовыйфайл
с расширением .m, в котором хранятся последовательно выпол-
няемыекомандыOctave.Затемэтоттекстовыйфайл(програм-
манаязыкеOctave)запускаетсянавыполнениевсредеOctave.
Для решения СЛАУ в окне интерпретатора Octave последова-
тельно введём следующие команды (листинг 1.1):
% Определениематрицыкоэффициентовсистемылинейныхуравнений.
A=[3 5 −7;3 −4 33;22 −11 17];
b=[11; 25; 22]; % ВекторправыхчастейСЛАУ.
x=A^(−1)∗b % Решениесистемыметодомобратнойматрицы.
x =
1.56361
2.55742
1Строкикомментариевавторыкнигибудутиспользоватьдляпоясненияфунк-
цийитекстовпрограмм.
m
10 Глава 1. Общие сведения, установка
Рис. 1.3. Программа для решения примера 1.1
0.92542
octave−3.2.3:27> A∗x % Проверка.
ans =
11.000
25.000
22.000
Листинг 1.1. Решение СЛАУ примера 1.1
В переменной ans хранится результат последней операции, если
команданесодержитзнакаприсваивания.Следуетпомнить,чтозна-
чениепеременнойansизменяетсяпослекаждоговызовакомандыбез
операции присваивания.
Теперь рассмотрим, как решить эту же задачу в программном ре-
жиме. Вызовем любой текстовый редактор2, например gedit, в окне
которого последовательно введём следующие команды:
A=[3 5 −7;3 −4 33;22 −11 17]
b=[11; 25; 22]
x=A^(−1)∗b
A∗x
Сохранимвведённыекомандыввидефайласрасширением.m,на-
пример, /home/evgeniy/prim1_1.m (рис. 1.3). Теперь эту программу
необходимозапуститьнавыполнениеизинтерпретатора.Для этогов
окне интерпретатора введём команды:
cd ’/home/evgeniy’% Переходвкаталог,гдехранитсяпрограмма.
prim1_1 % Запускпрограммы.
2Именно текстовый редактор! Не путайте с текстовыми процессорами типа
MicrosoftWordилиOpenOffice.org/LibreOfficeWriter.
ВведениевOctaveдляинженеровиматематиков ©2012АлексеевЕ.Р.
m