Documente Academic
Documente Profesional
Documente Cultură
Curso 2006-2007
1
>> a=a’
a =
[ 1, 1]
[ -1, 1]
y a continuación dividimos cada fila por su norma para obtener una base
ortonormal de autovectores
>> a(1,:)=a(1,:)/sqrt(a(1,:)*a(1,:)’)
a =
[ 1/2*2^(1/2), 1/2*2^(1/2)]
[ -1, 1]
>> a(2,:)=a(2,:)/sqrt(a(2,:)*a(2,:)’)
a =
[ 1/2*2^(1/2), 1/2*2^(1/2)]
[ -1/2*2^(1/2), 1/2*2^(1/2)]
x y = x0 y 0 M
(1)
>> syms x y X Y
>> f=expand(f)
f =
x^2-2*x*y+y^2+2*x-1
2
En esta ecuación tenemos que sustituir [x y] por [X Y]*a, según la ecuación
(1). Se puede hacer en un solo paso, pero la notación se complica debido
a que estamos manejando variables simbólicas. Entonces vamos a cambiar
primero la x y después la y. La x se obtiene como [X Y] multiplicada por la
primera columna de a, que es a(:,1). Para sustituir cualquier variable en
una expresión simbólica por otra variable, número o expresión simbólica se
utiliza el comando subs. Ası́
Obtenemos una respuesta (de nuevo guardada en ans) que claramente ne-
cesita una simplificación. El comando que usamos para eso es simplify
>> simplify(ans)
ans =
2*Y^2+X*2^(1/2)-Y*2^(1/2)-1
>> pretty(ans)
2 1/2 1/2
2 Y + X 2 - Y 2 - 1
>> g=ans
g =
2*Y^2+X*2^(1/2)-Y*2^(1/2)-1
3
X y en Y, completando cuadrados, harı́amos los cambios de variable x =
X + c/2a, y = Y + d/2b (comprobadlo).
En√este caso sólo tenemos cuadrado en Y. Con la notación de√ arriba,
d = − 2 y b = 2. Tenemos que hacer el cambio√de variable y=Y− 2/4, es
decir, en la ecuación hay que sustituir Y por y+ 2/4.
>> subs(ans,Y,y+sqrt(2)/4)
ans =
2*(y+1/4*2^(1/2))^2+X*2^(1/2)-(y+1/4*2^(1/2))*2^(1/2)-1
>> simplify(ans)
ans =
2*y^2-5/4+X*2^(1/2)
>> pretty(ans)
2 1/2
2 y - 5/4 + X 2
>> subs(ans,X,x+5/(4*sqrt(2)))
ans =
2*y^2-5/4+(x+5/8*2^(1/2))*2^(1/2)
>> simplify(ans)
ans =
2*y^2+2^(1/2)*x
>> pretty(ans)
2 1/2
2 y + 2 x
Ejercicio
Si m y n son respectivamente la cifra de las decenas y la de las unidades
del número de tu D. N. I., selecciona los términos cuadráticos (la primera
mitad de la ecuación) del apartado (m) de los que siguen, y completa la
ecuación con la segunda mitad que aparece en el apartado (n).
Calcula la forma reducida de la ecuación resultante usando MATLAB,
de forma simbólica, siguiendo el método indicado en esta práctica.
4
(0) 5x2 + 5y 2 − 6xy · · · · · · − 4x − 4y − 4 = 0
(2) x2 + 2xy + y 2 · · · · · · − 6x + 2y + 4 = 0
(4) x2 + y 2 − xy · · · · · · − 2x + 4 = 0
(5) x2 + y 2 + 10xy · · · · · · − 6x − 6y + 2 = 0
(6) 6y 2 + 8xy · · · · · · − 8x + 4y − 8 = 0
(7) x2 + 4y 2 − 4xy · · · · · · + 4y + 1 = 0
(8) x2 + 4y 2 + 4xy · · · · · · − 4x + 2y + 10 = 0
(9) 2xy · · · · · · + 4x − 1 = 0
Curvas en el plano
La forma más “artesanal” de generar gráficas 2D en MATLAB es usando
el comando plot. Vamos a representar, por ejemplo, la función f (x) =
sen x−cos2 x en el intervalo [−5, 5]. Primero tenemos que crear dos variables
vectoriales: una, que llamaremos por ejemplo x, y que almacenará los valores
de x ∈ [−5, 5] en los que evaluaremos la función f , y otra, que podemos
llamar y, en el que se almacenarán las evaluaciones de f en esos puntos. En
definitiva, se trata simplemente de crear una tabla de valores.
Habitualmente los valores de x se escogen equiespaciados entre los dos
extremos del intervalo. Como sabemos, si tecleamos
>> x=-5:0.5:5;
5
>> y=sin(x)-cos(x).^2;
>> plot(x,y)
>> x=-5:0.1:5;
>> y=sin(x)-cos(x).^2;
>> plot(x,y)
6
>> x=[-5:.1:5];
>> y=(3*x-x.^2-1)./(2*x);
Warning: Divide by zero.
>> plot(x,y)
Pero si tenemos que representar una cónica cuya ecuación tiene todos los
términos, como por ejemplo 4x2 + 3y 2 − 5xy + 4x + 4y − 3 = 0, al despejar y
en función de x, o viceversa, obtenemos expresiones más complicadas y en
general, con dos valores distintos para cada coordenada una vez fijamos la
otra (la curva ya no es la gráfica de una función).
En realidad la forma más cómoda de representar cualquier curva que
venga dada en forma implı́cita es utilizar el comando simbólico ezplot. En
este caso escribirı́amos
>> ezplot(’4*x^2+3*y^2-5*x*y+4*x+4*y-3’)
7
>> ezplot(’exp(sin(x))-1’,[0 10])
Sin embargo ezplot no reemplaza a plot en todos los casos. En ocasiones
es preferible utilizar este último comando, que es menos sofisticado pero
también más versátil, sobre todo cuando la función a representar no viene
dada por una expresión analı́tica sencilla.
Se puede mejorar o modificar la gráfica desde la propia ventana gráfica,
sin introducir comandos desde la Command Window. Desde los menús Edit e
Insert, y haciendo click sobre los elementos de la gráfica que nos interesen, se
puede modificar el color de la lı́nea, su grosor, el aspecto de los ejes, ponerle
etiquetas a los ejes X e Y , darle un tı́tulo a la gráfica, insertar lı́neas, flechas,
texto... Si investigáis un poco encontraréis éstas y otras herramientas tı́picas
de un editor gráfico sencillo.
Superficies
Los comando análogos a plot para dibujar superficies son mesh y surf.
Recordemos que para usar plot primero hay que generar una tabla de va-
lores, y lo mismo ocurre con estos comandos. Vamos a usarlos para re-
presentar el paraboloide hiperbólico de ecuación 4x2 − y 2 + 2z = 0. Con-
sideramos esta superficie como la gráfica de la función de dos variables
f (x, y) = z = 21 (y 2 − 4x2 ). Vamos a pintarla para valores de x en el in-
tervalo [−1, 1] e y en el intervalo [−2, 2]. Es decir, el dominio de la función
será [−1, 1] × [−2, 2]. Los puntos donde vamos a evaluar la función formarán
ahora una malla bidimensional, es decir, los vértices de un casillero. Primero
determinamos una serie de puntos equiespaciados en [−1, 1] y guardamos el
resultado en una variable, por ejemplo rx
>> rx=-1:.05:1;
y después hacemos algo parecido en el intervalo [−2, 2]
>> ry=-2:.05:2;
Los puntos donde vamos a evaluar la función serán aquéllos cuya primera
coordenada sea una de las contenidas en rx y la segunda, una de las de ry, es
decir, el producto cartesiano de estos dos conjuntos de valores. Para generar
todos estos puntos MATLAB dispone del comando meshgrid. Basta escribir
>> [x,y]=meshgrid(rx,ry);
y se crean dos variables matriciales x e y, del mismo tamaño. Examinándolas
en el Workspace veréis que x es constante por columnas, y toma como valores
los puntos rx generados en el intervalo [−1, 1]; análogamente, y es constante
por filas y toma como valores los puntos de ry. Si emparejáramos las x con las
y que están en la misma posición obtendrı́amos todos los puntos de la malla
donde queremos representar la función. Por supuesto eso lo hará MATLAB
por nosotros. Ahora evaluamos la función en esos puntos
8
>> z=.5*y.^2-4*x.^2;
(se crea una variable z, del mismo tamaño que x e y, con las evaluaciones
de la función, es decir, las cotas de los puntos) y representamos la superficie
correspondiente a esa tabla de valores mediante
>> mesh(x,y,z)
9
arrastrando sobre la superficie hasta dar con la perspectiva que nos interese.
La apariencia de la gráfica se puede cambiar en muchos sentidos, tanto desde
la ventana gráfica como utilizando comandos, pero no tenemos tiempo de
estudiar cómo; de todas formas, las operaciones sencillas se pueden aprender
enseguida a base de ensayo y error1 .
10
implı́citas, al contrario que su versión bidimensional. Tendremos que despe-
jar z en función de x e y, es decir, poner la superficie como la gráfica de
una función de dos variables. Notar que, aunque es muy fácil despejar z en
este caso, la herramienta de cálculo simbólico de MATLAB puede hacerlo
por nosotros:
>> z= solve(’x^2+4*y^2-9*z^2-1’,’z’)
z =
1/3*(x^2+4*y^2-1)^(1/2)
-1/3*(x^2+4*y^2-1)^(1/2)
>> ezsurf(’cosh(s)*cos(t)’,’.5*cosh(s)*sin(t)’,...
’(1/3)*sinh(s)’,[-2 2 0 2*pi])
11
12