Guillem Borrell i Nogueras
10-13 de Junio de 2008
La manera más sencilla de representar datos es mediante la función plot
Ejemplo: | Representar una curva en el plano a partir de dos series de datos: >> x=linspace(0,500,100000); >> plot(x,exp(-x/100).*sin(x)) |
---|
Para dibujar la función `e^{-x/100}\sin x` con `x \in [0,500]`
El resultado...
Los atributos de las gráficas se introducen con la ventana activa
Ejemplo: | >> title('Una función cualquiera') >> xlabel('Tiempo') >> ylabel('Amplitud') |
---|
El resultado...
Dentro del mismo comando podemos poner varias curvas con distintos estilos:
>> x=linspace(-pi,pi,100); >> plot(x,sin(x),'m:',... x,cos(x),'k^',x,tan(x),'bx') >> axis([-pi,pi,-2,2]) >> grid on >> legend('linea de puntos magenta',... 'triangulos negros',... 'cruces azules')
Es el comando que permite poner más de una figura en una misma ventana. Su uso es parecido al de combinar figure y plot.
Ejemplo: | >> x= linspace(-pi,pi,100); >> subplot(2,2,1) >> plot(x,sin(x)) |
---|
De este modo generamos la primera de las subfiguras en el primero de los cuatro sectores
Ahroa completamos los cuatro cuadrantes
Ejemplo: | >> subplot(2,2,2) >> plot(x,cos(x)) >> subplot(2,2,3) >> plot(x,sinh(x)) >> subplot(2,2,4) >> plot(x,cosh(x)) |
---|
semilogx: | Dibuja una curva con el eje x en escala logarítmica |
---|---|
semilogy: | Dibuja una curva con el eje y en escala logarítmica |
loglog: | Dibuna una curva en escala logarítmica. |
Representar en una misma ventana y dos frames (uno superior y otro inferior) la función:
`sqrt{x} \sin(1/x)\ \ x\in[0.001,1]`en escala normal y en escala semilogarítmica en el eje x
Nota: | La segunda gráfica tiene un problema de definición cerca de x =0. ¿Cómo puede arreglarse? |
---|
La mejor manera de representar superficies en tres dimensiones es representar su proyección en el plano mediante isolíneas. La ventaja de esta representación es que permite conocer el valor de la función con mucha más precisión. Probad lo siguiente
Ejemplo: | >> contour(peaks) |
---|
octave:1> p=plot([1,2,3,2,1]) p = -2.3944 octave:2> get(p) ans = { tag = type = line parent = -1.8402 children = [](0x0) __modified__ = 1 xdata = 1 2 3 4 5 (...)
>> set(p,'linewidth',2) >> set(p,'marker','o') >> set(p,'markersize',12) >> set(p,'markeredgecolor','r') >> t=title('masmejor') >> set(t,'fontsize',14) >> set(t,'color','g') >> h=fill([1,2,3,4,5],[1,2,3,2,1],'y')
lsode: | Interfaz de Octave a odepack |
---|---|
ode45: | Es un Runge-Kutta de paso variable y 4º orden. La primera opción |
ode113: | Esquema Adams multipaso |
ode23s: | Esquema para problemas stiff |
Un caso típico es la ecuación de Van der Pol
`x''+x+\mu(x'^2-1)x'=0`Dependiendo del valor del coeficiente `\mu` el problema es stiff o no.
Para resolver el problema no stiff utilizamos un esquema Runge-Kutta, ode45:
>> lsode_options('integration method','non-stiff'); >> y=lsode(@vdp1,[0 2],linspace(0,20,1000); >> plot(linspace(0,20,1000),xout(:,1));
Si ahora intentamos resolver el problema para `\mu` =1000 con la misma función nos encontramos con la desagradable sorpresa de que no termina nunca.
Esto es porque el problema es stiff. Para resolverlo cambiamos el método de integración a uno implícito:
>> lsode_options('integration method','stiff'); >> y=lsode(@vdp1,[0 2],linspace(0,3000,100000); >> plot(linspace(0,3000,100000),xout(:,1));
Resolver el siguiente problema no stiff
`((\dot x=a(y-x)),(\dot y = x(b-z)-y),(\dot z=xy-cz))`Con a =10, b =28 y c =8/3, `t \in [0,50]` y `(x_0,y_0,z_0)=(1,1,1)` y representar la solución en tres dimensiones como una curva paramétrica con plot3
A partir de dos series de datos