12
onicas y cu´ adricas ´ Algebra con MATLAB: Pr´ actica 4 Curso 2006-2007 Reducci´ on de la ecuaci´ on de una c´ onica Vamos a utilizar MATLAB para pasar a forma reducida la c´ onica de ecuaci´ on x 2 + y 2 - 2xy +2x - 1=0. Como muchos de los c´ alculos que estamos aprendiendo a hacer con MATLAB, ´ este se puede plantear de forma num´ erica o simb´ olica. Vamos a hacerlo simb´ olicamente y de paso aprenderemos algunos de los comandos que se utilizan para reducir o expandir expresiones algebraicas. Como siempre, seguiremos los mismos pasos que dar´ ıamos para resolver el problema a mano. Escribimos la ecuaci´ on de la c´ onica de la forma ( x y ) 1 -1 -1 1 x y +2x - 1=0 Creamos una variable matricial (simb´ olica) que contenga la matriz de los t´ erminos cuadr´ aticos >> T=sym([1 -1 ; -1 1]) T= [ 1, -1] [ -1, 1] Calculamos autovectores y autovalores de T >> [a,b]=eig(T) a= [ 1, -1] [ 1, 1] b= [ 0, 0] [ 0, 2] Los autovalores son 0 y 2; los autovectores correspondientes est´ an en a pero vienen en columnas, y los necesitamos por filas, as´ ı que lo primero que hacemos es trasponer a 1

C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

Embed Size (px)

Citation preview

Page 1: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

Conicas y cuadricas

Algebra con MATLAB: Practica 4

Curso 2006-2007

Reduccion de la ecuacion de una conica

Vamos a utilizar MATLAB para pasar a forma reducida la conica deecuacion

x2 + y2 − 2xy + 2x− 1 = 0.

Como muchos de los calculos que estamos aprendiendo a hacer con MATLAB,este se puede plantear de forma numerica o simbolica. Vamos a hacerlosimbolicamente y de paso aprenderemos algunos de los comandos que seutilizan para reducir o expandir expresiones algebraicas.

Como siempre, seguiremos los mismos pasos que darıamos para resolverel problema a mano. Escribimos la ecuacion de la conica de la forma(

x y) (

1 −1−1 1

) (xy

)+ 2x− 1 = 0

Creamos una variable matricial (simbolica) que contenga la matriz delos terminos cuadraticos

>> T=sym([1 -1 ; -1 1])T =[ 1, -1][ -1, 1]

Calculamos autovectores y autovalores de T

>> [a,b]=eig(T)a =[ 1, -1][ 1, 1]b =[ 0, 0][ 0, 2]

Los autovalores son 0 y 2; los autovectores correspondientes estan en a perovienen en columnas, y los necesitamos por filas, ası que lo primero quehacemos es trasponer a

1

Page 2: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

>> a=a’a =[ 1, 1][ -1, 1]

y a continuacion dividimos cada fila por su norma para obtener una baseortonormal 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)]

El primer paso de la reduccion (la eliminacion del termino en xy) consisteen cambiar a una base ortonormal de autovectores de T; es decir, aplicarlea la ecuacion de la conica un cambio de la forma(

x y)

=(

x′ y′ )M (1)

donde M es una matriz 2 × 2 cuyas filas forman una base ortonormal deautovectores de T, es decir, nuestra matriz a. Vamos a crear una variablesimbolica que contenga la ecuacion de la conica, para hacer la sustitucionpor las nuevas variables. Llamaremos x e y a las variables originales x e y; Xe Y a las nuevas x′ e y′ (no podemos usar el apostrofe como parte del nombrede una variable de MATLAB). Las declaramos como simbolicas

>> syms x y X Y

Ahora almacenamos en una variable la ecuacion de la conica

>> f=[x y]*T*[x;y]+2*x-1f =(x-y)*x+(-x+y)*y+2*x-1

Vemos que MATLAB agrupa automaticamente los terminos. Para reconocermejor la expresion la podemos desarrollar; esto se hace con el comandoexpand:

>> f=expand(f)f =x^2-2*x*y+y^2+2*x-1

2

Page 3: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

En esta ecuacion tenemos que sustituir [x y] por [X Y]*a, segun la ecuacion(1). Se puede hacer en un solo paso, pero la notacion se complica debidoa que estamos manejando variables simbolicas. Entonces vamos a cambiarprimero la x y despues la y. La x se obtiene como [X Y] multiplicada por laprimera columna de a, que es a(:,1). Para sustituir cualquier variable enuna expresion simbolica por otra variable, numero o expresion simbolica seutiliza el comando subs. Ası

>> subs(f,x,[X Y]*a(:,1))

significa: sustituir en la expresion simbolica f la variable x por la expresionsimbolica [X Y]*a(:,1). MATLAB devuelve (en la variable ans si no lehemos indicado otra, como es el caso) el resultado de hacer esta sustitucion.Sobre este resultado hacemos la otra

>> subs(ans,y,[X Y]*a(:,2))

Obtenemos una respuesta (de nuevo guardada en ans) que claramente ne-cesita una simplificacion. El comando que usamos para eso es simplify

>> simplify(ans)ans =2*Y^2+X*2^(1/2)-Y*2^(1/2)-1

Esta ecuacion depende de las nuevas variables X e Y y no tiene termino en XY.Si todavıa nos resulta difıcil de leer, podemos pedirle a MATLAB que nosla ensene en un formato parecido al que nosotros usarıamos para escribirla,mediante el comando pretty

>> pretty(ans)

2 1/2 1/22 Y + X 2 - Y 2 - 1

No es mala idea hacer una “copia de seguridad” de la ecuacion en este punto,por si nos equivocamos en lo que sigue

>> g=ansg =2*Y^2+X*2^(1/2)-Y*2^(1/2)-1

A continuacion completaremos los cuadrados (en este caso, un solo cuadra-do) para eliminar terminos lineales. Vamos a llamar de nuevo x e y a lasvariables de la ecuacion reducida, en vez de x’’ e y’’ que no estan permi-tidas como nombres de variables.

En un caso general al llegar a este punto tendrıamos una ecuacion dela forma aX2 + bY 2 + cX + dY + f = 0. Para eliminar los terminos en

3

Page 4: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

X y en Y, completando cuadrados, harıamos los cambios de variable x =X + c/2a, y = Y + d/2b (comprobadlo).

En este caso solo tenemos cuadrado en Y. Con la notacion de arriba,d = −

√2 y b = 2. Tenemos que hacer el cambio de variable y=Y−

√2/4, es

decir, en la ecuacion 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/22 y - 5/4 + X 2

En el caso general ya habrıamos acabado, al reducir los terminos en X eY . Pero en este caso, como se trata de una parabola, no podemos reducirel termino en X y a cambio podemos absorber el termino independiente.Claramente eso se consigue definiendo la variable x=X−5/(4

√2), es decir,

sustituyendo X por x+5/(4√

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/22 y + 2 x

que es la ecuacion reducida buscada (igualada a cero, claro esta).

Ejercicio

Si m y n son respectivamente la cifra de las decenas y la de las unidadesdel numero de tu D. N. I., selecciona los terminos cuadraticos (la primeramitad de la ecuacion) del apartado (m) de los que siguen, y completa laecuacion con la segunda mitad que aparece en el apartado (n).

Calcula la forma reducida de la ecuacion resultante usando MATLAB,de forma simbolica, siguiendo el metodo indicado en esta practica.

4

Page 5: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

(0) 5x2 + 5y2 − 6xy · · · · · · − 4x− 4y − 4 = 0

(1) 2x2 − 4xy − y2 · · · · · ·+ 5x− 7y − 3 = 0

(2) x2 + 2xy + y2 · · · · · · − 6x + 2y + 4 = 0

(3) 5x2 + 5y2 + 2xy · · · · · · − 6x = 0

(4) x2 + y2 − xy · · · · · · − 2x + 4 = 0

(5) x2 + y2 + 10xy · · · · · · − 6x− 6y + 2 = 0

(6) 6y2 + 8xy · · · · · · − 8x + 4y − 8 = 0

(7) x2 + 4y2 − 4xy · · · · · ·+ 4y + 1 = 0

(8) x2 + 4y2 + 4xy · · · · · · − 4x + 2y + 10 = 0

(9) 2xy · · · · · ·+ 4x− 1 = 0

Graficas sencillas en MATLAB

Vamos a aprender a hacer graficas 2D y 3D en MATLAB, aunque soloveremos una parte de los comandos disponibles. Los que querais ampliarconocimientos sobre las considerables capacidades graficas de MATLAB, oproducir una grafica concreta que plantee mas problemas de los que apren-deremos a solucionar aquı, podeis consultar la bibliografıa, la ayuda delprograma, o cualquiera de los numerosısimos tutoriales que hay disponiblesen Internet.

Curvas en el plano

La forma mas “artesanal” de generar graficas 2D en MATLAB es usandoel comando plot. Vamos a representar, por ejemplo, la funcion f(x) =senx−cos2 x en el intervalo [−5, 5]. Primero tenemos que crear dos variablesvectoriales: una, que llamaremos por ejemplo x, y que almacenara los valoresde x ∈ [−5, 5] en los que evaluaremos la funcion f , y otra, que podemosllamar y, en el que se almacenaran las evaluaciones de f en esos puntos. Endefinitiva, se trata simplemente de crear una tabla de valores.

Habitualmente los valores de x se escogen equiespaciados entre los dosextremos del intervalo. Como sabemos, si tecleamos

>> x=-5:0.5:5;

la variable x almacenara valores entre −5 y 5, cada uno a una distancia 0′5del siguiente.

Evaluamos la funcion en esos puntos:

5

Page 6: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

>> y=sin(x)-cos(x).^2;

Notar que cos(x) es una matriz fila y queremos elevarla al cuadrado en elunico sentido posible, es decir, elemento a elemento; de ahı que antepon-gamos un punto al caracter ^. Ahora solo queda pedirle al programa querepresente los puntos (x,y) en un sistema de ejes coordenados. Esto se hacesimplemente escribiendo

>> plot(x,y)

Vemos que se abre una ventana grafica con la representacion de la funcion.La grafica no es muy satisfactoria: es una lınea poligonal. Lo que hace elcomando plot es pintar los puntos (x,y) que hemos creado y unirlos consegmentos de lınea recta. Para que la grafica aparezca mas suave, por lotanto, hay que tomar los puntos de x mas cercanos unos de otros. Por ejemplo

>> x=-5:0.1:5;

crea un array con puntos desde −5 hasta 5 espaciados 0′1 (fijaos en el Works-pace). Evaluando de nuevo la funcion en los puntos de x

>> y=sin(x)-cos(x).^2;>> plot(x,y)

se crea una grafica mas suave.

Esta nueva curva sustituye a la anterior en la ventana grafica.El comando plot se utiliza preferentemente para la representacion de

graficas de funciones. Ese no es el caso, como sabemos, de practicamenteninguna curva de la familia de las conicas. Si queremos representar la conicax2 + 2xy − 3x + 1 = 0, podremos utilizar plot ya que la ecuacion permitedespejar y en funcion de x facilmente,

6

Page 7: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

>> 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 conica cuya ecuacion tiene todos losterminos, como por ejemplo 4x2 +3y2− 5xy +4x+4y− 3 = 0, al despejar yen funcion de x, o viceversa, obtenemos expresiones mas complicadas y engeneral, con dos valores distintos para cada coordenada una vez fijamos laotra (la curva ya no es la grafica de una funcion).

En realidad la forma mas comoda de representar cualquier curva quevenga dada en forma implıcita es utilizar el comando simbolico ezplot. Eneste caso escribirıamos

>> ezplot(’4*x^2+3*y^2-5*x*y+4*x+4*y-3’)

’4*x^2+3*y^2-5*x*y+4*x+4*y-3’ es una cadena de caracteres que MAT-LAB ha de interpretar como la expresion analıtica de una funcion. Las ca-denas de caracteres (strings) han de introducirse entre apostrofes.

Este comando pinta por defecto el trozo de grafica contenido en elrectangulo [−2π, 2π]× [−2π, 2π]. Si queremos indicar nosotros el recuadrodel plano donde nos interesa la grafica, lo anadimos como argumento:

>> ezplot(’4*x^2+3*y^2-5*x*y+4*x+4*y-3’,[-6 2 -1 1])

dibuja los puntos de la grafica que estan contenidos en el rectangulo [−6, 2]×[−1, 1].

El comando ezplot tambien se puede utilizar para representar graficasde funciones. Por ejemplo: para dibujar la funcion f(x) = exp(sen(x)) − 1en el intervalo [0, 10] basta teclear

7

Page 8: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

>> ezplot(’exp(sin(x))-1’,[0 10])

Sin embargo ezplot no reemplaza a plot en todos los casos. En ocasioneses preferible utilizar este ultimo comando, que es menos sofisticado perotambien mas versatil, sobre todo cuando la funcion a representar no vienedada por una expresion analıtica sencilla.

Se puede mejorar o modificar la grafica desde la propia ventana grafica,sin introducir comandos desde la Command Window. Desde los menus Edit eInsert, y haciendo click sobre los elementos de la grafica que nos interesen, sepuede modificar el color de la lınea, su grosor, el aspecto de los ejes, ponerleetiquetas a los ejes X e Y , darle un tıtulo a la grafica, insertar lıneas, flechas,texto... Si investigais un poco encontrareis estas y otras herramientas tıpicasde un editor grafico sencillo.

Superficies

Los comando analogos 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 hiperbolico de ecuacion 4x2 − y2 + 2z = 0. Con-sideramos esta superficie como la grafica de la funcion de dos variablesf(x, y) = z = 1

2(y2 − 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 funcionsera [−1, 1]× [−2, 2]. Los puntos donde vamos a evaluar la funcion formaranahora una malla bidimensional, es decir, los vertices de un casillero. Primerodeterminamos una serie de puntos equiespaciados en [−1, 1] y guardamos elresultado en una variable, por ejemplo rx

>> rx=-1:.05:1;

y despues hacemos algo parecido en el intervalo [−2, 2]

>> ry=-2:.05:2;

Los puntos donde vamos a evaluar la funcion seran aquellos cuya primeracoordenada sea una de las contenidas en rx y la segunda, una de las de ry, esdecir, el producto cartesiano de estos dos conjuntos de valores. Para generartodos 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 tamano. Examinandolasen el Workspace vereis que x es constante por columnas, y toma como valoreslos puntos rx generados en el intervalo [−1, 1]; analogamente, y es constantepor filas y toma como valores los puntos de ry. Si emparejaramos las x con lasy que estan en la misma posicion obtendrıamos todos los puntos de la malladonde queremos representar la funcion. Por supuesto eso lo hara MATLABpor nosotros. Ahora evaluamos la funcion en esos puntos

8

Page 9: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

>> z=.5*y.^2-4*x.^2;

(se crea una variable z, del mismo tamano que x e y, con las evaluacionesde la funcion, es decir, las cotas de los puntos) y representamos la superficiecorrespondiente a esa tabla de valores mediante

>> mesh(x,y,z)

Se obtiene una grafica de la superficie en forma de retıcula de lıneas de colo-res, vista en perspectiva. El coloreado lo hace automaticamente MATLAB,de forma proporcional a la coordenada z de los distintos puntos. Si queremosque la superficie tenga un aspecto mas “solido” teclearemos en cambio

>> surf(x,y,z)

que pinta, tambien con distintos colores, las distintas caras de la retıcula(ver pagina siguiente).

En ambos casos funciona un algoritmo de eliminacion de lıneas ocultas,aunque en un primer momento no nos demos cuenta de ello: segun el puntode vista, habra zonas que en principio tendrıan que estar representadas perohan de quedar ocultas tras los pliegues que pueda formar la superficie. Masimportante: el punto de vista se puede cambiar facilmente en la propia ven-tana grafica, haciendo click en el boton de la flecha circular y posteriormente

9

Page 10: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

arrastrando sobre la superficie hasta dar con la perspectiva que nos interese.La apariencia de la grafica se puede cambiar en muchos sentidos, tanto desdela ventana grafica como utilizando comandos, pero no tenemos tiempo deestudiar como; de todas formas, las operaciones sencillas se pueden aprenderenseguida a base de ensayo y error1.

Tambien existe un comando analogo a ezplot en superficies, que es utilcuando no queremos complicarnos generando una malla de puntos. Se tratade ezsurf. Por ejemplo, vamos a representar un trozo del hiperboloide deuna hoja x2+4y2−9z2 = 1. Desgraciadamente ezsurf no acepta ecuaciones

1Para producir esta ultima grafica hemos necesitado introducir y ejecutar sucesivamen-te cinco o seis lıneas de comando. Es comun que al ejecutar una sucesion de comandosen modo directo (que es el unico que conocemos hasta ahora) nos confundamos en algunode ellos y esa confusion haga necesario ejecutar de nuevo todos los comandos anterio-res. Esto se puede hacer seleccionando los comandos en la ventana de Command History,pinchando con el boton derecho del raton en la seleccion y escogiendo la opcion Evalua-te Selection del menu local que se abre. Pero esta claro que la eficacia de este metodoes limitada y que llegara un momento en que necesitaremos programar, es decir, empa-quetar una secuencia de comandos en un ejecutable para que cada vez que lo llamemosse ejecuten todos ellos, uno tras otro. Hacer esto en MATLAB es muy sencillo pero notenemos tiempo de explicarlo aquı. Podeis consultarlo en cualquier manual, o en la pagi-na 21 de los apuntes de MATLAB que teneis a vuestra disposicion en la pagina webhttp://caminos.udc.es/info/asignaturas/obras publicas/103/pdfs/matlab.pdf

10

Page 11: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

implıcitas, al contrario que su version bidimensional. Tendremos que despe-jar z en funcion de x e y, es decir, poner la superficie como la grafica deuna funcion de dos variables. Notar que, aunque es muy facil despejar z eneste caso, la herramienta de calculo simbolico de MATLAB puede hacerlopor 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)

La superficie es simetrica respecto al plano XY , ya que salen dos valoresopuestos para cada z. Vamos a representar la parte correspondiente a las zpositivas, x entre −4 y 4 e y entre −2 y 2.

>> ezsurf(’1/3*(x^2+4*y^2-1)^(1/2)’,[-4 4 -2 2])

La grafica que resulta no es muy satisfactoria; al menos en las zonas de lasuperficie cercanas al plano horizontal, el mallado deberıa ser mas fino. Peroeso es algo que no podemos hacer con este comando.

No siempre tenemos que resignarnos a despejar una de las coordenadas enfuncion de las otras. Si disponemos de una parametrizacion de la superficie,podemos utilizar ezsurf sobre ella. Una parametrizacion de una superficieconsiste en poner todos los puntos de la misma en funcion de dos parametrosreales; es una generalizacion de las ecuaciones parametricas de un plano. Porejemplo, el hiperboloide de antes, de ecuacion implıcita x2 + 4y2 − 9z2 = 1,se puede parametrizar ası:

x = cosh s cos ty = (1/2) cosh s sen tz = (1/3) senh s

Comprobad que al sustituir estos valores de x, y y z en la ecuacion x2 +4y2 − 9z2 = 1, se llega a una identidad. A medida que los parametros s, tvan tomando distintos valores reales, los puntos (x, y, z) van recorriendo lasuperficie.

Al ejecutar la siguiente lınea de comando, MATLAB representa (verpagina siguiente) el trozo de superficie que corresponde a los parametross ∈ [−2, 2], t ∈ [0, 2π]:

>> ezsurf(’cosh(s)*cos(t)’,’.5*cosh(s)*sin(t)’,...’(1/3)*sinh(s)’,[-2 2 0 2*pi])

11

Page 12: C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4caminos.udc.es/info/asignaturas/101/pdfs/p_inf04.pdf · C´onicas y cu´adricas Algebra con MATLAB: Pr´actica 4´ Curso 2006-2007

12