Построение трехмерных графиков в Scilab



Возможности Scilab для построения поверхностей

 

В Scilab для построения поверхностей z=f(x,y) предназначены функции plot3d(x,y,z), plot3d1(x,y,z),где x – вектор-столбец значений абсцисс; y – вектор-столбец значений ординат; z – матрица значений функции в узлах сетки.

Отличие функций состоит в том, что plot3d строит каркасный график (рис. 33), а plot3d1 - каркасную поверхность, заливая ее каждую клетку цветом, который зависит от значения функции в узлах сетки (рис. 34).

Пример 36. Построение трехмерного графика функции z (x,y)=5y2−x2 в области xÎ[−2;2 ], yÎ[−3 ;3] (рис. 33).

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;

end

end

plot3d(x',y',z,35,45);

// Здесь 35 и 45 угол поворота наблюдателя

Если функцию plot3d(x',y',z,35,45) заменить функцией plot3d1(x',y',z,35,45) график поверхности примет вид, изображенный на рис. 34.

В Scilab 4.0 строить графики поверхностей стало удобнее. Для построения графика двух переменных z=f(x,y) необходимо выполнить следующие действия.

1. Сформировать в области построения графика прямоугольную сетку, проводя прямые, параллельные осям y=yj и x=xi, где

 

2. Вычислить значения zi,j=f(xi,yj) во всех узлах сетки.

3. Обратиться к функции построения поверхности, передавая ей в качестве параметров сетку и матрицу Z={zi,j} значений в узлах сетки.

Для формирования прямоугольной сетки в Scilab 4.0 появилась функция meshgrid.

Рис. 33. График функции z(x,y)=5y2−x2 , построенный с помощью plot3d

Рис. 34. График функции z(x,y)=5y2−x2, построенный с помощью plot3d1

 

Пример 37. Построение 3-х мерного графика функции z(x,y)=5y2–x2, xÎ[−2;2 ], yÎ[−3;3]. Для формирования сетки воспользуемся функцией meshgrid.

[x y]=meshgrid(-2:2,-3:3)

//Здесь -2:2 -массив, определяющий сетку по Х,

// -3:3 – массив, определяющий сетку по Y

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 во всех узлах

--> z=5*y.^2-x.^2

z =

41. 44. 45. 44. 41.

16. 19. 20. 19. 16.

1.   4.  5.  4.  1.

- 4. - 1. 0. - 1. - 4.

1.   4.  5.  4.  1.

16. 19. 20. 19. 16.

41. 44. 45. 44. 41.

Затем обратимся к функции mesh для построения графика mesh(x,y,z).

В результате чего будет построен трехмерный график (рис. 35). Для получения менее грубого графика следует сетку делать более плотной (рис. 36) (отличие между рис. 34 и рис.35,36 обусловлено различными углами обзора):

[x y]=meshgrid(-2:0.1:2,-3:0.1:3);

z=5*y.^2-x.^2;

mesh(x,y,z);

Рис. 34. График функции z(x,y)=5y2−x2, построенный с помощью функции mesh

Рис.35. График z(x,y)=5y2−x2с плотной сеткой, построенный с помощью функции mesh

Кроме построения каркасного графика с помощью функции mesh в Scilab 4.0 есть функция surf, которая строит каркасную поверхность, заливая ее каждую клетку цветом, который зависит от значения функции в узлах сетки.

Пример 38. Построение графика функции с использованием функции surf (рис. 36).

[x y]=meshgrid(-2:0.2:2,-2:0.2:2);

z=sqrt(x.^2+y.^2);

surf(x,y,z);

Рис. 36. График функции, построенный с помощью surf

 

В Scilab можно построить графики двух поверхностей в одной системе координат, для этого, как и для плоских графиков следует использовать команду mtlb_hold('on'), которая блокирует создание второго нового окна при выполнении команд surf или mesh.

Пример 39. Построить график функции z(x,y)=±(3x2+4y2)−1 с помощью функции surf (рис. 37).

[x y]=meshgrid(-2:0.2:2,-2:0.2:2);

z=3*x.^2+4*y.^2-1;

z1=-3*x.^2-4*y.^2-1;

surf(x,y,z);

mtlb_hold('on');

surf(x,y,z1);

 


Дата добавления: 2019-09-13; просмотров: 479; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!