Práctica No. 1
Rectas y Planos
Los objetivos de esta práctica son:
> |
Introducción
Entre las librerias de Maple , se encuentran geometry y geom3d , cuyo contenido es un conjunto de procedimientos y de funciones para resolver diferentes aplicaciones dobre geometria afín y euclidea en el plano y en el espacio, respectivamente.
Para "cargar" la libreria geometry , que contiene las funciones y procedimientos para resolver aplicaciones de geometria en el plano, escribiremos with(geometry) y aparecerá la relacion completa de los procedimientos que contiene y que acaban de leerse.
> | with(geometry): |
DEFINICION DE ELEMENTOS EN EL PLANO Y EN EL ESPACIO
Definición de un punto
Un punto en el plano se define a través de la función point
Un punto está determinado por sus coordenadas, teniendo asignado un nombre.
La sintaxis de la funcion point puede ser point(P,x,y) o point(P,[x,y]) en las que P es el nombre asignado al punto, y el par de valores x e y corresponden a sus coordenadas.
Para acceder a informacion relacionada a un punto P , usamos las funciones siguientes:
form(P) nos dice cual es la forma de un objeto geometrico
coordinates(P) devuelve [x, y] , donde x es la coordenada horizontal y y es la coordenada vertical de P
HorizontalCoord(P) devuelve x , que es la coordenada horizontal de P.
VericalCoord(P) devuelve y , que es la coordenada horizontal de P.
detail(P) esta funcion nos proporciona informacion detallada acerca del punto P.
Ejemplo1
> | with(geometry): point(A,2,0); # Definimos el punto A |
> | form(A); |
> | coordinates(A); |
> | HorizontalCoord(A); |
> | VerticalCoord(A); |
> | detail(A); |
Ejemplo 2
> | with(geometry): |
> | point(B,-1,1); # Definimos el punto B |
> | form(B); |
> | coordinates(B); |
> | HorizontalCoord(B); |
> | VerticalCoord(B); |
> | detail(B); |
> |
El paquete plottolls contiene funciones que nos permiten generar algunos objetos geometricos básicos.
Podemos generar y modificar estos objetos geometricos usando los comandos de este paquete.
El resultado de un comando de plottolls es un objeto geometrico, el cual puede visualizarse usando el comando plot[display] .
Ejemplo 3
Trazar el punto A = (1, 1)
Solución
Primero cargamos las librerias
> | with(plottools): |
> | with(plots): |
Ahora generamos el punto
> | l := point([1,1], color=red,symbol=cross, symbolsize=25); |
Finalmente visualizamos el punto
> | display(l, axes=boxed, view=[0..2, 0..2]); |
> |
Ejemplo 4
Ahora trazemos varios puntos.
Trazemos los puntos (0, 0), (1, 1), (1, 0), (1/2, 1/2), (0, 1).
Solución
Primero cargamos las librerias
> | with(plottools): with(plots): |
Ahora generamos los puntos
> | puntos := point([0,0], color=black, symbol=cross, symbolsize=25), point([1,1], color=red, symbolsize=25, symbol=box), point([1,0], color=brown, symbolsize=25, symbol=circle), point([1/2,1/2], color=blue, symbolsize=25, symbol=diamond), point([0,1], color=magenta, symbolsize=25, symbol=diamond): |
> |
Finalmente visualizamos los puntos
> | display(puntos, axes=boxed, view=[-1..2, -1..2]); |
> |
Analogamente, un punto en el espacio se define a través de la función point
Un punto está determinado por sus coordenadas, teniendo asignado un nombre.
La sintaxis de la funcion point puede ser point(P,x,y,z) o point(P,[x,y,z]) en las que P es el nombre asignado al punto, y la terna de valores x, y, z corresponden a sus coordenadas.
Para acceder a informacion relacionada a un punto P , usamos las funciones siguientes:
form(P) nos dice cual es la forma de un objeto geometrico
coordinates(P) devuelve las coordenadas de P
xcoord(P) devuelve x , que es la x-coordenada de P.
ycoord(P) devuelve y , que es la y-coordenada de P.
zcoord(P) devuelve z, que es la z-coordenada de P.
detail(P) esta funcion nos proporciona informacion detallada acerca del punto P.
Ejemplo1
> | with(geom3d): point(A,2,0,-1); # Definimos el punto A |
> | form(A); |
> | coordinates(A); |
> | xcoord(A); |
> | ycoord(A); |
> | zcoord(A); |
> | detail(A); |
Ejemplo 2
> | with(geom3d): |
> | point(B,-7,-4,8); # Definimos el punto B |
> | form(B); |
> | coordinates(B); |
> | xcoord(B); |
> | ycoord(B); |
> | zcoord(B); |
> | detail(B); |
> |
El paquete plottolls contiene funciones que nos permiten generar algunos objetos geometricos básicos.
Podemos generar y modificar estos objetos geometricos usando los comandos de este paquete.
El resultado de un comando de plottolls es un objeto geometrico, el cual puede visualizarse usando el comando plot[display] .
Ejemplo 3
Trazar el punto A = (1, 1, 1)
Solución
Primero cargamos las librerias
> | with(plottools): with(plots): |
Ahora generamos el punto
> | l := point([1,1,1], color=red,symbol=cross, symbolsize=25); |
Finalmente visualizamos el punto
> | display(l, axes=boxed, view=[0..2, 0..2,0..2]); |
> |
Ejemplo 4
Ahora trazemos varios puntos.
Trazemos los puntos (0, 0, 1/2), (1, 1,1), (1, 0, 1/2), (1/2, 1/2, 1/2), (0, 1, 1).
Solución
Primero cargamos las librerias
> | with(plottools): with(plots): |
Ahora generamos los puntos
> | puntos := point([0,0, 1/2], color=black, symbol=cross, symbolsize=25), point([1,1,1], color=red, symbolsize=25, symbol=box), point([1,0,1/2], color=brown, symbolsize=25, symbol=circle), point([1/2,1/2,1/2], color=blue, symbolsize=25, symbol=diamond), point([0,1,1], color=magenta, symbolsize=25, symbol=diamond): |
> |
Finalmente visualizamos los puntos
> | display(puntos, axes=boxed, view=[-1..2, -1..2,-1..2]); |
> |
Distancia entre dos puntos
La distancia entre dos puntos en el plano y en el espacio se calcula utilizando la función distance :
distance(P,Q) Distancia entre los puntos P y Q .
Ejemplo 1
Hallar la distancia entre los puntos P=(-2, 1) y Q=(4,4)
Solución
> | with(geometry): |
> | # Definimos los puntos |
> | point(P,-2,1),point(Q,4,4); |
> | # Distancia entre los puntos P y Q : |
> | distance(P,Q); |
> | simplify(%); |
> | evalf(%); |
> | evalf(%%,50); |
> |
Ejemplo 2
Hallar la distancia entre los puntos P=(-2, 1,-3) y Q=(4,4,-5)
Solución
> | with(geom3d): |
> | # Definimos los puntos |
> | point(A,-2,1,3),point(B,4,4,-4); |
> | # Distancia entre los puntos A y B : |
> | distance(A,B); |
> | simplify(%); |
> | evalf(%); |
> | evalf(%%,50); |
> |
Ejemplo 3
Hallar la distancia entre los puntos y
Solución
> | with(geometry): |
> | point(A,x[1],y[1]);point(B,x[2],y[2]); |
> | coordinates(A);coordinates(B); |
> | dis:=distance(A,B); |
> |
Ejemplo 4
Hallar la distancia entre los puntos y .
Solución
> | with(geom3d): |
> | point(A,x[1],y[1],z[1]);point(B,x[2],y[2],z[2]); |
> | coordinates(A);coordinates(B); |
> | Dis:=distance(A,B); |
> |
Ejemplo 5
Usando la fórmula de la distancia entre dos puntos determine si los puntos siguientes son los vértices de un triángulo rectángulo.
a) (1, 3), (10, 5), (2, 1)
b) (5, -2), (1, 1), (7, 9)
Solución de a)
> | restart; |
> | with(geometry): |
> | # Definimos los puntos |
> | point(A1,1,3);point(B1,10,5);point(C1,2,1); |
> | coordinates(A1);coordinates(B1);coordinates(C1); |
> | # Distancia entre los puntos A1 y B1 : |
> | a:=distance(A1,B1); |
> |
> | # Distancia entre los puntos A1 y C1 : |
> | b:=distance(A1,C1); |
> | # Distancia entre los puntos B1 y C1 : |
> | c:=distance(B1,C1); |
> | # Verificamos si a, b y c satisfacen el teorema de Pitágoras: |
> |
> | is(a**2=b**2+c**2); |
> |
> | is(b**2=a**2+c**2); |
> |
> | is(c**2=b**2+a**2); |
> |
> |
> | # Por tanto los puntos dados son vértices de un triángulo rectángulo. |
> |
b) Ejercicio
> |
Ejemplo 6
Usando la fórmula de la distancia entre dos puntos determine si los puntos siguientes están sobre la misma recta.
a) (12, 1), (0, 1), (9, 7)
b) (-3, 1), (1, 3), (10, 8)
Solución de a)
> | restart; |
> | with(geometry): |
> | # Definimos los puntos |
> | point(A2,12,1);point(B2,-3,-2);point(C2,2,-1); |
> | coordinates(A2);coordinates(B2);coordinates(C2); |
> | # Distancia entre los puntos A2 y B2 : |
> | a2:=distance(A2,B2); |
> | simplify(a2); |
> |
> | # Distancia entre los puntos A2 y C2 : |
> | b2:=distance(A2,C2); |
> | simplify(b2); |
> |
> | # Distancia entre los puntos B2 y C2 : |
> | c2:=distance(B2,C2); |
> | simplify(c2); |
> |
> | # Verificamos si a2, b2 y c2 se encuentran sobre la misma recta: |
> |
> | is(a2=b2+c2); |
> |
> | is(b2=a2+c2); |
> |
> | is(c2=b2+a2); |
> |
> | # Por tanto los puntos dados se encuentran sobre la misma recta. |
> |
b) Ejercicio
> |
Rectas
La definición de una recta en el plano se realiza a partir de la función line .
Una recta, a la que se le asignará un nombre, estará determinada mediante las coordenadas de dos puntos o por la expresión de su ecuación general.
Las sintaxis permitidas son:
line(t, [P,Q])
para definir la recta t , en la que P y Q son dos puntos definidos mediante la función point o
line(s, [a*x + b*y + c])
para definir la recta s de ecuación , siendo válida también la expresion:
line(s, [a*x + b*y + c])
para definir la recta anterior.
Para obtener la expresión de la ecuación de una recta, se utiliza la sentencia:
Equation(t)
siendo t el nombre de la recta.
Ejemplo 1
Hallar la ecuación de la recta que pasa por los puntos A=(-1, 1) y B=(2, -3).
Solución
> | restart; |
> | with(geometry): |
> | point(A,-1,1);point(B,2,-3); # Definimos los puntos |
> | line(t,[A,B]); # Define la recta que pasa por los puntos A y B |
> | Equation(t); # Ecuación de la recta que pasa por los puntos A y B |
enter name of the horizontal axis > | x; |
> | y; |
> | detail(t); |
> | # Para graficar una linea recta es necesario establecerla como función. Para ello es necesario resolver la ecuación para x |
> | f:=solve(Equation(t),y); |
> | plot(f,x=-10..10); |
> | # También se puede hacer hacer la gráfica de la recta de manera implicita pues su ecuación esta dada de manera implicita: |
> | with(plots): |
> | implicitplot(4*x+3*y+1=0, x=-10..10, y=-10..10); |
> |
La función IsOnLine determina si un punto dado pertenece a una recta.
Como resultado de esta función, se obtendrá true si el punto pertenece a la recta, o false en caso contrario.
La sintaxis de esta función es:
IsOnLine(P,r)
siendo P un punto y r una recta.
> | with(geometry): |
> | point(P,-2,3); # Definimos el punto |
> | print(t); |
> | Equation(t); |
> | IsOnLine(P, t); |
> |
Ejemplo 2
Ejercicio
Halle la ecuación de la recta que pasa por los puntos A=(-3, -7) y B=(-3, 4).
Dibuje la gráfica de dicha recta y determine si el punto Q = ( 2,1) se encuentra sobre la recta.
Una linea recta en el espacio esta determinada por dos puntos. Es importante recordar que una linea en el espacio esta definida en términos de coordenadas parametricas.
Podemos definir una linea con el comando siguiente:
Orden ..............line
Sintaxis ...........line(nombre( [A,B] )
line(nombre,[A,vector])
line(nombre,[A,dseg])
line(nombre,[A,p11])
line(nombre,[p11,p12])
line(nombre,[a1+b1*t, a2+b2*t, a3+b3*t], t)
Propósito ........Define la linea nombre , formada por los puntos A y B.
Define la linea nombre , pasa por el punto A y tiene a vector , como vector director.
Define la linea nombre , que tiene a dseg , como segmento director .
Define la linea nombre , pasa por el punto A y es perpendicular al plano p11 .
Define la linea nombre , que es la intersección de los planos p11 y p12
Ejemplo 1
Una recta en términos de dos puntos.
Definir y hallar la ecuación de la recta que pasa por los puntos A1=(1, 1,1) y B1=(5, 5,5).
Solución
> | restart: |
> | with(geom3d): |
> | point(A1,1,1,1),point(B1,5,5,5); # Definimos los puntos |
> | line(L1,[A1,B1]),form(L1); # Definimos la recta L1 |
> | Equation(L1,'t'); # Obtenemos las ecuaciones paramétricas de L1 |
> | draw(L1(color=red),axes=boxed); # Gráfica de L1 |
Ejemplo 2
Una recta en términos de un punto y un vector director.
Definir y hallar la ecuación de la recta que pasa por el punto A2=(2, 5,6) y vector director v=(1, 1,1).
Solución
> | restart; |
> | with(geom3d): |
> | point(A2,2,5,6),form(A2); # Definimos el punto A2 |
> | v:=[1,1,1]; # Damos el vector dirección |
> | line(L2,[A2,v]), form(L2); # Definimos la recta L2 |
> | Equation(L2,'t');# Obtenemos las ecuaciones paramétricas de L2 |
> | draw(L2(color=green),axes=boxed); # Gráfica de L2 |
Ejemplo 3
En términos de la ecuación de la recta.
Definir y graficar la recta L3 que tiene por ecuaciones paramétricas
, , .
Solución
> | line(L3,[2+3*t,5+t,-4+2*t],'t'), form(L3); |
> | Equation(L3); |
Ahora dibujamos la recta L3.
> | draw(L3(color=blue),axes=boxed); |
> |
Ejemplo 4
Determine si las rectas y siguientes se intersectan:
Solución
> | restart: |
> | with(geom3d): |
Definimos :
> | point(P1,-1,3,1),form(P1); # Definimos el punto P1 |
> | v1:=[4,1,0]; # Damos el vector dirección |
> | whattype(v1); |
> | line(L1,[P1,v1]), form(L1); # Definimos la recta L1 |
> | L[1]:=Equation(L1,'t');# Obtenemos las ecuaciones paramétricas de L1 |
Análogamente definimos
> | point(P2,-13,1,2),form(P2); # Definimos el punto P2 |
> | v2:=[12,6,3]; # Damos el vector dirección |
> | whattype(v2); |
> | line(L2,[P2,v2]), form(L2); # Definimos la recta L2 |
> | L[2]:=Equation(L2,'s');# Obtenemos las ecuaciones paramétricas de L2 |
Igualando y obtenemos:
> | L[1]=L[2]; |
Igualando componentes correspondientes obtenemos el sistema:
> | sistema:={-1+4*t=-13+12*s,3+t=1+6*s,1=2+3*s}; |
Resolviendo el sistema:
> | solve(sistema,{s,t}); |
Para hallar el punto de intersección de las rectas y definimos las funciones g y h siguientes:
> | g:=t->(-1+4*t,3+t,1); |
> | [g(-4)]; |
> | h:=s->(-13+12*s,1+6*s,2+3*s); |
> | [h(-1/3)]; |
> |
> |
Por lo tanto el punto de interseccíon de las rectas y es (-17,-1,1).
Planos
Un plano esta definido de diferentes formas, entre otras, por tres puntos no colineales, por dos vectores, etc.
En Maple, podemos definir un plano con algunos de los comandos siguientes:
Orden ..............: plane
Sintaxis ............: plane(p1, [A, v] )
plane(p1, [A, seg1] )
plane(p1, [seg1, seg2] )
plane(p1, [l1, l2] )
plane(p1, [A, B, C] )
plane(p1, [A, l1, l2] )
plane(p1, eqn, n)
Propósito ......: Define el plano, p1 con el punto A y el vector v .
Define el plano, p1 con el punto A y el segmento directriz seg.
Define el plano, p1 con los segmentos seg1 y seg2 .
Define el plano, p1 con las lineas l1 y l2 .
Define el plano, p1 con los puntos A , B , C .
Define el plano, p1 con la ecuación.
Ejemplo 1
En términos de tres puntos no colineales.
> | restart: |
> | with(geom3d): |
> | # Definimos los puntos : |
> | point(A,1,3,2),form(A),point(B,3,-2,2),form(B),point(C,2,1,3),form(C); |
> | # Definimos el plano PL1 : |
> | plane(PL1,[A,B,C]),form(PL1); |
> | # Obtenemos la ecuación del plano PL1 : |
> | Equation(PL1,[x,y,z]); |
> | # Para graficar un plano es necesario establecerlo como función. Para ello es necesario resolver la ecuación para z. |
> | p1:=solve(Equation(PL1),z); |
> | plot3d(p1,x=-10..10,y=-10..10); |
> | # También se puede hacer la gráfica del plano de manera implicita pues su ecuación esta dada de manera implicita: |
> | with(plots): |
> | implicitplot3d(9-5*x-2*y+z = 0, x=-10..10, y=-10..10,z=-10..10); |
> |
Ejemplo 2
En términos de la ecuación del plano
> | restart; |
> | with(geom3d): |
> | plane(PL2,x-y+4*z=1,[x,y,z]);form(PL2); |
> | Equation(PL2); |
> | # Para graficar un plano es necesario establecerlo como función. Para ello es necesario resolver la ecuación para z. |
> | p2:=solve(Equation(PL2),z); |
> | plot3d(p2,x=-10..10,y=-10..10); |
> | # También se puede hacer hacer la gráfica del plano de manera implicita pues su ecuación esta dada de manera implicita: |
> | with(plots): |
> | implicitplot3d(x-y+4*z-1 = 0, x=-10..10, y=-10..10,z=-10..10); |
> |
Ejemplo 3
En términos de dos puntos, el punto medio entre ellos y el vector normal. Observe que el punto medio pertenece al plano.
> | restart; |
> | with(geom3d): |
> | # Definimos los puntos : |
> | point(A,1,3,2),form(A),point(B,3,-2,2),form(B); |
> | # Definimos el punto medio |
> | midpoint(C1,A,B), form(C1); |
> | coordinates(A),coordinates(B),coordinates(C1); |
> | line(l,[A,B]), form(l); |
> | v:=ParallelVector(l); |
> | plane(PL4,[C1,v]),form(PL4); |
> | Equation(PL4,[x,y,z]); |
Ahora , dibujemos el plano y luego generemos una secuencia de estos para visualizarlos.
> | restart; |
> | with(geom3d): |
> | Planos:=seq((plane(p||i,2*x-y+2*z+i=10,[x,y,z])),i=1..5); |
> | form(p2),Equation(p3); |
> | colores:=[blue,red,pink,cyan,magenta]; |
> | draw({Planos},color=colores,style=patchnogrid); |
> |
Finalmente veamos una animación con estos planos, observe que en la secuencia hemos usado explicitamente la variable i . en el nombre del plano y en la asignacin del color.
> |
> | with(plots): dibujos:=seq(draw(p||i,color=colores[i],style=patchnogrid),i=1..5): display(dibujos,insequence=true); |
> |
Ejemplo 4
Encontrar la ecuacion del plano determinado por las rectas L1 y L2 siguientes:
> | restart; |
> | L1 := {(x+3)/3 = y/(-2), y/(-2) = (z-7)/6}; L2 := {(x+6)/1 = (y+5)/(-3),(y+5)/(-3) =(z-1)/2}; |
El punto de intersección es
> | solve( L1 union L2,{x,y,z}); |
La normal al plano es perpendicular a los vectores dirección de L1 y L2,
> | with(LinearAlgebra): |
> | n := CrossProduct(<3,-2,6>,<1,-3,-3>); |
y la ecuación del plano es,
> | u:=<x+9,y-4,z+5>; |
> | Plane:=DotProduct(n,u) = 0; |
y ordenando los términos,
> | Plane := sort(Plane,[x,y,z]); |
> | with(plots): |
> | picL1 := spacecurve(evalm([-3,0,7]+t*[3,-2,6]),t=-5..5): |
> | picL2 := spacecurve(evalm([-6,-5,1]+t*[1,-3,-3]),t=-5..5): |
> | picPlane := plot3d( solve(Plane,z), x=-20..20, y=-15..15,grid=[5,5]): |
> | display3d({picL1,picL2,picPlane}); |
Ejemplo 5
Encontrar el ángulo entre los planos x-y-z = 7 y x-2y+z=1.
Los planos son:
> | restart; |
> | with(LinearAlgebra): |
> | P1 := x-y-z=7; P2 := x-2*y+z=1; |
Los vectores normales a estos planos son:
> | n1 := Vector([1,-1,-1]); n2 := Vector([1,-2,1]); |
El ángulo "theta" entre los planos está dado por:
> | theta :=VectorAngle(n1,n2); |
el cual en grados es aproximadamente,
> | evalf(convert(theta,degrees),3); |
Página en construcción.
Profesor Fco. Javier Robles Mendoza, docente de la FCC-BUAP: