Построение графиков – функция plot




 

В предыдущем пункте мы уже увидели преимущества матричной ориентированности MATLAB’а. В других языках для записи матричных операций требуется использовать подпрограммы. Здесь же эти операции записываются (и выполняются) очень просто – так же как они записываются для простых переменных.

Очень просто в MATLAB’е удается получить и графическое представление результатов.

Сейчас мы рассмотрим функцию plot – функцию построения двумерных графиков. В простейшем варианте эта функция использует два аргумента – два вектора с одинаковым количество элементов. В первый вектор следует занести абсциссы, а во второй – ординаты точек графика. Заданные точки соединяются ломаной линией. Пример.

 

>> x = [0 1 2 3 4 5];

>> y = [1 2 2.5 2.7 2.8 2.9];

>> plot(x,y)

 

В результате MATLAB покажет вам графическое окно (Figure - фигуру) с заказанным графиком.

Кстати, в этом примере есть еще одно небольшое новшество. Команды задания векторов x и y заканчиваются точкой с запятой (;). Точку с запятой ставьте тогда, когда вы хотите подавить эхо-печать – автоматический вывод результата в командное окно.

Однако вводить такие вектора вручную, когда вы хотите построить график с большим количеством точек, занятие не слишком веселое. В таких случаях очень полезна функция – linspace. Эта функция делит числовой отрезок на отрезки равной длины и в качестве результата возвращает вектор с координатами точек, осуществляющих это разбиение. Например,

 

>> x = linspace(1,2,5)

x =

1.0000 1.2500 1.5000 1.7500 2.0000

 

Этой командой мы попросили разбить отрезок с левой границей равной 1, и правой границей равной 2, пятью точками на равные отрезки (то есть на четыре отрезка).

Теперь давайте попробуем вычислить sin(x). С точки зрения школьной математики это абсурд. Аргументом синуса должно быть одно число, а мы пытаемся вычислить синус вектора, то есть нескольких чисел. MATLAB, однако, подобные вольности не смущают. Он просто создает новый вектор и заносит в качестве первого элемента синус x(1), в качестве второго – синус x(2) и так до конца вектора x.

>> y = sin(x)

y =

0.8415 0.9490 0.9975 0.9840 0.9093

 

Теперь посмотрим, как с помощью этих функций (linspace и plot) можно построить вполне приличный график, совсем не похожий на ломаную линию с последнего рисунка. Выполните следующие три команды:

 

>> x = linspace(0,2*pi,101);

>> y = sin(x);

>> plot(x,y)

 

Первая команда создает вектор x с 101 числом, которые делят отрезок на 100 равных участков. Обратите внимание, что в конце команды предусмотрительно поставлена точка с запятой. Благодаря этому отключается эхо-печать, чтобы в командное окно не выводились значения 101 элемента вектора x. Вторая строчка заносит в вектор y соответствующие значения функции sin(x).

В результате график синусоиды выглядит довольно презентабельно. Хотя на самом деле он, по-прежнему, представляет собой ломаную линию, но ее отрезки настолько коротки, что выглядят на экране гладкой кривой.

 

 

Упражнение.

  1. Постройте графики функций , . Здесь у вас могут возникнуть некоторые проблемы с точками разрыва, областями определения. Поэкспериментируйте. Графики должны выглядеть, если не красиво, то сносно. Цель упражнения – приобрести навыки и некоторую свободу в обращении с функцией plot.

Замечание. Для второго графика потребуется вычислить квадраты элементов вектора . Подробнее о таких операциях будет говориться на следующих занятиях. Здесь только укажем, что для вычисления выражение следует записать так:

y = sqrt(1-x.^2);

То есть перед знаком возведения в степень надо поставить точку, смысл которой будет объяснен позднее.

 

 

М-файл – сценарий

 

До сих пор мы работали в режиме командной строки. В ответ на приглашение MATLAB’а вводили команду, получали ответ, вводили новую команду и т.д. В такой простоте есть свои достоинства.

Однако такой режим начинает тяготить, если вам требуется выполнить несколько однотипных расчетов, отличающихся только исходными данными. Вы, конечно, знаете, что для выполнения таких повторяющихся расчетов используются программы – файлы с последовательностями команд, хранящиеся где-либо на жестком диске.

Разумеется, и MATLAB оснащен средствами программирования. Здесь рассмотрим простейший вариант программы MATLAB’а –файл-сценарий (script-файл).

Предположим, вам требуется многократно решить следующую задачу:

Для прямоугольного треугольника заданы длины катетов и . Требуется определить длину гипотенузы и тригонометрические функции угла : .

Имея уже некоторый опыт работы в MATLAB’е, вам нетрудно догадаться, что для решения этой задачи достаточно выполнить следующие четыре команды:

с = sqrt(a^2+b^2)

sn = b/c

cs = a/c

tg = sn/cs

Чтобы не набирать заново эти строчки каждый раз для нового варианта данных, создадим файл, содержащий эти команды. Лучше всего использовать для этого встроенный редактор MATLAB’а. Вызвать этот редактор можно любым из следующих способов:

1) набрать в командной строке команду edit;

2) выполнить из меню команду File – New – M-file;

3) нажать на кнопку создания нового файла .

В любом случае на экране появится окно редактора. Давайте занесем в него текст команд, как на рисунке. Обратите внимание, что первая строчка, выделенная зеленым цветом, не содержит никакой команды, а только поясняющий текст – комментарии. MATLAB распознает комментарий по символу процента (%). Весь последующий текст MATLAB при выполнении файла игнорирует.

Тем не менее, комментарии в программировании играют очень важную роль. Вот только предназначены они в отличие команд не для компьютера, а для вас. Они позволят вам даже спустя несколько месяцев легко вспомнить, для чего предназначена программа, как она работает. Подробнее о роли комментариев нам еще предстоит поговорить в главе «Техника программирования», а пока что советую приобрести привычку сопровождать комментариями даже очень короткие файлы с программами.

Набрав текст программы (script-файла), следует его сохранить на диске. Как обычно это делается с помощью команды File-Save. Можно, конечно, и просто нажать кнопку на линейке инструментов.

Назовем наш первый script-файл triangle.m. Расширение .m MATLAB по умолчанию использует для файлов с текстами программ, а само имя (triangle) вы выбираете сами. Конечно, лучше выбирать имя, напоминающее о назначении файла.

Достаточно важный вопрос о том, где именно следует сохранить файл, рассмотрим в следующем пункте. А пока что воспользуемся вариантом, предлагаемым MATLAB’ом по умолчанию – сохраним файл в папке work (рабочая).

 

 
 

После этого мы можем попросить MATLAB выполнить этот script-файл. Для этого сначала надо задать значения переменных a и b, которые используется в командах файла и, затем, в ответ на очередное приглашение набрать имя файла.

 

>> a=4;

>> b=3;

>> triangle

c =

sn =

0.6000

cs =

0.8000

tg =

0.7500

 

На этом примере вы убедились, что, встретив в командной строке имя script-файла, MATLAB просто последовательно выполняет команды, содержащиеся в этом файле, точно так же, как если бы они набирались с клавиатуры.

Script-файл – это самая простая возможность создавать программы в MATLAB’е. Позже мы познакомимся с гораздо более гибким и мощным средством – файлами-функциями.

Замечание. М-файлы можно создавать и с помощью любого другого текстового редактора (например, Блокнота), но редактор MATLAB’а предназначен именно для написания и отладки М-файлов, и поэтому имеет ряд преимуществ перед редакторами общего назначения. Например, выделение разными цветами зарезервированных слов, комментариев, символьных строк; средства для непосредственного запуска и отладки М-файлов т.п.

Упражнение.

1. Создайте script-файл для решения квадратного уравнения . Попробуйте решить с его использованием уравнения , , .

 

Установка путей

 

В предыдущем пункте мы сохранили свои файлы в каталоге works, который специально создается для этой цели при инсталляции MATLAB’а. На первых порах можно так и поступать. Однако по прошествии совсем небольшого времени вы обнаружите, что этот каталог окажется переполненным множеством М-файлов самого различного назначения. Поэтому желательно все-таки свои М-файлы хранить в своих собственных каталогах. Причем для каждой новой задачи лучше всего создавать собственный подкаталог. Например, создав в папке D:\Student свою папку D:\Student\Ivanov, вы можете затем создать в ней отдельные подкаталоги для курсовой работы по теории оболочек D:\Student\Ivanov\Shells, для курсовой работы по аэродинамике D:\Student\Ivanov\Aerodyn, для подсчета своих доходов и расходов D:\Student\Ivanov\Financial и т.д. Для создания этих каталогов вы можете использовать Проводник, Norton Commander, Windows Commander или любую другую программу для обслуживания файлов, с которой вы знакомы. С этим у вас не должно возникнуть трудностей.

Однако необходимо разобраться в следующем вопросе: откуда MATLAB узнает, встретив в командной строке, например, слово triangle, что он должен искать М-файл под названием triangle.m именно в вашем каталоге D:\Student\Ivanov? Оказывается без подсказки MATLAB об этом не догадается. И если вы попытаетесь все-таки запустить свой М-файл, находящийся в этой папке, то

 

>> triangle

??? Undefined function or variable 'triangle'.

 

MATLAB сообщит, что не нашел ни функции, ни переменной с таким именем.

Для того, чтобы дать указание MATLAB’у заглянуть в вашу личную папку выполните команду File – Set Path. На экране появится диалоговый бокс Set Path (установить путь).

В окошке MATLAB search path (путь поиска MATLAB’а) приведен длинный список папок, в которые MATLAB заглядывает при поиске М-файлов. Тот список, который вы видите на рисунке, создается при инсталляции MATLAB’а и содержит папки с различными встроенными функциями. С некоторыми из этих функций (sin, plot, linspace,…) вы уже знакомы.

К этому списку путей поиска вы имеете право добавить свою папку.

 

 
 

Для этого надо нажать кнопку Add Folder… (добавить папку), в стандартном боксе «Обзор папок » найти свою папку и нажать кнопку ОК.

После этого в списке MATLAB search path вы уведите на первом месте свою папку. Остается нажать кнопки Save (сохранить список) и Close (закрыть окно). Теперь вы имеете право указать в командной строке имя любого файла, находящегося в вашей папке.

 

Упражнение. Создайте личную папку (если у вас ее еще нет). Перенесите в нее два своих файла (triangle.m и файл с решением квадратного уравнения), которые до этого находились в папке MATLAB\work. С помощью команды File – Set Path добавьте свою папку в список папок, просматриваемых MATLAB’ом. Убедитесь, что ваши файлы успешно выполняются из командной строки.

 

Простейший диалог

 

Учебная программа triangle имеет серьезный недостаток. Во-первых, вы должны не забыть присвоить переменным a и b значения длин катетов, во-вторых, в результате выполнения программы вы увидите следующее.

 

>> triangle

c =

sn =

0.6000

cs =

0.8000

tg =

0.7500

 

Конечно, сейчас вы хорошо помните, что для гипотенузы вы приняли обозначение c, для синуса sn и т.д. Однако, если вам эта программа понадобится через месяц-другой, то вспомнить, что значат эти обозначения будет нелегко.

Для того, чтобы устранить эти недостатки можно использовать функции MATLAB’а disp и input.

Функция disp предназначена для вывода в командное окно сообщения. Так команда

 

>> disp(‘Привет!’)

 

выведет в командное окно слово «Привет!».

Функция input обладает несколько большими возможностями. Она позволяет вывести в командное окно сообщение и присвоить переменной значение. Например, команда

 

>> x = input(‘Value of X = ‘)

 

выведет в командное окно текст «Value of X =», дождется, пока вы введете с клавиатуры число, и присвоит набранное число переменной x.

С помощью двух этих простых команд вы можете сделать программу triangle «говорящей». Она сама будет сообщать, для чего она предназначена, какие исходные данные ей нужны и что значат полученные результаты. Вот пример того, как можно усовершенствовать эту программу.

 

% Расчет треугольника (11 марта 2004)

disp('Определение гипотенузы прямоугольного треугольника')

disp(' и тригонометрических функций одного из его углов')

a = input('Длина первого катета = ');

b = input('Длина второго катета = ');

c = sqrt(a^2+b^2);

sn = b/c;

cs = a/c;

tg = sn/cs;

disp(strcat('Гипотенуза = ',num2str(c)))

disp(strcat('синус = ',num2str(sn)))

disp(strcat('косинус = ',num2str(cs)))

disp(strcat('тангенс = ',num2str(tg)))

 

В этом примере, кстати, использованы еще две новые функции:

strcat – сливает две строки символов в одну;

num2str – преобразует число в строку символов.

 

Упражнение. Разобрав предыдущий пример, сделайте диалоговой вашу программу решения квадратного уравнения.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: