Buenas tardes y bienvenidos a la tutoría en línea del día 16 de enero de 2013 que corresponde al tema 5 que se ha titulado procesamiento de datos de la asignatura de herramientas informáticas para matemáticas. Esta es la tercera y la última de las tutorías previstas para este tema que se titula, como podéis ver en la transparencia, ajustes de datos e interpolación. Bueno, pues nada, quería daros las gracias por estar aquí presentes vía online y agradecer ya de antemano vuestros comentarios que seguro que nos van a ayudar a comprender un poquito mejor los aspectos de este tema. Además, intentaré tocar aquellos puntos que sean que se han mencionado en los foros, al menos aquellas poquitas cosas que se han comentado dentro del foro con respecto al tema. De manera que si queréis incidir en alguna pregunta no tenéis más que escribirlo en el chat. Bueno, pues efectivamente este último tema, la sesión 5.3, pues trata sobre dos conceptos. Ya hemos visto cómo leer los datos, hemos visto de forma... muy sencilla cómo representar o resumir los datos en el punto 2 y en este caso lo que vamos a hacer es hacer el ajuste de datos e interpolación. ¿Se entiende por ajuste de datos? Lo vemos aquí. El ajuste de datos va a ser, bueno, pues dada una muestra, una muestra puede ser de puntos o de valores que nosotros hayamos obtenido. En este caso vamos a suponer que estamos trabajando en una muestra. Pues queremos saber si esa muestra, bueno, pues queremos encontrar una curva o una función que describa el comportamiento de esa muestra. Esa muestra puede haber estado, puede que sean lecturas de determinados valores que nosotros hemos obtenido de sensores y estos valores pues están sujetos habitualmente a error, algún error, ¿verdad? Los errores de medida o el ruido o lo que sea. Entonces nosotros queremos saber... Si estas medidas se pueden describir a través de determinadas curvas para comprobar que, por ejemplo, el comportamiento se adecua a un modelo que nosotros hemos especificado. Esa es la primera, esa es la primera de las partes, que es el ajuste de datos. Por otro lado, la interpolación lo que pretende es que, bueno, pues dada una serie de valores que nosotros hemos medido, pues, o valores que tengamos, queremos saber en aquellos puntos donde carecemos de ese valor, queremos adivinar entre comillas, queremos saber, estimar cuál sería el valor que correspondería si siguiera el comportamiento descrito por los valores que hemos leído nosotros. Esa es la segunda parte, que es la interpolación. Bueno, esta... Estas referencias están un poco, quizá, un poquillo ya desfasadas, pero bueno, como siempre, os recomiendo los apuntes del equipo docente que están muy completos y en ellos se sugiere, por cierto, al final de los temas, se sugieren lecturas adicionales y complementarias que nos van a ayudar a entender los conceptos que vemos en cada uno de estos temas. Y después también, bueno, pues si queréis, pues hay por ahí varios elementos. Hay varias páginas sobre ayudas, ayudas al Maximal, el C-Lab y, bueno, cualquier otro material que nos pueda ayudar a comprender los conceptos. En el mismo, en los apuntes del equipo docente, incluso en lugar de Macworld, se refieren a la Wikipedia, donde, por cierto, están muy bien definidos todos estos conceptos. Bien, así que empezamos con el ajuste de datos. O sea, tal y como había anticipado, se trata de... ...encontrar una curva, describir una curva, encontrar una curva que describa el comportamiento de una serie de puntos que nosotros hemos leído, que tenemos almacenados en un fichero o en una tabla o en una lista, como tenemos. De manera que la cuestión va a ser esta. Imaginad que tenemos una serie de puntos, como son estos que aparecen aquí. Esos puntos tienen una representación gráfica, como puede ser esta que aparece aquí. Y la cuestión... La cuestión es la siguiente. Es, ¿qué comportamiento? Determinar qué comportamiento siguen esos puntos. Para ello, pues, lo haremos a través de eso, del ajuste. Vamos a hacer un ajuste a través de funciones. Vamos a ver, sobre todo, unas funciones sencillitas, ¿eh? Funciones sencillitas, polinómicas y se utilizan mucho las de grado 1, que son muy sencillas. Pero, que no es precisamente la que he señalado, ¿eh? Pero, bueno, dependiendo de la calidad de la función, la calidad del ajuste, pues, el tiempo de computación va a ser mayor y, bueno, pues, se van a requerir también otras cosas. Así que eso es lo que pretendemos hacer en esta primera parte del tercer capítulo. Bien, así que, como había dicho, pues, tenemos... queremos ajustar nuestra... ajustar, quiero decir, encontrar cómo describir una función. Por ejemplo, polinómica, como la primera que aparece, o un poquito más complicada, como está aquí, en la que aparece presión exponencial. Bueno, como veis, una es f de x, una función de x, otra es de t. Simplemente, bueno, pues, depende de lo que estén... con lo que estemos trabajando. Depende de... es un tema semántico más que formal. Y entonces, la cuestión es la siguiente. ¿Qué es lo que queremos determinar a través del ajuste? Pues, simplemente, lo que queremos determinar es aquellos... coeficientes, los coeficientes que forman parte de esa función. En este caso, en los ajustes a funciones polinómicas, queremos determinar cuáles son los coeficientes de cada uno de los monomios. Desde el de grado 0, grado 1 y así hasta el de grado n. En este caso serían n más un coeficiente, porque tenemos el grado 0 hasta el n. O también, en este caso, en esta función, pues, el valor... de a. Es simplemente... eso es lo que queremos conseguir. Para ello, pues, vamos a utilizar las herramientas que nos da el Zilab y que nos da también Maxima. Cada uno con su enfoque específico. Empezaremos entonces con el ajuste que se llama por mínimos cuadrados. Ya veremos que es muy sencillito esto. Para ello, pues, como habíamos anticipado... tenemos una serie de puntos, cada punto x está representado por sus componentes. La componente x, y para el punto y, e, i, y, y. Y entonces tenemos una serie de puntos y queremos encontrar una curva. En este caso veis que es como una curva muy sencillita, una recta, que describa o que represente, pues, todos esos puntos. El ajuste por mínimos cuadrados lo que tienen que encontrar es el error. Es decir, la diferencia entre la función pro, entre el valor que nosotros hemos medido, y el valor de la función por la cual nosotros ajustamos este valor. Es decir, la diferencia entre el valor medido y el valor de la función, por la cual nosotros ajustamos. Eso es lo que se llama el error. Entonces, el ajuste por mínimos cuadrados lo que hay que hacer es simplemente obtener una descripción de esa función o un valor de los coeficientes de la función, en este caso polinómica, de manera tal que se minimice la suma de los cuadrados de los errores. Y eso es lo que vemos aquí. Como podéis ver, vamos a describir el comportamiento de los datos que tenemos a través de esta función. Es una función polinómica de orden n. Por lo tanto, lo que queremos hacer es obtener los n más 1 coeficientes. Con esa finalidad, ¿y según qué criterio? Pues el ajuste de mínimos cuadrados. Para ello, efectuamos el primer paso. Queremos saber, ¿qué es eso que nos da? Nosotros queremos minimizar la suma de los cuadrados de los errores. Esto es para no utilizar valores absolutos, ¿verdad? Entonces, nosotros sabemos que para cada valor medido, o sea, para cada valor medido, para cada valor que nosotros tengamos, pues este es el valor que vamos a obtener, f de x de y. A través de la función que nosotros queremos usar para representar. Entonces, sabemos perfectamente que para minimizar esta expresión, o sea, la suma de los errores, los cuadrados de los errores, lo que hacemos es simplemente, para obtener cada uno de los coeficientes, diferenciamos con respecto, calculamos la derivada parcial con respecto a cada uno de los coeficientes, a cada uno de los asuficientes. Entonces, lo que hacemos es que, los a sub j, fijaos que los hemos enumerado aquí, por lo menos en esta transparencia, es de cero hasta n, ¿verdad? Que son n más un, n más un coeficientes. Y también, por cierto, el exponente del grado de cada uno de los monomios también va desde cero hasta n. Lo advierto porque hay alguna discrepancia del programita que hago yo con respecto al programa que aparece en los apuntes. Pero seguro que, vamos, puede que haya cometido yo un error a la hora de elaborarlo. Visto esto, visto una vez que hemos hecho, bueno, la diferenciación, claro, nosotros sabemos que el valor que hace mínima la expresión s, pues es el que hace cero cada una de las derivadas parciales del grado. Con respecto a cada uno de los coeficientes. Entonces, bien, una vez que hemos diferenciado, para cada uno de los coeficientes, desde el cero hasta el n, vamos a obtener que, despejando, que el que hace cero, pues es el que cumple esta expresión, esta propiedad. Y esto lo hacemos para cada uno de los coeficientes. Para los n más un coeficientes. Como, bueno, sospecharéis, pues, esto nos da lugar a un sistema de ecuaciones con n variables, que en realidad las variables van a ser, aquí esto despista un poco, ¿verdad? Pero lo que queremos obtener son los coeficientes, los valores de los coeficientes. De manera que tenemos n más un variable y n más una ecuación. La expresión en formato más compacto sería esta de aquí. Donde w es, pues, lo que llaman en los apuntes de Equipo Docente W, en realidad son los valores de los coeficientes que nosotros queremos obtener. Desde a sub cero a a sub n. La matriz A, pues va a ser una matriz que va a tener esta expresión. Fijaos que existe, ya digo, una discrepancia entre esta expresión y la que aparece en los apuntes del Equipo Docente. Estoy consultándolos ahora sobre la marcha y se trata simplemente porque yo no he puesto un más uno. Eso simplemente ha sido porque los índices míos, los índices que utilizo yo van desde cero hasta n. Van desde cero hasta n. Lo mismo sucede aquí. Lo que pasa es que aquí esta expresión, bueno, pues coincide con la expresión que aparece en el libro. Pero simplemente lo que quiero, lo que quiero resaltar con esto es que los exponentes van a variar desde cero hasta n. Sin embargo, cuando nosotros vayamos a llevarlo al ordenador, pues los exponentes siempre van a variar también de cero hasta n. Lo que no va a variar de cero hasta n es las referencias a los elementos de las matrices que van a intervenir. Porque vosotros sabéis que se numeran desde uno hasta n. En este caso, desde uno hasta n más uno. Bueno, pues todo esto que no quería liaros, pero bueno, todo esto nos va a conducir a, por ejemplo, al programita, esto es un fragmento de programa que intenta reflejar y es muy parecido al que aparece en la página, al código 1.13. Es muy parecido y al que aparece en el código 1.13 de los apuntes del equipo docente. Este procedimiento, esta función en concreto, lo que pretende es calcular los coeficientes, los coeficientes del polinomio. Y ya digo que existe una discrepancia aquí. Lo único que estamos haciendo, como podéis ver, es calcular, primero rellenar o calcular, dar valores a lo que hemos llamado nosotros B y A. Es decir, lo que estamos haciendo es construir las matrices, la matriz A mayúscula y el vector B minúscula. Y una vez que lo hemos construido, lo que hemos hecho ha sido simplemente resolver el sistema de ecuaciones de, en fin, de una manera directa. Bueno, pues eso es un poco chocante para, en informática se suele hacer de forma numérica, pero nosotros aquí eso lo vamos a hacer de manera directa. Vamos a resolver nuestro sistema. Pero lo que me gustaría es comprobar si veis algún aspecto que no se entienda. Yo os aconsejo, os aconsejo que se repase porque es muy interesante la capacidad que tiene DCI para trabajar con matrices, la facilidad que nos da. Entonces hay cuestiones como las de notación. Por ejemplo, el punto este tenéis que, no dudéis siempre en repasar qué significa cada uno de los, de los, hala, perdón, cada una de las cuestiones estas que se refiere, de las herramientas que nos permiten trabajar con matrices de forma rápida. Vamos a ver. Aparece, sí. Efectivamente es una muy buena observación la que hace I. Carbonell. Dice, en el código 5.3 aparece una línea M es igual a NF. Tenía una duda, ¿para qué sirve esa línea? No veo dónde se usa la M y su código se ha omitido. Bueno, lo que tengo que decir es que habitualmente los códigos se hacen después de haber, y ahora contestamos a lo otro, los códigos se hacen habitualmente a partir de prototipos, se corrigen y es normal que probablemente lo que habíamos pensado, estoy borrando las flechas, lo que habíamos pensado originalmente puede que en una segunda implementación no nos sirva. O sea que yo imagino que lo que aparece en el código ese servía para algo antes pero en esta ocasión no. Bueno, también os quiero hacer que os fijéis en los índices. Está este y este de aquí que discrepan sobre los índices que están en el código. Pero bueno, eso es una, ya digo que es mi implementación y es simplemente porque tengo en cuenta que los índices, los exponentes van desde cero hasta N. Y no es desde uno hasta N más uno. Pero ya digo que es una parte de mi implementación y puede que me esté equivocando en algo, aunque los resultados sí son coherentes. Con respecto al punto bajo la I, esto sí que es interesante. Eso yo os voy a remitir a, por eso sabía que iba a llamar la atención y imagino que vosotros estaréis al tanto de las facilidades que ofrece Scylla para trabajar con matrices. En ocasiones se refiere cuando vamos a hacer operaciones cuando vamos a hacer, como se dice, las multiplicaciones de dos vectores para no hacerlo utilizando el producto escalar. Vamos a ver si pongo un ejemplito. Voy a intentar buscar un ejemplo, un ejemplo sencillo. Dame un segundo. Si lo que sucede es que no os puedo mostrar, claro, no os puedo mostrar, no se puede compartir en el escritorio de manera, bien, vamos, yo lo que, en este caso, simplemente lo que hace es multiplicar coeficiente a coeficiente el vector y genera un vector nuevo. Pero, de cualquier manera, yo os aconsejo que, por ejemplo, veáis qué significa la multiplicación con la apóstrofe cuando ponemos el punto, no sé si eso se ve en el chat, porque es la única manera que tengo así de interaccionar un poco, o también qué significa en ocasión, gracias, qué significa en ocasiones el doble apóstrofe porque es muy importante la forma en que podemos resumir los cálculos y trabajar con matrices sin tener que trabajar elemento a elemento, no coeficiente a coeficiente. Bien, vamos a continuar, vamos a continuar con nuestro código rápidamente, que también esta parte pues es igual a la que aparece, bueno, yo lo que voy a mandar es el enlace al manual del Scilab donde aparece todo eso, de manera que lo pondré en el chat y si no, en el foro, simplemente aparte, a modo de repaso. Lo que quería era simplemente continuar con el código, como podéis ver, bueno, pues una vez que hemos obtenido, hemos hecho el ajuste a datos, es decir, dentro de mDatos ¿qué es lo que vamos a tener? Dentro de mDatos lo que vamos a tener simplemente los coeficientes, esos a, de los que habíamos hablado. Entonces, ahí, me vais a tener que perdonar, estoy, acabo de decir algo que no es correcto. Dentro del polinomio, ahora eso sí, dentro del polinomio vamos a obtener los coeficientes que hemos calculado en ajuste a datos, que era el procedimiento anterior. mDatos obviamente es la matriz que hemos leído, la matriz que hemos leído, o sea, que la hemos especificado aquí. Disculpad por el despiste. Bueno, si os fijáis en x vamos a tener la primera columna de la matriz, en y vamos a tener la segunda columna y bien, lo que vamos a hacer simplemente es, y esto lo he visto, he visto que ha suscitado alguna duda dentro del foro, pues dentro del vector ie lo que va a tener es simplemente el valor de la i que nosotros vamos a estimar utilizando los coeficientes que hemos ajustado a través de mínimos cuadrados. Y por otro lado, y eso nos va a dar una serie de puntos, es decir, la imagen para cada uno de los puntos que hemos leído de nuestra matriz, pues va a venir reflejada o va a venir almacenada dentro de ie. Y por otro lado, si os fijáis aquí, este vector xt que estamos creando aquí, que estamos creando con valores que van desde el mínimo, que esto lo recordáis perfectamente de la clase anterior, el mínimo valor que vamos a tener en x y el máximo valor, vamos desde el mínimo hasta el máximo variando de 0.05, perdón, de 0.05 o con paso 0.05 de manera que esto nos va a permitir pues casi dar la impresión de que tenemos unos valores continuos dentro del vector xt. Lo que vamos a hacer a continuación es representar, almacenar dentro de ie esto. Todo esto, vamos a verlo en la imagen a través de este polinomio de orden 1 de los puntos de ie. De manera que a la hora de dibujarlo, a la hora de dibujarlo que es lo que aparece, que son las instrucciones que aparecen a continuación, vamos a dibujar por un lado los puntos originales x y y a continuación lo que vamos a hacer es la curva que va a representar la curva que va a, como se dice, que va a ajustar estos valores que tenemos aquí. Vamos a ver si lo tengo dibujado aquí. Bien, efectivamente, efectivamente aparece aquí. Simplemente lo que estamos haciendo es, lo que pasa es que este en concreto, si no me equivoco, dejadme comprobar, esto no son los datos del fichero del fichero que estamos leyendo, sino son otros datos, los datos de la tabla 5-2, efectivamente. Son los datos de la tabla 5-2. Los datos que corresponderían a esto serían probablemente, efectivamente, esto de aquí. Estos dos de aquí. Así que por un lado estamos representando cada uno de los puntos que hemos leído dentro de ese fichero y por otro lado la curva que ajusta estos puntos. A través de los coeficientes que hemos obtenido, a través del ajuste por mínimos cuadrados. Si os fijáis también dentro del código pues aparece un truco para visualizar el error que cometemos, o sea la diferencia que hay entre el valor ajustado y el valor medido. Aquí simplemente esto es para mencionar, porque no aparecen los apuntes que yo sepa, es simplemente otro, una manera de calcular también por ajuste de mínimos cuadrados. De hecho lsquad, lsq, es simplemente una función que nos va a calcular sin utilizar, a permitir calcular sin utilizar el procedimiento que nos da el equipo docente, nos va a permitir calcular los valores de los coeficientes. Es una función que existe ya, es más fácil, lsq, aunque es muy interesante que implementemos esta otra función, porque así repasamos algunos de los conceptos como lo del puntito que nos puede interesar del STILAB. Aquí si os fijáis el procedimiento es casi el mismo e igual que antes, mostramos los puntos y la curva ajustada además del error. Este es ajuste lineal, pero para el grado creo que el truco, bueno efectivamente es un ajuste lineal, pero ves esto de aquí que aparece, si bueno, de todos modos se puede arreglar esto. Ves esto que pone aquí la matriz A, es la matriz por cierto, es la matriz de datos X, los valores X, y aparece si os fijáis una columna adicional, el WANXX, o sea una columna de unos del mismo tamaño que el vector X. Bien, esto a medida que incluís columnas pues os va a permitir calcular los coeficientes ya para grado 1, grado 2 y grado 3. Pero bueno, yo os remito al manual. Bien, aquí, bien, esto tenemos, si no me equivoco es lo mismo, bien, lo que habíamos visto, pero para el otro caso, el caso del fichero. Y bueno y ahora pasamos con Máxima, pasamos a hacerlo con Máxima. Bueno pues Máxima lo que nos va a hacer es simplemente darnos una expresión analítica y utiliza una herramienta muy, muy, muy flexible y muy interesante, la verdad desde el punto de vista casi de la docencia que es el Square Estimate, esto de aquí. Que bueno a partir de unos datos, si os fijáis, vamos, esto es una cuestión de conceptos anteriores, pero vamos, cargamos los datos a través de una lista como tengo aquí, después de lista lo pasamos a una matriz, de esta manera. Y después lo que hacemos es, bueno por cierto aquí si es importante, el otro día me preguntaba si hay que calcular, si hay que cargar siempre los paquetes cada vez que los vayamos a utilizar. En realidad o vale con cargarlos simplemente una vez en la vida, por decirlo de alguna manera. No, cada vez que nosotros vayamos a utilizar un paquete y no lo hayamos hecho antes, no lo hayamos cargado. Bueno, en cuanto abramos la aplicación pues tenemos que cargar el paquete que vamos a utilizar. En este caso es el Square y lo que vamos a hacer uso es de la función el Square Estimate. Fijaos que es muy, muy intuitiva, muy, muy intuitiva. Aquí tenemos los datos con los que vamos a trabajar. Bien, aquí las variables que van a formar parte, bueno con las que vamos a definir la función que viene a continuación que corresponde, bueno pues a la primera columna de los datos y a la segunda columna de los datos. Voy a intentar a ver si se escribe datos en español. Claro no, esto en concreto viene de un ejemplo en español. Vamos a ver aquí. Datos L es una matriz que, perdón, es una lista que yo he creado ¿verdad? Datos L. Pues le he puesto L de list ¿verdad? A continuación datos M es la misma lista lo que pasa es que la he transformado en matriz. Pero simplemente es el nombre de una variable, de una matriz que le doy yo, que le doy yo. Y entonces aquí donde aparece datos M se refiere precisamente a la matriz esa, a la matriz esa. De acuerdo. Muy bien. Entonces lo interesante es que nosotros le especificamos. Las variables con las que vamos a definir nuestra función. Y fijaos que nos permite especificar una función, esta es una función muy sencilla, una función lineal, ya veremos que después es tan flexible que nos permite especificar casi cualquier tipo de función. Y aquí le estamos especificando cuáles son los nombres de las variables asociados a los coeficientes que queremos calcular. Y fijaos que aquí nos da la expresión, expresión analítica, de esos coeficientes. Es muy interesante, es muy interesante el Máxima. De manera que lo que estamos haciendo aquí pues es representar los datos que nosotros hemos medido frente a los puntos que hemos medido frente al ajuste que hacemos nosotros. Vamos a ver este otro ejemplo que es mucho más para que veáis la versatilidad del Máxima. En este caso, bueno pues aquí estamos leyendo los datos desde el fichero. Los pasamos otra vez, bueno lo leemos en formato de lista, los pasamos, datos, los pasamos como una matriz. Y a continuación, bueno pues vamos a meterla, a calcular la estimación. En este caso, ah vale no, en este caso es igual, vamos a utilizar una misma función lineal. Disculpadme porque pensaba que íbamos a ver una función más compleja. No, aquí estamos haciendo prácticamente lo mismo que antes. Lo que sucede es que con los datos que hemos leído desde el fichero, para que tengáis la otra visión con un poquito más de datos. Claro, el problema de obtener la expresión analítica es que nos da cosas enormes como estas, ¿no? Pero bueno, en ocasiones es muy interesante. Ahora, aquí está a lo que me refería. Fijaos que aquí tenemos el ajuste lineal. Aquí tenemos un ajuste con polinomio de grado 2. Y aquí tenemos el ajuste con polinomio de grado 3. Exactamente, esas son las, ahora veremos un poquito incluso más flexibilidad. Pero vamos, lo que quiero deciros es que nosotros simplemente describimos la función que queremos, especificamos los coeficientes. Y en este caso, al poner número, por cierto, lo que va a hacer es darnos el valor numérico, no la expresión aquella enorme que habíamos visto en la transparencia anterior. En lugar de esto, pues nosotros le hemos incluido la cláusula número y ya sabemos que el resultado que nos va a dar va a ser un valor numérico en lugar de todo eso. Y además nos permite calcular, nos permite calcular pues el error, el error que hemos cometido con nuestra aproximación a través del square residual ms. Como podéis ver, bueno, pues la aproximación de grado 1, pues nos da que el error que hemos cometido es este de aquí y la aproximación de grado 2, perdón, de grado 3 en este caso, pues es este error que aparece aquí. Ya digo, lo que me llama la atención es la versión de la estatilidad de esta función que permite meterle casi cualquier expresión. Vamos a ver por último el ajuste, si no me equivoco otra vez, el ajuste con esta función exponencial. Si os fijáis aquí tenemos de nuevo el square estimate y aquí la expresión. Veis que en este caso vienen las variables lo que antes llamábamos x e y son t y d, pero da lo mismo. No sé si tiempo y distancia, ahora mismo no recuerdo. Vamos, pero da lo mismo, simplemente una cuestión semántica. Y después aquí está la descripción de la expresión, de la función con la cual vamos a ajustar. Fijaos que en este caso pues es un poco más complicada y aquí le decimos el coeficiente con el que queremos ajustar. Bien, perdón, los nombres de los coeficientes que queremos obtener. Efectivamente esta es la función que vamos a hacer y aquí, bueno, se muestra el ajuste que hemos obtenido. Lo que llama la atención de esto del máxima es la versatilidad, la versatilidad de esta otra función que no ofrece tanto el máxima. Bien, bueno, si ya he visto que pasamos a interpolación, pero me gustaría preguntaros si de esta primera parte se ha ido muy rápido o tenéis alguna duda que queríais formular en el... en el foro vuestro, en el foro del tema 5 y puede ser el momento de contestarla. Si no tengo que dibujar mucho, si no tengo que escribir mucho porque esto no me lo permite. Bien, veo que no. Vamos, simplemente lo que quería resaltar es... Ah, bien, bien. Bien, muy bien. Bien, vamos a ir contestando primero. Voy a contestar primero a la sintaxis de la táctica, en el input 5. Vale, no falta paréntesis. Aparentemente, vamos a ver, aquí abrimos uno, aquí abrimos otro, aquí cerramos uno y aquí cerramos otro. A lo mejor te refieres a algún aspecto de sintaxis al principio. Bueno, aquí lo que estamos haciendo es asignar a mi func esta expresión. Ah, no. Pues no, porque lo que estamos haciendo es asignar a mi func pues la expresión, una función, una expresión que es esta de aquí. Pero no, no, no... No lo veo que haga falta. Y además este código, estos códigos sí que los he hecho yo, no los he copiado. De hecho todos los que tenemos la transparencia los hago yo por si acaso. Le quiero decir que los copio, pero me refiero a que no... Que los he replicado yo. Con respecto, dice, ¿para qué se usa el lsquare? Bien, eso está dentro... Ah, sí, exactamente. Bien. Eso se refiere, en realidad, el lsquare estimate lo que va a hacer, y estoy contestando a M. Bianco, es simplemente... Vamos a ver, voy a limpiar un poquito esto. Estamos hablando de esta línea, ¿verdad? De la entrada 4. Bien, aquí lo que estamos haciendo es calcular el lsquare estimate... Ah, no, no. Perdón, perdón, perdón, perdón. No, no, es que M. Bianco te he despistado totalmente porque es el residual lo que nos interesaba, que está en la página anterior. Disculpame. Vamos a ver, está en la página anterior. Vamos a ver, borramos la... Borramos todo esto. Y aquí, exactamente. Esto simplemente lo que nos va a dar es el error total que hemos obtenido aplicando la estimación sobre los datos que nosotros tenemos. Es decir, lo que estamos calculando con esto es para cada una... Voy a volver a la transparencia de principio. Lo que estamos calculando... Lo que estamos calculando es para cada uno de los valores medidos el error que se comete con respecto al ajuste que hacemos nosotros. Es decir, esto de aquí. Esto de aquí. Y eso es lo que nos da la función lsquare estimate. Lsquare estimate, no. La del residual que veremos a continuación. Exactamente, lsquare residual es M. De manera que nosotros le ponemos aquí la aproximación... Sí, efectivamente. La aproximación y nosotros le... nos mide el error. Vamos a ver, y después la otra pregunta era en el código 514. Voy a buscarlo. Bien, en el código 514 tenemos un plot no sé qué. Vamos a ver si lo veo aquí. Efectivamente. Se repite... Ah, se repite... Ah, vale, vale, vale. Sí, sí. Vamos a ver. Esperad un momento. Claro que no tenía que ser... Es que uno viene a representar los primeros argumentos de ese plot que probablemente lo tenga yo también aquí. Voy a mirarlo aquí porque probablemente lo tenga yo aquí. Efectivamente. Exactamente. Sí, sí. Efectivamente se repite por una sencilla razón. Esto simplemente es un truco para unir los puntos... Sí, lo único que hace el... Sí, eso está bien. Lo único que hace este plot es lo siguiente. Vamos a centrarnos primero en la segunda parte que es el xy-y y veis que pone aquí un puntito y simplemente lo que hace es lo siguiente. Es representar... Dibuja exactamente los puntitos que corresponde a este, a este, a este, a este y a este. Y lo que te hace... Y este de aquí. Y lo que hace la primera parte es en realidad unirte la función... El procedimiento plot este lo que hace es unirte esos puntos. Te coge los puntos de x y los puntos de ie-y y simplemente te los representa. Lo que pasa es que aquí no se ven como un puntito muy finito y te los une por una línea, por esta. Simplemente... Es un truco del plot nada más. Simplemente eso. Simplemente los une y ya está. Pero esa es la diferencia. Está representando lo mismo, lo que pasa es que en el primero, como bien has observado, lo que hace es unirlo con el plot. Bien. Entonces vamos a seguir, si no me despisto... Creo que no, creo que no hay ninguna pregunta más. Bien. Bueno, pues vamos a seguir entonces con el... Con la interpolación. En este caso la interpolación lo que pretende es lo siguiente. Tenemos una serie de puntos medidos como pueden ser estos puntos que tenemos aquí, los puntos azules y lo que queremos saber es... Si nosotros conocer cómo se va a comportar esta curva, ¿cuál sería el valor del punto que correspondería a este punto y que nosotros no conocemos? Es la interpolación. Por cierto, cuando nos salimos de la tabla... Cuando nos salimos de la tabla, por ejemplo, queremos calcular este punto, pues es lo que se llama extrapolación. Bien. La primera... Habitualmente lo... Habitualmente... La interpolación más sencilla es la interpolación lineal. Es decir, que presupone que la curva que describe el comportamiento de los puntos que tenemos nosotros almacenados es simplemente una línea que une cada uno de los puntos... Cada uno de los puntos medidos. Por ejemplo, en este caso se supone... Nosotros tenemos este punto... También tenemos... Por cierto, tenemos este punto, tenemos este punto, este punto y este punto. Y probablemente sí, también por lo que veo este otro punto de aquí. Estos son los puntos que nosotros tenemos medidos. Entonces la interpolación lineal lo único que hace es considerar que la función que describe todos estos puntos es la línea que une... Es una función que es simplemente lineal por partes, por cada uno de estos tramos. Ya está. Y esto es lo que hace la función lineal... La más sencilla de las funciones de interpolación. Del STILAB, que es el Inter... Inter... Interpola. InterPLN. Simplemente lo que hace el InterPLN es decirnos... Bueno, a partir de estos datos que tenemos almacenados en Mdatos... A partir de estos datos que nosotros hemos almacenado en Mdatos y que corresponden al valor de X de las abscisas... Corresponde al 1, al 2, al 3, al 4, al 5, al 6... Pues lo que quiero saber es... Este valor, el 2.5, que no lo tengo dentro de esa tabla, ¿a qué correspondería? Pues sería su valor IPL, lo que llamamos aquí, sabiendo que estamos llevando a cabo una interpolación lineal. Y eso es lo único que hace... Es IPL. Nos da ese valor, que es este, que ha obtenido aquí, este puntito rojo. Y es lo único que hace... Lo único que hace aquí. Si nos fijamos, lo que estamos haciendo aquí, en el plot este, es dibujar, en esta última parte, en estos tres últimos términos... Es dibujar el punto 2.5 IPL, que es el valor que hemos interpolado, con una estrellita que aparece ahí. Y después, lo que hemos hecho... Fíjate que también aquí se repite... Lo digo por icarbonés. En este caso también se repite. Y se repite el plot. Aquí lo que estamos haciendo es representar en el plot los puntitos que corresponden a la matriz X e Y, a través de esos de los puntitos estos redonditos que aparecen aquí. Y después, lo volvemos a representar simplemente sin especificar ningún tipo de cualificador. Entonces, simplemente esto lo único que hace es unir todas las líneas igual que antes. Vamos, esta es la manera más sencilla de interpolar. Aparece... También el Scilab nos da la posibilidad de no interpolar solo linealmente, como era el valor que nos... Como era la función anterior, sino a través del Interp1, que lo que nos va a hacer es permitir... Nos va a permitir hacer una interpolación lineal, como la que ya teníamos, una interpolación con splines cúbicos, que son curvas de grado 3. Y esta otra, que es la del vecino más próximo, que es simplemente curvas escalonadas. Aquí aparecen representadas en las tres. Aparecen las tres representadas en esta tabla aquí. Bien, como podéis ver, pues lo... Vamos, lo único que estamos haciendo es... Si os fijáis, pues tenemos una serie de datos, que son estos de aquí. A continuación, lo que hacemos es crear una serie de puntos que van desde el menos 0.5 del mínimo valor hasta el más 0.5 del valor máximo. Por lo tanto, fijaos que lo que quiere hacer este ejemplo es extrapolar... Ah, por cierto, hay una pregunta aquí, efectivamente. ¿Por qué se pone la i, efectivamente? Pues eso también os remitiría al... Os remitiría al... ¿Cómo se llama? A lo de las matrices. Es para que sea una matriz columna. Una es una matriz fila y otra es una matriz columna. Ya veréis que es muy sencillito. Es muy bien. Ahora os voy a intentar poner el enlace, en cuanto termine, si no es aquí en el foro. Bueno, pues como iba diciendo, como os iba contando... Exactamente, bien. Lo que os estaba contando era que... Bueno, aquí vamos a generar todos estos números, que fijaos que en este caso vamos a tener una extrapolación, porque estamos generando valores de x que van desde el menor menos 0.5 al máximo más 0.5. Y entonces lo que vamos a hacer es interpolar. Bueno, en este caso voy a extrapolar también los valores de xp con respecto a los de la tabla esta x e y. Utilizando estas tres funciones, la lineal, la spline y las neras. Y bueno, con el cualificador strap para extrapolar. Bien. Entonces eso es lo que nos aparece en el plot que aparece a continuación. En el cual, pues nosotros estamos viendo que vamos a dibujar x frente a y. Con el puntito. Después vamos a dibujar x frente al valor interpolado a través de la interpolación lineal. xp frente al valor interpolado mediante la interpolación de spline cúbico. Y x interpolado mediante el valor del vecino más próximo, del near snake bone. Y esto es lo que aparece en la gráfica que tenemos aquí. Esta es un poquito más sofisticada la interpolación. Vamos a ver a continuación cómo lo hacemos con el máxima. Con el máxima, en este caso, fijaos, siempre cargamos las librerías o el paquete interpol, ¿verdad? En este caso es el de interpolación. Antes pues era otro, el de mínimos cuadrados. Pero lo que quería decir es que siempre cargamos uno de los paquetes. Vamos a ver la pregunta. Porque son ya matrices, ¿no? ¿Verdad? Son columnas. Vamos a ver. Sí, porque son los que nos devuelve la función. Que ya son matrices. Perfecto. Bien. Columnas. Bien. Vamos a ver. Entonces, en este caso, pues vamos a ver que con el máxima vamos a encontrar... Bueno, como siempre, cargamos el paquete de interpol. Aquí tenemos una lista que hemos transformado en una matriz. Y lo único que vamos a hacer es obtener una expresión. Vamos a obtener una expresión... Por cierto, ahora os invito a que veáis qué significa... Vamos a obtener una expresión, una expresión en este caso algebraica sobre la función de interpolación. No vamos a tener lo que es el valor interpolado. Es lo que nos especifica en los apuntes del equipo docente. De manera que en este caso, como veis, esto que llama aquí char . Se refiere simplemente a una función que toma el valor 1 dentro del intervalo especificado y 0 fuera de ese intervalo. Simplemente para decir que esto es durante cada uno de los tramos especificados. Pues esta es la pendiente o la función que define ese tramo, que define ese tramo. Bien. Aquí vemos algo más sofisticado con la C-spline, el spline cúbico. En el cual, si os fijáis, nos dice la descripción para cada uno de los tramos. Para cada uno de los tramos, pero no nos da la expresión. Ya no en forma de expresión lineal, sino a través de un spline cúbico, de una curva de grado 3, que es esta de aquí. Por último, la interpolación de Lagrange. Que en este caso, como veis, aparece también la expresión. La expresión algebraica. Bien. Analítica. Bien. Uy. Bueno. Y, efectivamente, yo creo que con esto... Me daba la impresión de que me había saltado algo, pero estas son las funciones o la ayuda que nos ofrece tanto Scilab como Máxima para poder efectuar tanto el ajuste como las interpolaciones. Yo os invito a que... Repaséis un poco el tema... Aquellos cualificadores que se refieren a las matrices, tanto como este, como el corchete. Y que, bueno, de cualquiera de las maneras, os voy a poner el enlace, que es de un manual muy sencillito y muy interesante, donde lo podéis tener de resumen para que os sirva de ayuda. Lo voy a poner. Si tenéis alguna duda más con respecto a esto, tanto a interpolación como a Máxima, tened en cuenta que en el caso de Máxima lo que vamos a tener son las expresiones analíticas. Y lo único que vamos a hacer es simplemente dibujarlas. Sí, yo creo que... Lo voy a poner en el foro. Lo voy a poner en el foro del tema 5. De manera que... En realidad es algo... Yo imagino que es algo a lo que ya... habréis tenido acceso. No lo sé, pero lo podéis... Lo voy a poner en el foro, de cualquier manera. También en el foro voy a poner otro comentario sobre un aspecto que creo que no quedó muy claro durante la última tutoría, cuando me refería al tema de la ordenación de los nombres alfanuméricos. Voy a insistir en un aspecto también que era sobre las matrices y lo voy a poner también un comentario porque, bueno, en ese momento, en el momento en que estaba explicándolo, estaba entrando gente en mi despacho y me desconocerte y probablemente haya liado un poco la cosa. De manera que también pondré esa información. Esas son las dos entradas que voy a poner ahora en un momento. Bueno, pues gracias por haber asistido a la tutoría de hoy. Y bueno, aunque este es el último tema, os quedan varias tutorías de repaso. Y estoy a vuestra disposición también para contestar cualquier otra pregunta, tanto en el foro como aquí. Bien, pues muchas gracias y por cierto que tengáis mucha suerte y que no necesitéis suerte en el examen, sino que ya os lo sepáis todo. Un saludo.