Está en la página 1de 5

Universidad de Santiago de Chile Facultad de Ciencia Departamento de Matemtica y Ciencia de la Computacin Ingeniera Matemtica.

Tercer Laboratorio de Aplicaciones a la Computacin


Profesor: Mario Fernndez Ayudante: Pascale Cuevas Alumno: Diego Carva jal.

Santiago, 27 de Octubre del 2013

Laboratorio 3

Modelo del Problema


Se presenta el siguiente problema, el cual bajo un espacio tri-dimensional 3 generado por los vectores cannicos B = {(1, 0, 0), (1, 0, 0), (1, 0, 0)}, se tienen dos vectores cualquieras u = (a, b, c) y w = (g, h, i) y un punto genricos p(q, e, r), a, b, c, g, h, i, q, e, r y u, w, p 3 , tales que puedan generar un plano cualquiera, bajo la forma vectorial
(x, y, z ) = (q, e, r) + m(a, b, c) + n(g, h, i)

o en su forma ms conocida
: Ax + By + Cz + D = 0

Donde A, B y C son escalares del vector perpendicular al plano N = (A, B, C ), 3 dependiente al plano. Luego de haber incorporado esto, nuestro objetivo principal es ver bajo una cantidad n de puntos en el espacio, cules de estos pertenecen al plano y cuales estn debajo y sobre este. Para eso introduciremos la siguiente formula que nos entrega la distancia del plano a cualquier punto perteneciente al espacio,
N d(p, ) = |Aq + Be + Cr + D| (A2 + B 2 + C 2 ) 2
1

Donde q, e y r son los escalares del punto p y A, B y C , si d(p, ) es igual a 0, entonces dicho punto pertenece al plano, en caso contrario, el punto estar afuera del plano. Bajo esta idea se cre el algoritmo que se puede observar a continuacin.

Pseudocdigo
A continuacin podemos observar el algoritmo creado para solucionar el problema mostrado ms arriba. ALGORITMO Laboratorio 3 VARIABLES: A, B, C, D, Distancia, nc :Real.

contador1 = 0, contador2 = 0, contador3 = 0, x, y, z : Real. n = 1000, f 1, f 2 : Entero.

INICIO ESCRIBIR Sea la Ecuacin del Plano Ax + By + Cz + D = 0 LEER (A, B, C, D) PARA i = 0 hasta un nmero n, hacer:
f 1 n + 1; f 2 f 1 (n);

x, de n a n; y, de n a n; z, de n a n; nc (A)2 + (B )2 + (C )2 ;
Cz +D Distancia ( Ax+By+ ); 1 nc 2

SI Distancia = 0 entonces:
Contador1 Contador1 + 1

FINSI SI Distancia > 0 entonces:


Contador2 Contador2 + 1

FINSI SI Distancia < 0 entonces:


Contador3 Contador3 + 1

FINSI FINPARA ESCRIBIR Para el plano Ax + By + Cz + D = 0, la cantidad de puntos que estn: ESCRIBIR En el plano es de: LEER (Contador1) ESCRIBIR Sobre el plano es de: LEER (Contador2) ESCRIBIR Abajo del plano es de: LEER (Contador3). FIN

Cdigo Formal en C
Por ltimo se puede observar la implementacin del algoritmo anterior, en el programa Dev C++. En dicha implementacin, se le pide al usuario ingresar valores para los 4 coecientes de la ecuacin del plano
: Ax + By + Cz + D = 0

Para luego por medio de un f or generar una cantidad n de puntos en el espacio, en las coordenadas x, y , y z que van desde los intervalos I = [n, n], despus se coloc la respectiva formula que entrega la distancia de un plano a gusto del usuario a los distintos 2

puntos que se van generando con el f or. Por ltimo se le colocaron distintas condiciones a la distancia que se obtiene, para as poder contar la cantidad de puntos que se encuentran en el plano y afuera de l.
# # # #

include <cstdlib> include <iostream> include <fstream> include <math.h> oat a, b, c, d; int n = 1000, f 1, f 2; oat cont1 = 0, cont2 = 0, cont3 = 0; oat x, y, z ; double D, nc; cout<< Sea la Ecuacin del Plano Ax + By + Cz + D = 0 <<endl; cout<< Ingrese un valor para A <<endl; cin>> a; cout<< Ingrese un valor para B <<endl; cin>> b; cout<< Ingrese un valor para C <<endl; cin>> c; cout<< Ingrese un valor para D <<endl; cin>> d; cout<<endl; for (int i = 0; i <n ; i++)
{ f 1 = n + 1; f 2 = f 1 (n); x = (n) + (rand() %f 2); y = (n) + (rand() %f 2); z = (n) + (rand() %f 2); nc = pow(a, 2) + pow(b, 2) + pow(c, 2); D = (a x + b y + c z + d)/(pow(nc, 0,5)); if (D == 0) { cont1 = cont1 + 1; } if (D > 0) { cont2 = cont2 + 1; } if (D < 0) { cont3 = cont3 + 1; } }

cout<<"Para el plano: << a << x+ << b << y + << c << z +"<< d << = 0 << en la nube de puntos <<endl; cout<< La cantidad de puntos que estn: <<endl; cout<< En el plano es de << cont1 << puntos. <<endl; cout<< Sobre el plano es de << cont2 << puntos. <<endl; cout<< Abajo del plano es de << cont3 << puntos. <<endl; }.