simultaneas - resolver sistema de ecuaciones matlab solver
Trazando ecuaciones algebraicas implícitas en MATLAB (4)
Deseo trazar funciones implícitas en MATLAB. Como x ^ 3 + xy + y ^ 2 = 36, ecuaciones que no pueden convertirse en forma paramétrica simple. ¿Hay algún método simple?
Aquí hay un par de opciones ...
Usando ezplot
(o fplot
recomendado en versiones más nuevas):
La solución más fácil es usar la función ezplot
:
ezplot(''x.^3 + x.*y + y.^2 - 36'', [-10 10 -10 10]);
Lo cual te da la siguiente trama:
Usando contour
:
Otra opción es generar un conjunto de puntos donde se evaluará la función f(x,y) = x^3 + x*y + y^2
y luego usar el contour
la función para trazar líneas de contorno donde f(x,y)
es igual a 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
Lo anterior te dará una trama casi idéntica a la generada por ezplot
:
En caso de que quiera trazar una superficie implícita, por ejemplo, un cubo con cuernos, puede hacer algo como lo siguiente.
La idea es calcular todos los valores de la función (incluso si no son iguales a cero) y luego crear una isosurface
que definirá su igualdad. En este ejemplo, la función implícita es igual a cero.
fun=@(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
Además, hay una presentación de Matlab File Exchange llamada ezimplot3D que parece hacer el trabajo también, como sugiere @knedlsepp.
Hay dos nuevas funciones para trazar la función implícita en R2016b:
fimplicit para f (x, y) = 0
fimplicit3 para f (x, y, z) = 0