Professional Documents
Culture Documents
25
26 TEMA 2. CÁLCULO SIMBÓLICO Y NUMÉRICO CON MAXIMA
vo, ya que no puede contener todos los comandos del M AXIMA que se necesitan en
una aplicación práctica. Los usuarios expertos tienden a trabajar al unísono en las dos
interfaces, WX M AXIMA and X MAXIMA, cambiando a X MAXIMA cuando ya conocen los
nombres de las funciones que necesitan y prefieren una interfaz estable, sin distraccio-
nes. Por último, es importante conocer que la interfaz X MAXIMA se mantiene bastante
invariable a lo largo de las nuevas versiones del M AXIMA, mientras que el WX M AXIMA
se está desarrollando de forma activa y suele cambiar frecuentemente su apariencia y
contenido en las sucesivas versiones del programa.
entre la parte entera y la parte decimal de un número se realiza mediante un punto (.),
de tal forma que la siguiente acción da un resultado de error
( %i2) 2,5+4;
Improper argument to ev:9
an error. To debug this try: debugmode(true);
El programa numera el input recibido, independientemente de que exista o no, un out-
put. Como se ve en este ejemplo, los mensajes de advertencia y error no son conside-
rados como verdaderos resultados de cálculo (output). El punto y coma actúa también
como un separador cuando escribimos varias instrucciones en un misma línea. Nues-
tra siguiente operación consistirá en asignar el valor 125 a la variable x y 46 a la y,
solicitando luego su producto,
( %i3) x:125; y:46; x*y;
( %o3) 125
( %o4) 46
( %o5) 5750
conviene prestar atención al hecho de que la asignación de un valor a una variable
se hace con los dos puntos (:), no con el signo de igualdad, que se reserva para las
ecuaciones. Como vemos, el Maxima va notificando al usuario cada uno de los cálcu-
los que realiza, en este caso, la asignación del valor 125 a x, con el correspondiente
output3, la asignación del valor 46 a y, con el correspondiente output4, y el producto
xy con valor 5750, y correspondiente output5. Dado que en general no necesitamos
que nos confirme todos los pasos de cálculo realizados, el comando “$” sustituye al
final de una expresión al “;”, e indica al Maxima que no debe mostrar el output corres-
pondiente. Como ejemplo, el producto anterior tiene la expresión más directa
( %i3) x:125$ y:46$ x*y;
( %o3) 5750
Obsérvese que el número de inputs necesarios para realizar la operación es el mismo
que antes, aunque no todos sean explícitos. Analicemos ahora brevemente el uso del
comando “=” en este ejemplo. Si hubiéramos cometido el error de utilizar “=”, en lugar
de la asignación “:” en y, el resultado es el siguiente
( %i3) x:125; y=46; x*y;
( %o3) 125
( %o4) y=46
( %o5) 125 y
Esto quiere decir que Maxima admite la ecuación y = 46 genérica, pero no tiene orden
de asignar ningún valor a y, por lo que el producto xy para Maxima es el producto de
125 e y. Reiniciemos ahora el Maxima, con el comando “kill(all);”. Con eso, limpiamos
la memoria, y el programa se reinicia solicitando el primer input. Retomemos entonces
al caso anterior con la asignación de 125 a x y 46 a y. Las asignaciones a variables
se mantienen activas mientras dure la sesión con Maxima, por lo que podemos restar
las variables x e y, con el resultado
( %i1) x:125$ y:46$
( %i3) x-y;
( %o3) 79
Es importante puntualizar aquí que Maxima no admite la expresión xy, como el pro-
ducto de x por y, sino que considera la expresión xy como una sola variable. Por eso,
un input del tipo 2y daría un mensaje de error, ya que debemos escribir 2 ∗ y.
28 TEMA 2. CÁLCULO SIMBÓLICO Y NUMÉRICO CON MAXIMA
Uno de los errores más comunes que se comenten con los programas de cálculo
simbólico es evaluar una expresión o proceso para una variable x, digamos, cuando ya
existe una asignación con ese nombre x. Pongamos un ejemplo. Queremos resolver
la ecuación algebraica x2 = 2, en x aunque ésto sea obvio, debemos √ explicitarlo en
el programa. Las soluciones que queremos confirmar son x = ± 2. Aunque no se
haya estudiado todavía, la estructura del comando de resolución “solve” es fácil de
entender: “solve(ecuación,x)”. Ejecutando esta acción, encontramos que
( %i4) solve(x^2=2,x);
A number was found where a variable was expected - 'solve'
an error. To debug this try: debugmode(true);
nos da un error, la variable x no es tal variable, es un número (igual a 125). Para resol-
ver este problema, sin reiniciar el programa, basta eliminar de la memoria la asignación
a x. El comando a utilizar es “kill”, en la forma
( %i5) kill(x);
( %o5) done
y de nuevo, al ejecutar “solve”, obtenemos la respuesta correcta
( %i6) solve(x^2=2,x);
( %o6) [x = -sqrt(2), x = sqrt(2)]
En este caso, la resolución de la ecuación desde el punto de vista del Maxima simple-
mente es dar ecuaciones más sencillas equivalentes a la original, donde la variable x
está despejada. Es importante destacar que esta solución no es una asignación, no
tiene el signo de puntuación “:”, y por tanto, la variable x sigue siendo una variable,
( %i7) x;
( %o7) x
Hasta ahora no hemos hecho uso de la numeración de los inputs y outputs, que
parecía en principio sólo servían para el control de los cálculos. Sin embargo, dichas
entradas ( %in) quedan grabadas en la sesión, y podemos en cualquier momento, re-
calcular su expresión, sin tener que copiarlo explícitamente. Así por ejemplo, al repetir
el primer input obtenemos
( %i8) %i1;
( %o8) x:125
Con la expresión obtenida en el output, vemos que sólo ha transcrito el input 1. Para
comprobar si esta acción se ha ejecutado de nuevo, basta solicitar el valor de x,
( %i9) x;
( %o9) x
Realmente lo que hemos realizado es una copia del input sin ejecutarla. Si quisiéramos
que se ejecutara, tendríamos que colocar dos comillas simples (no una comilla doble)
antes del input a realizar. De esta forma,
( %i10) %i1;
( %o10) 125
( %i11) x;
( %o11) 125
Antes de terminar esta primera sesión vamos a hacer uso del programa de ayuda
básico para buscar información sobre las funciones definidas en Maxima. El comando
se denomina “describe”, y como ejemplo utilizamos la función de raíz cuadrada “sqrt”
que hemos visto anteriormente,
( %i12) describe(sqrt);
Función: sqrt (<x>)
2.4. PRIMERA SESIÓN CON WXMAXIMA 29
Sistema de menús, con la mayoría de las funciones del Maxima, ordenadas por
secciones y aplicaciones.
junto con mejoras en la visualización de las expresiones matemáticas de salida, en la
transcripción de comandos, animaciones, etc. Desde esta misma página, se pueden
30 TEMA 2. CÁLCULO SIMBÓLICO Y NUMÉRICO CON MAXIMA
utilizar esta forma directa de escritura, debemos escribir primero los datos en la celda
activa, antes de seleccionar el comando de Maxima. Cuando el comando necesite de
más de un dato de entrada, como puede ser el comando “solve” que necesita una
ecuación y una variable, al ser seleccionado, Maxima abre una ventana de diálogo
para introducir estos datos adicionales, junto con el dato obtenido de la celda activa.
Como ejemplo de entrada de datos mostramos cómo calcular en una celda el área
total y volumen de un cilindro de radio R = 3, y altura H = 6, con unidades arbitrarias.
Matemáticamente, el área total es suma del área de cada base circular y el área de la
pared vertical, con el valor A = 2πR2 +2πRH = 2πR(R+H). El volumen es el producto
base × altura, V = πR2 H. Antes de realizar este cálculo recordamos que:
2. Debemos introducir enter tras cada línea de texto para acceder a la siguiente.
en forma exacta
( %i1) (2^5/(1+1/((2/3)^3+(3/2)^2))))^(-3);
( %o1) 681472000000
56181887
Para evaluar este número en coma flotante, basta aplicar el operador “numer”, “float”
ó “bfloat”
( %i2) %, numer;
( %o2) 8.2441959464218638 10−5
Recordamos que la precisión de esta operación puede variarse por el usuario desde
el menú “Numérico/Establecer precisión.
Maxima puede trabajar con precisión arbitraria. Por ejemplo, para calcular la po-
tencia π e con 50 cifras decimales, tenemos dos opciones: Modificar la precisión desde
el menú anterior para 101 dígitos, con lo cual cada cálculo posterior se realizará con
esa precisión, o directamente desde la línea de código, asignando a la variable interna
de precisión “fpprec” para grandes flotantes (bfloat) el valor 50, con lo cual sólo será
válida esa precisión para la celda activa. Obtenemos
( %i3) fpprec:50$ bfloat( %pi^ %e);
( %o3) 2.2459157718361045473427152204543735027589315133997b1
Nótese que cuando utilizamos grandes números de coma flotante con Maxima el ex-
ponente se escribe con la letra “b”, en lugar de la usual “e”(xbn quiere decir x × 10n ).
pero con
( %i2) rectform( %);
( %o2) x − i
Resolvemos ahora un ejemplo sencillo de identificación de fórmulas trigonométri-
cas. Para ello, hacemos uso de los comandos usuales de funciones trigonométricas,
“sin()” y “cos()” donde el argumento se escribe en radianes (por ejemplo, cos(π) =
−1). Queremos determinar si la fórmula 2 sin(2x)(cos2 (x) − sin2 (x)) = cos(3x) cos(x) +
sin(3x) sin(x) es correcta. Dado que las funciones angulares son todas múltiplos en-
teros de x una opción es realizar las expansiones trigonométricas de los senos y co-
senos de 2x y 3x, verificando que resultan expresiones idénticas en ambos miembros
(matemáticamente, bastaría confirmar que su resta es nula). Realizamos los cálculos
en distintas celdas, y a cada uno de los output le asignamos un nombre de variable
relacionado con lo que se calcula. Para el sin(2x), obtenemos el resultado conocido
del ángulo doble
( %i1) sen2x: trigexpand(sin(2*x));
( %o1) 2 sin(x) cos(x)
y para el ángulo triple, obtenemos
( %i2) sen3x: trigexpand(sin(3*x)); cos3x: trigexpand(cos(3*x));
( %o2) 3 cos2 (x) sin(x) − sin3 (x)
( %o3) cos3 (x) − 3 cos(x) sin2 (x)
Una vez realizamos estos cálculos previos, verificamos la veracidad de la fórmula pro-
puesta, utilizando las variables definidas (y asignadas) sen2x, sen3x, cos3x,
( %i4) 2*sen2x*(cos(x)^2-sin(x)^2)-cos3x*cos(x)-sen3x*sin(x);
( %o4) − cos(x)(3 cos2 (x) sin(x)−sin3 (x))+sin(x)(3 cos(x) sin2 (x)−cos3 (x))+4 cos(x) sin(x)(cos2 (x)−
2
sin (x))
36 TEMA 2. CÁLCULO SIMBÓLICO Y NUMÉRICO CON MAXIMA
donde el proceso se extiende al infinito. Queremos verificar que tal suma de términos
tiene un valor finito y calcularlo. Ya que todavía no hemos introducido la definición
de funciones en Maxima, ni la programación, vamos a desarrollar este ejemplo con
los contenidos que conocemos hasta ahora. Elegimos la variable x como la variable
independiente de la fracción continua
( %i1) x;
( %o1) x
Lógicamente como x no tiene valor asignado, Maxima lo reconoce como tal. Aplicamos
ahora la primera asignación
( %i2) fraccion:1+1/ %;
( %o2) 1 + x1
y ya tenemos el desarrollo de la fracción continua en su primer término, al tomar como
input el output ( %o1). Si aplicamos de nuevo esta asignación, obtenemos
( %i3) fraccion:1+1/ %;
( %o3) 1 + 1+1 1
x
etcétera. Vemos entonces que podemos construir la fracción continua mediante la
sucesiva aplicación de una asignación muy simple. Más adelante, con el uso de fun-
ciones, este ejemplo se resolverá más fácilmente. Basta definir una función sobre los
enteros n, en la forma f (n) = 1 + f (n−1)
1
, y exigir que el término con n = 0 corresponda
a la semilla inicial x. En este caso, la fracción con n términos tiene la expresión de
f (n). Retomemos nuestro resultado, suponiendo que hemos aplicado la asignación
15 veces. Si queremos determinar el valor de la suma (por ahora en x), le decimos a
Maxima que simplifique la fracción, con el resultado
( %i17) ratsimp( %);
( %o17) 987x+610
610x+377
Este es el valor de la fracción continua con 16 términos. Si quisiéramos calcular numé-
ricamente su valor para un x dado, asignamos el valor a x y evaluamos numéricamente
el output 17. Para x = 0, obtenemos
( %i18) x:0$
( %i19) %o17, numer;
( %o19) 1.618037135278515
2.4. PRIMERA SESIÓN CON WXMAXIMA 37
Por tanto, la fracción continua está definida para todo valor de x. En realidad, se puede
demostrar que el límite de esta fracción continua cuando el número de términos es
infinito es único e independiente de x, con el valor 1,61803398874989.
2.4.9. Sustituciones
Es corriente también en el manejo de cálculo simbólico tratar con ecuaciones y fun-
ciones con dependencia funcional simple, p. ej. f (x), y necesitar ampliar los resultados
extraídos a funciones de comportamiento más complejo, el más común de todos es la
creación de la función compuesta, f [g(x)]. Para ello el Maxima incorpora el comando
dependiente de tres argumentos “subst(variable y, variable x, expresión)”, que aplica la
sustitución x → y sobre el argumento “expresión”. Como ejemplo, verifiquemos si una
función de dos variables dada es homogénea de grado p, es decir, vamos a comprobar
si f (λx, λy) = λp f (x, y) para un determinado exponente p que dependerá de la función
escogida. Ya que todavía no hemos introducido la definición de funciones, realicemos
el análisis con una expresión general. La introducimos en el Maxima
( %i1) (x3 + y3) / ( x2 * y2 ) + 2*x2 * y / (-3*x2 * y2 + 2*y4 -
x3*y);
2 3 3
( %o1) 2 y4 −32xx2 yy2 −x3 y + yx2+x y2
Para analizar si es homogénea, realizamos las sustituciones sucesivas x → λx, y →
λy, y verificamos si la expresión final cumple f (λx, λy) = λp f (x, y) para algún valor de
p. Primero realizamos la sustitución en x
( %i2) subst(lambda * x,x, %o1);
2 2 3 3 3
( %o2) −x3 y λ32−3x xy2 λy2 λ2 +2 y4 + xx2λy2+yλ2
A continuación, para la sustitución en y, elegimos %o2 como expresión, en la que se
sustituye y por λy
( %i3) subst(lambda*y,y, %o2);
2 3 3 3 3 λ3
( %o3) 2 y4 λ4 −32xx2 yy2λλ4 −x3 y λ4 + y xλ2 y+x
2 λ4
Nos queda verificar que la expresión final es proporcional a la expresión inicial, en una
potencia de λ. Para ello, hacemos la comparación
( %i3) factor( %o3/ %o1);
( %o3) λ1
Por tanto, la función f (x, y) es homogénea de grado −1.
( %o1) a2 ;
Para definir funciones de varias variables lo único que debemos hacer es introducir
el el lado izquierdo de la asignación la lista de variables separadas por comas, por
ejemplo, con f(x, y, z) := sqrt(x2 + y2 + z2)) obtenemos una función que
nos da la distancia entre el origen y el punto con coordenadas (x, y, z).
El Maxima ofrece otras formas de introducir matrices. Por ejemplo, también es po-
sible definir la matriz M de forma interactiva con el comando “entermatrix” de Maxima,
a medida que nos vaya pidiendo los datos de entrada, una vez que queda definida la
dimensión de M ,
( %i3) M : entermatrix(3,3);
Para facilitar la entrada de datos, Maxima nos pregunta sobre el tipo de matriz que que-
remos definir; por ejemplo, si nuestra matriz es simétrica, Maxima sólo nos preguntará
por los elementos por encima y sobre la diagonal, ya que los restantes quedarán fija-
dos por simetría. El enunciado exacto nos pide introducir un número para caracterizar
la matriz, 1 si es diagonal, 2 si es simétrica, 3 si es antisimétrica, y 4 si es general, co-
mo nuestro ejemplo. Seguidamente, incluimos los datos celda a celda. Existe un tercer
método que es útil si los elementos de la matriz siguen una forma funcional de su po-
sición por filas y columnas, esto es, si conocemos una función f (i, j) tal que asigne a
cada entrada Mij de la matriz su valor correspondiente. Para poder construir matrices
por este método empleamos un tipo especial de función llamado function array, que se
define igual que las funciones normales pero con los argumentos entre corchetes, en
lugar de paréntesis, y posteriormente empleamos el comando “genmatrix”. Por ejem-
plo, la matriz de Hilbert de dimensión n está dada por los valores Hij = (i + j − 1)−1 ,
con i y j entre 1 y n, por tanto definimos
( %i1) componentesH[i,j] := (i+j-1)-1$
Construyamos ahora la matriz de Hilbert 4×4, utilizamos el comando “genmatrix(elementos,
no filas, no columnas)”. Con este comando Maxima aplica la función “elementos[i,j]” so-
bre todos los puntos de la matriz de las dimensiones asignadas. En nuestro caso,
( %i2) H: genmatrix(componentesH,4,4);
1 21 13 14
1 1 1 1
( %o2) 2 3 4
1 1 1 1
5
3 4 5 2
1 1 1 1
4 5 6 7
Una de las características principales de las matrices de Hilbert es que aunque sus
elementos son de orden unidad su determinante es sorprendentemente pequeño. Utili-
zamos el comando “determinant()” y confirmamos esta característica en nuestro caso,
con seis cifras significativas
( %i3) fpprec:6$ determinant(H), bfloat; ( %o3) 1.65344b-7
Recordamos que los determinantes sólo están definidos para matrices cuadradas.
Otras construcciones que Maxima admite de forma directa, son la matriz identidad
“ident(dimensión)”, la matriz nula “zeromatrix(dimensión)”, y cualquier matriz diagonal
con todos los elementos iguales “diagmatrix(dimensión,elemento)”. Además tiene un
comando específico para verificar si una lista de elementos construida es una matriz,
“matrixp(lista)”, con dos posibles outputs, verdadero o falso.
Retomamos ahora la matriz M definida numéricamente al comienzo de esta sec-
ción. Con las matrices se pueden realizar numerosas operaciones en Maxima, por
ejemplo con el comando “addrow(matriz, fila nueva)” podemos añadirle una fila nueva
( %i2) M1:
addrow(M, [0,2,0] );
3 −1 0
2 −3 1
( %o2) 4 4 −2
0 2 0
y con el comando “addcol(matriz, columna nueva)” podemos añadirle una columna
40 TEMA 2. CÁLCULO SIMBÓLICO Y NUMÉRICO CON MAXIMA
nueva
( %i2) M2: addcol(M, [-1,2,2] );
3 −1 0 −1
( %o2) 2 −3 1 2
4 4 −2 2
Podemos multiplicar matrices recordando que la regla de multiplicación matricial
de dos matrices A y B determina que el número de columnas de A debe ser igual al
número de filas de B, esto es A(n × k) · B(k × m) = matriz(n × m). Esto confirma que
siempre se pueden multiplicar matrices cuadradas de la misma dimensión. En el caso
anterior, entonces, podemos realizar la multiplicación de M1 por M2 y también M1 por
M, o la potencia M ·M ≡ M 2 , mientras que la multiplicación M2 por M no está definida,
y en ese caso el Maxima nos daría el mensaje de error “MULTIPLYMATRICES: attempt
to multiply nonconformable matrices - an error”. Para la potencia de matrices (p. ej.
M ·M ), aparte del operador de multiplicación matricial (M.M), puede usarse el operador
de potencia matricial , pero no puede usarse el operador de potencia normal ,
ya que con ese operador lo que obtendríamos sería la matriz original con todos sus
elementos elevados a la potencia indicada elemento a elemento, lo cual no es una
operación que tenga ningún significado como operación con matrices.
( %i5) M2;
7 0 −1
( %o5) 4 11 −5
12 −24 8
Un ejercicio que puede hacerse con las operaciones definidas hasta ahora es
comprobar el teorema de los determinantes (det(A · B) = det(A) det(B), det(An ) =
det(A)n ).
x′ = x cos φ + y sin φ
y ′ = −x sin φ + y cos φ
z′ = z
det(A − λI) = 0
I = v −1 v T−1 + v 1 v T1 + v 0 v T0
es la matriz identidad 3 × 3. Por tanto, para cualquier vector r del espacio euclídeo
tenemos
r = I · r = v −1 v T−1 · r + v 1 v T1 · r + v 0 v T0 · r
que podemos escribir como el desarrollo del vector r en la base formada por los tres
autovectores normalizados
r = x−1 v −1 + x1 v 1 + x0 v 0
Invierta las anteriores relaciones para escribir una función que genere las com-
ponentes de vectores y matrices respecto de la base estándar a partir de sus
componentes respecto a una base arbitraria
Ejercicio 1. Dada una aplicación lineal calcule sus autovalores y autovectores. Aplique las
funciones que ha definido en el apartado anterior para calcular la matriz corres-
pondiente a esa aplicación lineal en la base formada por sus autovectores. ¿Se
encuentra el resultado que se esperaba?
2.6. CÁLCULO CON FUNCIONES DE UNA VARIABLE 47
Ejercicio 2. A partir de la función para cambios de base realice un programa que calcule el
producto escalar de dos vectores expresados por medio de sus componentes
respecto de una base cualquiera.
Ejercicio 1. Realice un programa que proporcione los desarrollos en serie de Taylor sucesi-
vos de una función desde orden cero hasta un orden n arbitrario
2.7. Visualización
Familiarícese con el uso del Maxima para gráficas en dos y tres dimensiones.
Representaciones gráficas:
• Gráficas en 2D: plot2d(expresión,[variable, límite inferior, límite
superior], opciones). Por ejemplo: plot2d(sin(x),[x,- %pi, %pi])
• Gráficas en 3D: plot3d(expresión,[variable1, lím. inferior 1, lím.
superior1], [variable2, lím. inferior1, lím. superior1], opciones).
Por ejemplo: plot3d(sin(x2+y2),[x,- %pi, %pi],[y,- %pi, %pi])
Ejercicio 1. Emplee la función plot2d() para visualizar en una gráfica una función y sus co-
rrespondientes desarrollos en serie de Taylor en torno a un punto dado a orden
cada vez superior (por ejemplo puede considerar la función sin(x) y sus desarro-
llos sucesivos para n entre 0 y 10).
Ejercicio 1. Dada una ecuación F (x, y) = 0 escriba una función usando el comando solve
que despeje de forma analítica y en función de x, y defina de esta forma la
correspondiente función y = f (x).
Ejercicio 2. Con mucha frecuencia aparecen ecuaciones en las que no es posible realizar
esta operación analíticamente, es ese caso no hay más remedio que resolver
la ecuación numéricamente, lo cual sólo es posible una vez que hemos sumi-
nistrado un valor numérico concreto para x. Escriba una función por medio del
comando newton() que proporcione y en función de x resolviendo la ecuación
F (x, y) = 0 numéricamente.
Notas:
Un dato necesario para resolver este ejercicio es el conjunto de funciones con-
cretas F (x, y) que definen las correspondientes ecuaciones que queremos resol-
ver. Para ello puede probar con las funciones F que se le ocurran, aparte de esto
en la página web de la asignatura propondremos algunos ejemplos concretos.
Dependiendo de la función F (x, y) que consideremos, la anterior ecuación puede
tener o no solución, es conveniente tener esta información de antemano, para
ello puede emplear el comando plot3d().
2.8. SOLUCIÓN ANALÍTICA Y NUMÉRICA DE ECUACIONES 49
Ejercicio 2. Visualice los resultados obtenidos mediante gráficas por medio de la función
plot2d().
Notas:
Para realizar este ejercicio deberá calcular las derivadas (desde la primera hasta
la n-ésima) de la función y = f (x) en el punto x0 . Para ello debe derivar respecto
de x la relación F [y(x), x] = 0 utilizando diff(), posteriormente deberá utilizar
subst() para sustituir x e y por x0 e y0 y finalmente deberá usar solve() para
despejar la derivada buscada.
f (x)−y = 0). (La extensión del entorno en el que puede definirse la función x = f −1 (y)
(determinado por la función f ) es un resultado muy interesante que se estudia en la
asignatura de Análisis Matemático). Cuando no es posible despejar x en función de
y analíticamente no hay más remedio que hacerlo numéricamente, para ello en este
curso usaremos el comando newton().
Ejercicio 1. Dada la relación y = f (x), aplique el programa anterior para obtener una apro-
ximación en forma de serie de Taylor para la función x = f −1 (y), válida en un
entorno de y0 .
Ejercicio 2. Visualice los resultados obtenidos mediante gráficas por medio de la función
plot2d().
Notas:
2.9. Ajustes
Dada una colección de puntos (xi , yi ) con i = 1, 2, . . . , N , que podrían ser p. ej. los
resultados de un experimento, necesitamos generar una función que los ajuste para
posteriormente realizar cálculos con ellos.
Siempre que dispongamos de un conjunto de datos y de un modelo o teoría que
nos diga qué tipo de relación funcional (dependiente de una serie de parámetros)
deberían cumplir esos datos, lo mejor es realizar un ajuste por mínimos cuadrados
para obtener los valores de los parámetros que mejor se ajustan a nuestros datos.
Cuando no dispongamos de ninguna ley o teoría que nos diga qué tipo de depen-
dencia funcional deberían cumplir nuestros datos experimentales ya no podremos rea-
lizar un ajuste por mínimos cuadrados. En ese caso, si necesitamos calcular un dato
que no está incluido en la serie de datos experimentales podemos hacerlo por medio
de una función de interpolación. Una función de interpolación es una función mate-
mática que para por todos nuestros datos experimentales. Existen diversas formas de
generar interpolaciones, las más frecuentes son la interpolación lineal, la interpolación
de Lagrange y la interpolación por splines, todas ellas tienen sus ventajas y sus in-
convenientes. Con cualquiera de estos métodos de interpolación lo más frecuente es
que la fórmula de interpolación proporcione valores más o menos aproximados para
puntos que se encuentren intercalados entre dos puntos experimentales consecutivos,
y que sean totalmente inexactas (produciendo errores inmensos) si pretendemos apli-
carlas para calcular valores que estén fuera del conjunto de puntos experimentales,
en cuyo caso estaríamos haciendo una extrapolación.
Familiarícese con las funciones que el Maxima proporciona para realizar ajustes e
interpolaciones
Interpolaciones:
Consulte describe() para una descripción más extensa de la sintaxis y para ver
ejemplos de uso de estos comandos.
Ejercicio 1. Dadas las colecciones de puntos experimentales con la forma (xi , yi ) que puede
encontrar en la página web de la signatura, realice las correspondientes interpo-
laciones.
de Métodos Numéricos. Las diversas formas que existen para re-escribir una ecua-
ción diferencial en derivadas parciales como un conjunto de EDOs es un tema muy
interesante que estudiará en la correspondiente asignatura de Métodos Matemáticos.
Familiarícese con los comandos de Maxima para resolver ecuaciones diferenciales
ordinarias de manera analítica y numérica.