Построение трехмерных графиков в 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!