Постройте график 3-D поверхности
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
. Для получения дополнительной информации смотрите Освещение , прозрачность и затенение. Включите коробку осей. Для заголовка преобразуйте f
в LaTeX с использованием 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')
Постройте график цилиндрического интерпретатора, ограниченной ниже функцией плоскость и выше плоскостью .
syms r t u fsurf(cos(t),sin(t),u*(cos(t)+2),[0 2*pi 0 1]) hold on;
Добавление объемной поверхностной диаграммы плоскости .
fsurf(r*cos(t),r*sin(t),r*cos(t)+2,[0 1 0 2*pi])
Применить вращение и перемещение к объемной поверхностной диаграмме тора.
Тор может быть задан параметрически как
где
- полярный угол и - азимутальный угол
- радиус трубы
- расстояние от центра трубы до центра тора
Определите значения для и как 1 и 5, соответственно. Постройте график тора с помощью fsurf
.
syms theta phi a = 1; R = 4; x = (R + a*cos(theta))*cos(phi); y = (R + a*cos(theta))*sin(phi); z = a*sin(theta); fsurf(x,y,z,[0 2*pi 0 2*pi]) hold on
Применить вращение к тору вокруг -ось. Задайте матрицу поворота. Поверните тор на 90 степени или радианы.
alpha = pi/2; Rx = [1 0 0; 0 cos(alpha) -sin(alpha); 0 sin(alpha) cos(alpha)]; r = [x; y; z]; r_90 = Rx*r;
Сдвиньте центр тора на 5 вдоль -ось. Добавьте второй график повернутого и переведенного тора к существующему графику.
fsurf(r_90(1)+5,r_90(2),r_90(3))
axis([-5 10 -5 10 -5 5])
hold off
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));