![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
MATLAB в роли суперкалькулятораСтр 1 из 8Следующая ⇒
Л е к ц и я № 1, 2
Введение MATLAB – одна из старейших, тщательно проработанных и аппробированных временем систем автоматизации математических расчетов, построенная на расширенном представлении и применении матричных операций. Это нашло отражение и в названии системы (Matrix LABoratiry – матричная лаборатория). Однако синтаксис языка программирования системы продуман настолько тщательно, что эта ориентация совсем не ощущается пользователями, ко-торых непосредственно матричные вычисления не интересуют. Возможности MATLAB весьма обширны, а по скорости выполнения задач система не-редко превосходит своих конкурентов. Она применима для расчетов практически в любой об-ласти науки и техники, сфере образования и широко используется при математическом модели-ровании физических устройств и систем, относящихся к механике, в частности, к динамике, гидродинамике и аэродинамике, акустике и т.д. Этому способствует не только расширенный набор матричных и иных операций, но и наличие расширений. С одной стороны, MATLAB содержит огромное число операторов и функций, которые решают множество практических задач. К примеру, это функции обращения и транспонирова-ния матриц, вычисления значений производной и интеграла и т.д. Число таких функций с уче-том новых пакетов расширения системы уже достигает многих тысяч и непрерывно увеличивается. Но, с другой стороны, система MATLAB с момента своего создания использовалась как мощный математико-ориентированный язык программирования высокого уровня. Это рассмат-ривается как важное достоинство системы, свидетельствующее о возможности ее применения для решения новых, наиболее сложных математических задач. Система MATLAB имеет входной язык, напомиающий Бейсик (с примесью Фортрана и Паскаля). Запись программы традиционна и потому привычна большинству пользователей компьютеров. К тому же система дает возможность редактировать программы с помощью лю-бого, привычного для пользователя текстового редактора. Имеет она и собственный редактор с отладчиком. Отказ от присущего Matcad «шика» – задания задач в формулярном виде – компен-сируется заметным увеличением скорости вычислений: при прочих равных условиях она почти на порядок выше, чем у системы Matcad. Язык системы MATLAB в части программирования математических выражений намного богаче любого универсального языка программирования высокого уровня. Он реализует почти все известные средства программирования, в том числе объектно-ориентированное и визуаль-ное программирование. В MATLAB-е реализуются, причем с повышенной скоростью, построения графиков практически всех известных в науке и технике видов. Широко практикуется фн\ункциональная закраска сложных поверхностей. Возможен учет всевозможных световых эффектов вплоть до бликов на поверхности сложных фигур при освещении их размещенными источниками света и с учетом свойств материалов отражающих поверхностей. Особенно привлекательной выглядит возможность построения трехмерных графиков. В последних версиях MATLAB введена эффектная возможность быстрого вращения графиков мышью в любом направлении.
MATLAB в роли суперкалькулятора Система MATLAB создана таким образом, что любые вычисления можно выполнять в режиме прямых вычислений, то есть без подготовки программы. Это превращает систему в нео-бычайно мощный калькулятор, который способен производить не только обычные для кальку-ляторов вычислений, но и операции с векторами и матрицами, комплексными числами, рядами и полиномами. Можно почтимгновенно задать и вывести графики различных функций: от прос-той синусоиды до сложной трехмерной фигуры. Работа с системой в режиме прямых вычислений носит диалоговый характер и происхо-дит по правилу «задал вопрос, получил ответ». Пользователь набирает на клавиатуре вычисляе-мое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши Enter. Необходимо учитывать, что · для указания ввода исходных данных используется символ > >; · данные вводятся с помощью простейшего строчного редактора; · для блокировки вывода результата вычислений некторого выражения, после него надо установить знак; (точка с запятой); · если не указана переменная для значения результата вычислений, то MATLAB назна-чает такую переменную с именем ans; · знаком присваивания является обычный математический знак равенства =, а не комби-нированный знак: =, как во многих других математических системах; · встроенные функции (например, sin) записываются строчными буквами и их аргумен-ты указываются в круглых скобках; · результат выводится в строках вывод (без знака > > ); Например:
Специальные символы К классу операторов в системе MATLAB относятся: ·: (двоеточие) – один из наиболее часто используемых операторов в системе MATLAB. Применяется для формирования упорядоченных числовых последовательностей. Такие после-довательности нужны для создания векторов или значений абсциссы при построении графиков. В этом случае конструкция имеет вид
начальное значение: шаг: конечное значение и порождает возрастающую последовательность чисел, которая начинается с начального зна-чения, идет с заданным шагом и завершается конечным значением. Если шаг не задан, то он принимает значение единицы. Если конечное значение задано меньше, чем начальное, то выда-ется сообщение об ошибке.
Например,
· ( ) (круглые скобки) – используются для задания порядка выполнения операций в арифметических выражениях, указания последовательности агрументов функции и указания ин-дексов элемента вектора или матрицы; · [ ] (квадратные скобки) – используются для формирования векторов и матриц; · { } (фигурные скобки) – используются для формирования массивов ячеек; ·, (запятая) – используется для разделения индексов элементов матрицы и аргументов функции, а также для разделения операторов языка MATLAB; ·; (точка с запятой) – используется внутри круглых скобок для разделения строк матри-цы, а также в конце операторов для запрета вывода на экран результата вычисленийж · % (знак процента) – используется для указания логического конца строки. Текст, на-ходящийся после знака процента, воспринимается как комментарий и игнорируется; · = (знак равенства) – используется для присваивания значений в арифметических опе-рациях; · ‘ (одиночная кавычка) – текст в кавычках представляется как вектор символов. Кавыч-ка внутри текста задается двумя кавычками.
Например, > > а=’Второй ‘’ курс’ а= Второй ‘ курс
Кроме того, одиночная кавычка используется для транспонирования матриц и массивов; ·... (продолжение) – три или более точек в конце строки указывают на продолжение строки.
Л е к ц и я № 3, 4
Элементарные функции Элементарные функции являются наиболее извеcтным классом математических функ-ций. Рассмотрим некоторые из существующих в MATLAB арифметические, тригонометричес-кие и другие функции.
Форматы чисел По умолчанию MATLAB выдает числовые результаты в нормализованной форме с четырьмя цифрами после десятичной точки и одной до нее. Многих такая форма представления не всегда устраивает. Поэтому при работе с числовыми данными можно задавать различные форматы представления чисел. Для установки формата представления чисел используется команда format name, где name – имя формата. Для числовых данных name может быть сообщением: short – короткое представление в фиксированном формате (5 знаков); short е – короткое представление в экспоненциальном формате (5 знаков мантиссы и 3 знака порядка); long – длинное представление в фиксированном формате (15 знаков): long е – длинное представление в экспоненциальном формате (15 знаков мантиссы и 3 знака порядка): bank – представление для денежных единиц: rational – представление в виде дроби. Задание формата сказывается только на форме вывода чисел. Вычисления все равно проис-ходят в формате двойной точности, а ввод чисел возможен в любом удобном для пользователя виде. Для иллюстрации различных форматов рассмотрим вектор, содержащий два элемента-числа x=[4/3 1.2345е-6]. В различных форматах их представления будут иметь вид:
Открытие нового файла и вызов старог о Для редактирования и отладки m-файлов (файлы с программами MATLAB запоминиют-ся с расширением m) MATLAB имеет встренный современный редактор, интерфейс которого выполнен в лучших традициях Windows приложений. Открыть окно редактора m-файлов можно при помощи кнопки New File на панели инст-рументов программы, либо выбрав одноименную команду из системного меню File. По умолчанию файлу дается имя untitled (безымянный), которое впоследствии (при запи-си файла) можно изменить на другое, отражающее тему задачи. В редакторе можно редактиро-вать несколько m-файлов, и каждый из них будет находится в своем окне редактирования, хотя активным может быть только одно окно, расположенное поверх других. Для загрузки в редактор ранее созданых файлов служит команда и кнопка Open. Запустить файл на выполнение можно набрав его имя (без расширения) в командном окне, либо нажав кнопку Run на панели инструментов открытого файла. Л е к ц и я № 5, 6
Л е к ц и я № 7, 8
Вычисление произведений Несколько простых функций служат для перемножения элементов массивов: · prod(A) возвращает произведение элементов массива, если А – вектор, или вектор-стро-ку, содержащую произведения элементов каждого столбца, если А – матрица; · prod(A, dim) возращает произведение элементов массива А по столбцам или по стро-кам в зависимости от скаляра dim. Например,
> > A=[1 2 3 4; 2 4 5 7; 6 8 3 4] A = 1 2 3 4 2 4 5 7 6 8 3 4
> > B=prod(A) B = 12 64 45 112
· cumprod(A) возвращает произведение с накоплением. Если А – вектор, cumprod(A) возвращает вектор, содержащий произведение с накоплением элементов вектора А. Если А – матрица, cumprod(A) возвращает матрицу того же размера, что и А, содержа-щую произведения с накоплением для каждого столбца матрицы А; · cumprod(A, dim) возвращает произведение с накоплением элементов по строкам или столбцам матрицы в зависимости от скаляра dim. Например, cumprod(A, 1) дает при-рост первому индексу (номеру строки), таким образом выполняя умножение по столб-цам матрицы А. Например,
> > A=[1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9
> > B=cumprod(A) B = 1 2 3 4 10 18 28 80 162
> > B=cumprod(A, 1) B = 1 2 3 4 10 18 28 80 162
> > B=cumprod(A, 2) B = 1 2 6 4 20 120 7 56 504 Cуммирование элементов Определены следующие функции суммирования элементов массивов: · sum(A) возвращает сумму элементов массива, если А – вектор, или вектор-строку, со-держащую сумму элементов каждого столбца, если А – матрица; · sum(A, dim) возращает сумму элементов массива А по столбцам или по строкам в за-висимости от скаляра dim. Например, > > A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 > > B=sum(A) B = 34 34 34 34 · cumsum(A) выполняет суммирование с накоплением. Если А – вектор, cumsum(A) воз-вращает вектор, содержащий результаты суммирования с накоплением элементов век-тора А. Если А – матрица, cumsum(A) возвращает матрицу того же размера, что и А, содержащую суммирование с накоплением для каждого столбца матрицы А; · cumsum(A, dim) выполняет суммирование с накоплением элементов по размерности, определенной скаляром dim. Например, cumsum(A, 1) выполняет суммирование по столбцам, а cumsum(A, 2) – по строкам. Например, > > A=magic(5) A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 > > B=cumsum(A) B = 17 24 1 8 15 40 29 8 22 31 44 35 21 42 53 54 47 40 63 56 65 65 65 65 65
> > B=cumsum(A, 1) B = 17 24 1 8 15 40 29 8 22 31 44 35 21 42 53 54 47 40 63 56 65 65 65 65 65
> > B=cumsum(A, 2) B = 17 41 42 50 65 23 28 35 49 65 4 10 23 43 65 10 22 41 62 65 11 29 54 56 65 Поворот матриц Следующая функция обеспечивает поворот матрицы (по расположению элементов): · rot90(A) осуществляет поворот матрицы А на 900 против часовой стрелки; · rot90(A, k) осуществляет поворот матрицы А на величину 90*k градусов, где k – целое число. Например, > > M=[3 2 7; 3 3 2; 1 1 1] M = 3 2 7 3 3 2 1 1 1 > > rot90(M) ans = 7 2 1 2 3 1 3 3 1 > > rot90(M, 2) ans = 1 1 1 2 3 3 7 2 3
Л е к ц и я № 9, 10
Численное интегрирование Численное интегрирование традиционно является одной из важнейших сфер применения математического аппарата. Заключается оно в приближенном вычислении определенного ин-теграла вида одним из многочисленных численных методов. Приведенные ниже функции выполняют численное интегрирование методом трапеций: · trapz(Y) возвращает интеграл, используя интегрирование методом трапеций. Если Y – вектор, то trapz(Y) возвращает интеграл элементов вектора Y, если Y – матрица, то trapz(Y) возвращает вектор-строку, содержащую интегралы каждого столбца этой матрицы; · trapz(Х, Y) возвращает интеграл от функции Y по переменной Х, используя метод трапеций. · trapz(..., dim) возвращает интеграл по строкам или столбцам для входной матрицы, в зависимости от значения переменной dim. Например, > > X=0: pi/70: pi/2; > > Y=cos(X); > > Z=trapz(Y) Z=22.2780 Пиведенные ниже функции осуществляют интегрирование, используя квадратурную формулу и метод Ньютона-Котеса. Квадратура – численный метод нахождения площади под графиком функции f(x), то есть вычисление определенного интеграла вида
Функции quad и quad8 используют два различных алгоритма квадратуры для вычисления определенного интеграла. Функция quad выполняет интегрирование по методу низкого порядка, используя рекурсивное правило Симпсона, а функция quad8 выполняет интегрирование по методу более высокого порядка, используя квадратурные формулы Ньютона-Котеса.8-го порядка. · quad(‘fun’, a, b) возвращает численное значение определенного интеграла от заданной функции ‘fun’ на отрезке [a. b]; · quad(‘fun’, a, b, tol) возвращает численное значение оперделенного интегралас заданной относительной погрешностью tol. По умолчанию tol=1.е-3; · quad(‘fun’, a, b, tol, trace) возвращает численное значение определенного интеграла и при значении trace, не равном нулю, строит график, показывающий ход вычисления интеграла. Например, необходимо вычислить численное значение следующего интеграла
> > quad(‘x.^4’, -1, 3) ans = 48.8000
Л е к ц и я № 11, 12
Многомерные массивы Многомерные массивы характеризуются размерностью больше двух. Таким массивам можно дать наглядную интерпретацию. Так, матрицу (двумерный массив) можно записать на одном листе бумаги в виде строк и столбцов, состоящих из элементов матрицы. Тогда блокнот с такими листками можно считать трехмерным массивом, полку в шкафу с блокнотами – четырехмерным массивом, шкаф со множеством полок – пятимерным массивом и т.д.
Объединение массивов Для объединения многомерных массивов служит описанная ранее для матриц специаль-ная функция конкатенации cat: · cat(dim, A, B) возвращает результат объединения двух массивов А и В вдоль размер-ности dim; · cat(2, A, B) возвращает массив [А, В], объединенный по столбцам; · cat (1, A, B) возвращает массив [А, В], объединенный по строкам. Примеры: > > M1=[1 2; 3 4] M1 = 1 2 3 4
> > M2=[5 6; 7 8] M2 = 5 6 7 8
> > cat(1, M1, M2) ans = 1 2 3 4 5 6 7 8
> > cat(2, M1, M2) ans = 1 2 5 6 3 4 7 8
> > M=cat(3, M1, M2) M(:,:, 1) = 1 2 3 4
M(:,:, 2) = 5 6 7 8
Л е к ц и я № 13, 14
Л е к ц и я № 15, 16
Основы программирования Множество математических задач решается в системе MATLAB без использования тра-диционного программирования. Однако даже в самой большой и мощной математической сис-теме невозможно предусмотреть решения всех задач. которые могут интересовать пользовате-ля. Поэтому возникает необходимость программирования решения задач. Программирование в системе MATLAB является эффективным средством ее расширения и адаптации к решению специальных проблем. Оно реализуется с помощью языка программи-рования системы. С позиций программиста язы кпрограммирования системы является типичным проблем-но-ориентированным языком программирования высокого уровня. Точнее говоря, это даже язык сверхвысокого уровня, содержащий сложные операторы и функции, реализация которых на обычных языках (например, Бейсике, Паскале или СИ) потребовала бы много усилий и времени. MATLAB представляет собой яркий пример плодотворности структурного программиро-вания. Подавляющее большинство функций и команд языка представляет собой вполне закон-ченные модули, обмен данными между которыми происходит через их входные параметры, хо-тя возможен обмен информации и через глобальные переменные. Программные модули оформ-лены в виде текстовых m-файлов, которые хранятся на диске и подключаются к программам по мере необходимости. Важно отметить, что в отличие от многих языков программирования, при-менение тех или иных модулей не требует предварительного объявления, а для создания и от-ладки самостоятельных модулей MATLAB имеет все необходимые средства. Подавляющее большинство команд и функций сиситемы MATLAB поставляется в виде таких модулей. Поскольку язык программирования системы MATLAB ориентирован на структурное программирование, в нем нет номеров строк (присущих до недавнего времени Бейсику) и прог-раммных операторов перехода GO TO. Имеются лишь управляющие структуры следующих ти-пов: условных выражений IF…ELSE…ELSEIF…END, циклы FOR…END и WHILE…END. Их форма похожа на ту, которая используется в языке Паскаль (то есть область действия управляю-щих структур начинается их заголовком, но без слова begin, а заканчивается словом end). С по-зиций структурного программирования этих средств достаточно для решения любых задач.
Л е к ц и я № 17, 18
Диалоговый ввод Рассмотрим простой пример диалоговой программы
%Вычисление длины окружности r=0; while r> =0; r=input(‘Введите радиус окружности r=’); if r> =0 disp(‘Длина окружности l=’); disp(2*pi*r) end end
Эта программа служит для многократного вычисления длины окружности по вводимому пользователем значению радиуса r. Организация простейшего диалога реализована с помощью команды input: r=input(‘Введите радиус окружности r=’).
При выполнении этой команды вначале выводится запрос в виде строки, затем происхо-дит остановка работы программы и ожидается ввод значения радиуса r (в общем случае числа). Ввод, как обычно, подтверждается нажатием клавиши Enter, после чего введенное число прис-ваивается переменной r. Следующие строки
if r> =0 disp(‘Длина окружности l=’); disp(2*pi*r) end
с помощью команды disp при r> =0 выводят надписи «Длина окружности l=» и вычисленное значение длины окружности. Они представляют собой одну из наиболее простых управляющих структур типа if…end. В данном случае она нужна для остановки вычислений, если вводится отрицательное число. Приведенные строки включены в управляющую структуру while…end. Это необходимо для циклического повторения вычислений с вводом значений r. Пока r> =0, цикл повторяется. Но стоит задатьr< =0, вычисление длины окружности перестает выполняться, а цикл завершается. Если данная программа записана в виде m-файла, например, tbilisi.m, то работа с ней бу-дет выглядеть следующим образом:
> > tbilisi Введите радиус окружности r=1 Длина окружности l= 6.2832
Введите радиус окружности r=2 Длина окружности l= 12.5664
Введите радиус окружности r=-1 > >
Итак, даже на примере простой программы видна польза применения управляющих струк-тур типа if…end и while…end, а также функций диалогового ввода input(‘String’) и вывода disp. Функция input может использоваться и для ввода произвольных стрковых выражений. При этом она задается в следующем виде
input(‘Комментарий’, ‘s’)
При выполнении этой функции она останавливает вычисления и ожидает ввода строкового комментария. После ввода возвращается набранная строка. Это иллюстрирует следующий пример: > > s=input(‘Введите выражение’, ‘s’) Введите выражение 2*sin(1) s = 2*sin(1) > > eval(s) ans = 1.6829
Функция eval позволяет вычислить выражение, заданное (полученное от функции input) в символьном виде. Вообще говоря, возможность ввода любого символьного выражения в соче-тании с присущими языку программирования matlab управляющими структурами открывает путь к созданию диалоговых программ любой сложности. Условный оператор Условный оператор if в общем виде записывается следующим образом: if Условие Инструкции_! elseif Условие Инструкции_2 else Инструкции_3 еnd Эта конструкция допускает несколько частных вариантов. В простейшей конструкции типа if…end if Условие Инструкции end пока Условие возвращает логическое значение 1 (то есть «истина»), выполняются Инструкции, составляющие тело структуры if…end. При этом оператор end указывает на конец перечня инс-трукций. Инструкции в списке разделяются оператором, (запятая) или; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, «ложь»), то Инструкции также не выпол-няются. Еще одна конструкция if Условие Инструкции_1 else Инструкции_2 end выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае. Условия записываются в виде Выражение_1 Оператор отношения Выражение_2 причем в качестве Операторов отношения используют следующие операторы: =, <, >, < =, > = или ~=. Все эти операторы представляют собой пары символов без пробелов между ними. Циклы типа for…end Циклы типа for…end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид: for var=Выражение, Инструкция, ... Инструкция еnd Выражение чаще всего записывается в виде s: d: e, где s – начальное значение переменной var, d – приращение этой переменной и е – конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s: e (в этом случае d=1). Спи-сок выполняемых в цикле инструкций завершаеся оператором end. Следующие примеры поясняют применение цикла для получения квадратов значений переменной цикла: > > for i=1: 5 i^2, end; ans = ans = ans = ans = ans = > > for x=0:.25: 1 x^2, end; ans = ans = 0.0625 ans = 0.2500 ans = 0.5625 ans = Возможны вложенные циклы, например: for i=1: 3 for j=1: 3 A(i, j)=i+j; end end В результате выполнения этого цикла (файл tbilisi.m) формируется матрица А > > tbilisi > > A A = 2 3 4 3 4 5 4 5 6 MATLAB допускает использование в качестве переменной цикла массива А размером mxn. При этом цикл выполняется столько раз,, сколько столбцов в массиве А, и на каждом шаге переменная var представляет собой вектор, соответствующий текущему столбцу массива А: > > A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 > > for var=A; var, end var = var = var = Циклы типа while…end Цикл while выполняется до тех пор, пока выполняется Условие while Условие Инструкции еnd Пример применения цикла while ранее уже приводился. Досрочное завершение цикла ре-ализуется с помощью оператора break. Л е к ц и я № 19, 20
Одно из достоинств системы MATLAB – обилие средств графики, начиная от команд пос-троений простых графиков функций одной переменной в декартовой системе координат и закан-чивая комбинированными и презентационными графиками с элементами анимации. Особое вни-мание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов. Столбцовые диаграммы Столбцовые диаграммы широко используются в литературе, посвященной финансам и экономике, а также в математической литературе. Ниже представлены команды для построения таких диаграмм · bar(X, Y) строит столбцовый график элементов массива Y в позициях, определяемых век-ором Х с упорядоченными в порядке возрастания значений элементами. Если Х и Y – двумерные массивы одинакового размера, то столбцы строятся попарно друг на друге; · bar(Y) строит график значений одномерного массива; · bar(X, Y, WIDTH) или bar(Y, WIDTH) – команда аналогична ранее рассмотренным, но со спецификацией ширины столбцов (при WIDTH> 1 столбцы перекрываются). По умолча-нию задано WIDTH=0.8. Помимо команды bar(...) существует аналогичная ей по синтаксису команда barh(...), которая строит столбцовые диаграммы с горизонтальным расположением столбцов. Построение гистограммы Классическая гистограмма характеризует число попаданий значений элементов вектора Y в М интервалов с представлением этих этих чисел в виде столбцевой диаграммы. Для получе-ния данных для гистограммы служит функция hist, записываемая в следующем виде: · N=hist(Y) возвращает вектор чисел попаданий для 10 интервалов, выбираемых авто-матически. Если Y – матрица, то выдается массив данных о числе попаданий для ее столбцов; · N=hist(Y, М) – аналогична рассмотренной выше, но используется М интервалов (М – скаляр); · N=hist(Y, Х) возвращает числа попаданий элементов вектора Y в интервалы, центры которых заданы элементами вектора Х; · [N, X]=hist(...) возвращает числа попаданий в интервалы и данные о центрах интервалов. Команда hist с синтаксисом, аналогичным приведенному выше, строит график гистог-раммы. В следующем примере строится гистограмма для 1000 случайных чисел и выводится вектор с данными о числах их попаданий в интервалы, заданные вектором Х. > > x=-3: 0.2: 3; > > y=randn(1000, 1); > > hist(y, x) > > h=hist(y, x) h = Columns 1 through 20 0 0 3 7 8 9 11 23 33 43 57 55 70 62 83 87 93 68 70 65 Columns 21 through 31
Л е к ц и я № 21, 22
Лестничные графики
Для построения лестничных графиков в сис-теме MATLAB используются команды группы stairs: · stairs(Y) строит лестничный график по данным вектора Y; · stairs(Х, Y) строит лестничный график по дан-ным вектора Y с координатами х переходов от ступеньки к ступеньке, заданными значениями элементов вектора Х; · stairs(..., S) аналогична по действию вышеопи-санным командам, но строит график линиями, стиль которых задается символами S. Следующий пример иллюстрирует построение лестничного графика > > % Лестничный график функции x^2 > > x=0: 0.25: 10; > > stairs(x, x.^2)
Контурные графики Контурные графики служат для представления на плоскости функции двуз переменных вида z(x, y) с помощью линий равного уровня. Ониполучаются, если трехмерная плоскость пе-ресекается рядом плоскостей, расположенных параллельно друг другу. При этом контурный график представляет собой совокупность спроецированных на плоскость (х, у) линий пересече-ния поверхности z(x, y) плоскостями. Для построения контурных графиков используются команды contour: · · contour(X, Y, Z) строит контурный график по данным матрицы Z с указанием спецификаций для X и Y; · contour(Z, N) и contour(X, Y, Z, N) дает пост-роения, аналогичные ранее описанным коман-дам, с заданием N линий равного уровня (по умолчаниюN=10). Пример: > > % Построение контурного графика объекта peaks > > z=peaks(27); > > contour(z, 15)
Л е к ц и я № 23, 24
Л е к ц и я № 25, 26
Установка титульной надписи После того, как график уже построен, MATLAB позволяет выполнить его форматирова-ние или оформление в нужном виде. Соответствующие этому средства описаны ниже. Так, для установки над графиком титульной надписи используется следующая команда:
· title(‘string’) – установка на двухмерных и трехмерных графиках титульной надписи, за-данной строковой константой string. Установка осевых надписей Для установки надписей возле осей х, у и z используются следующие команды
· xlabel(‘string’) ylabel(‘string’) zlabel(‘string’)
Соответствующая надпись задается символьной константой или переменной ‘string’. Пример установки титульной надписи и надписей по осям графиков приводится ниже
> > [x, y]=meshgrid([-3: 0.1: 3]); > > z=sin(x)./(x.^2+y.^2+0.3); > > surfl(x, y, z) > > colormap(gray) > > shading interp > > colorbar > > title('График трехмерной поверхности') > > xlabel('Ось х') > > ylabel('Ось y') > > zlabel('Ось z')
Используемые надписи делают рисунок более наглядным. Вывод пояснений Пояснение в виде отрезков диний со справочными надписями, размещаемое внутри гра-фика или около него, называется легендой. Для создания легенды используются различные ва-рианты команды legend: · legend(string1, string2, string3, ...) добавляет к текущему графику легенду в виде строк, указанных в списке параметров; · legend off устраняет выведенную ранее легенду; · legend(..., pos) помещает легенду в точно определенное место, специфицированное параметром pos:
Ø pos=0 – лучшее место, выбираемое автоматически; Ø pos=1 – верхний правый угол; Ø pos=2 – верхний левый угол; Ø pos=3 – нижний левый угол; Ø pos=4 – нижний правый угол; Ø
На редактирование легенда выводится двойным щелчком. Пример, приведенный ни-же, строит график трех функций с легендой, размещенной в поле графика.
> > x=-2*pi: 0.1*pi: 2*pi; > > y1=sin(x); > > y2=sin(x).^2; > > y3=sin(x).^3; > > plot(x, y1, '-m', x, y2, '-. +r', x, y3, '--ok') > > legend('function1', 'function2', 'function3')
Л е к ц и я № 1, 2
Введение |
Последнее изменение этой страницы: 2017-03-17; Просмотров: 512; Нарушение авторского права страницы