You are on page 1of 28

Compu 2

Teoria
Caractersticas de la POO
Hay un cierto desacuerdo sobre exactamente qu caractersticas de un mtodo de programacin o
lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las
caractersticas siguientes son las ms importantes:
Abstraccin : Cada objeto en el sistema sirve como modelo de un "agente" abstracto que
puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en
el sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las funciones
o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son
requeridas para ampliar una abstraccin.
Encapsulamiento : Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar
la cohesin de los componentes del sistema. Algunos autores confunden este concepto con
el principio de ocultacin, principalmente porque se suelen emplear conjuntamente.
Principio de ocultacin : Cada objeto est aislado del exterior, es un mdulo natural, y cada
tipo de objeto expone una interfaz a otros objetos que especifica cmo pueden interactuar
con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su
modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos
internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden
cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos
secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un
acceso directo a los datos internos del objeto de una manera controlada y limitando el grado
de abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de objetos.
Polimorfismo : comportamientos diferentes, asociados a objetos distintos, pueden compartir
el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento
correspondiente al objeto que se est usando. O dicho de otro modo, las referencias y las
colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un
comportamiento en una referencia producir el comportamiento correcto para el tipo real del
objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica
se llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios
ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la
sobrecarga de operadores de C++.
Herencia : las clases no estn aisladas, sino que se relacionan entre s, formando una
jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas
las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente
agrupando los objetos en clases y estas en rboles o enrejados que reflejan un
comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay
herencia mltiple.
Tipos de Ocultacin en C++:
Cada usuario tiene diferentes privilegios o niveles de acceso. Cada nivel de privilegio de acceso se
asocia con una palabra reservada:
private: Por defecto todo lo declarado dentro de una clase es privado (private), y slo se
puede acceder a ella con las funciones miembros declaradas en el interior de la clase.
Public: Los miembros que se declaran en la regin pblica (public) se puede acceder a
travs de cualquier objeto de la clase de igual modo que se accede a los miembros de una
estructura en C.
protected: Los miembros que se declaran en la regin protegida (protected) slo se pueden
acceder por funciones miembros declaradas dentro de la clase, por funciones miembro de
clases derivadas de esta clase.
Modelo CRC.
El paso siguiente en el anlisis de requerimientos de una aplicacin es la creacin del modelo
CRC. De acuerdo con Ambler, el modelo CRC es una coleccin de tarjetas CRC (Clase -
Responsabilidad - Colaborador). Estas tarjetas se dividen en tres secciones que contienen la
informacin del nombre de la clase, sus responsabilidades y sus colaboradores. A continuacin se
muestra cmo se distribuye esta informacin.

Una clase es cualquier persona, cosa, evento, concepto, pantalla o reporte. Las responsabilidades
de una clase son las cosas que conoce y las que realiza, sus atributos y mtodos. Los colaboradores
de una clase son las dems clases con las que trabaja en conjunto para llevar a cabo sus
responsabilidades.
En la prctica conviene tener pequeas tarjetas de cartn por ejemplo, que se llenarn y que se
mostrarn al cliente, de manera que se pueda llegar a un acuerdo sobre la validez de las
abstracciones propuestas.
Los pasos a seguir para llenar las tarjetas son los siguientes:

Encontrar clases
Encontrar responsabilidades
Definir colaboradores
Definir casos de uso (situaciones potenciales).
Disponer las tarjetas

Para encontrar las clases debemos pensar qu cosas interactan con el sistema (en nuestro caso el
usuario), y qu cosas son parte del sistema, as como las pantallas tiles a la aplicacin (un
despliegue de montaje, una entrada de parmetros, un despliegue de volumen y una pantalla
general). Una vez que las clases principales han sido encontradas se procede a buscar los atributos y
las responsabilidades, para esto se puede formular la pregunta Qu sabe la clase? y Qu hace la
clase?. Finalmente se buscan los colaboradores dentro de la lista de clases que se tenga.
Para el proyecto que estamos analizando, las tarjetas CRC que se propusieron inicialmente fueron
las siguientes:
Esta coleccin de tarjetas representa un intento inicial de encontrar abstracciones tiles para la
resolucin del problema. Podemos ver que entre otras cosas se busco una abstraccin a la Vista
Grfica, esto aparentemente podra no ser tan relevante desde un principio, pero es una buena
costumbre separar las cuestiones dependientes de la plataforma (despus veremos esto con ms
detalle), aparte de que esta abstraccin engloba la generalidad de las ventanas que podrn aparecer
posteriormente.
La definicin de casos de uso implica el estudiar qu tanta posibilidad hay de realizar las
situaciones potenciales que el cliente propone mediante las responsabilidades definidas en las
tarjetas. Por ejemplo, si una de las situaciones potenciales es la de cargar datos, podemos ver que la
abstraccin StackDeImagenes tiene prevista esa posibilidad. Esto se debe realizar para las diversas
situaciones potenciales.
Se menciona que el ltimo paso a seguir es el de la disposicin de las tarjetas, efectivamente, ya
que las tarjetas se pueden ordenar de diversas maneras, se debe de aprovechar esto para tratar de
encontrar una estructura lgica. Por ejemplo, en el caso anterior nos podemos dar cuenta que el
Stack de Imgenes ocupa una posicin importante dentro del arreglo, mientras que el histograma no
tanto. Esto nos ayudara posteriormente durante la representacin del diagrama de clases para
encontrar similitudes entre clases o relaciones entre ellas.
Hashing
En informtica, Hash se refiere a una funcin o mtodo para generar claves o llaves que
representen de manera casi unvoca a un documento, registro, archivo, etc., resumir o identificar un
dato a travs de la probabilidad, utilizando una funcin hash o algoritmo hash. Un hash es el
resultado de dicha funcin o algoritmo.
Una funcin de hash es una funcin para resumir o identificar probabilsticamente un gran
conjunto de informacin, dando como resultado un conjunto imagen finito generalmente menor (un
subconjunto de los nmeros naturales por ejemplo). Varan en los conjuntos de partida y de llegada
y en cmo afectan a la salida similitudes o patrones de la entrada. Una propiedad fundamental del
hashing es que si dos resultados de una misma funcin son diferentes, entonces las dos entradas que
generaron dichos resultados tambin lo son.
Es posible que existan claves resultantes iguales para objetos diferentes, ya que el rango de posibles
claves es mucho menor que el de posibles objetos a resumir (las claves suelen tener en torno al
centenar de bits, pero los ficheros no tienen un tamao lmite).
Son usadas en mltiples aplicaciones, como los arrays asociativos, criptografa, procesamiento de
datos y firmas digitales, entre otros. Una buena funcin de hash es una que experimenta pocas
colisiones en el conjunto esperado de entrada; es decir que se podrn identificar unvocamente las
entradas (ver funcin inyectiva).
Muchos sistemas relacionados con la seguridad informtica usan funciones o tablas hash.
El hashing es similar al indexamiento en el sentido de asociacin entre llaves y direcciones relativas
de registros
Pero difiere de los ndices en 2 cosas:
La direccin generada por Hash suele ser aleatoria (random).
o No hay una relacin aparente entre la llave y la localizacin del registro
correspondiente
El Hash permite que 2 llaves puedan producir la misma salida --> direcciones iguales, a esto
se le conoce como "colisin". Existen distintos grados de colisiones Figura 9.2
Clases y funciones friend
A veces dos clases estn tan ntimamente relacionadas que una requiere acceso total a varios atribut
os y operaciones privados de la otra. Este acceso puede garantizarse permitiendo el acceso absoluto
de forma selectiva slo a determinadas clases, denominadas amigas.
La clase InformeCuenta realiza un informe impreso del estado de una Cuenta con todos sus datos. P
ara ello necesita acceder a todos los atributos de la clase, pero stos son privados y no existen en to
dos los casos operaciones para obtener su valor.
Solucin: hacer la clase InformeCuenta amiga de Cuenta para que tenga acceso completo a sus atri
butos.
Hacer una clase amiga de otra es permitir selectivamente la violacin de las reglas de
ocultacin de informacin. La declaracin de clases amigas debe realizarse con
moderacin y slo en casos en que est plenamente justificado.
A partir de ahora la clase InformeCuenta es amiga de Cuenta y tiene
acceso completo a sus atributos privados y obviamente pblicos
class Cuenta {
char numero[20], titular[80];
float saldo, interes;
public:
friend class InformeCuenta;
void ingreso(float cantidad);
void reintegro(float cantidad);
void ingresoInteres();
int estaEnRojos();
float verSaldo();
};
Funciones amigas
La utilidad de las funciones amigas es poder acceder a los datosprivados de una o ms clases.
Una funcin declarada friend de una clase C, es una funcin no miembro de la clase, que puede
acceder a los miembros privados de la clase.
Una funcin amiga puede declararse en cualquier seccin de la clase.
No es miembro de la clase, por lo que no se ve afectada por los modificadores private y public.
Una funcin puede ser amiga de una clase y miembro de otra.
Habamos visto que uno de los pilares de la programacin orientada a objetos era la ocultacin de la
informacin. La declaracin de funciones amigas permite dotar a la POO de una mayor
flexibilidad.
existe una puerta trasera para burlar la ocultacin de la informacin?.
Se preservan la seguridad y proteccin que proporcionan las clases.
* Es la clase la que dice quines son sus amigos y pueden acceder a sus
miembros privados.
* Ninguna funcin puede autodeclararse amiga y acceder a la privacidad
de una clase sin que la propia clase tenga conocimiento de ello.
------------------------------------------------------------------------------------------------------------------------
Se ha sealado, que el mecanismo ofrecido por los especificadores de acceso public, private y
protected, junto con alguna matizacin, que veremos al referirnos a los especificadores de acceso
en la herencia, permiten mantener una cierta separacin (encapsulamiento) entre la
implementacin de una clase y su interfaz.
Lo normal es que las propiedades privadas sean accedidas de forma controlada a travs de mtodos
pblicos. Sin embargo, la invocacin a funciones tiene su costo, es mucho ms eficiente acceder
directamente a las propiedades. En ocasiones es necesario acceder a miembros de una clase desde
otra o desde muchas otras. Podemos resumir diciendo que el encapsulamiento, pese a sus innegables
ventajas, es un artificio demasiado rgido para ciertas situaciones, por lo que se ha previsto un
mecanismo que en cierta forma permite "saltrselo". Se establece mediante la palabra-clave friend
que puede aplicarse de forma global a clases y de forma individual a funciones; incluyendo entre
estas ltimas los mtodos (funciones dentro de clases).
2 friend (palabra-clave)
La palabra-clave friend es un especificador de acceso. Se usa para declarar que una funcin o
clase (la denominaremos "invitada"), tiene derecho de acceso a los miembros de la clase en que se
declara (denominada "anfitriona"), sin que la clase invitada tenga que ser miembro de la anfitriona.
En todos los otros aspectos la invitada es una funcin o clase normal en lo que se refiere a su
declaracin, definicin y mbito.
Dicho en otras palabras: friend es un especificador de mbito que "alarga" el mbito del invitado
(clase o funcin) al interior de la clase anfitriona (a todo el interior, incluyendo miembros privados
y protegidos !!).
Funciones amigas
Una funcin amiga es una funcin no miembro de una clase que puede tener acceso a las partes
privadas de una clase; se debe declarar como amiga de la clase mediante la palabra reservada friend.
Las funciones amigas se declaran situando su prototipo de funcin en la clase de la que son amiga
precedindola con la palabra reservada friend. Por ejemplo:
class cosa{
int datos;
public:
friend void cargar (cosa& t, int x);
};
void cargar(cosa& t, int x)
{
t.datos=x;
}
Como la funcin cargar se declara amiga de la clase cosa puede acceder al miembro privado datos.
Las razones fundamentales para utilizar funciones amigas es que algunas funciones necesitan
acceso privilegiado a ms de una clase. Una segunda razn es que las funciones amigas pasan todos
sus argumentos a travs de la lista de argumentos y cada valor de argumento se somete a la
conversin de asignacin.
Clases amigas
No slo puede ser una funcin, amiga de una clase, tambin una clase completa puede ser amiga de
otra clase. En este caso todas las funciones de la clase amiga pueden acceder a las partes privadas
de la otra clase.
Una clase amiga puede ser declarada antes de que pueda ser designada como amiga.
class animales;
class hombre{
public:
friend class animales;
};
class animales
{//..
};
Cada funcin miembro de animales es amiga de la clase hombre. La designacin de un amigo puede
estar en una seccin private o public de una clase.
STL
La Standard Template Library (STL) es una coleccin de estructuras de datos genricas y
algoritmos escritos en C++. STL no es la primera de tales libreras, as la mayor parte de los
compiladores de C++ disponen (o disponan) de libreras similares y, tambin, estn disponibles
varias libreras comerciales. Uno de los problemas de estas libreras es que son mutuamente
incompatibles, lo que obliga a los programadores a aprender nuevas libreras y a migrar de un
proyecto a otro y de uno a otro compilador. Sin embargo, STL ha sido adoptado por el comit ANSI
de estandarizacin del C++, lo que significa que est (o estar) soportado como una extensin ms
del lenguaje por todos los compiladores.

El diseo de la Standard Template Library es el resultado de varios aos de investigacin dirigidos
por Alexander Stepanov y Meng Lee de Hewlett-Packard, y David Musser del Rensselaer
Polytechnic Institute. Su desarrollo se inspir en otras libreras orientadas a objetos y en la
experiencia de sus creadores en lenguajes de programacin imperativos y funcionales, tales como
Ada y Scheme.

La STL proporciona una coleccin de estructuras de datos contenedoras y algoritmos genricos que
se pueden utilizar con stas. Una estructura de datos se dice que es contenedora si puede contener
instancias de otras estructuras de datos. En concreto, la STL dispone de las estructuras indicadas en
la tabla siguiente:

Contenedores
lineales
Contenedores asociativos Contenedores adaptados
Vector
vector<T>
Conjunto
set<T, Compare>
Pila
stack<Container>
Lista
vector<T>
Multiconjunto
multiset<T,
Compare>
Cola
queue<Container>
Doble cola
deque<T>
Aplicacin
map<Key, T,
Compare>
Cola de prioridad
priority_queue<Container,Compare>
Multiaplicacin
multimap<Key, T,
Compare>

Estos contenedores se dice que son genricos porque pueden contener instancias de
cualquier otro tipo de dato, para lo que utilizan de forma extensiva los templates de C++.

Los contenedores se dividen en tres categoras:

Contenedores lineales. Almacenan los objetos de forma secuencial permitiendo el acceso a
los mismos de forma secuencial y/o aleatoria en funcin de la naturaleza del contenedor.

Contenedores asociativos. En este caso cada objeto almacenado en el contenedor tiene
asociada una clave. Mediante la clave los objetos se pueden almacenar en el contenedor, o
recuperar del mismo, de forma rpida.

Contenedores adaptados. Permiten cambiar un contenedor en un nuevo contenedor
modificando la interface (mtodos pblicos y datos miembro) del primero. En la mayor parte de
los casos, el nuevo contenedor nicamente requerir un subconjunto de las capacidades que
proporciona el contenedor original.

La adopcin de STL ofrece varias ventajas:

Al ser estndar, est (o estar) disponible por todos los compiladores y plataformas. Esto
permitir utilizar la misma librera en todos los proyectos y disminuir el tiempo de aprendizaje
necesario para que los programadores cambien de proyecto.

El uso de una librera de componentes reutilizables incrementa la productividad ya que los
programadores no tienen que escribir sus propios algoritmos. Adems, utilizar una librera libre
de errores no slo reduce el tiempo de desarrollo, sino que tambin incrementa la robustez de la
aplicacin en la que se utiliza.

Las aplicaciones pueden escribirse rpidamente ya que se construyen a partir de algoritmos
eficientes y los programadores pueden seleccionar el algoritmo ms rpido para una situacin
dada.

Se incrementa la legibilidad del cdigo, lo que har que ste sea mucho ms fcil de mantener.

Proporciona su propia gestin de memoria. El almacenamiento de memoria es automtico y
porttil, as el programador ignorar problemas tales como las limitaciones del modelo de
memoria del PC.
Componentes de STL
La librera STL dispone de cinco componentes diferentes:
Algoritmos
la STL proporciona una amplia variedad de algoritmos
comunes entre los que se incluyen los de ordenacin, bsqueda
y algoritmos numricos. Los algoritmos se pueden utilizar con
estructuras de datos de la librera, vectores, o estructuras de
datos definidas por el usuario y provistas de iteradores
Iteradores una generalizacin del puntero que permite al programador
visitar cada elemento de una estructura de datos contenedora.
contenedores estructuras de datos que contienen, y permiten manipular, otras
estructuras de datos.
funciones objeto varios de los algoritmos proporcionados por la STL, permiten
pasar una funcin al algoritmo para adecuar su funcionalidad.
Las funciones objeto son una generalizacin del puntero a la
funcin del C
adaptadores toman un componente y le proporciona una interface diferente.
Esto permite transformar una estructura de dato en otra que
tiene las mismas facilidades pero cuya interface proporciona
un conjunto de operaciones diferente.
Algoritmos genricos
Habitualmente los programadores escriben cdigo que frecuentemente reescriben para
utilizarlo en otros programas, ya que en stos se emplean una y otra vez numerosos algoritmos
comunes (algoritmos de bsqueda, algoritmos de ordenacin,...) pero que deben adaptarse a cada
problema. Es obvio que est es una tarea repetitiva que debe ser eliminada, para lo que debemos
producir algoritmos genricos que puedan ser utilizados en una amplia variedad de situaciones.
As, existe una gran cantidad de libreras de cdigo reutilizable. Los ejemplos ms comunes
y extendidos son las libreras de funciones matemticas y las de funciones de manipulacin de
cadenas de caracteres. De hecho, los compiladores proporcionan de forma habitual este tipo de
libreras. La cuestin es, por qu ste tipo de libreras tiene xito mientras que otro tipo de libreras
no.
La razn es que tanto las funciones matemticas como las de manipulacin de cadenas de
caracteres trabajan con un nmero muy limitado de tipos de datos. La mayor parte de las funciones
matemticas con enteros y valores de punto flotante y las funciones de manipulacin de cadenas de
caracteres con una representacin de stas. De manera, que al estar limitado el rango de tipos a
utilizar el cdigo fuente de las funciones es fcilmente abordable. Los algoritmos no tienen que
rescribirse para trabajar con otros tipos de datos, ya que no es aplicable ningn otro tipo de dato.
Por tanto, podemos concluir que para producir algoritmos genricos debemos ser capaces de separar
los algoritmos de la representacin de datos que manipulan.
Iteradores
Una de las operaciones ms comunes sobre una estructura de datos contenedora es la de
recorrer todos o algunos de los elementos almacenados en ella segn un orden predefinido. Un
iterador es un objeto que puede retornar por turno una referencia a cada uno de los elementos de un
contenedor.
Recursividad
Se dice que un procedimiento es recursivo, si en parte est formado por s mismo o se define en
funcin de s mismo.
Una composicin P compuesta de un conjunto de sentencias S (que pueden contener a P) y P.
Expresin simblica:
P = P [S, P]
Propiedades
Se reserva espacio para almacenar el nuevo conjunto completo de las nuevas variables.
Hay variables con valores "presentes" y "pendientes".
La profundidad de la recursin debe ser finita, y adems pequea.
Estn sujetas a una condicin de salida B.
En smbolos:
Funcin P = if B then P[S,P] else fin;
Buena y mala recursividad
Una solucin recursiva puede no ser la mejor manera de resolver el problema.
Siempre que pueda ser implementado iterativo, debe hacerse as.
Esquemas donde hay slo una llamada P al final o al inicio de la composicin, que se puede
representar de la siguiente manera:
Funcin P = if (B) S else P
Funcin P = S; if (B) P
Funcin P = [inicializar; while(B) S]
Estos esquemas estn asociados con funciones elementales de recurrencia.
Divide y Vencers
El esquema divide y vencers es una tcnica para resolver problemas que consiste en dividir el
problema original en subproblemas (de menor tamao), resolver los subproblemas y finalmente
combinar las soluciones de los subproblemas para dar una solucin al problema original.
Si los subproblemas son similares al problema original entonces puede utilizarse el mismo
procedimiento para resolver los subproblemas recursivamente.
En cada nivel del procedimiento este paradigma consta de los siguientes tres pasos:
1. Dividir el problema en subproblemas.
2. Resolver cada uno de los subproblemas.
3. Combinar las soluciones de los subproblemas para obtener la solucin del problema
original.
Para que esta tcnica funcione deben cumplirse los dos requisitos siguientes:
1. El primero es que los subproblemas deben ser ms simples y sencillos que el problema
original.
2. El segundo es que despus de un nmero finito de subdivisiones debe encontrarse un
subproblema que pueda resolverse de manera directa.
Bsqueda Exhaustiva
A veces parece que no hay mejor manera de resolver un problema que tratando todas las posibles
soluciones. Esta aproximacin es llamada Bsqueda Exhaustiva, casi siempre es lenta, pero a veces
es lo nico que se puede hacer.
Tambin a veces es til plantear un problema como Bsqueda Exhaustiva y a partir de ah encontrar
una mejor solucin.
Otro uso prctico de la Bsqueda Exhaustiva es resolver un problema con un tamao de datos de
entrada lo suficientemente pequeo.
La mayora de los problemas de Bsqueda Exhaustiva pueden ser reducidos a generar objetos de
combinatoria, como por ejemplo cadenas de caracteres, permutaciones (reordenaciones de objetos)
y subconjuntos.
Algoritmos de rastreo inverso
Encontrar solucin a problemas sin seguir una regla especfica de clculo, sino por ensayo y error
(Bsqueda exhaustiva).
Descomposicin del tanteo:
Tareas parciales que se puedan expresar recursivamente.
Se explora un nmero finito de subtareas:
Hay incongruencias Rastreo inverso.
Suprime solucin ms reciente.
Ensayo de una nueva posibilidad.
Es til donde hay muchas posibilidades iniciales, pero quedan pocas tras aplicar reglas posteriores.
ENLACE TEMPRANO VS TARDIO
Existen dos terminos que son comunmente usado cuando se discute sonre programacion orientada a
objetos: "Enlace temprano y Enlace Tardio" ( del ingles "early binding and late binding" ). Relativo
a C++, estos terminos se refieren a eventos que occurren en tiempo de compilacion y eventos que
ocurren en tiempo de ejecucion, respectivamente.
Enlace temprano significa que una llamada a una funcion es resuelta en tiempo de compilacion. Eso
es, toda la informacion necesaria para llamar a una funcion es conocida cuando el programa es
compilado. Ejemplos de enlace temprano incluyen llamadas a funciones estandar, llamadas a
funciones sobrecargadas, y llamadas a funciones de operadores sobrecargados. La principal ventaja
de enlace temprano es la eficiencia -- es rapido, y a menudo requiere menos memoria. Su desventaja
es falta de flexibilidad.
Enlace tardio significa que una llamada a funcion es resuelta en tiempo de compilacion. Ademas,
precisamente a que llamada a funcion es determinada "al vuelo" mientras el programa se ejecuta.
Enlace tardio es logrado en C++ a traves del suo de funciones virtuales y tipos derivados. La
ventaja de enlace tardio es que permite gran flexibilidad. Puede ser usada para soportar una
interface comun, mientras que se permite a varios objetos utilizar esa interface para definir sus
propias implementaciones. Por ranto, puede ser usada para ayudar a crear librerias de clases, las
cuales pueden ser reusadas y extendidas. Siu desventaja, sin embargo, es una ligera perdida de
velocidad de ejecucion.
Geometra bidimensional - Transformaciones
Transformaciones 2D
Coordenadas homogneas
Composicin de transformaciones
Muchos problemas de ingeniera requieren modelos bidimensionales (2D)
La visualizacin de los modelos requiere:
Un sistema grfico
La creacin de entidades geomtricas:
Lneas, crculos, rectngulos, etc
La aplicacin de transformaciones a estas entidades:
Transformaciones de escalamiento, rotacin, traslacin...
Transformaciones geomtricas
Permiten la creacin de vistas y modelos
Representacin
Cmo representar un objeto 2D?
Mediante una especificacin numrica
Dentro de un sistema de coordenadas, por ej. las cartesianas x,y
Este sistema permite realizar transformaciones para:
Trasladar objetos
Rotar
.....
Punto: elemento bsico para la representacin de objetos.
Todos los objetos pueden ser representados como un conjunto de puntos.
Y
X
Y
X
Desplazamiento 40,20
Rotacin 45
Y
X
Y
X
Escala 50%
Ejemplo:
Una lnea representada por sus puntos extremos
Un tringulo representado por una matriz de 3x2
Escalamiento
Escalamiento
x= sx x
y= sy y
Notacin matricial
P=S P
Rotacin
Rotacin
x=x cos(a) y sin(a)
y=x sin(a) + y cos(a)
Notacin matricial
Traslacin
Traslacin
x = x + dx
y = y + dy
Notacin matricial
Coordenadas homogneas
Todo punto 2D (P1) puede ser representado por cualquier punto a lo largo del rayo 3D
(llamado espacio homogneo)
Las coordenadas ordinarias corresponden al punto donde z=1
1
1
1
]
1

3 3
2 2
1 1
y x
y x
y x
M
tringulo
P1(x1,y1)
P2(x2,y2)
P3(x3,y3)
1
]
1

1
]
1

1
]
1

y
x
s
s
y
x
y
x
0
0
'
'
Sx=2
Sy=1
Sx=5/2
Sy=3/2
1
]
1

1
]
1

1
]
1

y
x
a a
a a
y
x
) cos( ) sin(
) sin( ) cos(
'
'
a
Usando coordenadas homogneas cada punto pasa a ser:
Donde
x=xh/h
x=xh/h
h igual a 0 no est permitido
Para nuestros casos h=1
Reescribiendo las transformaciones en coordenadas homogneas
Nota: Transformaciones respecto al origen
Composicin de transformaciones
Cmo aplicar ms de una transformacin (M1,M2, ...Mn) sobre un conjunto de puntos (P)?
Aplicacin de la primera transformacin:
P1=M1*P
Aplicacin de la segunda transformacin
P2=M2*P1
P2=M2*(M1*P)
P2=(M2*M1)*P ; definiendo M21= M2*M1
P2=M21*P
Aplicando la n-sima transformacin:
Pn=(Mn*....* M3*M2*M1)*P = Mn1* P
1
1
1
]
1

1 0 0
1 0
0 1
) , (
y
x
y x
d
d
d d T
1
1
1
]
1

1 0 0
0 0
0 0
) , (
y
x
y x
s
s
s s S
1
1
1
]
1

1 0 0
0 ) cos( ) sin(
0 ) sin( ) cos(
) ( a a
a a
a R
1
1
1
]
1

1
]
1

h
y
x
y
x
h
h
Observacin: El orden en que se aplican las transformaciones ES importante
Se puede demostrar que:
Indicar la composicin de transformaciones
Un escalamiento en torno a un punto (x,y) distinto al origen.
Una rotacin en torno a un punto (x,y) distinto del origen.
Geometra bidimensional: reflexin
) * , * ( ) , ( ) , (
) ( ) ( ) (
) , ( ) , ( ) , (
1 2 1 2 1 1 2 2
2 1 2 1 2 2 1 1
y y x x y x y x
y y x x y x y x
s s s s S s s S s s S
b a R b R a R
d d d d T d d T d d T

+
+ +
Geometra bidimensional: Shearing
Caso tridimensional
Comandos OpenGL
Matriz de visualizacin
1
1
1
1
]
1

1 0 0 0
0 0 0
0 0 0
0 0 0
z
y
x
S
S
S Escalado
1
1
1
1
]
1

1 0 0 0
1 0 0
0 1 0
0 0 1
z
y
x
T
T
T
Traslacin
1
1
1
1
]
1

1 0 0 0
0 ) cos( ) sin( 0
0 ) sin( ) cos( 0
0 0 0 1
a a
a a
Rotacin eje x
1
1
1
1
]
1

1 0 0 0
0 ) cos( 0 ) sin(
0 0 1 0
0 ) sin( 0 ) cos(
a a
a a
Rotacin eje y
1
1
1
1
]
1


1 0 0 0
0 1 0 0
0 0 ) cos( ) sin(
0 0 ) sin( ) cos(
a a
a a
Rotacin eje z
glMatrixMode(GL_MODELVIEW)
Funciones de transformacin
glScalef(GLfloat sx, GLfloat sy, GLfloat sz)
glTranslatef(GLfloat tx, GLfloat ty, GLfloat tz)
glRotatef(GLfloat angulo, GLfloat sx, GLfloat sy, GLfloat sz)
Vistas 3D
Objetivos
Ver un modelo geomtrico en cualquier orientacin transformndolo en el espacio 3D
Controlar la ubicacin en el espacio 3D en el que se observa el modelo.
Recortar porciones del modelo que quedan fuera de escena.
Manipular la matriz que controla la transformacin de vista y proyecta el modelo en la
pantalla.
Combinar mltiples transformaciones para simular sistemas sofisticados en movimientos,
tales como el sistema solar o un robot articulado.
Invertir o simular las operaciones de procesamiento
Coordenadas de objetos 3D vs posiciones de pixels
Transformaciones: son representadas por producto de matrices, incluye operaciones de
modelado, visualizacin y proyeccin.
Clipping:Al ser dibujada la imagen en una ventana rectangular, los objetos o parte de los
objetos que caen fuera de ella deben ser recortados.
Transformaciones de viewport: establece la correspondencia entre las coordenadas y los
pixels en la pantalla.
Analoga de la cmara
Viewing: Apuntar a lo que se desea fotografiar.
Modeling: Ajustar la escena en la composicin.
Projection: Se elije el lente y se ajusta el zoom.
Viewport: Se determina el tamao final de la impresin de la foto.
Transformacin de vertices
Las transformaciones de vista, modelado y proyeccin, se componen en una matriz 4x4 que
entonces multiplica a cada uno de los vrtices de la escena.
V = M v
Transformacin de Vista
Se logra con la instruccin:
Void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble
centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
Posicin de la cmara
Punto de referencia
Direccin arriba
Transformacin del Modelo
Utilizadas para posicionar y orientar el modelo, ej rotar, trasladar o escalar.
Sentencias:
void glTranslate{fd}(TYPE x, TYPE y, TYPE z);
void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);
void glScale{fd}(TYPE x, TYPE y, TYPE z);
Transf. de proyeccin
Determina cmo se proyectar el objeto en la pantalla.
Dos tipos bsicos:
Perspectiva: hace que los objetos ms lejanos se vean ms pequeos.
Ortogonal: mantiene las dimensiones reales de los objetos.
Proyeccin en perspectiva
glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near,
GLdouble far).
Antes de utilizarse deben indicarse en el reshape() el comando glMatrixMode() con el argumento
GL_PROYECTION. Esto hace que las prximas transformaciones afecten a la matriz de
proyeccin. Para que afecte al modelo se debe indicar glMatrixMode con el argumento
GL_MODELVIEW. El comando glLoadIdentity() inicializa la matriz de transformacin actual.
Comunmente se usa la sentencia:
gluPerspective (GLdouble fovy, aspect, zNear, zFar)
Genera un volumen de proyeccin equivalente, especificando el plano de recorte cercano, el ngulo
de vista en la direccin y y la relacin de aspecto x/y.
El valor de fovy da el ngulo del campo de vista en el plano yz.
Proyeccin ortogonal
El volumen de visualizacin es un paraleleppedo.
No cambia el tamao al objeto.
glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near,
GLdouble far)
Transf. viewport
En la analoga con la cmara corresponde al tamao de revelado de la foto.
Para la representacin es equivalente a la regin rectangular donde se dibujar.
glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
El primer argumento indica la posicin inicial del primer punto de la pantalla y luego se indica el
ancho y alto del area disponible de la pantalla.
Interpolacin
Interpolacin es, a partir de una serie de puntos, obtener una ecuacin cuya curva pase por todos
ellos o lo ms cerca posible.
Interpolacin de Newton (Con diferencias divididas)
El mtodo de interpolacin de Newton es un poco ms complicado que el de Lagrange, pero como
todo lo de Newton, es mas preciso.
Por supuesto que este mtodo tiene todo un desarrollo terico para llegar a la ecuacin general, pero
es demasiado largo y para fines prcticos lo que sirve al final es solo la forma de realizar el mtodo
y como aplicarlo.
La ecuacin general para este mtodo es la siguiente:
Lo importante de este mtodo o la parte interesante es el clculo de las b's.
Aqu es donde el mtodo toma su nombre de diferencias divididas. Hay distintas formas de hacerlo,
pero una de las que ms se recomiendan porque es clara y fcil es la siguiente:
Primero se ponen en 2 columnas acomodados de tal modo que se correspondan todas las x y las f(x)
que se desean interpolar.
Despus se hacen a su lado tantas columnas como puntos son -1, as si son 5 puntos se hacen 4
columnas. As para el caso de tener 5 puntos el acomodo quedara ms o menos as:
X f(x) f(xi,xi) f(xi,xi,xk) ... ...
x0 f(x0) f(x1,x0) f(x2,x1,x0)
x1 f(x1) f(x2,x1) f(x3,x2,x1,x0)
x2 f(x2) f(x3,x2) f(x3,x2,x1) f(x4,x3,x2,x1,x0)
x3 f(x3) f(x4,x3,x2,x1)
x4 f(x4) f(x4,x3) f(x4,x3,x2)

La notacin f(x1,x0) se interpreta de la siguiente manera:
, as como f(x2,x1) es: , esto para b1.
Para b2 la notacin f(x2,x1,x0) es: y as se van obteniendo
sucesivamente todos los valores de b que son los que quedan en la primera celda de arriba para
abajo en todas las columnas (en las que aparece la leyenda bn cuando pasas el mouse en el ejemplo
de arriba).
Con este ejemplo se ver mas claramente de lo que se habla:
x f(x) _ _ _
-3 2 _
7 -1 _
17 9 _ _ _
27 11 _
Los valores de b se encuentran en las celdas que tienen borde rojo.
Una vez obtenidos dichos valores simplemente se sustituyen en la ecuacin general, se simplifica
dicha ecuacin y se tiene una cuya curva pasa casi exactamente por todos los puntos especificados.
Interpolacin de Lagrange
En el mtodo de Lagrange, se utiliza una ecuacin que aunque se va alargando conforme mas
puntos se quieran unir, es siempre del mismo tamao y de la misma forma por lo que una de sus
ventajas es que es mas claro y fcil de hacer.
Procedimiento:
Primero se deben tener ya los puntos que se quieren interpolar:
Despus se empieza a rellenar la ecuacin de lagrange comenzando por el primer punto a tomarlo
como el punto o sea x0 de referencia.
El mtodo de Lagrange se compone por una serie de sumandos, cada uno se "arma" tomando como
referencia cada uno de los puntos a interpolar empezando desde el primero, si se analiza la ecuacin
de arriba, se puede ver como es que se forma cada sumando, en el caso de arriba con el primer
punto como referencia.
As el segundo sumando quedara de la siguiente manera:
Como se puede observar, el tomar un punto de referencia significa ignorarlo en el numerador y
utilizarlo en el denominador y utilizar su f(x) para multiplicar al final.
Al final, si se tienen n nmeros para unir, la ecuacin resultante tendr como grado n-1 as si se
quieren unir 3 puntos, la ecuacin que resulta tiene grado 2.
Faltan 2 puntos, ahora se toma como referencia el x2 y la ecuacin va quedando de la siguiente
manera:
Por ultimo se toma como referencia el siguiente punto que es x3 y se termina de escribir la ecuacin
que queda de la siguiente manera:
Ahora solo se simplifican los trminos y se termina la ecuacin.
Conclusin:
El polinomio de interpolacin de Lagrange, simplemente es una reformulacin del polinomio de
Newton que evita los clculos de las diferencias divididas.
En resumen, para los casos en donde el orden del polinomio se desconozca, el mtodo de Newton
tiene ventajas debido a que profundiza en el comportamiento de las diferentes frmulas de orden
superior. Adems la aproximacin del error dada por la ecuacin, en general puede integrarse
fcilmente en los clculos de Newton ya que la aproximacin usa una diferencia dividida. De esta
forma, desde el punto de vista de clculo, a menudo, se prefiere el mtodo de Newton.
Cuando se va a llevar a cabo slo una interpolacin, ambos mtodos, el de Newton y el de Lagrange
requieren de un esfuerzo de clculo similar. Sin embargo, la versin de Lagrange es un poco ms
fcil de programar. Tambin existen casos en donde la forma de Newton es ms susceptible a los
errores de redondeo. Debido a esto y a que no se requiere calcular y almacenar diferencias
divididas, la forma de Lagrange se usa, a menudo, cuando el orden del polinomio se conoce a
priori.
Aproximacin por mnimos cuadrados
Es una tcnica de optimizacin matemtica que, dada una serie de mediciones, intenta encontrar una
funcin que se aproxime a los datos (un "mejor ajuste"). Intenta minimizar la suma de cuadrados de
las diferencias ordenadas (llamadas residuos) entre los puntos generados por la funcin y los
correspondientes en los datos. Especficamente, se llama mnimos cuadrados promedio (LMS)
cuando el nmero de datos medidos es 1 y se usa el mtodo de descenso por gradiente para
minimizar el residuo cuadrado. Se sabe que LMS minimiza el residuo cuadrado esperado, con el
mnimo de operaciones (por iteracin). Pero requiere un gran nmero de iteraciones para converger.
Un requisito implcito para que funcione el mtodo de mnimos cuadrados es que los errores de
cada medida estn distribuidos de forma aleatoria. El teorema de Gauss-Markov prueba que los
estimadores mnimos cuadrticos carecen de sesgo y que el muestreo de datos no tiene que
ajustarse, por ejemplo, a una distribucin normal. Tambin es importante que los datos recogidos
estn bien escogidos, para que permitan visibilidad en las variables que han de ser resueltas.
La tcnica de mnimos cuadrados se usa comnmente en el ajuste de curvas. Muchos otros
problemas de optimizacin pueden expresarse tambin en forma de mnimos cuadrados,
minimizando la energa o maximizando la entropa.
Resolucin de SEL
Mtodos Directos
Solucin en un nmero determinado de pasos
Solucin aproximada debido a errores de redondeo
Mtodos Iterativos
Solucin del sistema por aproximaciones sucesivas
Solucin aproximada por errores de redondeo y truncamiento
Mtodos Directos
Gauss
Gauss Jordan
Crout / Descomposicin LU
Mtodos Iterativos
Jacobi
Gauss Seidel
Mtodo de Gauss
Consiste en que, a partir de un sistema
Ax=b, se debe obtener otro sistema Ax = b equivalente, tal que A sea una matriz triangular
superior. De esta forma, el sistema de ecuaciones puede resolverse fcilmente por sustitucin hacia
atrs.
En forma matricial:
Procedimiento
1. Se elige una incgnita con coeficiente no nulo (pivote). Para el primer ejemplo, a11.
2. Se realiza eliminacin hacia adelante: a la segunda ecuacin se le resta la primera
multiplicada por a21/a11, a la tercera se le resta la primera multiplicada por a31/a11, y as
hasta llegar a la ltima, en la que se resta la primera ecuacin multiplicada por an1/a11
Ventajas
Directo, sencillo y pedaggico
Estable (an ms combinado con pivoteo)
50% ms rpido que Gauss Jordan
Desventajas
Puede ralentizarse con sistemas grandes o dispersos
Los elementos del lado derecho de la ecuacin deben conocerse con anterioridad
Mtodo de Gauss Jordan
Similar al de Gauss, pero en lugar de realizar sustitucin hacia atrs, se realiza eliminacin hacia
atrs, esto es, se repite el proceso inverso para obtener una matriz cuyos nicos elementos no nulos
se encuentran sobre la diagonal principal. En cada paso se divide por el elemento no nulo resultante
para obtener en la columna de los trminos independientes el resultado final
En forma matricial:
Ventajas
Directo, sencillo y pedaggico
Estable (an ms combinado con pivoteo)
Permite resolver conjuntos mltiples de ecuaciones
Con pequeas modificaciones permite calcular A-1
Desventajas
Puede ralentizarse con sistemas grandes o dispersos
Los elementos del lado derecho de la ecuacin deben conocerse con anterioridad
Si no se necesita A-1, es tres veces ms lento que la descomposicin LU
Pivoteo
Atencin!!! Los mtodos anteriores no funcionan si el primer coeficiente de la primera fila es nulo o
algn elemento de la diagonal se anula en el proceso de solucin. Por esto se utiliza el Pivoteo
Qu es el Pivoteo?

,
_

n
x
x
x
x
' | 1 0 0 0
' | 0 1 0 0
' | 0 0 1 0
' | 0 0 1
3
2
1

,
_

) ( ) (
) 3 (
3
) 3 (
3
) 3 (
33
) 2 (
2
) 2 (
2
) 2 (
23
) 2 (
22
) 1 (
1
) 1 (
1
) 1 (
12
) 1 (
11
| 0 0 0
| 0 0
| 0
|
n
n
n
nn
n
n
n
b a
b a a
b a a a
b a a a


Es un mtodo para cambiar el orden secuencial de las ecuaciones
Cul es el propsito del Pivoteo?
1. Evitar que los coeficientes de la diagonal principal se anulen, haciendo posible continuar
con el clculo
2. Hacer que cada coeficiente de la diagonal tenga magnitud mayor que cualquiera por debajo
de l, aumentando la exactitud de los clculos y disminuyendo el error.
Tipos de Pivoteo
Pivoteo Parcial
Pivoteo Total
Los algoritmos de Gauss y Gauss-Jordan pueden dar lugar a resultados errneos fcilmente. Por
ejemplo, analicemos el siguiente sistema de ecuaciones, en el que es un nmero muy pequeo
pero distinto de cero:
Al aplicar el algoritmo gaussiano se obtiene el siguiente sistema triangular superior:
y la solucin es:
En el computador, si es suficientemente pequeo, los trminos y se computarn
como un mismo nmero, por lo que y . Sin embargo, la solucin correcta es:
Tenemos entonces que la solucin calculada es exacta para x
2
pero extremadamente inexacta para
x
1
.
El problema anterior no radica en la pequeez del trmino a
ii
, sino en su pequeez relativa respecto
de los otros elementos de su fila. La conclusin que podemos extraer es que un buen algoritmo debe
incluir el intercambio de ecuaciones cuando las circunstancias as lo exijan. Un algoritmo que
cumple este requisito es el denominado eliminacin gaussiana con pivoteo de filas escaladas.
Mtodo de Crout
Descomposicin LU
Consiste en que, a partir de un sistema Ax=b, conseguir otro sistema LUx = b equivalente, tal que
A sea igual al producto de dos matrices triangulares L y U. As, el clculo se simplifica al resolver
dos sistemas de ecuaciones cuya complejidad es menor que la del sistema original.
Procedimiento
1. Si A es una matriz cuadrada de orden n, entonces puede ser descompuesta en el
producto de dos matrices triangulares L y U:
L: matriz triangular inferior con diagonal unitaria
U: matriz triangular superior
2. Resolver el sistema Ax=b equivale a resolver el sistema LUx=b
3. Por tanto, sabiendo que Ux=y, se resuelve entonces Ly=b (obsrvese la simplificacin al
ser L una matriz triangular inferior).
4. Una vez obtenido y, se prosigue con el clculo de Ux=y para encontrar x, es decir, las
incgnitas originales.
Ventajas
Rpido y eficiente.
Estable.
til al calcular el mismo SEL con distintos conjuntos de trminos independientes.
No es necesario conocer con anterioridad los elementos del lado derecho de la ecuacin.
Desventajas
Ms complejo que los mtodos anteriores.
No todas las matrices poseen descomposicin LU (Condicin suficiente: que A sea
diagonal dominante).
Mtodos Iterativos
Mtodo de Jacobi
Consiste en la determinacin de un valor inicial a partir del cual, mediante una tcnica sistemtica,
se obtiene una mejor aproximacin a la solucin del sistema. Dicha aproximacin continua hasta la
convergencia de la solucin dentro de alguna tolerancia de error previamente especificada.
Mtodo de Gauss - Seidel

,
_

nn n
n
a a
a a



1
1 11
A

,
_


1
0 1
0 0 1
0 0 0 1
1 , 2 1
2 , 1 1 , 1
21
n n n n
n n
l l l
l l
l

,
_

nn
n n n n
n n
n n
u
u u
u u u
u u u u
0 0 0
0 0
0
, 1 1 , 1
2 1 , 2 22
1 1 , 1 11 11

U
Similar al mtodo de Jacobi, slo que en dicho mtodo se utilizan las aproximaciones xj(k-1) para
calcular los valores de xj(k). En cambio, este mtodo propone calcular xj(k) utilizando x1(k),
x2(k), ... , xj-1(k) ya que se supone que, al ser calculadas ms recientemente, son mejores
aproximaciones de xj.
Ventajas
Menor error.
Eficiente para sistemas grandes y/o dispersos.
tiles en la solucin de problemas ingenieriles (dominancia diagonal).
Desventajas
No siempre converge a la solucin exacta o converge muy lentamente para sistemas
pequeos.
Confiable slo para sistemas de dominancia diagonal.
Problemas Particulares
Problemas sin solucin nica
El nmero de ecuaciones no es igual al nmero de incgnitas.
Una o varias ecuaciones se obtienen por combinacin lineal del resto.
Problemas mal condicionados
Un ligero cambio de los coeficientes de la matriz provoca cambios significativos en la
solucin.
Los elementos de la diagonal de la matriz tienden a ser menores que los elementos que no
pertenecen a la diagonal.
Tests de inversas y determinantes.
Aproximacin de Raices
1. BISECCIN
Este es uno de los mtodos ms sencillos que se conocen. Dado un intervalo que contiene una raz, lo dividimos en dos
partes iguales y tomamos para la prxima iteracin el subintervalo que contenga la raz. Posteriormente dividimos
nuevamente en dos el intervalo obtenido antes y nos quedamos con el que contenga la raz. Esto lo realizamos hasta el
intervalo que nos quede sea tan pequeo que el error sea despreciable.
2. REGLA FALSA
Y... si no dividimos el intervalo en partes iguales? No sera mejor que el punto de divisin del intervalo estuviese ms
cerca de la raz. Podemos suponer que la raz estar ms cerca del extremo donde la funcin alcance un menor valor. La
propuesta en este caso es trazar una recta que intercepte a la funcin en ambos extremos del intervalo y tomar como
punto de divisin el cruce de esta con el eje de las abscisas.
3. REGLA FALSA MODIFICADA
Se propone construir la recta con la mitad del valor de la funcin en el extremo que se repita ms de dos veces seguidas.
Es decir, al construir la recta tomaremos el nuevo extremo, calculado en la iteracin anterior, y el valor de la funcin en
l para obtener el primer punto de la recta. El segundo punto de la recta ser el otro extremo, el que se repite por
segunda vez, y la mitad del valor de la funcin en este.
4. SECANTES
Siguiendo con la recta y su interseccin con el eje x, ahora cambiaremos las condiciones para la seleccin de los puntos
que la definen. Estos ya no deben encerrar necesariamente una raz de la funcin que analizamos. Trazamos una recta
entre estos dos puntos iniciales y encontramos la interseccin con el eje de las abscisas. Con este nuevo punto y el
segundo de los anteriormente dados, trazamos la prxima recta.
5. NEWTON - RAPHSON
Partiendo de un nico punto trazaremos una recta que pase por ste y que tenga pendiente igual a la de la funcin en
este punto. Luego encontramos la nueva aproximacin a la raz en la interseccin de la recta y el eje de las abscisas.
Tambin podemos ver este proceso como la utilizacin de aproximaciones a la funcin en forma de series de Taylor.
Seguimos el comportamiento de la funcin con otras aproximadas que nos llevarn poco a poco hacia la raz.
6. VON MISES
Este mtodo surge como una alternativa interesante para solucionar el problema de la divergencia en el mtodo de
Newton-Raphson. La propuesta es trazar todas las rectas con la misma pendiente. Esta pendiente puede ser fijada de
antemano o se puede tomar la pendiente de la funcin en el punto de partida.
7. SUSTITUCIONES SUCESIVAS
Este mtodo da una gran flexibilidad en la seleccin de la frmula de recurrencia. El esquema consiste en obtener una
frmula de recurrencia operando matemticamente sobre la funcin a la que le buscamos la raz. Una vez obtenida esta
frmula de recurrencia, que deber satisfacer algunos requisitos, la utilizamos en el algoritmo comn a todos lo
mtodos.

You might also like