Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Система компьютерной математики Octave. Лабораторный практикум
.pdf
Г.Н. ГУТМАН
СИСТЕМА КОМПЬЮТЕРНОЙ МАТЕМАТИКИ
OCTAVE
Лабораторный практикум
Самара
Самарский государственный технический университет
2018

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
К а ф едра «Прикладная математика и информатика»
Г.Н. ГУТМАН
СИСТЕМА КОМПЬЮТЕРНОЙ МАТЕМАТИКИ
OCTAVE
Лабораторный практикум
Самара
Самарский государственный технический университет
2018

Печатается по решению редакционно-издательского совета СамГТУ
УДК 519.7:004:42:519.6(076.5)
ББК 22.18:32.97:22.19я73
Г 971
Гутман Г.Н.
Г 971 Система компьютерной математики Octave: лабораторный практи-
кум / Г.Н. Гутман. – Самара: Самар. гос. техн. ун-т, 2018. – 148 с.
Предназначен для проведения лабораторных работ по магистерским курсам
«Современные компьютерные технологии», «Программирование инженерных
задач». Лабораторный практикум состоит из десяти лабораторных работ, последняя из которых носит исследовательский характер. Тематика работ охватывает широкий спектр методов вычислительной математики, включая нахождение корней уравнений, решение систем линейных алгебраических уравнений,
аппроксимацию и интерполяцию функций, численное дифференцирование и
интегрирование, решение обыкновенных дифференциальных уравнений и
уравнений в частных производных. Большое внимание уделяется графическому
представлению полученных результатов.
Р е ц ензент: канд. техн. наук, доцент О.С. Афанасьева
УДК 519.7:004:42:519.6(076.5)
ББК 22.18:32.97:22.19я73
Г 971
© Г.Н. Гутман, 2018
© Самарский государственный
технический университет, 2018

ВВЕДЕНИЕ
Система компьютерной математики Octave – это свободный пакет математических вычислений. По возможностям и качеству реализации интерпретатора
встроенного языка пакет Octave можно сравнивать с проприетарной программой MATLAB, причем синтаксис обоих языков очень схож.
Хотя книга на русском языке, посвященная данному пакету, всего одна [1],
а в сети Интернет можно найти лишь официальную документацию на английском языке [2, 3] и ряд сайтов, существует вполне обоснованное мнение, что
среди свободных программных продуктов именно Octave является бесплатной
альтернативой пакету MATLAB.
В данном лабораторном практикуме используется GNU Octave версии 4.2.0,
однако все задания могут быть выполнены и на других версиях пакета. Следует
отметить существенную особенность пакета: он не допускает символы кириллицы ни в командах, ни в именах функций, ни в путях и именах файлов. Единственное место, где возможно использование символов кириллицы, – комментарии в программном коде.
При выполнении лабораторной работы студент должен изучить теоретический материал, проиллюстрированный примерами, выполнить свой вариант задания (звездочкой отмечены более трудные задачи) и оформить отчет по лабораторной работе. Отчет содержит:
– постановку задачи;
– последовательность команд Octave (решение задачи);
– результаты.
Лабораторная работа № 1
РЕЖИМ НЕПОСРЕДСТВЕННЫХ ВЫЧИСЛЕНИЙ.
РАБОТА С ВЕКТОРАМИ И МАТРИЦАМИ
Цель работы: знакомство с интерфейсом пакета GNU Octave, освоение режима непосредственных вычислений.
Окно приложения содержит меню, панель инструментов и несколько рабочих окон.
Диспетчер файлов – показывает список файлов в рабочей директории
и обеспечивает удобный доступ к файлам пользователя. Так, например, при
двойном щелчке по файлу с расширением .m он открывается в окне редактора.
Журнал выполненных команд – содержит историю команд и вызовов функций пользователя. Двойным щелчком можно запустить выбранную команду
(функцию) на выполнение.
Область переменных – показывает переменные, определенные пользователем в текущем сеансе, их тип и значение.
Командное окно – окно, в котором можно выполнять отдельные команды в
режиме непосредственных вычислений. Кроме того, в это окно выводятся все
результаты, имеющие текстовый и числовой характер.
3

Редактор – окно, в котором пользователь имеет возможность набирать
и редактировать текст программы (скрипта).
Документация – окно, в котором пользователь может получить справку по
своему запросу. Окно содержит кнопки увеличения и уменьшения шрифта, что
создает дополнительные удобства для пользователя. Однако вся документация
системы компьютерной математики Octave приведена только на английском
языке.
При запуске окна Редактор и Документация скрыты командным окном
и видны только их ярлыки.
Режим непосредственных вычислений. При запуске приложения
в командном окне после вывода информации о версии пакета, заявления об отказе от ответственности и другой служебной информации появляется приглашение к вводу – знаки ">>". Теперь можно набрать любое математическое выражение или команду Octave и нажать клавишу Enter – выражение будет вычислено и результат появится в командном окне.
Примеры:
>> 36*2.31+17 <Enter>
ans = 100.16
>> 36/2.31-17 <Enter>
ans = -1.4156
В дальнейшем мы не будем явно указывать нажатие на клавишу Enter.
По умолчанию результат выводится с пятью значащими цифрами, однако
пользователь может с помощью команды
format long
получить в выводе 15
значащих цифр:
>> format long
>> 36/2.31-17
ans = -1.41558441558442
Чтобы вернуться к краткому формату вывода результатов, достаточно
набрать команду
format short
.
В режиме непосредственных вычислений можно определить переменную и
вывести значение выражения, включающего эту переменную. При этом переменная может содержать как единственное значение, так и набор значений
(массив). После создания переменной ее можно использовать в выражениях.
Варианты синтаксиса создания переменной:
имя = значение или выражение
имя = [список значений или выражений]
имя = первое_значение : шаг : последнее_значение
Если в последнем варианте параметр "шаг" отсутствует, то он принимается
равным единице.
4

Примеры:
>> a=pi/6
a = 0.52360
>> k=1:4
k =
1 2 3 4
>> x=.2*k
x =
0.20000 0.40000 0.60000 0.80000
>> sin(x)
ans =
0.19867 0.38942 0.56464 0.71736
При задании векторов и матриц значения элементов строк перечисляются
через пробел или запятую, переход на следующую строку – нажатие клавиши
Enter или символ "точка с запятой" (;):
>> A = [3.7, 12.1; -7, 18]
A =
3.7000 12.1000
-7.0000 18.0000
Обратите внимание, что Octave автоматически выводит значение вводимых
и вычисленных выражений. Чтобы убрать вывод, необходимо в конце выражения поставить символ "точка с запятой" (;).
Работа с векторами и матрицами. Обращение к элементам матрицы:
имя(индекс1 или диапазон1, индекс2 или диапазон2, …)
Индекс представляет собой число или выражение, диапазон задается
с помощью оператора "двоеточие". Значения индексов должны быть корректными, иначе генерируется сообщение об ошибке. Отметим, что нумерация элементов матриц начинается с единицы.
Диапазон индексов, заданный единственным двоеточием, эквивалентен
диапазону
1:end
. Вместо
end
можно указать соответствующий размер матри-
цы, который можно получить, используя функцию
[R, C] = size(A),
где
A – произвольная матрица;
R – число строк (от английского слова row);
C – число столбцов (от английского слова column).
5
size
:

Пример 1. Создадим матрицу 3×3 из случайных целых чисел и выделим ее
второй столбец.
>> B=round(100*rand(3,3))
B =
96 98 7
11 62 41
83 30 46
>> B(:,2)
ans =
98
62
30
В пакете Octave реализовано большое количество встроенных математических функций. Полный список функций можно найти в документации, встроенной в пакет. Пользователь может либо самостоятельно перейти в окно Доку-
ментация, либо в командном окне набрать команду
doc('имя_функции')
чтобы получить доступ к соответствующему разделу.
Для справки приведем синтаксис некоторых "популярных" функций:
abs(X)
– вычисляет абсолютную величину для каждого x из X;
,
exp(X)
log(X)
log10(X)
sqrt(X)
power(X,Y)
– вычисляет экспоненту для каждого x из X;
– вычисляет натуральный логарифм для каждого x из X;
– вычисляет десятичный логарифм для каждого x из X;
– вычисляет корень квадратный из каждого x из X;
– вычисляет значение x^y, где x и y – элементы матриц X и Y,
стоящие на одних и тех же местах;
sin(X)
cos(X)
sum(X)
– вычисляет синус для каждого x из X;
– вычисляет косинус для каждого x из X;
– сумма элементов одномерного массива, если X – матрица, то
суммируются элементы каждого столбца. Можно при вызове функции указать
дополнительный параметр – номер размерности, по которой следует вести суммирование;
sum(X,1)
sum(X,2)
prod(X)
– суммирование элементов каждого столбца матрицы;
– суммирование элементов каждой строки матрицы;
– произведение элементов одномерного массива, если X – матри-
ца, то вычисляются произведения элементов для каждого столбца;
prod(X,1)
prod(X,2)
max(X)
– произведение элементов каждого столбца матрицы;
– произведение элементов каждой строки матрицы;
– возвращает максимальное значение одномерного массива,
в случае матрицы – массив максимальных значений для каждого столбца.
В случае матрицы можно использовать дополнительные параметры:
max(X, [], 1)
max(X, [], 2)
– массив максимальных значений для каждого столбца;
– массив максимальных значений для каждой строки;
6

min(X)
– возвращает минимальное значение одномерного массива, в случае
матрицы – массив минимальных значений для каждого столбца.
В случае матрицы можно использовать дополнительные параметры:
min(X, [], 1)
min(X, [], 2)
Не следует путать
– массив минимальных значений для каждого столбца;
– массив минимальных значений для каждой строки.
max(X, [], 1)
и
max(X, 1)
. В последнем случае каждый элемент матрицы X сравнивается с единицей и возвращается матрица максимумов из X(i,j) и 1. Аналогичное замечание справедливо и для функции минимума.
Функции
max(X)
и
min(X)
кроме значения максимального (минимального)
элемента могут вернуть и позицию этого элемента в массиве. Если таких значений несколько, то возвращается индекс первого появления значения в массиве.
Операции с матрицами:
– поэлементное сложение матриц одинакового размера (операция "+");
– поэлементное умножение матриц одинакового размера (операция ".*");
– умножение матриц (матричное умножение, операция "*");
– транспонирование матрицы (знак операции – апостроф);
– обращение матрицы (функция
inv(A)
, где A – квадратная матрица).
Специальные матрицы:
zeros(n,m)
– матрица из n строк и m столбцов, все элементы которой рав-
ны нулю;
ones(n,m)
– матрица из n строк и m столбцов, все элементы которой равны
единице;
eye(n,m)
– диагональная единичная матрица из n строк и m столбцов (если
второй параметр отсутствует, то создается квадратная матрица);
rand(n,m)
– матрица из n строк и m столбцов, все элементы которой есть
случайные числа, равномерно распределенные на интервале (0;1).
Программирование в пакете Octave. Кроме режима непосредственных
вычислений в пакете Octave можно создавать так называемые m-файлы – программы, содержащие последовательность команд и алгоритмических операторов. Для этого нужно перейти на вкладку Редактор и набрать текст программы.
Прежде чем запускать программу на выполнение, ее следует сохранить на
жестком диске (напомним, что путь к файлу-программе не должен содержать
символов кириллицы). Результат выполнения будет выведен в командное окно.
Язык программирования Octave содержит все основные алгоритмические
операторы языка высокого уровня: операторы присваивания, ветвления, выбора, цикла. Части программы можно также оформить в виде отдельных функций.
Подробно синтаксис операторов языка приведен в прил. 1.
7

x
x
sin
−
−
e
x
+
−
3
8
x
x
−
Варианты заданий к лабораторной работе № 1
Вариант 1
x
e
1
А) Вычислить значения функции
xf
−
)(
=
для x = -2.3, -1.0, 0.7, 2.2
и найти сумму полученных значений.
21147
Б) Создать матрицу
⋅=
12.0A
−
. Вычислить матрицу B, рав-
13180
ную произведению исходной матрицы на результат ее транспонирования. Получить матрицу C, обратную к B. Возвести в квадрат каждый элемент матрицы C.
В*) Создать квадратную матрицу D размером N×N (значение N вводится
с клавиатуры), в которой элемент D(i,j) равен произведению номера строки на
корень квадратный из номера столбца.
Вариант 2
x
А) Вычислить значения функции
xf
=
)(
sin21
для
x
−
+
x = -0.8, 0.0, 0.9, 1.2
и найти сумму полученных значений
Б) Создать матрицу
37.0A
.
1693
⋅=
−
.
Вычислить матрицу
0428
B,
рав
ную произведению исходной матрицы на результат ее транспонирования. По
лучить матрицу
элементу матрицы
В
*)
Создать квадратную матрицу
с клавиатуры
строки на номер столбца
C,
обратную к
C.
), в
которой элемент
.
B.
Применить функцию косинуса к каждому
D
D(i,j)
размером
равен произведению квадрата номера
N×N (
значение
N
вводится
Вариант
А) Вычислить значения функции
и найти сумму полученных значений
Б) Создать матрицу
3
cos2
xf
2
−
)(
=
xx
для
x = 1.8, 2.9, 4.2, 5.7
−+
.
12742
⋅=
3.0A
−
.
Вычислить матрицу
8013
B,
рав
-
-
-
ную произведению исходной матрицы на результат ее транспонирования. По
лучить матрицу
менту матрицы
В
*)
Создать квадратную матрицу
с клавиатуры
квадрат номера столбца
C,
обратную к
C.
), в
которой элемент
.
B.
Применить функцию синуса к каждому эле
D
D(i,j)
размером
равен произведению номера строки на
8
N×N (
значение
N
вводится
-
-

x
−
−
−
−
x
x
sin
−
−
Вариант 4
x2
А) Вычислить значения функции
xf
2
)(+−=
ex
для x = -3.2, -2.9, 0.3,
1.8 и найти сумму полученных значений.
7140
Б) Создать матрицу
⋅=
21.0A
−
. Вычислить матрицу B, рав-
8352
ную произведению исходной матрицы на результат ее транспонирования. Получить матрицу C, обратную к B. Применить функцию квадратного корня
к каждому элементу матрицы C, взятому по абсолютной величине.
В*) Создать квадратную матрицу D размером N×N (значение N вводится
с клавиатуры), в которой элемент D(i,j) равен произведению синуса номера
строки на номер столбца.
Вариант 5
5
А) Вычислить значения функции
)(
xf
x
=
x
для x = 1.2, 2.9, 4.3, 5.8
2
)1(cos
−
и найти сумму полученных значений.
8233
Б) Создать матрицу
⋅=
17.0A
−
. Вычислить матрицу B, рав-
1054
ную произведению исходной матрицы на результат ее транспонирования. Получить матрицу C, обратную к B. Извлечь кубический корень из каждого элемента матрицы C.
В*) Создать квадратную матрицу D размером N×N (значение N вводится
с клавиатуры), в которой элемент D(i,j) равен половине произведения номера
строки на номер столбца.
Вариант 6
x
А) Вычислить значения функции
и найти сумму полученных значений
⋅=
Б) Создать матрицу
08.0A
xf
)(
=
.
−
ln1
для
2
1072
12356
x = 0.9, 1.2, 3.5, 4.8
.
Вычислить матрицу
B,
равную произведению исходной матрицы на результат ее транспонирования
Получить матрицу
ки матрицы
В
*)
с клавиатуры
C.
Создать квадратную матрицу
), в
строки на номер столбца
C,
обратную к
которой элемент
.
B.
Вычислить суммы элементов каждой стро
D
D(i,j)
9
размером
равен косинусу произведения номера
N×N (
значение
N
вводится
.
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
