Mercurial > hg > thesis
changeset 3:ee99933b606f
Progress
author | Jordi Gutiérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Wed, 28 Apr 2010 14:26:43 -0500 |
parents | b9f0f539805a |
children | 6f046bc56558 |
files | code.tex preamble.tex rbf-ddm.tex thesis.bib thesis.tex |
diffstat | 5 files changed, 76 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/code.tex +++ b/code.tex @@ -17,11 +17,11 @@ entre numeristas donde C++ no tiene una tradici\'on tan extensa como C o Fortran. Estoy hablando sobre la programaci\'on orientada a objetos y algunas otras cualidades m\'as avanzadas de C++, como excepciones, -plantillas, manejo autom\'atico de memoria, espacios nominales -\footnote{En ingl\'es, \emph{namespaces}.} y otras abstracciones que en mi -opini\'on facilitan el desarrollo de software. Justificar\'e +formularios, manejo autom\'atico de memoria, espacios nominales +\footnote{En ingl\'es, \emph{namespaces}.} y otras abstracciones que +en mi opini\'on facilitan el desarrollo de software. Justificar\'e brevemente la elecci\'on de haber usado algunas de estas cualidades de -C++, pues he visto que todas ellas hayan sido criticadas por +C++, pues hemos visto que todas ellas hayan sido criticadas por numeristas. \begin{description} @@ -47,10 +47,20 @@ opcionalmente se pueden hacer invisibles dentro de ciertos contextos y no complican en nada la elaboraci\'on del c\'odigo. - \item[Planillas:]\footnote{En ingl\'es, \emph{templates}} Tengo - varias clases que est\'an en planillas, lo cual resulta en que es + \item[Formularios:]\footnote{En ingl\'es, \emph{templates}} Tengo + varias clases que est\'an en formularios, lo cual resulta en que es muy f\'acil cambiar la FBR de la definici\'o o inclusive agregar otras FBRs que no hayamos ya definido. + + \item[Apuntadores inteligentes:] Para simplificar en el c\'odigo el + manejo de memoria y preservar el polimorfismo propio de C++, hemos + recurrido al apuntador inteligente \vb{shared_ptr} de la biblioteca + Boost. Estos apuntadores implantan un conteo de referencias de tal + manera que cuando ya no hay referencias al objeto apuntado, + autom\'aticamente se reclama la memoria alojada con una reducci\'on + despreciable del desempe\~no del c\'odigo. Usamos exclusivamente en + el c\'odigo este tipo de apuntadores en vez de los apuntadores + b\'asicos de C. \end{description} @@ -115,13 +125,13 @@ sencilla, tambi\'en los \'indices comienzan desde $1$, no $0$ como en C++, y es posible rebanar matrices y vectores respetando ciertas restricciones. Las clases m\'as importantes de este espacio nominal -son \vb{linalg::matrix! y \vb{linalg::vector}, por supuesto +son \vb{linalg::matrix} y \vb{linalg::vector}, por supuesto compatibles entre s\'i. Todas las funciones aritm\'eticas b\'asicas de \'algebra lineal que se puedan esperar se encuentran aqu\'i. Todas est\'an implantadas por medio de BLAS\footnote{BLAS son las siglas en ingl\'es de ``Subsistema B\'asico de \'Algebra Lineal'', que es una interfase estandarizada que define funciones gaxpy y - saxpy\cite{Golub/Van-Loan} para aritm\'etica de matrices y + saxpy\cite{Golub/Van-Loan:1996} para aritm\'etica de matrices y vectores.} tal como lo implanta la GSL. Para las funciones m\'as avanzadas que ya no caen dentro de BLAS, @@ -134,7 +144,7 @@ decir, si ya se calcul\'o una vez la inversa, llamadas sucesivas a \vb{inv()} usar\'an la misma factorizaci\'on. - Como argumento opcional, se puede dar un vector $b$ como par\'ametro +` Como argumento opcional, se puede dar un vector $b$ como par\'ametro a esta funci\'on para resolver el sistema lineal $A\vec{x} = \vec{b}$. Normalmente, \'esta es la \'unica forma de esta funci\'on que se utiliza; nunca directamente la matriz inversa. @@ -212,16 +222,16 @@ \vb{bvp::realfunc}, una clase que detallaremos m\'as adelante. En efecto, puesto que una funci\'on radial es una funci\'on $\varphi : \RR^n \to \RR$, la herencia es razonable. Muchas clases que se -detallar\'an en el espacio \vb{bvp! usan las clases de \verb!rbf} -como par\'ametros de planillas. Consecuentemente, es f\'acil escoger +detallar\'an en el espacio \vb{bvp} usan las clases de \vb{rbf} +como par\'ametros de formularios. Consecuentemente, es f\'acil escoger una FBR distinta para los varios m\'etodos definiendo y pasando diferentes miembros del espacio \vb{rbf} como par\'ametros de -planillas. +formularios. \subsection{Espacio \vb{bvp}} En este espacio se encuentran la mayor\'ia de las clases y -funcionalidad de nuestro c\'odigo. Recordando el PVF \ref{thebvp}, +funcionalidad de nuestro c\'odigo. Recordando el PVF \eqref{thebvp}, observamos que tiene varios componentes: \begin{itemize} \item Un operador diferencial interior $\mathcal{L}$. @@ -286,17 +296,62 @@ Esta clase es madre de varias otras clases. Adem\'as de ser madre todos los miembros del espacio nominal \vb{rbf}, tambi\'en es - madre de las interpolantes \vb{interpolator! y \verb!schwarz_ddm} - que veremos m\'as adelante. + madre de las interpolantes \vb{interpolator} y \vb{schwarz_ddm} + que veremos m\'as adelante. Tambi\'en tiene envolturas para el tipo + de apuntadores a funciones que la GSL requiere mediante la clase + \vb{gsl_function_wrapper}. \end{description} Esta familia de clases definen los ingredientes necesarios para poder especificar en su totalidad un PVF. Formalizamos esta especificaci\'on con la clase \vb{bvp::BVP} que no es mucho m\'as que una estructura -con los componentes del PVF \ref{thebvp}. Definimos +con los componentes del PVF \eqref{thebvp}. Definimos tambi\'en una +clase derivada que ha resultado suficiente para nosotros y que modela +un PVF lineal de orden 2, \vb{linear_BVP2}. + +\section{La clase \vb{bvp::interpolator<RBF>}} +Todas las clases descritas arriba son tan s\'olo el esquema general +bajo el cual estamos trabajando, definen los ingredientes del +problema. Pues bien, ahora nos enfocaremos en la primera clase que en +efecto implanta el algoritmo de soluci\'on del PVF \eqref{thebvp}. +Dicha clase es \vb{interpolator<RBF>}, tambi\'en dentro del espacio +nominal \vb{bvp}, donde RBF es un par\'ametro de formulario para +representar el tipo de FBR que se usar\'a para resolver. La clase +\vb{interpolator<RBF>} supone modelar el ansatz o interpolador +$\tilde{u}$ definido en \eqref{theinterp}. Ahora bien, nuestra +intenci\'on tambi\'en es amarrar \'intimamente este interpolador a un +PVF, as\'i que los primeros ingredientes de \vb{interpolator<RBF>} son +\begin{itemize} + \item los coeficientes $u_p$ de $\tilde{u}$, + \item las FBRs $\phi_p$ y + \item un PVF. +\end{itemize} +Observamos que el interpolador requiere tambi\'en conocer los puntos +del dominio en los cuales est\'a interpolando, pero esta informaci\'on +ya est\'a contenida tanto en las FBRs como en el PVF. +Antes de proseguir, algunos comentario. Propiamente, aunque +\eqref{theinterp} es el mismo objeto matem\'atico, deber\'iamos +llamarlo \emph{ansatz} cuando se utiliza para resolver un PVF y +llamarlo \emph{interpolador} cuando resuelve el problema de +interpolaci\'on. Claro que el problema de interpolaci\'on se puede +tratar sin ninguna dificultad adicional como un PVF trivial donde el +operador interior y frontera ambos son el operador identidad, y en +efecto, justamente as\'i lo hemos tratado en nuestro c\'odigo. En lo +que sigue, nos seguiremos refiriendo al $\tilde{u}$ de +\eqref{theinterp} como ``interpolador'' acordando que el mismo objeto +lo podemos usar tambi\'en para resolver un PVF. + +Usamos un \'unico m\'etodo de soluci\'on de colocaci\'on asim\'etrica +tal como est\'a descrito en la secci\'on \ref{unsymcolloc}. Esto +requiere invertir la matriz de Gram que por motivos de optimizaci\'on +que ser\'an aparentes en breve, nuestro interpolador guarda en la +memoria. Nuestro interpolador resuelve los problemas de +interpolaci\'on y de valores en la frontera de la misma manera. De +cualquier forma, hay ciertas diferencias en la implementaci\'on del +problema %%% Local Variables: %%% mode: latex
--- a/preamble.tex +++ b/preamble.tex @@ -1,5 +1,5 @@ \documentclass{book} -\usepackage{amsmath, amsthm, amssymb, fullpage} +\usepackage{amsmath, amsthm, amssymb} \usepackage{fancybox, url, graphicx} \graphicspath{{piccies/}} \usepackage{syntonly} @@ -7,9 +7,6 @@ \usepackage[spanish]{babel} \spanishdecimal{.} -\bibliographystyle{gatech-thesis} - - \theoremstyle{plain} \newtheorem*{teo}{Teorema} \newtheorem*{lema}{Lema}
--- a/rbf-ddm.tex +++ b/rbf-ddm.tex @@ -1,5 +1,6 @@ \chapter[FBR y MDD]{Funciones base radiales y descomposici\'on de dominios} \section{Introducci\'on} +\label{unsymcolloc} Empecemos con una definici\'on clave. \begin{defn} \label{rbf-def} @@ -10,7 +11,7 @@ Brevemente, una funci\'on radial depende solamente de la distancia desde alg\'un punto en $\RR^n$. Pronto daremos ejemplos relevantes de funciones radiales. Antes, consid\'erese de manera general el problema -de valor en la frontera (PVF) +de valores en la frontera (PVF) \begin{equation} \label{thebvp} \begin{cases}