Подтвердить что ты не робот

Построение неявных алгебраических уравнений в MATLAB

Я хочу построить неявные функции в MATLAB. Подобно x ^ 3 + xy + y ^ 2 = 36, уравнения, которые нельзя превратить в простую параметрическую форму. Есть ли простой метод?

4b9b3361

Ответ 1

Вот несколько вариантов...

Использование ezplot (или fplot рекомендуется в более новых версиях):

Самое простое решение - использовать функцию ezplot:

ezplot('x.^3 + x.*y + y.^2 - 36', [-10 10 -10 10]);

Что дает вам следующий график:

введите описание изображения здесь


Использование contour:

Другой вариант - создать набор точек, в которых вы будете оценивать функцию f(x,y) = x^3 + x*y + y^2, а затем использовать функцию contour для где f(x,y) равно 36:

[x, y] = meshgrid(-10:0.1:10);   % Create a mesh of x and y points
f = x.^3+x.*y+y.^2;              % Evaluate f at those points
contour(x, y, f, [36 36], 'b');  % Generate the contour plot
xlabel('x');                     % Add an x label
ylabel('y');                     % Add a y label
title('x^3 + x y + y^2 = 36');   % Add a title

Вышеприведённый сюжет, почти идентичный сюжету, созданному ezplot:

введите описание изображения здесь

Ответ 2

Если вы хотите построить неявную поверхность, например, куполообразный куб, вы можете сделать что-то вроде следующего.

Идея состоит в том, чтобы вычислить все значения функции (даже если они не равны нулю), а затем создать isosurface, который определит ваше равенство. В этом примере неявная функция равна нулю.

[email protected](x,y,z)(1-x.^8-3.*y.^8-2.*z.^8+5.*x.^4.*z.^2.*y.^2+3.*y.^4.*x.^2.*z.^2) ;

[X,Y,Z]=meshgrid(-2:0.1:2,-2:0.1:2,-2:0.1:2);

val=fun(X,Y,Z);

fv=isosurface(X,Y,Z,val,0);

p = patch(fv);
isonormals(X,Y,Z,val,p)
set(p,'FaceColor' , 'red');
set(p,'EdgeColor' , 'none');
daspect([1,1,1])
view(3); axis tight
camlight 
lighting phong
axis off

enter image description here

Кроме того, имеется представление в файле Matlab File Exchange под названием ezimplot3D, которое, похоже, выполняет эту работу, как предлагает @knedlsepp.

Ответ 3

Implot2 и implot от Matlab Центральная кажется, что выполняет эту работу.

Ответ 4

Есть две новые функции для построения неявной функции в R2016b:

fimplicit для f (x, y) = 0
fimplicit3 для f (x, y, z) = 0