Постройте 3-D поверхность
fsurf(f)
fsurf(f,[min max])
fsurf(f,[xmin xmax
ymin ymax])
fsurf(funx,funy,funz)
fsurf(funx,funy,funz,[uvmin
uvmax])
fsurf(funx,funy,funz,[umin
umax vmin vmax])
fsurf(___,LineSpec)
fsurf(___,Name,Value)
fsurf(ax,___)
fs = fsurf(___)
fsurf(
создает объемную поверхностную диаграмму символьного выражения f
)f(x,y)
на интервале по умолчанию [-5 5]
для x
и y
.
fsurf(
графики f
,[xmin xmax
ymin ymax]
)f(x,y)
на интервале [xmin xmax]
для x
и [ymin ymax]
для y
. Функция fsurf
использует symvar
, чтобы заказать интервалы присвоения и переменные.
fsurf(
строит параметрический поверхностный funx,funy,funz
)x = x(u,v)
, y = y(u,v)
, z = z(u,v)
на интервале [-5 5]
для u
и v
.
fsurf(
строит параметрический поверхностный funx,funy,funz
,[uvmin
uvmax]
)x = x(u,v)
, y = y(u,v)
, z = z(u,v)
на интервале [uvmin uvmax]
для u
и v
.
fsurf(
строит параметрический поверхностный funx,funy,funz
,[umin
umax vmin vmax]
)x = x(u,v)
, y = y(u,v)
, z = z(u,v)
на интервале [umin umax]
для u
и [vmin vmax]
для v
. Функция fsurf
использует symvar
, чтобы заказать параметрические переменные и интервалы присвоения.
fsurf(___,
использование LineSpec
)LineSpec
, чтобы установить стиль линии, символ маркера и цвет поверхности. Используйте эту опцию после любой из предыдущих комбинаций входных аргументов.
fsurf(___,
задает свойства строки с помощью одного или нескольких аргументов пары Name,Value
)Name,Value
. Используйте эту опцию после любой из комбинаций входных аргументов в предыдущих синтаксисах.
fsurf(
графики в оси с объектом ax
,___)ax
вместо объекта gca
текущей системы координат.
возвращает функциональный объект подложки или параметризовал функциональный объект подложки, в зависимости от типа поверхности. Используйте объект запросить и изменить свойства определенной поверхности. Для получения дополнительной информации смотрите FunctionSurface Properties и ParameterizedFunctionSurface Properties.fs
= fsurf(___)
Постройте вход в области значений по умолчанию и .
syms x y fsurf(sin(x)+cos(y))
Постройте действительную часть в области значений по умолчанию и .
syms f(x,y)
f(x,y) = real(atan(x + i*y));
fsurf(f)
График и путем определения интервала графического вывода в качестве второго аргумента fsurf
.
syms x y f = sin(x) + cos(y); fsurf(f, [-pi pi -5 5])
Постройте параметризованную поверхность
для и .
Улучшите внешний вид графика при помощи camlight
.
syms s t r = 2 + sin(7*s + 5*t); x = r*cos(s)*sin(t); y = r*sin(s)*sin(t); z = r*cos(t); fsurf(x, y, z, [0 2*pi 0 pi]) camlight view(46,52)
Постройте кусочное выражение бутылки Клейна
для и
Покажите, что бутылка Клейна имеет только одностороннюю поверхность.
syms u v; r = @(u) 4 - 2*cos(u); x = piecewise(u <= pi, -4*cos(u)*(1+sin(u)) - r(u)*cos(u)*cos(v),... u > pi, -4*cos(u)*(1+sin(u)) + r(u)*cos(v)); y = r(u)*sin(v); z = piecewise(u <= pi, -14*sin(u) - r(u)*sin(u)*cos(v),... u > pi, -14*sin(u)); h = fsurf(x,y,z, [0 2*pi 0 2*pi]);
Для и от к , постройте 3-D поверхность . Добавьте заголовок и подписи по осям.
Создайте метки деления оси X путем охвата пределов оси X с промежутками в pi/2
. Преобразуйте пределы по осям точным множителям pi/2
при помощи round
и получите символьные значения деления в S
. Отобразите эти метки деления при помощи свойства XTick
. Создайте метки оси X при помощи arrayfun
, чтобы применить texlabel
к S
. Отобразите эти метки при помощи свойства XTickLabel
. Повторите эти шаги для оси Y.
Чтобы использовать LATEX в графиках, смотрите latex
.
syms x y fsurf(y.*sin(x)-x.*cos(y), [-2*pi 2*pi]) title('ysin(x) - xcos(y) for x and y in [-2\pi,2\pi]') xlabel('x') ylabel('y') zlabel('z') ax = gca; S = sym(ax.XLim(1):pi/2:ax.XLim(2)); S = sym(round(vpa(S/pi*2))*pi/2); ax.XTick = double(S); ax.XTickLabel = arrayfun(@texlabel,S,'UniformOutput',false); S = sym(ax.YLim(1):pi/2:ax.YLim(2)); S = sym(round(vpa(S/pi*2))*pi/2); ax.YTick = double(S); ax.YTickLabel = arrayfun(@texlabel,S,'UniformOutput',false);
Постройте параметрическую поверхность , , с различными стилями линии для различных значений для , используйте пунктирную линию с зелеными точечными маркерами. Для , используйте LineWidth
1
и зеленого цвета поверхности. Для , выключите строки установкой EdgeColor
к none
.
syms s t fsurf(s*sin(t),-s*cos(t),t,[-5 5 -5 -2],'--.','MarkerEdgeColor','g') hold on fsurf(s*sin(t),-s*cos(t),t,[-5 5 -2 2],'LineWidth',1,'FaceColor','g') fsurf(s*sin(t),-s*cos(t),t,[-5 5 2 5],'EdgeColor','none')
Постройте параметрическую поверхность
Задайте вывод, чтобы заставить fcontour
возвратить объект графика.
syms u v x = exp(-abs(u)/10).*sin(5*abs(v)); y = exp(-abs(u)/10).*cos(5*abs(v)); z = u; fs = fsurf(x,y,z)
fs = ParameterizedFunctionSurface with properties: XFunction: [1x1 sym] YFunction: [1x1 sym] ZFunction: [1x1 sym] EdgeColor: [0 0 0] LineStyle: '-' FaceColor: 'interp' Show all properties
Измените область значений u
к [-30 30]
при помощи свойства URange
fs
. Установите цвет линии на синий при помощи свойства EdgeColor
и задайте белые, точечные маркеры при помощи свойств Marker
и MarkerEdgeColor
.
fs.URange = [-30 30]; fs.EdgeColor = 'b'; fs.Marker = '.'; fs.MarkerEdgeColor = 'w';
Постройте несколько поверхностей с помощью векторного входа для fsurf
. Также используйте hold on
, чтобы построить последовательно на той же фигуре. При отображении нескольких поверхностей на той же фигуре прозрачность полезна. Настройте прозрачность объемных поверхностных диаграмм при помощи свойства FaceAlpha
. FaceAlpha
отличается от 0
до 1
, где 0
является полной прозрачностью, и 1
не является никакой прозрачностью.
Постройте плоскости и использование векторного входа к fsurf
. Покажите обе плоскости путем создания их половиной прозрачного использования FaceAlpha
.
syms x y h = fsurf([x+y x-y]); h(1).FaceAlpha = 0.5; h(2).FaceAlpha = 0.5; title('Planes (x+y) and (x-y) at half transparency')
Управляйте разрешением объемной поверхностной диаграммы с помощью опции 'MeshDensity'
. Увеличение 'MeshDensity'
может сделать более сглаженные, более точные графики, в то время как уменьшение его может увеличить скорость графического вывода.
Разделите фигуру на два использования subplot
. В первом подграфике постройте параметрическую поверхность , , и . Поверхность имеет большой разрыв. Устраните эту проблему путем увеличения 'MeshDensity'
до 40
во втором подграфике. fsurf
заполняет разрыв, показывающий, что путем увеличения 'MeshDensity'
вы увеличили разрешение графика.
syms s t subplot(2,1,1) fsurf(sin(s), cos(s), t/10.*sin(1./s)) view(-172,25) title('Default MeshDensity = 35') subplot(2,1,2) fsurf(sin(s), cos(s), t/10.*sin(1./s),'MeshDensity',40) view(-172,25) title('Increased MeshDensity = 40')
Покажите контуры для объемной поверхностной диаграммы выражения f
путем установки опции 'ShowContours'
на 'on'
.
syms x y f = 3*(1-x)^2*exp(-(x^2)-(y+1)^2)... - 10*(x/5 - x^3 - y^5)*exp(-x^2-y^2)... - 1/3*exp(-(x+1)^2 - y^2); fsurf(f,[-3 3],'ShowContours','on')
Создайте анимации путем изменения отображенного выражения с помощью Function
, XFunction
, YFunction
и свойств ZFunction
и затем при помощи drawnow
, чтобы обновить график. Чтобы экспортировать в GIF, смотрите imwrite
.
Путем варьирования переменной i от 1 до 3, анимируйте параметрическую поверхность
для-0.1 < u < 0.1 и 0 < v < 1. Увеличьте скорость графического вывода путем сокращения MeshDensity
до 9
.
syms s t h = fsurf(t.*sin(s), cos(s), sin(1./s), [-0.1 0.1 0 1]); h.MeshDensity = 9; for i=1:0.05:3 h.ZFunction = sin(i./s); drawnow end
Создайте символьное выражение f
для функции
Постройте выражение f
как поверхность. Улучшите внешний вид объемной поверхностной диаграммы при помощи свойств указателя, возвращенного fsurf
, свойствами подсветки и colormap
.
Создайте свет при помощи camlight
. Увеличьте яркость при помощи brighten
. Удалите строки установкой EdgeColor
к 'none'
. Увеличьте рассеянный свет с помощью AmbientStrength
. Для получения дополнительной информации см. Освещение, прозрачность и затенение (MATLAB). Включите поле осей. Для заголовка преобразуйте f
, чтобы ПРОПИТАТЬ ЛАТЕКСОМ использование latex
. Наконец, чтобы улучшить внешний вид меток деления осей, метки осей и заголовок, устанавливают 'Interpreter'
на 'latex'
.
syms x y f = 3*(1-x)^2*exp(-(x^2)-(y+1)^2)... - 10*(x/5 - x^3 - y^5)*exp(-x^2-y^2)... - 1/3*exp(-(x+1)^2 - y^2); h = fsurf(f,[-3 3]); camlight(110,70) brighten(0.6) h.EdgeColor = 'none'; h.AmbientStrength = 0.4; a = gca; a.TickLabelInterpreter = 'latex'; a.Box = 'on'; a.BoxStyle = 'full'; xlabel('$x$','Interpreter','latex') ylabel('$y$','Interpreter','latex') zlabel('$z$','Interpreter','latex') title_latex = ['$' latex(f) '$']; title(title_latex,'Interpreter','latex')
fsurf
присваивает символьные переменные в f
к оси x
, затем ось y
, и symvar
определяет порядок переменных, которые будут присвоены. Поэтому переменная и имена оси не могут соответствовать. Чтобы обеспечить fsurf
, чтобы присвоить x или y к его соответствующей оси, создайте символьную функцию, чтобы построить, затем передать символьную функцию fsurf
.
Например, следующий код строит f (x, y) = sin (y) двумя способами. Первый путь обеспечивает волны, чтобы колебаться относительно оси y. Второй путь присваивает y оси x, потому что это является первым (и только) переменная в символьной функции.
syms x y; f(x,y) = sin(y); figure; subplot(2,1,1) fsurf(f); subplot(2,1,2) fsurf(f(x,y)); % Or fsurf(sin(y));