ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО
ОБРАЗОВАНИЯ
«МОРДОВСКИЙ
ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ ИНСТИТУТ
ИМЕНИ
М. Е. ЕВСЕВЬЕВА»
Факультет
физико-математический
Кафедра
информатики и вычислительной техники
Реферат на тему:
«Построение
графических моделей в системе Octave»
Выполнила:
О.С. Батурина,
cтудентка III курса группы МДМ-115
Проверила:
кан. физ-мат. наук, доцент
Кормилицына
Т.В.
2017г
Введение
Octave — свободная система для
математических вычислений.
Система Octave был написан с учётом совместимости с MATLAB и
реализует многие его возможности:
·
матрицы в качестве основных типов данных;
·
встроенная поддержка комплексных чисел;
·
мощные встроенные математические функции и большие библиотеки
функций;
·
расширяемость, благодаря возможности создания пользовательских
функций.
Но
есть и отличия:
·
комментарии могут начинаться как с символа #, так и с
символа %;
·
поддерживаются C-подобные операторы ++, --, +=, *=, /=;
·
элементы могут быть адресованы без создания новой переменной,
например [1:10](3);
·
строки могут быть заданы как символом «"», так и символом
«'».
Обзор системы Octave
Octave- высокоуровневый интерпретируемый язык программирования, предназначенный для решения задач
вычислительной математики. Интерпретатор Octave
запускается из терминала ОС Linux или из его порта в Windows. После запуска Octave пользователь видит окно интерпретатора (рис. 1.1).
В окне интерпретатора пользователь может вводить как отдельные команды
языка Octave, так и группы команд, объединяемые в программы. Если
строка заканчивается символом ";", результаты на экран не выводятся.
Если же в конце строки символ ";" отсутствует,
Рис. 1.1.
Рис. 1.2.
результаты
работы выводятся на экран (рис. 1.2). Текст в строке после
символа (процент) является комментарием и интерпретатором не
обрабатывается (рис. 1.2).
Простейшие арифметические операции в Octave выполняются с
помощью следующих операторов:
+ сложение;
- вычитание;
* умножение;
/ деление слева направо;
\ деление справа налево;
^ возведение в степень.
Вычислить значение арифметического выражения можно вводом
его в командную строку и нажатием клавиши ENTER. Обратите
внимание, что при вводе вещественных чисел для отделения дробной части используется
точка. Если вычисляемое выражение слишком длинное, перед нажатием клавиши ENTER
следует набрать три или более точки. Это будет означать продолжение командной
строки.
В Octave предусмотрены
следующие форматы чисел:
·
Short — краткая запись, применяется по умолчанию;
·
Long — длинная запись;
·
Short E (Short e) — краткая запись в формате с плавающей точкой;
·
Long E (Long e) — длинная запись в формате с плавающей точкой;
·
Short G (Short g) — вторая форма краткой записи в формате с
плавающей точкой;
·
Long G (Long g) — вторая форма длинной записи в формате с
плавающей точкой;
·
Hex — запись в виде шестнадцатеричного числа;
·
native-Hex — запись в виде шестнадцатеричного числа, в таком виде,
в каком оно хранится в памяти компьютера;
·
Bit — запись в виде двоичного числа;
·
native-Bit — запись в виде двоичного числа, в таком виде, в каком
оно хранится в памяти компьютера;
·
Bank — запись до сотых долей;
·
Plus — записывается только знак числа;
·
Free — запись без форматирования, чаще всего этот формат применяют
для представления комплексного числа (подробно о комплексных числах см. п.
2.5.2);
·
Compact — запись в формате, не превышающем шесть позиций, включая
десятичную точку, если целая часть числа превышает четыре знака, число будет
записано в экспоненциальной форме.
Возможны
два варианта решения любой задачи в Octave:
1. Терминальный
режим. В этом режиме в окно интерпретатора последовательно вводятся отдельные
команды.
2. Программный
режим. В этом режиме создаётся текстовый файл с расширением .m, в котором хранятся
последовательно выполняемые команды Octave. Затем этот текстовый
файл (программа на языке Octave) запускается на выполнение в
среде Octave.
Пример. Решить
систему линейных алгебраических уравнений (СЛАУ)
Для
решения СЛАУ в окне интерпретатора Octave последовательно
введём следующие команды:
% Определение матрицы коэффициентов системы линейных уравнений.
A=[3 5
-7; 3 -4 33; 22 -11 17];
b=[11;
25; 22]; % Вектор правых частей СЛАУ.
x=A^(-1)*b
% Решение системы методом обратной матрицы.
x=
1.56361
2.55742
0.92542
octave
-3.2.3:27 > A*x % Проверка.
ans =
11.000
25.000
22.000
Листинг
1.Решение СЛАУ примера 1
В переменной хранится результат
последней операции,
если команда не
содержит знака присваивания. Следует помнить, что значение переменной изменяется после
каждого вызова команды без операции присваивания.
Теперь рассмотрим, как решить эту же задачу в программном
режиме. Вызовем любой текстовый
редактор. (Именно текстовый
редактор! Не путайте с текстовыми процессорами типа Microsoft Word или
OpenOffice.org/LibreOffice Writer.) Например 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 % Запуск программы.
Рис. 1.4. Окно терминала после запуска программы prim1_1
Окно интерпретатора примет вид, представленный на рис. 1.4. Просмотрев результаты работы
программы, нажмите для возвращения в режим ввода команд
терминала.
2. Построение
графических моделей
2.1. Построение двумерных графиков
Пример. Построить график функции на интервале
[-10; 10].
Для того, чтобы построить график функции необходимо сформировать два массива и одинаковой размерности, а затем обратиться к функции .
Решение этой задачи представлено ниже:
x = -10:0.1:10; % Формирование массива x.
y=sin(x)+sin (3*x)/3+ sin (5*x )/5; % Формирование массива y.
plot(x, y) % Построение графика функции.
Листинг 4.1. Построение
графика (пример 4.1).
В результате обращения к функции будет создано окно с именем Figure 1, в котором будет построен график
функции .
График формируется путём соединения соседних точек прямыми
линиями. Чем больше будет интервал между соседними точками (чем меньше будет
точек), тем больше будет заметно, что график представляет из себя ломанную.
Если повторно обратиться к функции , то
в этом же окне будет стёрт первый график и нарисован второй. Для построения
нескольких графиков в одной системе координат можно поступить одним из
следующих способов:
1. Обратиться
к функции plot следующим образом —
массивы абсцисс и ординат первого графика, — массивы абсцисс и ординат второго графика, — массивы абсцисс и ординат n-ого
графика.
2. Каждый
график изображать с помощью функции ,
но перед обращением к функциям вызвать
команду hold on1, которая блокирует режим очистки окна.
Рассмотрим построение нескольких графиков этими способами
на примере решения следующей задачи.
Графики функции:
При определении строки, отвечающей за вывод линии, следует
учитывать следующее:
·
не важен порядок символа цвета и символа маркера;
·
если присутствует символ "-", то линия всегда будет
сплошная, при этом, если присутствует символ маркера, то все изображаемые точки
ещё будут помечаться маркером, если символа маркера нет, то соседние точки
просто будут соединяться линиями;
·
если символ маркера "-" отсутствует, то линия может
быть, как сплошная, так и точечная; это зависит от наличия символа маркера,
если символа маркера нет, то будет сплошная линия, иначе — точечная.
Если необходима легенда для графика, то её следует включить
в строку форматов, заключённую в символы ";". Например, команда выведет
на экран график функции чёрного цвета на
интервале c легендой
Для того, чтобы чтобы вывести
график в новом окне, перед функцией plot, следует вызвать функцию .
Внимание! При работе с графиками в Octave необходимо
понимать следующее: щелчок по кнопке закрытия окна с графиками приводит не к
уничтожению (закрытию) окна, а к его скрытию. При повторном вызове команды
рисования графиков происходит восстановление окна, в котором и изображаются
графики. Корректное закрытие графического окна можно осуществить в Octave только
программно.
Графическое окно создаётся функцией ;
Здесь — переменная, в которой будет
храниться дескриптор (номер) окна. Для дальнейших операций с окном надо будет
использовать именно переменную, в которой хранится дескриптор.
Уничтожение (закрытие) окна осуществляется с помощью
функции , где —
имя дескриптора закрываемого окна.
В Octave есть функция ,
которая приостанавливает выполнение программы на секунд. Её
логично вставлять перед функцией закрытия окна.
Octave представляет дополнительные
возможности для оформления графиков:
·
команда наносит
сетку на график, убирает
сетку с графика;
·
функция выводит только часть
графика, определяемую прямоугольной областью ;
·
функция предназначена
для вывода заголовка графика;
·
функции служат
для подписей осей и соответственно;
·
функция выводит
текст левее точки с координатами ;
·
функция выводит
легенды для каждого из графиков, параметр определяет месторасположение легенды в графическом окне: 1 —
в правом верхнем углу графика (значение по умолчанию); 2 — в левом верхнем углу
графика; 3 — в левом нижнем углу графика; 4 — в правом нижнем углу графика.
2.2.Построение графиков в
полярной системе координат
Полярная
система координат состоит из заданной фиксированной точки ,
называемой полюсом, концентрических окружностей с центром в полюсе и лучей,
выходящих из точки , один из которых, ,
называют полярной осью. Положение любой точки в полярных
координатах можно задать положительным числом ρ = |OM | (полярный радиус) и
числом ϕ, равным величине угла ∠XOM
(полярный угол). Числа ρ и ϕ называют полярными координатами точки и обозначают (ρ, ϕ).
Для
формирования графика в полярной системе координат необходимо сформировать
массивы значений полярного угла и полярного радиуса и обратиться к
функции , где — массив полярных углов; ro — массив полярных радиусов; — строка, состоящая из трёх символов, которые определяют цвет
линии, тип маркера и тип линии
Пример 4.11. Построить графики архимедовой
спирали, гиперболической спирали и логарифмической спирали в полярных
координатах.
Уравнение архимедовой спирали в полярных координатах имеет
вид: , гиперболической
— .
Соотношение является
уравнением логарифмической спирали в полярных координатах. Частным случаем
логарифмической спирали () является
уравнение окружности ().
Ниже приведён текст программы, позволяющей построить в
одном графическом окне четыре оси координат, в каждом из которых построить свой
график — архимедову, гиперболическую и логарифмическую спирали, а также
окружность.
h=figure( )
clear all;
% Формируем массивы fi1, fi2, fi3, fi4, ro1, ro2, ro3, ro4.
fi1 =0:pi/20:6*pi; fi 2=pi/3:pi /200:6*pi; fi3 =0:pi/20:4*pi;
fi4 = -pi:pi/20:pi; ro1=4* f i 1; ro2 =0.5./fi2; ro3=4*exp(0.2*fi3);
for i = 1:41 ro4(i) =4; endfor
% Делим графическое окно на 4 части и объявляем первый график текущим.
subplot(2, 2, 1);
polar(fi1, ro1); % Строим график архимедовой спирали.
title(’Graph of Archimedean spiral’); % Подписываем график.
subplot(2, 2, 2); % Второй график объявляем текущим.
polar(fi2, ro2); % Строим график гиперболической спирали.
title(’Graph of the hyperbolic spiral’); % Подписываем график.
subplot(2, 2, 3); % Третий график объявляем текущим.
polar(fi3, ro3); % Строим график логарифмической спирали.
title(’Graph of the logarithmic spiral’); % Подписываем график.
subplot(2, 2, 4); % Четвёртый график объявляем текущим.
polar(fi4, ro4); % Строим график окружности.
title(’Graph the circle’); % Подписываем график.
2.3.Построение графиков, заданных
в параметрической форме
Задание функции с
помощью равенств и называют
параметрическим, а вспомогательную величину —
параметром. Построение графика функции, заданной параметрически, можно
осуществлять следующим образом:
1. Определить
массив .
2. Определить
массивы и .
3. Построить
график функции с
помощью функции .
В качестве примера рассмотрим построение график эпициклоиды
и астроиды.
Пример 4.12. Построить график эпициклоиды. Уравнение
эпициклоиды в параметрической форме имеет вид , . Ниже
представлен график.
Для формирования прямоугольной сетки в Octave есть
функция . Рассмотрим построение трёхмерного
графика на следующем примере.
Пример .
Для формирования сетки воспользуемся функцией .
>>>[x y]=meshgrid(-2:2,-3:3)
x =
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
y =
-3 -3 -3 -3 -3
-2 -2 -2 -2 -2
-1 -1 -1 -1 -1
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
После формирования сетки вычислим значение функции во всех
узловых точках
>>> z=3*x.*x-2*sin(y).^2
z =
11.96017 2.96017 -0.03983 2.96017 11.96017
10.34636 1.34636 -1.65364 1.34636 10.34636
10.58385 1.58385 -1.41615 1.58385 10.58385
12.00000 3.00000 0.00000 3.00000 12.00000
10.58385 1.58385 -1.41615 1.58385 10.58385
10.34636 1.34636 -1.65364 1.34636 10.34636
11.96017 2.96017 -0.03983 2.96017 11.96017
Листинг .
График функции:
Для построения каркасного графика следует обратиться к
функции ;
[x y]= meshgrid(- 2:0.1:2, -3:0.1:3);
z=3*x.*x-2*sin(y).^2
mesh(x, y, z);
Листинг 4.14. Построение
графика поверхности (пример 4.14).
Любой трёхмерный график можно вращать, используя мышку.
Для построения поверхностей, кроме функции построения каркасного графика, есть функция ,
которая строит каркасную поверхность, заливая её каждую клетку цветом, который
зависит от значения функции в узлах сетки.
Заключение
В
заключение можно подчеркнуть, что система Octave -это в
первую очередь мощный
интерпретирующий язык. Зная его, пользователь сможет работать с любой графической
оболочкой.
Список использованной литературы
1.Алексеев
Е. Р., О. В. Чеснокова «Введение в Octave для инженеров и математиков» М.: ALT
Linux, 2012. — 368 с.: ил. Учебник Octave
на русском.
2.Поселов
Д.А. Информатика. Энциклопедический словарь. – М.: Педагогика-Пресс, 2013г.
3.Шамрай З.Н. « Краткое руководство по
работе с пакетами GNU Octave и Gnuplot», 2013.
4.Официальный сайт издательства "Открытые
Системы". Интернет университет информационных технологий.
5.Электронный ресурс: http://www.intuit.ru/studies/courses/3677/919/lecture.
6.Картинки Google [Электронный ресурс]:
бесплатные картинки по разным темам. - Режим доступа:www.google.com/imghp?hl=ru
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.