![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Функции plot3d и plot3d1Стр 1 из 10Следующая ⇒
Построение трехмерных графиков в SciLab Рассмотрим основные возможности SciLab по созданию трехмерных графиков: объемных и пространственных. При этом к трехмерным отнесем все графики, положение каждой точки которых задается тремя величинами. В целом процесс построения графика функции вида 1. Создание в области построения графика прямоугольной сетки. Для этого формируются прямые линии, параллельные координатным осям где
2. Вычисление значений функции 3. Обращение к функции построения трехмерных графиков. Функции plot3d и plot3d1 В SciLab поверхность можно построить с помощью функций plot3d или plot3d1. Их отличие состоит в том, что plot3d строит поверхность и заливает ее одним цветом, а plot3d1 -поверхность, каждая ячейка которой имеет цвет, зависящий от значения функции в каждом соответствующем узле сетки. Обращение к функциям следующее: plot3d(x, y, z, [theta, alpha, leg,flag,ebox][keyn=valuen]), plot3d1(x, y, z, [theta, alpha,leg,flag,ebox][keyn=valuen]), здесь x -вектор-столбец значений абсцисс; y -вектор-столбец значений ординат; z -матрица значений функции; theta, alpha - действительные числа, которые определяют в градусах сферические координаты угла зрения на график. Попросту говоря, это угол, под которым наблюдатель видит отображаемую поверхность; leg - подписи координатных осей графика, символы, отделяемые знаком @. Например, ’X@Y@Z’. flag -массив, состоящий из трех целочисленных параметров: [mode,type,box ]. Здесь mode - устанавливает цвет поверхности. По умолчанию равен 2 - цвет заливки синий, прямоугольная сетка выводится.
type - позволяет управлять масштабом графика, по умолчанию имеет значение 2;
box - определяет наличие рамки вокруг отображаемого графика. По умолчанию равен 4.
ebox - определяет границы области, в которую будет выводиться поверхность, как вектор [xmin, xmax, ymin, ymax, zmin,zmax]. Этот параметр может использоваться только при значении параметра type=1. keyn=valuen -последовательность значений свойств графика key1=value1, key2=value2,..., keyn=valuen, таких как толщина линии, ее цвет, цвет заливки фона графического окна, наличие маркера и др. Таким образом, функции plot3d (plot3d1) в качестве параметров необходимо передать прямоугольную сетку и матрицу значений в узлах сетки. Пример 1. Построить график функции Создадим массив значений аргумента При обращении к функции plot3d в качестве параметров Построение графика функции ![]() Теперь немного усложним задачу. Построим поверхность, уравнение которой задается двумя независимыми переменными. Пример 2. Построить график функции Прежде всего, зададим массивы Затем сформируем матрицу значений функции Таким образом, сначала будут вычислены все значения функции length определяет количество элементов массива Для построения поверхности обратимся к функции plot3d x=[-2:0.1:2];y=[-3:0.1:3];for i=1:length(x)for j=1:length(y)z(i,j)=5*y(j)^2-x(i)^2;endendplot3d(x',y',z,120,45,'X@Y@Z',[8,2,4]);// Здесь 35 и 45 угол поворота наблюдателяДля построения поверхности обратимся к функции plot3d1 x=[-2:0.1:2];y=[-3:0.1:3];for i=1:length(x)for j=1:length(y)z(i,j)=5*y(j)^2-x(i)^2;endendplot3d1(x',y',z,120,45,'X@Y@Z',[8,2,4]);// Здесь 35 и 45 угол поворота наблюдателяВ SciLab существует несколько команд, призванных облегчить процедуру создания прямоугольной сетки - это genfac3d и eval3dp. Простейшей из них по синтаксису является функция genfac3d: [xx,yy,zz]=genfac3d(x, y, z) Здесь xx, yy, zz - результирующая матрица размером (4,(n–1)×(m−1)), где xx(:,i), yy(:,i) и zz(:,i)- координаты каждой из ячеек прямоугольной сетки; x -вектор x-координат размера m; y -вектор y-координат размера n; z -матрица размера (m, n) значений функции Пример 3. Построить график функции Определим массив параметра Прямоугольную сетку создадим при помощи команды genfac3d. Для формирования графика обратимся к функции plot3d. t=[0:0.3:2*%pi]';z=sin(t)*cos(t');[xx,yy,zz]=genfac3d(t,t,z);plot3d(xx,yy,zz,120,25,'X@Y@Z',[3,2,4]);![]() Недостатком команды genfac3d является то, что она все-таки не упрощает работу с функцией plot3d, если поверхность задается функцией от двух переменных. В таком случае необходимо использовать команду eval3dp: [Xf,Yf,Zf]=eval3dp(fun,p1,p2) Xf,Yf,Zf - результирующая матрица размером (4,(n−1)×(m−1)), где xx(:,i),yy(:,i) и zz(:,i)- координаты каждой из ячеек прямоугольной сетки; fun -функция, определенная пользователем, которая задает трехмерный график; p1 -вектор размера m; p2 -вектор размера n. Проиллюстрируем действие команды eval3dp следующим примером. Пример 4. Построить график, заданный системой уравнений: Прежде всего, определим массивы значений параметров p1 и p2. Далее создадим функцию scp, которая задает график. Функции в SciLab создаются при помощи команды deff: deff([s1,s2,...]=newfunction(e1,e2,...)) где s1, s2,. - список выходных параметров, т.е. переменных, которым будет присвоен конечный результат вычислений; newfunction - имя создаваемой функции, оно будет использоваться для ее вызова; e1, e2,... - входные параметры. Запишем команду deff в три строки для удобства чтения листинга Для формирования значений воспользуемся функцией linspace Функция. linspace(x1, x2), генерирует вектор линейно равноудаленных точек между x1 и x2. [v]=linspace (x1, x2 [, n]) x1,x2 - вещественные или комплексные значения n -целое (количество значений) v - вещественный или комплексный вектор результатов (значение по умолчанию = 100) p1=linspace(0,2*%pi,10);p2=linspace(0,2*%pi,10);deff("[x,y,z]=scp(p1,p2)",["x=p1.*sin(p1).*cos(p2)";"y=p1.*cos(p1).*cos(p2)";"z=p1.*sin(p2)"]);[Xf,Yf,Zf]=eval3dp(scp,p1,p2);plot3d(Xf,Yf,Zf);![]() Date: 2015-07-27; view: 2623; Нарушение авторских прав |