uso de simbolos en octave

480 views
Skip to first unread message

f10py.1...@gmail.com

unread,
Apr 8, 2016, 8:47:02 PM4/8/16
to GNU Octave, aula virtual
Hola de que forma puedo armar los dominios de esta función por rama, en octave para poder visualizarlas a las tres juntas en una solo grafico:


sin(xy)/x        si  x>0

f(x,y)=            0                    si  x=0

(x^2-y)/x         si  x<0

JuanPi

unread,
Apr 9, 2016, 7:40:02 AM4/9/16
to florencia antonella correa, GNU Octave, aula virtual
Hola Flo,

Ok, primero hay que decir que en Octave vamos a poder hacer un plot de
la función evaluándola en muchos puntos. Si realmente necesitas hacer
calculo simbólico te recomiendo que mires Sagemath
http://www.sagemath.org/ o pruebes el paquete symbolic de octave
(http://octave.sourceforge.net/symbolic/ que usa sympy, cálculo
simbólico en python).

Ok, una función definida por dominions se puede implementar utilizando
los operadores lógicos.

function z = F(x,y)
z = zeros (size(y,1),size(x,2));

pos = x > 0;
z(pos) = sin (x(pos) ./ y(pos)) ./ x(pos);

neg = x < 0;
z(neg) = ( x(neg).^2 - y(neg)) ./ x(neg);
endfunction

Para visualizarla generamos valores de x e y. Notar la forma de cada uno.

x = linspace (-1, 1, 5);
y = linspace (-2, 2, 500).';

[X Y] = meshgrid (x,y);

Z = F(X,Y);

Podemos hacer plots 2D para ver el comportameinto. Notar que la
función es medio "loca" en el origen.

h = plot (y, Z);
legend (h, strsplit(num2str (x)));
axis tight
xlabel ("y")
ylabel ("f(x,y)")

Tambien podemos hacer un plot 3D, tener cuidado con los tamaños que
elegimos o se pueden quedar sin memoria en la compu.

x = linspace (-1, 1, 60);
y = linspace (-2, 2, 60).';

[X Y] = meshgrid (x,y);

Z = F(X,Y);

surf (X, Y, Z, "edgecolor", "w");
xlabel ("x")
ylabel ("y")
zlabel ("f(x,y)")
axis tight

Adjunto un script con estos comandos.
> --
> Has recibido este mensaje porque estás suscrito al grupo "GNU Octave, aula virtual" de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a octave_aulavirt...@googlegroups.com.
> Para publicar en este grupo, envía un correo electrónico a octave_au...@googlegroups.com.
> Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/octave_aulavirtual/81e8771a-c728-472d-b779-abed103ac6c4%40googlegroups.com.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.




--
JuanPi Carbajal
Public GnuPG key: 9C5B72BF
-----
The end of funding: "Many researchers were caught up in a web of
increasing exaggeration."
- Hans Moravec
s_flopy_func_tramos.m

florencia antonella correa

unread,
Apr 12, 2016, 8:19:04 PM4/12/16
to GNU Octave, aula virtual, f10py.1...@gmail.com
Ok...muchas gracias, como para aclarar un poco la funcion meshgrid es una función que haria corresponder los valores independientes de x e y según las condiciones de cada parte del dominio...
Mi pregunta es porque cuando lo hacen en 2D solo toma 5 valores para x y 500 para y...

JuanPi

unread,
Apr 13, 2016, 3:26:36 AM4/13/16
to florencia antonella correa, GNU Octave, aula virtual, florencia antonella correa
Hola flo,

La función meshgrid construye una malla rectangular en base a un vector. Por ejemplo,

[x y] = meshgrid ([-1 1])
x =

   -1   1
   -1   1

y =

   -1  -1
   1   1

es decir te devuelve la malla

[-1,1]  --  [1,1]
   |            |

[-1,-1]  --  [1,-1]

cada punto dado por [x(i,j) y(i,j)] con i=1:2 y j=1:2

Otro ejemplo, cuanod los rangoes de x e y no son iguales

[x y] = meshgrid([-1 1],[0,1])
x =

  -1   1
  -1   1

y =

   0   0
   1   1

que corresponde a la malla

[-1,1]  --  [1,1]
   |            |
[-1,0]  --  [1,0]

La función tambien puede hacer mallas 3D. Por ejemplo el cubo con esquinas en 0 y 1 lo obtenes con

[x y z] = meshgrid ([0 1])
plot3(x(:),y(:),z(:),'.','markersize',12);
set(gca,'xtick',[0 1],'ytick',[0 1],'ztick',[0 1]);



En relación a la cantidad de puntos cuando hago el plot 2D. Si tomo muchos más valores de x entonces el plot va a tener demasiadas curvas y no se va a ver nada. el plot 2D son cortes de la función en los valores de x dados. Cuando hago el plot en 3D puedo poner mas valores de x.


2016-04-13 2:19 GMT+02:00 florencia antonella correa <floorc...@gmail.com>:
Ok...muchas gracias, como para aclarar un poco la funcion meshgrid es una función que haria corresponder los valores independientes de x e y según las condiciones de cada parte del dominio...
Mi pregunta es porque cuando lo hacen en 2D solo toma 5 valores para x y  500 para y...
--
Has recibido este mensaje porque estás suscrito al grupo "GNU Octave, aula virtual" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a octave_aulavirt...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a octave_au...@googlegroups.com.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/octave_aulavirtual/e4ecd75f-264c-4895-a699-1c4ae33aaf6c%40googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages