scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов
Скачать 5.73 Mb.
|
Mark_style ( Cтиль_маркера ) и Mark_mode (Режим маркера) (рис.1.4.1-7). Определитель Тип маркера + Знак "плюс" o Кружок * Звёздочка . Точка x Крестик 'square' ('s') Квадрат 'diamond'('d') Ромб ^ Треугольник, указывающий вверх v Треугольник, указывающий вниз > Треугольник, указывающий вправо < Треугольник, указывающий влево 112 'pentagram' ('p') Пятиконечная звезда (пентаграмма) Нет маркера (по умолчанию) Рис. 1.4.1-7. Символы, указывающие тип маркера Рассмотрим пример на (рис.1.4.1-8). --> // Построить штрихпунктирную линию --> // с треугольниками, указывающими --> // вправо, центрованными на каждой --> // точке --> clf(); --> x = 1:0.1:10; // Инициализация --> plot(x, sin(x), 'r-.>') Рис. 1.4.1-8. Пример построения различных линий и маркеров Символы, указывающие на цвет и тип точки, заключаются в апострофы и указываются в функции plot после имени функции. В общем случае, число аргументов функции plot не ограничивается двумя, поскольку функция в общем виде имеет следующий формат: plot(x1,y1,'c1', x2,y2,'c2',...) , где xn,yn - каждая очередная пара векторов предназначена для построения нового графика, а 'сn' – символы, указывающие на цвет и тип точки. В этом случае происходит построение нескольких графиков в одном графическом окне. Выполним теперь тот же пример, что и на рис.1.4.1-2, добавив в него при построении каждого графика символы для отображения цвета и типа точки и другой формат функции plot (рис.1.4.1-9). --> // Использование инструкцийдля установки цвета и типа линии --> --> x = 0:0.1:%pi; --> y1 = sin(x); // Тип линии -, черный --> y2 = sin(2*x); // Тип линии -, красный 113 --> y3 = sin(4*x); // Тип линии – с точкой, синий --> plot(x, y1,'-k',x, y2, '-r', x,y3,'.-b'); Рис. 1.4.1-9. Использованием инструкций для цвета и символа при построении в одном графическом окне трех графиков Различие между приведенными выше примерами состоит не только в количестве параметров функции plot , но еще и в том, что в примере, приве- денном на рис.1.4.1-4, формируется матрица y , содержащая значения функций в виде столбцов, а в примере, приведенном на рис.1.4.1-9, формируются три вектора значений функций (y1,y2,y3) График, выведенный в графическое окно Scilab, может быть снабжен за- головком, именами осей, текстом, сеткой и другой дополнительной ин- формацией, которая устанавливается вспомогательными функциями xtitle , xgrid, legend и др. Параметрами этих функций являются значения текстовых строк. Например, формат команды xtitle , добавляющей к графику заголовок и подписи осей, может выглядеть следующим образом: xtitle('title','xstr','ystr'), где: 'title' – заголовок графика; 'xstr' – подпись оси х ; 'ystr' – подпись оси y Функция xgrid позволяет отобразить в Графическом окне координат- ную сетку, а функция legend используется, как правило, когда на одной коор- динатной плоскости надо отобразить графики нескольких функций (как, например, на рис. 1.4.1-9). Очевидно, что в этом случае возникает необходи- 114 мость использования своих обозначений (цвета и символа) для каждого из гра- фиков. Эти принятые обозначения выводятся на экран функцией legend , кото- рая имеет следующие форматы: legend(leg1, leg2, ..., legn), legend(leg1, leg2, ..., legn, pos), где : leg1 – имя первого графика; leg2 – имя второго графика; legn – имя n -го графика; pos – необязательный числовой параметр, определяющий место рас- положения легенды в графическом окне (рис.1.4.1-10). По умолчанию числовой параметр pos равен 1 , что означает расположение легенды в правом верхнем углу. Значение аргумента Размещение легенды -1 В правом верхнем углу над областью графика 0 Выбирается автоматически, чтобы не перекрывались кривые 1 В правом верхнем углу (и по умолчанию) 2 В левом верхнем углу области графика 3 В левом нижнем углу области графика 4 В правом нижнем углу области графика Рис. 1.4.1-10 Значение аргумента pos для указания места размещения легенды Безусловно, каждый график удобнее выводить с использованием своей функции plot , однако в этом случае происходит создание нового графического окна. Для того чтобы этого избежать, после первого выведенного графика до- статочно выполнить функцию mtlb_hold('on') . Эта функция позволяет распо- ложить все выводимые в дальнейшем графики в одном и том же окне. Рассмотрим пример, в котором при построении трех графиков в одном Графическом окне использованы и прокомментированы все описанные выше инструкции (рис.1.4.1-11). --> // Построение нескольких графиков в одном окне, --> // дополняя их заголовком и легендой --> --> x = 0 : 0.01 : %pi * 2; --> y1 = sin(x); --> y2 = sin(2 * x); --> y3 = sin(4 * x); 115 --> --> plot(x, y1, '-k') // Сплошная кривая черного цвета --> xgrid() // Нанесение сетки --> // Построение всех последующих графиков в одном окне --> mtlb_hold('on') --> --> plot(x, y2, 'b--') // Штриховая линия синего цвета --> plot(x, y3, 'r.-') // Штрих-пунктирная линия красного цвета --> xtitle('Построение графиков трех функций', 'x', 'y') // Заголовок --> legend('y1(x)', 'y2(x)', 'y3(x)', 1) // Легенда Рис. 1.4.2-11. Использование инструкций при построении графиков При построении нескольких графиков в одном графическом окне с по- мощью plot следует помнить, что в заданном диапазоне аргумент х сами отоб- ражаемые функции должны иметь соизмеримые значения, иначе совместное изображение графиков не позволит оценить результаты расчета, поскольку нарушается их «видимость». Функция plot2d лишена этого недостатка, поскольку строит график по формату, который уже определен пользователем при построении предыду- щего графика. На рис.1.4.1-12 приведен пример использования функции plot2d для отображения в одном графическом окне графиков двух функций. Заметим, что совместное изображение графиков, для того, чтобы в окне были достаточно хорошо видны оба графика, потребовало изменения масштаба по оси y 116 --> // Построение 1-го графика y=sin(x) --> --> scf(0); --> deff('y=f(x)','y=sin(x)'); --> x = -10:0.5:10; --> y = f(x); --> plot(x, y, '--') --> // Добавление графика функции x^2 --> --> scf(0); --> plot2d(x, x.^2) Рис.1.4.1-12 Построение в одном окне двух графиков Добавление к имени функции plot2d цифр 2 , 3 или 4 , приводит к измене- нию шаблона графика: plot2d2 – функция, предназначенная для построения графика в виде ступенчатой функции; plot2d3 – функция, предназначенная для построения графика в виде вер- тикальных полосок; plot2d4 – функция, предназначенная для построения графика с указа- нием направления. Примеры использования функций plot2d2, plot2d3 и plot2d4 приведены на рис.1.4.1-13 ( а , b и с ). 117 --> // Примеры использования функций --> // plot2d2, plot2d3 иplot2d4 --> --> deff('y = f(x)','y = sin(x)'); --> x = [1:0.1:3*%pi]; --> y = f(x); --> --> // Ступенчатый график --> plot2d2(x, y) --> --> // График с вертикальными --> // полосами --> scf(1); --> plot2d3(x, y) --> --> // График с указанием направления --> scf(2); --> plot2d4(x, y) a) Ступенчатый график b) График в виде вертикальных полос c) График с указанием направления Рис. 1.4.1-13 Примеры использования функций a) plot2d2 b), plot2d3, c) plot2d4 118 Для построения гистограмм на плоскости в Scilab предназначена функ- ция histplot . На рис.1.4.2-14 приведен пример, отображающий данные в 20-ти отрезках, имеющие нормальное распределение. --> // Построения гистограммы --> --> d = rand(1, 10000, 'normal'); --> histplot(20, d); Рис. 1.4.1-14 Пример построения гистограммы функцией histplot Чтобы воспроизвести изображение в двумерном пространстве в виде векторных полей можно использовать функцию champ , самый простой формат которой имеет следующий вид: сhamp(x,y,fx,fy), где: x, y – векторы, определяющие сетку координат; fx – матрица, описывающая x –компоненту каждого поля вектора; fy – матрица, описывающая y –компонентой в точке ( x(i),y(i) ). --> // Пример использования функции champ --> --> champ(-5:5, -5:5, rand(11,11), rand(11,11)) Рис. 1.4.1-15. Пример использования функции champ 119 С помощью функции сhamp векторные поля изображаются в виде стре- лок, а их длина указывает интенсивность векторного поля (рис. 1.4.2-15). Все сведения об используемых в п. 1.4.2 функциях приведены в Приложении 1.4. табл. 1.4.2-1 Построение графиков функций от двух переменных Трехмерные поверхности описываются функцией двух переменных z(x,у) . Для построения одних трехмерных графиков необходимо сформиро- вать две матрицы, например, xМ и yМ, а для других два вектора, например, XV и YV Сформированные в виде матриц данные используются функциями: mesh(xM,xM,zM) – для построения сетчатых графиков; surf(xM,yM,zM) – для построения графиков со сплошной поверхно- стями. Сформированные в виде векторов данные используются функциями: • contour(xV,xV,zM) – для построения графиков с контурными линиями; • plot3d(xV,yV,zM) – для построения графиков точек, соединенных отрезкам и прямых и других линий. Рассмотрим примеры использования перечисленных выше функций, для чего сформируем матрицу zM(x,y) с использованием встроенной внутрен- ней функции f(x,y) (рис. 1.4.1-16).Результаты построения соответствующих графиков приведены на рис. 1.4.3-3 – 1.4.3-5 --> // Построение различных видов графиков функции двух переменных --> // zM = xM.^2 + 2 * yM.^2 --> --> // Формирование двух матриц xM и yM --> [xM, yM] = meshgrid(-4 : 4, -4 : 4) xM = 0. 1. 2. 3. 0. 1. 2. 3. 0. 1. 2. 3. 0. 1. 2. 3. --> yM = -3. -3. -3. -3. -2. -2. -2. -2. -1. -1. -1. -1. 0. 0. 0. 0. --> --> // Формирование матрицыzM 120 --> deff('k = f(x, y)', 'k = x.^2 + 2 * y.^2'); --> zM = f(xM, yM) zM = 48. 41. 36. 33. 32. 33. 36. 41. 48. 34. 27. 22. 19. 18. 19. 22. 27. 34. 24. 17. 12. 9. 8. 9. 12. 17. 24. 18. 11. 6. 3. 2. 3. 6. 11. 18. 16. 9. 4. 1. 0. 1. 4. 9. 16. 18. 11. 6. 3. 2. 3. 6. 11. 18. 24. 17. 12. 9. 8. 9. 12. 17. 24. 34. 27. 22. 19. 18. 19. 22. 27. 34. 48. 41. 36. 33. 32. 33. 36. 41. 48. --> --> // Формирование векторовxVиyV --> x2 = -4 : 4; y2 = -4 : 4; --> --> // Построение двумерных графиков --> scf(1); mesh(xM,yM,zM) // Сетчатыйграфик(окно 1) --> scf(2);plot3d(xV, yV, zM) // График точек, соединенных отрезками --> // прямых (окно 2) --> scf(3);surf(xM, yM, zM) // График сплошной поверхности (окно 3) --> scf(4); contour(xV, yV, zM, 7) // График контурных линий (окно 4) Рис. 1.4.1-16. Построение различных видов графиков Результатом выполнения функции mesh является построение в окне 1 графика поверхности в виде сетки (рис.1.4.1-17). Рис. 1.4.1-17 Результат выполнения в окне 1функции mesh(xM,yM,zM) В результате выполнения функции plot3d (рис.1.4.3-17) происходит построение в окне 2 графика поверхности, где точки соединены отрезками прямой, а соответствующая заливка квадратов делает изображение фигуры объемной (рис. 1.4.3-18). Функции plot3d имеет формат : 121 plot3d(xV,yV,zM), где xV и yV – вектора целых чисел, указывающие диапазон изменения парамет- ров функции; zM – матрица действительных чисел значений функции, описы- вающей поверхность z(x,y) Рис. 1.4.3-18. Результат выполнения в окне 2функции plot3d(xV,yV,zM) Функция surf выполняет построение в окне 3 графика сплошной по- верхности (рис. 1.4.3-19) и имеет следующий формат: surf(xM,yM,zM), где xM и yM – массивы целых чисел, указывающие диапазон изменения парамет- ров функции; zM – матрица действительных чисел значений функции, описы- вающей поверхность z(x,y). Рис. 1.4.1-20 Результат выполнения в окне 3функции surf(xM,yM,zM) 122 График функции двух переменных может быть представлен в виде контурных линий (контурные линии – это линии, в каждой точке которых значение функции одинаково). Для этого в Scilab используется функция contour, имеющая формат: contour(xV,yV,zM,n), где xV и yV –массивы целых чисел, указывающие диапазон изменения пара- метров функции; zM –матрица действительных чисел значений функции, опи- сывающей поверхность z(x,y) ; n – целочисленный параметр, который устанав- ливает количество контурных линий. Функция contour позволяет не только построить в окне 4 график кон- турных линий, но и нанести в отдельных точках контурных линий значения функции (рис. 1.4.1-21). В этом примере получен график из 7-ми контурных линий, на каждой из которых отмечены значения функции. Рис. 1.4.1-21 Результат выполнения в окне 4 функции contour(xV,yV,zM,7) С использованием функции mtlb_hold('on' ) (эта функция уже была применена раньше при построении графиков функции от одной переменной) в одном графическом окне можно построить несколько графиков функций от двух переменных. Например, построим в одном окне графики двух функций (рис.1.4.1-22). 123 Рис.1.4.1-22 Построение двух графиков в одном графическом окне С использованием функции subplot в одном графическом окне можно расположить несколько графиков. В этом случае перед построением каждого графика выполняется функция subplot(n,m,k) , в которой указывается область построения текущего графика. 124 Рис.1.4.1-23. Построения в одном окне 4-х графиков На рис.1.4.1-23 приведены командные строки, позволяющие в одном окне произвести построение четырех графиков. Для этого графическое окно разбито на четыре области (две строки n=2 и два столбца m=2 ). Последний па- раметр ( k ) указывает номер области построения текущего графика. Нумерация областей осуществляется по строкам, начиная с 1. Результат выполнения функций subplot приведен на рис. 1.4.3-24. 125 Рис. 1.4.1-24. Построение 4-х графиков в одном графическом окне Для построения графика в полярных координатах применяется функ- ция polarplot , имеющая в простейшем случае два обязательных параметра: polarplot(phi,ro), где: phi –диапазон значений угла; ro – функция от полярного угла. На рис.1.4.1-25 приведен пример построения в полярных координатах графика функции ro=4*cos(3*fi) , где fi (полярный угол) изменяется на интер- вале [0;2π] с шагом 0.01 --> // РИС14125: Построение графика в полярной системе координат --> --> fi = 0:0.01:2*%pi; -->polarplot(0:0.01:2*%pi,4*cos(3*fi)) 126 Рис.1.4.1-25 Построение графика функции в полярной системе координат --> // РИС14126: --> // остроение 2D-гистограммы --> --> hist3d(10*rand(10, 10)); Рис.1.4.1-26 Построение 2D-гистограммы в виде 2D-графика с помощью функции hist3d Подробную информацию о рассмотренных выше графиках и других возможностях визуализации вычислений можно получить в справочной си- стеме пакета Scilab. Если вас интересует описание и примеры использования функции, название которой вы уже знаете, то достаточно в командной строке ввести, например, |