Аналитический графический вывод с Symbolic Math Toolbox

Symbolic Math Toolbox™ обеспечивает аналитический графический вывод математических выражений, явным образом не генерируя числовые данные. Эти графики могут быть в 2D или 3-D как линии, кривые, контуры, поверхности или сетки.

Эти примеры показывают следующие графические функции, которые принимают символьные функции, выражения и уравнения как входные параметры:

  • fplot

  • fimplicit

  • fcontour

  • fplot3

  • fsurf

  • fmesh

  • fimplicit3

Постройте явные функции y=f(x) Используя fplot

Постройте функцию sin(exp(x)).

syms x
fplot(sin(exp(x)))

Figure contains an axes object. The axes object contains an object of type functionline.

Постройте тригонометрические функции sin(x), cos(x), и tan(x) одновременно.

fplot([sin(x),cos(x),tan(x)])

Figure contains an axes object. The axes object contains 3 objects of type functionline.

Постройте функцию, определяемую по y=f(x,a) для различных значений a

Постройте функцию sin(exp(x/a)) для a=1,2, и 4.

syms x a
expr = sin(exp(x/a));
fplot(subs(expr,a,[1,2,4]))
legend show

Figure contains an axes object. The axes object contains 3 objects of type functionline.

Постройте производную и интеграл функции

Постройте функцию f(x)=x(1+x)+2, его производная df(x)/dx, и его интеграл f(x)dx.

syms f(x)
f(x) = x*(1 + x) + 2
f(x) = xx+1+2
f_diff = diff(f(x),x)
f_diff = 2x+1
f_int = int(f(x),x)
f_int = 

x2x2+3x+126

fplot([f,f_diff,f_int])
legend({'$f(x)$','$df(x)/dx$','$\int f(x)dx$'},'Interpreter','latex','FontSize',12)

Figure contains an axes object. The axes object contains 3 objects of type functionline. These objects represent $f(x)$, $df(x)/dx$, $\int f(x)dx$.

Постройте функцию y=g(x0,a) с a как горизонтальная ось

Найдите x0 это минимизирует функцию g(x,a) путем решения дифференциального уравнения dg(x,a)/dx=0.

syms g(x,a);
assume(a>0);
g(x,a) = a*x*(a + x) + 2*sqrt(a)
g(x, a) = 2a+axa+x
x0 = solve(diff(g,x),x)
x0 = 

-a2

Постройте минимальное значение g(x0,a) для a от 0 до 5.

fplot(g(x0,a),[0 5])
xlabel('a')
title('Minimum Value of $g(x_0,a)$ Depending on $a$','interpreter','latex')

Figure contains an axes object. The axes object with title Minimum Value of g leftParenthesis x indexOf 0 baseline , a rightParenthesis Depending on a contains an object of type functionline.

Постройте неявную функцию f(x,y)=c Используя fimplicit

Постройте круги, заданные по x2+y2=r2 с радиусом r как целые числа от 1 до 10.

syms x y
r = 1:10;
fimplicit(x^2 + y^2 == r.^2,[-10 10])
axis square;

Figure contains an axes object. The axes object contains 10 objects of type implicitfunctionline.

Постройте контуры функции f(x,y) Используя fcontour

Постройте контуры функции f(x,y)=x3-4x-y2 для уровней контура от –6 до 6.

syms x y f(x,y)
f(x,y) = x^3 - 4*x - y^2;
fcontour(f,[-3 3 -4 4],'LevelList',-6:6);
colorbar
title 'Contour of Some Elliptic Curves'

Figure contains an axes object. The axes object with title Contour of Some Elliptic Curves contains an object of type functioncontour.

Постройте аналитическую функцию и ее приближение Используя сплайн Interpolant

Постройте аналитическую функцию f(x)=xexp(-x)sin(5x)-2.

syms f(x)
f(x) = x*exp(-x)*sin(5*x) -2;
fplot(f,[0,3])

Создайте несколько точек данных из аналитической функции.

xs = 0:1/3:3;
ys = double(subs(f,xs));

Постройте точки данных и сплайн interpolant, который аппроксимирует аналитическую функцию.

hold on
plot(xs,ys,'*k','DisplayName','Data Points')
fplot(@(x) spline(xs,ys,x),[0 3],'DisplayName','Spline interpolant')
grid on
legend show
hold off

Figure contains an axes object. The axes object contains 3 objects of type functionline, line. These objects represent Data Points, Spline interpolant.

Постройте приближения Тейлора функции

Найдите Разложение Тейлора cos(x) рядом x=0 до 5-х и 7-х порядков.

syms x
t5 = taylor(cos(x),x,'Order',5)
t5 = 

x424-x22+1

t7 = taylor(cos(x),x,'Order',7)
t7 = 

-x6720+x424-x22+1

График cos(x) и его приближения Тейлора.

fplot(cos(x))
hold on;
fplot([t5 t7],'--')
axis([-4 4 -1.5 1.5])
title('Taylor Series Approximations of cos(x) up to 5th and 7th Order')
legend show
hold off;

Figure contains an axes object. The axes object with title Taylor Series Approximations of cos(x) up to 5th and 7th Order contains 3 objects of type functionline.

Постройте последовательное приближение Фурье прямоугольной волны

Прямоугольная волна периода 2π и амплитуда π/4 может быть аппроксимирован последовательным расширением Фурье

sin(t)+13sin(3t)+15sin(5t)+....

Постройте прямоугольную волну с периодом 2π и амплитуда π/4.

syms t y(t)
y(t) = piecewise(0 < mod(t,2*pi) <= pi, pi/4, pi < mod(t,2*pi) <= 2*pi, -pi/4);
fplot(y)

Постройте последовательное приближение Фурье прямоугольной волны.

hold on;
n = 6;
yFourier = cumsum(sin((1:2:2*n-1)*t)./(1:2:2*n-1));
fplot(yFourier,'LineWidth',1)
hold off

Figure contains an axes object. The axes object contains 7 objects of type functionline.

Серийные перерегулирования приближения Фурье одним прыжком разрыв и "вызов" не вымирают, когда больше терминов добавляется к приближению. Это поведение также известно как Явление Гиббса.

Графическое изображение параметрической кривой (x(t),y(t),z(t)) Используя fplot3

Постройте спираль, которая задана (sin(t),cos(t),t/4) для t от –10 до 10.

syms t
fplot3(sin(t),cos(t),t/4,[-10 10],'LineWidth',2)
view([-45 45])

Figure contains an axes object. The axes object contains an object of type parameterizedfunctionline.

Постройте поверхность, заданную по z=f(x,y) Используя fsurf

Постройте поверхность, заданную по log(x)+exp(y). Аналитический графический вывод с помощью fsurf (не генерируя числовые данные), показывает кривые области и асимптотические области рядом x=0.

syms x y
fsurf(log(x) + exp(y),[0 2 -1 3])
xlabel('x')

Figure contains an axes object. The axes object contains an object of type functionsurface.

Постройте многомерную поверхность (x(u,v),y(u,v),z(u,v)) Используя fsurf

Постройте многомерную поверхность, заданную по

x(u,v)=u

y(u,v)=f(u)sin(v)

z(u,v)=f(u)cos(v)

где f(u)=exp(-u2/3)sin(u)+3/2.

Установите интервал графика u от –5 до 5 и v от 0 до 2π.

syms f(u) x(u,v) y(u,v) z(u,v)
f(u) = sin(u)*exp(-u^2/3)+1.5;
x(u,v) = u;
y(u,v) = f(u)*sin(v);
z(u,v) = f(u)*cos(v);
fsurf(x,y,z,[-5 5 0 2*pi])

Figure contains an axes object. The axes object contains an object of type parameterizedfunctionsurface.

Постройте многомерную поверхность (x(s,t),y(s,t),z(s,t)) Используя fmesh

Постройте многомерную поверхность, заданную по

x=rcos(s)sin(t)

y=rsin(s)sin(t)

z=rcos(t)

где r=8+sin(7s+5t). Покажите нанесенную на график поверхность сетками при помощи fmesh. Установите интервал графика s от 0 до 2π и t от 0 до π.

syms s t
r = 8 + sin(7*s + 5*t);
x = r*cos(s)*sin(t);
y = r*sin(s)*sin(t);
z = r*cos(t);
fmesh(x,y,z,[0 2*pi 0 pi],'Linewidth',2)
axis equal

Figure contains an axes object. The axes object contains an object of type parameterizedfunctionsurface.

Постройте неявную поверхность f(x,y,z)=c Используя fimplicit3

Постройте неявную поверхность 1/x2-1/y2+1/z2=0.

syms x y z
f = 1/x^2 - 1/y^2 + 1/z^2;
fimplicit3(f)

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

Постройте контуры и градиент поверхности

Постройте поверхность sin(x)+sin(y)-(x2+y2)/20 использование fsurf. Можно показать контуры на том же графике установкой 'ShowContours' к 'on'.

syms x y
f = sin(x)+sin(y)-(x^2+y^2)/20
f = 

sin(x)+sin(y)-x220-y220

fsurf(f,'ShowContours','on')
view(-19,56)

Figure contains an axes object. The axes object contains an object of type functionsurface.

Затем постройте контуры на разделять графике с более прекрасными линиями контура.

fcontour(f,[-5 5 -5 5],'LevelStep',0.1,'Fill','on')
colorbar

Найдите градиент поверхности. Создайте 2D сетки с помощью meshgrid и замените декартовыми координатами, чтобы оценить градиент численно. Покажите градиент с помощью quiver.

hold on
Fgrad = gradient(f,[x,y])
Fgrad = 

(cos(x)-x10cos(y)-y10)

[xgrid,ygrid] = meshgrid(-5:5,-5:5);
Fx = subs(Fgrad(1),{x,y},{xgrid,ygrid});
Fy = subs(Fgrad(2),{x,y},{xgrid,ygrid});
quiver(xgrid,ygrid,Fx,Fy,'k')
hold off

Figure contains an axes object. The axes object contains 2 objects of type functioncontour, quiver.