Трехмерная графика с треугольными плоскостями

К числу специальных видов графики относится построение объемных фигур с помощью плоских треугольников. Для построения таких фигур в виде каркаса (без окраски и отображения плоскостей) используется команда trimesh:

Рис.18.1.Одна из объемных фигур, построенных командой trimesh

Следующий пример иллюстрирует применение команды trimesh для построения случайной объемной фигуры, параметры которой задаются с помощью генератора случайных чисел:

» х = rand(1,40);

» у = rand(1,40);

» z = sin(x.^y);

» tri = delaunay(x,y);

» tnmesh(tri .x.y.z)

Рис.18.2.Один из рисунков, построенных командой trisurf

Одна из построенных фигур показана на рис.18.1. Другая, абсолютно аналогичная, по заданию входных параметров команда — tnsurf(...) — отличается только закраской треугольных областей, задающих трехмерную фигуру. Если в приведенном выше примере заменить функцию trimesh на trisurf, то можно получить графики, подобные приведенному на рис18.2

Обратите внимание на то, что рис. 18.2 также принадлежит к множеству случайных графических построений. Поэтому возможность его буквального повторения отсутствует.

 

ПРИМЕР:

Сложный пример – неявные функции. Построим график неявной функции f(x,y)ºx3y-2xy2+y-0.2=0, x,y=[0, 1]. Это выполнит программа

1;h=.02; x=0:h:1; [X,Y]=meshgrid(x); f=X.^3.*Y-2*X.*Y.^2+Y-.2;

2;v=[0,0]; contour(x,x,f,v), grid

На графике зеленая линия (справа она двузначная) представляет искомый результат. Область в первом квадранте между этими кривыми обозначим через G. Эту задачу совсем непросто сделать в других системах программирования прежде всего потому, что вычисление образующих линии уровней точек – в общем случае очень сложная процедура.

Выясним, какой знак имеет f в области G, для чего выполним mesh(x,x,f.*(f>0))

Это пример трехмерной, т.е. xyz-графики. В ней цвет используется для изображения амплитуды (значения z),изменяясь с ростом z от темно- синего через голубой, зеленый и желтый до темно -красного.

 

 

 

Дифференцирование функции многих переменных в среде Matlab.

Пример: Найти частные производные первого порядка, смешанные производные, полный дифференциал функции

syms x y z

>> u=z^(x*y);

>> diff(u,x)

ans =z^(x*y)*y*log(z)

>> diff(u,y)

ans =z^(x*y)*x*log(z)

>> diff(u,z)

ans =z^(x*y)*x*y/z

Нахождение смешанных производных

 

du2dxdy=diff(diff(u,x),y)

du2dxdy =z^(x*y)*x*log(z)^2*y+z^(x*y)*log(z)

>> du2dydx=diff(diff(u,y),x)

du2dydx =z^(x*y)*x*log(z)^2*y+z^(x*y)*log(z)

>> du2dxdy-du2dydx

ans =0

du2dxdz=diff(diff(u,x),z)

du2dxdz =z^(x*y)*x*y^2/z*log(z)+z^(x*y)*y/z

>> du2dzdx=diff(diff(u,z),x);

>> du2dxdz-du2dzdx

ans =0

 

 

Нахождение полного дифференциала

syms dx dy dz

>> du=diff(u,x)*dx+diff(u,y)*dy+diff(u,z)*dz

du =z^(x*y)*y*log(z)*dx+z^(x*y)*x*log(z)*dy+z^(x*y)*x*y/z*dz