Professional Documents
Culture Documents
P. Vindel
Departament de Matemàtiques.
ESTCE. Campus de Riu Sec.
2005-2006
1
Índice
1 Introducción a Mathematica 4
1.1 Convenios sobre notación . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Funciones incorporadas. . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Funciones no incorporadas . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 Sumatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Aproximaciones numéricas . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Posibilidades simbólicas y algebraicas . . . . . . . . . . . . . . . . . . . 8
1.3.1 Problemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.1 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Álgebra lineal 13
2.1 Resolviendo problemas con el Mathematica . . . . . . . . . . . . . . . 13
2.1.1 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 Sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . 15
2.1.3 Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Problemas de Álgebra Lineal . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 Introducción a los Métodos Numéricos. Métodos del Álgebra Lineal . . 19
2.3.1 Eliminación Gaussiana y sustitución hacia atrás . . . . . . . . . 20
2.3.2 Descomposición QR y descomposición de Shur . . . . . . . . . . 23
2
4 Interpolación y aproximación de funciones 32
4.1 Interpolación polinómica de Newton . . . . . . . . . . . . . . . . . . . . 32
4.1.1 El efecto Runge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.2 Polinomio interpolador de Newton . . . . . . . . . . . . . . . . . 33
4.1.3 Interpolación a trozos . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Interpolación con un splin cúbico . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Ajuste de datos por mínimos cuadrados . . . . . . . . . . . . . . . . . . 38
3
Capítulo 1
Introducción a Mathematica
2 + 2
Out[] = 4
4
Hay que poner atención en la diferencia entre mayúsculas y minúsculas, el tipo de
paréntesis o llaves, la cantidad de espacios y la puntuación (comas, puntos y comas).
Mathematica diferencia entre mayúsculas y minúsculas, y por tanto Sin[x] es dis-
tinto de sin[x]. Los nombres de todas las funciones incorporadas empiezan con mayús-
cula.
Cada tipo de paréntesis tiene su propio significado.
No se deben poner espacios en los nombres de las funciones y sí entre dos variables
que deben ser multiplicadas. En los demás casos, los espacios no se tienen en cuenta.
Al igual que con los tipos de paréntesis, cada signo de puntuación tiene también su
propio significado.
Mathematica es un programa interactivo. Basta introducir una expresión, como
por ejemplo una operación matemática, para que nos devuelva el resultado. Cuando
Mathematica espera la introducción de una expresión, aparece un indicador de la forma
In[n]:= . Al introducir la expresión, Mathematica la procesa, y, si corresponde, mues-
tra el resultado.
Mathematica proporciona varios mecanismos para obtener ayuda e información so-
bre las más de 800 funciones incorporadas, así como de las introducidas por el usuario.
Esto da información acerca de la función incorporada Sin.
?Sin
Out [] = Sin[z] gives the sine of z.
Sin[Pi/4]
5
que se representa por Sin, de forma que cuando queremos calcular sin(π/2) escribimos
Sin[Pi/2]. El concepto análogo al concepto matemático de variable en la terminología
de Mathematica es el término argumento.
Evidentemente, no todas las funciones requieren un único argumento. Cuando una
función requiere más de un argumento, estos van separados por comas. Aquí calculamos
la derivada de x2 :
D[x^2,x]
Si una función es invocada con más, o menos, argumentos de los requeridos Math-
ematica devuelve un mensaje de error y como output la expresión sin evaluar.
Sin[2, 3]
f[x_]=x^2
f[2]
Out [] =4
g[x_,y_]= x y;
g[2, 3]
Out [] =6
factorial[0] = 1;
factorial[x_ ]:= x factorial[x - 1]
factorial[4]
Out [] =24
En este caso el signo igual (=) debe ir precedido por dos puntos (:).
6
1.1.3 Sumatorios
P
m
El sumatorio f (i) en Mathematica se expresa como
i=n
7
1.3 Posibilidades simbólicas y algebraicas
Además de trabajar con expresiones numéricas, Mathematica puede manipular expre-
siones algebraicas. Antes de ver algunos ejemplos comentaremos la sintaxis de los
comandos que permiten esta manipulación.
Estas reglas también las siguen las funciones y constantes predefinidas en Mathe-
matica como por ejemplo
Veremos algunos comandos que sirven para operar con expresiones algebraicas:
Expand[(a+b)^2]
Out [] =a2 + b2 + 2ab
Factor[x^2-y^2]
Out [] =(x − y) (x + y)
x/((x+2)(x-2))
Apart[%]
1 1
Out [] = +
2 (x − 2) 2 (x + 2)
La función Together combina dos o más fracciones con común denominador y sim-
plifica los factores comunes:
Together[%]
x
Out [] =
(x − 2) (x + 2)
Cos[E^x];
D[%]
Out [] =−ex sin ex
8
Hay que prestar atención al escribir esta función porque tanto el coseno como el
número e son funciones predefinidas en Mathematica y han de seguir las reglas de
sintaxis descritas anteriormente.
Este comando admite argumentos opcionales que nos permiten calcular derivadas
segundas, terceras, :
D[x^2 E^x,{x,2}]
Out [] =2ex + 4xex + x2 ex
Limit[1/x, x− > 0]
Out [] =∞
Solve[xˆ2 − 1 == 0, x]
Out [] ={x → 1}{x → −1}
NSolve[xˆ5 − xˆ2 + 1 == 0, x]
1.3.1 Problemas.
a b
Problema 2 Calcular y simplificar −
a−b a+b
9
xy 2 − x3
Problema 6 Calcular la derivada primera de respecto de x y de y.
x2 + y 2
µ ¶
1 n
Problema 7 Calcular el límite de la sucesión 1 +
n
1.4 Asignaciones
Supongamos que queremos evaluar la expresión
exp= (a ∗ b−a^b)/(a∗b − 1)
(−1) ˆn
a[n_]:=
n+1
hay que tener en cuenta que el subrayado indica que n es la variable. A continuación
podemos escribir el tipo de variable, restringiendo si es conveniente su dominio; por
ejemplo,
10
Para evaluar la función en n = 5 escribiremos
In[] :=a[5]
Calcular a10 y a100 con 4 cifras decimales.
Recordemos que si queremos que el resultado aparezca en forma decimal hemos de
usar el comando N.
Si ahora queremos cancelar una asignación, utilizaremos el comando Clear.
1.4.1 Problemas
√
Problema 9 Definir raiz[n, x] := n x, n ∈ N.
Utilizando
√ la ayuda de Mathematica y el comando N calcular con varias precisiones
√
el valor de 3 2 i 5 π.
1.5 Iteradores
Los iteradores son comandos que nos permiten realizar de forma sencilla procesos que
se repiten un número determinado de veces. Uno de los más habituales es el comando
Do. Como ejemplo vamos a ejecutar
For[i=1,i≤5,i=i+2,Print[i]]
1
3
5
For[inicio, test, incremento, argumento] ejecuta el argumento desde inicio hasta que
falla el test, con el incremento que se pida; i++ equivale a incrementar el paso en uno.
El iterador Table es muy usado para construir tablas
11
Table[expr, {i, min, max, paso}]
1
Problema 10 Definir bn := , n = 1, 2, . . . y calcular
n2
1. bn desde n = 10 hasta n = 20 :
1.6 Gráficos
Las posibilidades gráficas de Mathematica han sido una de las causas de su éxito. Por
medio de Mathematica podemos dibujar funciones y datos en dos o tres dimensiones;
producir gráficos de nivel y de densidad, además de dibujar objetos y figuras arbi-
trarias. Dedicaremos una práctica a explorar algunas de las posibilidades que Math-
ematica ofrece a la hora de hacer gráficas. Estaremos interesados sobre todo en la
ayuda que puede prestar la interpretación gráfica en el cálculo de los puntos extremos
de funciones, en particular de funciones de dos variables. Trabajaremos sobre todo con
la representación paramétrica de curvas y superfícies.
12
Capítulo 2
Álgebra lineal
2.1.1 Matrices
En Mathematica los vectores se representan mediante listas, y las matrices, como listas
de listas. Por ejemplo, la lista de listas {{a,b}, {c,d}} representa la matriz 2 × 2
cuyas filas corresponden a cada una de las filas de la matriz: (a, b) y (c, d).
Algunas de las funciones incorporadas que Mathematica utiliza para construir ma-
trices son las siguientes:
DiagonalMatrix[lista]
IdentityMatrix[n]
MatrixForm[matriz]
13
imprime la matriz en forma de tablero bidimensional, haciendo así más clara su estruc-
tura. Por otra parte, Mathematica dispone de algunas órdenes para hacer referencia a
los elementos de la matriz:
m[[i, j]] proporciona el elemento i, j de la matriz m;
m[[i]] o Part[m, i] da la fila i-ésima de m,
Como ya se ha dicho, una matriz es una lista de vectores, representando cada una
de sus filas. Para que se tenga una matriz válida, todas las filas han de tener la misma
longitud, de manera que los elementos de la matriz formen efectivamente un tablero
rectangular.
14
2.1.2 Sistemas de ecuaciones lineales
Para resolver un sistema de ecuaciones lineales dado, varias son las alternativas que
Mathematica ofrece. En primer lugar, puede ser conveniente escribir todas y cada
una de las ecuaciones explícitamente, y después resolverlas usando el comando Solve.
En muchos casos, sin embargo, puede resultar más adecuado convertir el sistema en
una ecuación matricial, y aplicar después operaciones matriciales para resolverlo, tal
como se hace normalmente en Matemáticas, sobre todo si el número de ecuaciones y
de incógnitas es elevado. Este esquema también es útil a la hora de diseñar algoritmos,
cuando no se sabe con antelación cuántas variables hay en el problema.
Un sistema de ecuaciones lineales se puede escribir en forma matricial como
m · x = b,
LinearSolve[m,b]
NullSpace[m]
RowReduce[m]
Length[NullSpace[m]]
15
y − z − 2t = 1
2. x − z − t = −2
x + y − 3t = −1
x + 4y + z = b
3. 3x − y + 2z = 1
2x − 5y + az = −2
4x + 2y + z = ax
4. 2x + 4y + 2z = ay
2x + 4y + 8z = az
ax − 2y + z = 1
5. x + ay + z = a
x+z =1
x1 + 3x2 + x3 − x4 = 6
6. 2x1 + 7x2 + 3x3 − 4x4 = 15
x1 + x2 + 2x3 + x4 = 1
Eigenvalues[m]
Eigenvectors[m]
da una lista de los vectores propios de m (una base de cada subespacio propio);
Eigensystems[m]
calcula al mismo tiempo los valores y los vectores propios y proporciona una lista de
valores propios y de vectores propios asociados. Por otra parte,
Eigenvalues[N[m]]
16
proporciona una aproximación numérica a los valores propios, etc. Por tanto, cuando se
da una matriz cuyos elementos son números reales aproximados, Mathematica encuentra
valores numéricos aproximados para valores y vectores propios.
La función Eigenvalues da siempre una lista de n valores propios para una matriz
n×n, pudiendo estar alguno de ellos repetidos, mientras que Eigenvectors da una lista
de vectores propios linealmente independientes; si el número de tales vectores propios es
menor que n, entonces Eigenvectors añade vectores nulos a la lista hasta completarla
con n vectores. Como es bien sabido, los valores y vectores propios de una matriz
juegan un papel muy importante a la hora de analizar la diagonalizabilidad de dicha
matriz. En el caso general, dada una matriz m, siempre será posible encontrar una
matriz c tal que c−1 mc = j, donde j es la llamada forma canónica de Jordan (que en el
caso de ser m diagonalizable no es más que una matriz diagonal tal que los elementos
de su diagonal principal son los valores propios de m). La función que lleva a cabo
esta descomposición es JordanDecomposition, la cual proporciona una lista con las
matrices c y j.
calcula A + B, B − 4A, (AB)−1 , ((A − B)B)T , A2 , det(B 3 ) y las raíces del polinomio
característico de A.
17
Ejercicio 3 Estudia y resuelve, según los valores de a, el sistema formado por las
ecuaciones
ax + y + z = 1
x + ay + z = a
x + y + az = a2
otra con
(2, 3, −1, 3, 0), (1, 2, 1, −2, 1), (2, 1, −7, 17, −4)
hallando los rangos de esas dos matrices y una base de su núcleo.
t−2 4 3
Ejercicio 5 Evaluar el determinante de: A = 1 t + 1 −2 , B =
0 0 t−4
2 0 0 5
1 −1 0 0
2 1 3 4
6 5 2 −1
−1 2 −3 2 1 −1
Ejercicio 6 Hallar la inversa de: C = 2 1 0 , D= 0 2 1
4 −2 5 5 2 −3
2 −2 6
Ejercicio 7 Sea la matriz A = 0 a 4 − a , a ≥ 0
0 a −a
18
3. Para dichos valores, calcular la matriz de paso y la matriz diagonal.
Ejercicio 9 Estudiar para qué valores de los parámetros reales a y b las matrices sigu-
ientes son diagonalizables:
5 0 0 a b 0
A = 0 −1 b , B= 0 1 2
3 0 a 0 0 2
19
3. La ecuaciones Ej y Ei pueden intercambiarse. Esta operación se denota por Ei ↔
Ej .
Por medio de estas operaciones se puede transformar un sistema lineal en otro más
sencillo de resolver con el mismo conjunto de soluciones.
Al realizar las operaciones anteriores las variables no cambian, sólo sus coeficientes.
Por esto un sistema lineal se reemplaza frecuentemente por una matriz, que contiene
toda la información del sistema.
20
<<LinearAlgebra‘GaussianElimination‘
LUFactor
que produce esta factorización y da la información sobre que filas han de cambiarse
para que se mantenga la estabilidad numérica en la computación.
El segundo paso de volver hacia atrás sustituyendo se puede hacer mediante
LUSolve.
<<LinearAlgebra‘GaussianElimination‘.
In[1]:= <<LinearAlgebra‘GaussianElimination‘
In[2]:= MatrixForm[a = {{5, 3, 0}, {7, 9, 2},{-2, -8, -1}}].
5 3 0
Out[2]:= 7 9 2
−2 −8 −1
In[3]:= lu = LUFactor[a]
Out[3]:= LU[{{ 57 , 12 −22 −2 −38 −3
19 , 19 },{7,9,2},{ 7 , 7 , 7 }},{2,3,1}]
In[4]:= b={6,-3,7};
In[5]:= c=LUSolve[lu, b]
Out[5]:= { 75 −37 −81
44 , 44 , 22 }
In[6]:= a .c - b
Out[6]:= {0,0,0}
21
Obsérvese que el resultado de Out[3] da la factorización LU de la matriz a y nos
dice tambien como se han colocado las filas de dicha matriz para hacer la reducción
gaussiana.
En términos
matriciales, seleería:
1 0 0 7 9 2 7 9 2
−2 1 0 0 − 38 − 3 = −2 −8 −1
7 7 7
5 12 22
7 19 1 0 0 − 19 5 3 0
La ventaja de utilizar la reducción LU es que se puede utilizar el mismo sistema
de ecuaciones cambiando los términos independientes cambiando solamente el vector b.
Veamoslo
E1 : 5x1 + 3x2 = 2
E2 : 7x1 + 9x2 + 2x3 = −1
E3 : −2x1 − 8x2 − x3 = −2
In[1]:= b1={6,-3,7};
In[2]:= c=LUSolve[lu, b1]
In[3]:= a .c - b1
Do[p[i,j],{i,1,m},{j,1,n}]
Veamoslo en un ejemplo
m=8; n=8;
Do[p[i,j]=0,{i,1,m},{j,1,n}];
Do[p[i,i]=7,{i,1,m}];
Do[p[i,i+1]=2,{i,1,m-1}];
Do[p[i,i-1]=-4,{i,2,m}];
MatrixForm[a=Array[p, {m,n}]]
22
Ejercicio 14 Resuelve el sistema representado en la matriz anterior utilizando como
matrices de los términos independientes los vectores
b = (9, 5, 5, 5, ....., 5, 3).
b = (2, 3, 3, ..., 3, 5).
Utilizando Do para construir estos vectores.
QRDecomposition[matriz]
SchurDecomposition[matriz]
23
Capítulo 3
Resolución numérica de
ecuaciones no lineales
24
Calcular la raíz de una ecuación con un ordenador utilizando técnicas numéricas
tiene sus limitaciones. A menudo la raíz es un número real que no tiene una repre-
sentación exacta en el ordenador. En este caso, tendremos que conformarnos con una
aproximación que verifique una condición impuesta en el algoritmo de la forma
|f (x)| < ε
donde ε es una constante positiva préviamente fijada que recibe el nombre de tolerancia
del algoritmo y tiene la función de actuar como criterio de parada del algoritmo cuando
consideramos que estamos suficientemente cerca del valor exacto de la raíz. En los
algoritmos iterativos en los que se genera una sucesión de aproximaciones {xn }n∈N
que queremos que converja a la solución, se utiliza como criterio de parada el que dos
iteraciones sucesivas cumplan uno de los dos siguientes criterios:
Teorema 1 Dada una función f (x) continua en un intervalo [a, b] que verifica la
condición f (a) · f (b) < 0, existe α ∈ (a, b) tal que f (α) = 0.
25
3. Los cálculos se paran cuando |bk − ak | < ε2 o cuando k > kmax . Se obtiene
ak + bk
α ≈ mk =
2
donde ε1 y ε2 son tolerancias fijadas por el algoritmo y que pueden ser iguales
o no, kmax es el valor de la iteración máxima que consideremos, para evitar un
proceso excesivamente largo.
Empezaremos localizando la raíz: f (0) = −0.7 < 0, f (2) = 2 − 0.5 sin 2 − 0.7
= 0. 845 35 > 0, luego empezamos en el intervalo [0, 2] . f (1) = 1 − 0.5 sin 1 − 0.7
= −0. 120 74 < 0, luego será el intervalo [1, 2] , f (1.5) = 1.5 − 0.5 sin 1.5 − 0.7 =
0.301 25 > 0 ⇒ [1, 1.5] , f (1.25) = 1.25 − 0.5 sin 1.25 − 0.7 = 7. 550 8 × 10−2 > 0 ⇒
[1, 1.25] , f (1.125) = 1.125 − 0.5 sin 1.125 − 0.7 = −2. 613 4 × 10−2 < 0 ⇒ [1.125, 1.25] ,
f (1.1875) = 1.1875−0.5 sin 1.1875−0.7 = 2. 378 2×10−2 > 0 ⇒ [1.125, 1.1875] es decir,
después de cinco iteracciones sabemos que la raíz está en el intervalo [1.125, 1.1875] ,
por lo que si aproximamos la solución por el punto medio de éste, 1.15625 sabemos que
el error que se comete es menor que 0.0 312 5.
26
Cuando lim xk = α, diremos que la sucesión converge a la solución del problema
k→∞
ya que α es un punto fijo de g (x) .
Para saber las condiciones bajo las cuales son convergentes las iteraciones de punto
fijo se utiliza el teorema:
Teorema 2 Dada una función g ∈ C 1 ([a, b]) tal que |g 0 (x)| < 1 para todo x ∈ (a, b) ,
existe α ∈ (a, b) para el cual g (α) = α, dado x0 ∈ (a, b) y la sucesión {xk }k∈N tal que
xk = g (xk−1 ) , k ∈ N, se verifica g (xk ) ∈ (a, b) para todo k > 0, entonces la sucesión
{xk }k∈N converge a α.
Esta idea es muy útil a la hora de reemplazar problemas no lineales por problemas
lineales y se ha mostrado como una idea muy fructífera en Matemáticas. Es fácil
comprobar que si en la iteración k − 1 construimos la recta tangenta a f (x) en el punto
xk−1 se obtiene
y = f (xk−1 ) + f 0 (xk−1 ) (x − xk−1 )
Por tanto, el valor xk se encuentra en la intersección de esta recta con el eje x.
El algoritmo de Newton se emplea ampliamente porque, al menos en las proximi-
dades de una raíz, converge más rápidamente que el de la bisección, de la secante, etc.
No obstante, debemos resaltar que la aplicación del método de Newton no siempre es
posible, ya que puede ocurrir que xk−1 no pertenezca al dominio de la función f o que
f no sea derivable en xk−1 . Las iteraciones del método de Newton convergen bajo las
condiciones que se especifican en el siguiente teorema:
Teorema 3 Dada f ∈ C 1 ([a, b]) tal que existe α ∈ (a, b) para el cual f (α) = α y
f 0 (α) 6= 0 y dada {xk }k∈N tal que si x0 ∈ (α − δ, α + δ) se verifica que la sucesión
{xk }k∈N converge a α.
27
solución verdadera. Para poder comparar diferentes métodos introducimos la siguiente
definición.
Definición 1 Sea {xk }k∈N una sucesión que converge a una solución α de la ecuación
f (x) = 0 y sea εk el error absoluto cometido al considerar como solución εk = xk − α.
Si existen p ∈ N y c ∈ R diferentes de cero, tales que
|εk+1 |
lim = c, (3.2)
k→∞ |εk |p
diremos que p es el orden de convergencia mientras que c es la constante del error
asintótico.
a0=a; b0=b
For[k=1,k≤nmax,k++,
m=(a+b)/2;
If[Abs[f[m]]<pre,
sale=’’precisión’’;Break[]];
If[Sign[f[a]]6=Sign[f[m]], b=m; a=a];
If[Sign[f[b]]6=Sign[f[m]], b=b; a=m];
If[b-a<tol, sale=’’tolerancia’’;Break[]]]
apm=SetPrecision[m,cifras];
If[sale==’’precisión’’,
Print[’’posible solución exacta:’’,apm],
If[k≤nmax,Print[’’solución pedida:’’,apm],
28
Print[’’Se ha llegado al número máximo de iteraciones’’]]]
Print[’’Número de iteraciones: ’’,k];
Print[’’Error máximo cometido: ’’,tol];
x=x0;
For[k=1, k≤nmax, k++,
x=x-(f[x]/f1[x]);
y=f[x]+f1[x]x;
If[Abs[y]<pre, sale=’’precisión’’ ; Break[]];
If[Abs[f[x]]<tol, sale=’’tolerancia’’; Break[]]]
apm=SetPrecision[x,cifras];
If[sale==’’precisión’’,
Print[’’posible solución exacta: ’’, apm],
If[k≤nmax, Print[’’solución pedida: ’’, apm],
Print[’’Se ha llegado al número máximo de iteraciones’’]]]
Print[’’Número de iteraciones: ’’,k];
Print[’’Error máximo cometido: ’’,tol];
donde f1[x]=D[f[x],x], y se han de introducir los valores para x0, pre, cifras
y tol.
Ejercicio 18 Utilizar los métodos de la bisección y de Newton para encontrar las raíces
positivas en los intervalos correspondientes de las funciones siguientes con un error
menor que 0.02. Dibujar primero las funciones para decidir el intervalo adecuado.
29
2. f (x) = 2x − e−x .
3. f (x) = e−2x − 1 + x.
Ejercicio 19 Utilizar el método de Newton para encontrar, con cinco decimales exac-
³ x ´2
tos, la raíz de la ecuación sin x = .
2
NSolve[ecuación==0,x]
<<NumericaMath‘InterpolateRoot‘
trabaja de forma más específica, suponiendo que la función tiene un ”buen” compor-
tamiento, lo que permite encontrar las raíces de una función o una ecuación cerca de
los puntos a,b de forma mucho más precisa.
InterpolateRoot[función,{x,a,b}]
InterpolateRoot[ecuación,{x,a,b}]
30
Mathematica también usa los métodos numéricos explicados anteriormente, car-
gando el paquete
<<NumericalMath‘IntervalRoots‘
obtiene intervalos donde pueden estar las raíces de una función mediante los métodos
anteriores:
IntervalBisection[función,x,Interval[{a,b}],tolerancia]
IntervalNewton[función,x,Interval[{a,b}],tolerancia]
Ejercicio 21 Resuelve los problemas anteriores usando los métodos propios de Math-
ematica. Utiliza los resultados para comparar como son de buenos los algoritmos intro-
ducidos.
31
Capítulo 4
Interpolación y aproximación de
funciones
La interpolación, que es el cálculo de valores para una función tabulada en puntos que
no aparecen en la tabla, es historicamente una tarea fundamental. Los nombres de
muchos matemáticos famosos están asociados con métodos de interpolación: Newton,
Gauss, Bessel, Stirling,...
Aunque hoy en día, los estudiantes rara vez tiene que interpolar para valores de
senos, logaritmos y demás funciones no algebraicas a partir de tablas, sus calculadoras
y computadoras usan estas técnicas para calcular estos valores y creemos que es impor-
tante que los estudiantes entiendan como funcionan las calculadoras. Además, estos
métodos resultan interesantes ya que constituyen la base para muchos procedimientos
que estudiarán, como los de derivación e integración numérica, resolución de ecuaciones
diferenciales, etc. Por otro lado, la interpolación con polinomios sirve como una exce-
lente introducción para ciertas técnicas de aproximación de curvas suaves, técnicas que
resultan muy útiles a los alumnos de ingenieria.
Este problema tiene solución única, el polinomio que satisface estos requisitos se conoce
como polinomio interpolador o interpolante de la función f en los puntos x0 , x1 , ..., xn .
32
Hay dos procedimientos básicos para calcularlo: el de Newton y el Lagrange.
Un aspecto importante a considerar es la calidad de nuestra interpolación, es decir
el error que se comete cuando se aproxima un punto distinto de los nodos.
f n+1 (ξ x )
f (x) − pn (x) = (x − x0 ) (x − x1 ) ... (x − xn ) , ξ x ∈ (a, b)
(n + 1)!
De la fórmula anterior no se puede deducir que los polinomios de mayor grado cor-
respondan a una interpolación mejor. De hecho, esta interpolación es peor al aumentar
el grado debido al cáracter oscilatorio de los polinomios de grado alto. El error tiene
una dependencia directa de la derivada de orden n + 1 y de la proximidad de los puntos
a los nodos.
Ejemplo 5 Calcular el polinomio de interpolación que pasa por (1, 1),(2, 0),(4, 0),(5, 1),(6, 1.5) .
Solución: Un polinomio que pasa por cinco puntos debe ser de grado cuatro, luego
se han de encontrar los valores de ai en el polinomio:
y = a0 + a1 x + a2 x2 + a3 x3 + a4 x4
para que pase por los puntos exigidos. Esto es equivalente a resolver un sistema de
ecuaciones lineales, donde ai son las incognitas.
33
newton[t_] = Sum[sol[[1]][[i]][[2]]*t^(i - 1), {i, 1, 5}]
Se pueden dibujar los puntos y el polinomio interpolador:
dib1 = ListPlot[datos1, PlotStyle -> {RGBColor[1, 0, 0], PointSize[0.01
dib2 = Plot[newton[t], {t, 0, 6}];
Show[dib1, dib2];
1.5
0.5
1 2 3 4 5 6
permite obtener el polinomio de interpolación que pasa por los puntos dados.
0.5
2 3 4 5 6
1. Interpolar con un polinomio cúbico que pase por los cuatro primeros puntos y
utilizarlo para calcular f (0.2) .
34
2. Hacer una estimación del error.
1
Ejercicio 24 La función f (x) = , se conoce como función de Runge y fue
1 + x2
la utilizada por Runge para demostrar el efecto que lleva su nombre. Calcular los
polinomios interpoladores de grados 4 y 10, de dicha función en el intervalo [−5, 5].
In[]:= g[t_]:=Which[t<0,-t^3,0<t<1,t^2,1<t<2,t-1,t>2,1];
In[]:= Plot[g[t],{t,-5,5}];
2.5
1.5
0.5
-4 -2 2 4
Por tanto, dado un conjunto de nodos, utilizaremos una interpolación mediante poli-
nomios cúbicos cada cuatro nodos. Veremos el ejemplo anterior utilizando polinomios
interpoladores de grado 2.
x={1,2,4,5,6};
y={1,0,0,1,1.5};
sol1 = Solve[Table[y[[i]] == a0 + a1*x[[i]] + a2*(x[[i]])^2 ,
{i, 1, 3}], {a0,a1,a2}];
sol2 = Solve[Table[y[[i]] == a0 + a1*x[[i]] + a2*(x[[i]])^2 ,
{i, 3, 5}], {a0,a1,a2}];
El polinomio de Newton será:
newton1[t_] = Sum[sol1[[1]][[i]][[2]]*t^(i - 1), {i, 1, 3}]
newton2[t_] = Sum[sol2[[1]][[i]][[2]]*t^(i - 1), {i, 1, 3}]
y utilizar Which para construir el polinomio a trozos:
newtonTotal[t_]=Which[t<x[[3]],newton1[t],x[[3]]<t<x[[5]],newton2[t]]
Se pueden dibujar los puntos y el polinomio interpolador:
dib1 = ListPlot[datos1, PlotStyle -> {RGBColor[1, 0, 0], PointSize[0.01]}];
dib2 = Plot[{newtonTotal[t], {t, 0, 6}];
Show[dib1, dib2];
35
1.5
1.25
0.75
0.5
0.25
1 2 3 4 5 6
-0.25
De donde se obtiene
yi+1 = ai (x − xi+1 )3 + bi (x − xi+1 )2 + ci (x − xi+1 ) + di =
= ai h3i + bi h2i + ci hi + di , i = 0, 1, ..., n − 1.
36
Si se hace Si = gi00 (xi ) y Sn = gn−1
00 (xn ) , los valores de los coeficiente vienen dados
por
<<Graphics‘Spline‘
Ejemplo 6 Veamos como utilizar este comando para ajustar la siguiente tabla de datos
1 2 3 4
1 4 3 4
In[]:= <<Graphics‘Spline ‘
In[]:=datos={{1,1},{2,4},{3,3},{4,4}};
In[]:=splin=Spline[datos,Cubic]
In[]:=Show[Graphics[{Line[datos],splin},Axes->True];
3.5
2.5
1.5
2. la interpolación a trozos,
Compara los resultados que se obtienen con las distintas aproximaciones para t=0.25.
37
4.3 Ajuste de datos por mínimos cuadrados
Este ajuste se basa en minimizar la suma de los cuadrados de los errores y sirve para
ajustar una curva a un conjunto de datos aproximados, en general, datos experimen-
tales.
El criterio de mínimos cuadrados, además de proporcionar un resultado único para
un conjunto de datos, también coincide con el principio de máxima probabilidad de
estadística. Si los errores de medición poseen una distribución normal y si la desviación
estandar es constante para todos los datos, entonces se puede demostrar que la recta de-
terminada al minimizar la suma de los cuadrados tiene valores de pendiente y ordenada
en el origen con probabilidad máxima de ocurrencia.
Sea Yi un valor experimental y sea yi un valor de la ecuación
yi = axi + b
38
Se supone la relación
y = a0 + a1 x + ... + an xn
ei = Yi − yi = Yi − a0 − a1 xi − ... − an xni
N
X N
X N
X
a0 N + a1 xi + a2 x2i + ... + an xni = Yi
i=1 i=1 i=1
N
X XN XN XN N
X
a0 xi + a1 x2i + a2 x3i + ... + an xn+1
i = xi Yi
i=1 i=1 i=1 i=1 i=1
...
N
X N
X N
X N
X XN
a0 xni + a1 xn+1
i + a2 xn+2
i + ... + an x2n
i = xni Yi
i=1 i=1 i=1 i=1 i=1
un sistema de n+1 ecuaciones lineales con las incógnitas a0 , a1 , ..., an . Para su resolución
se usarán los métodos algebraícos explicados anteriormente.
Mathematica posee una función integrada para realizar ajuste de datos por mínimos
cuadrados
La relación deseada no tiene por que ser lineal y se permite más de una variable inde-
pendiente. Se trabaja con una lista de puntos y se suministra un patrón para ajustar
la ecuación. En particular,
datos={{20.5,765},{32.7,826},{51.,873},{73.3,942},{95.7,1032}};
da1=Fit[datos.{1,x},x];
Out[]= 702.172+ 3.39487 x.
Se puede comprobar graficamente como de bueno es este ajuste.
d1 = ListPlot[datos, PlotStyle -> {RGBColor[1, 0, 0], PointSize[0.02]}];
d2 = Plot[da1, {x, 0, 100}];
Show[d1,d2];
39
1050
1000
950
900
850
800
750
20 40 60 80 100
Ejercicio 26 Encuentrar la recta de mínimos cuadrados que se ajusta a los datos sigu-
ientes, suponiendo que las x están libres de error.
x 1 2 3 4 5 6
y 5.04 8.12 10.64 13.18 16.20 20.04
Ejercicio 27 Repetir el ejercicio anterior suponiéndo que los valores libres de error
son las y. Debes obtener una recta de mínimos cuadrados de la forma x = ay + b.
Observa que no es la misma recta que se obtuvo antes.
Ejercicio 29 Parece que los datos siguientes se ajustan una ecuación cúbica, pero
determinar el grado óptimo por mínimos cuadrados.
x 0.1 1.1 1.6 2.4 2.5 4.1 5.2 6.1 6.6 7.1 8.2 9.1
y 1.9 7.9 24.9 24.9 34.9 42.7 29.7 49.8 36.1 23.7 13.0 20.5
9.4 11.1 11.4 12.2 13.2 14.1 15.6 16.1 17.6 17.9 19.1 20.0
-3.1 -13.0 -28.7 -39.5 -48.6 -40.2 -51.6 -30.5 -34.6 -16.4 -13.4 -1.1
5. ¿Qué valores obtienes para t = 0.90 con las distintas curvas de interpolación
obtenidas?
40
Ejercicio 31 Los datos siguientes representan la potencia diaria, en megawatts, gen-
erada por una central eléctrica de servicio regional, durante el mes de agosto de 1998,
y la temperatura atmosférica, en grados Fahrenheit, registrada a las 11 a.m. en una
localidad cercana:
Temperatura 95 96 97 99 94
.
Potencia 153.4 158.5 159.6 160.0 154.0
3. Utiliza los dos resultados anteriores para calcular el valor de y cuando x = 98.
¿Qué resultado consideras correcto?
x 2 3 4 5 6
y 12 24 50 95 190
41
Capítulo 5
42
Opciones
Cuando Mathematica dibuja una gráfica, debe tomar muchas decisiones. Estas deci-
siones pueden ser modificadas dependiendo de los valores de las opciones. Recuerdese
que mediante ??Plot o la orden Options pueden verse todas las opciones para la fun-
ción Plot junto con sus valores por defecto.
In[] := Options[Plot]
Las opciones se especifican dando el nombre de la opción junto con el valor; por ejem-
plo, si queremos determinar el rango de los valores de y usariamos la opción PlotRange.
Finalmente, si no se especifica una determinada opción se usa su valor por defecto
Al usar estas opciones se han de tener en cuenta los objetivos que se persiguen
ya que algunas veces es interesante conocer todos los posibles valores de una función;
en cambio otras, el usar todos estos valores da un gráfico que no ayuda mucho en su
evaluación.
La función Dashing crea una línea a trazos en la que los sucesivos trazos dibujados
o no dibujados son de longitud d1 ,d2 ,..., los argumentos de la función. Las longitudes
d1 ,d2 ,... se especifican como fracciones del ancho total del gráfico.
43
Gráficas de varias curvas
Plot permite obtener la gráfica de varias curvas al mismo tiempo, para ello se han de
escribir las ecuaciones de las distintas curvas en forma de lista en el primer argumento
de Plot
Como hemos indicado antes cada una de las líneas puede dibujar con un estilo
diferente, lo que permite su mejor visualización.
Gráficas paramétricas
Este tipo de gráficas son muy útiles cuando se quiere dibujar simultáneamente los
valores de x e y en función de un parámetro. Permite asimismo dibujar gráficas en
coordenadas polares.
La función ParametricPlot dibuja una curva parametrizada, una función donde
los valores de x e y vienen dados en función de un parámetro; en general se usa t como
dicho parámetro ya que suele representar el tiempo.
Una opción interesante de Plot3D es que la gráfica obtenida puede verse desde
distintos puntos de vista mediante ViewPoint. El Front End tiene una opción en el
menú que permite visualizar los distintos enfoques que se le puede dar a la figura, sin
más que mover el cubo de referencia mediante el ratón.
La opción Show permite redibujar un gráfico, combinar varios de ellos o cambiar las
opciones de uno construido antes.
Los gráficos tridimensionales estan ya coloreados por defecto.
Gráficas paramétricas
La opción ParametricPlot3D produce gráficas tridimensionales donde las coordenadas
x, y, z están dadas en términos de dos parámetros
Al igual que antes, la ventaja de utiliza esta opción consiste sobre todo en el dibujo
de funciones que son dificiles de hacer en coordenadas cartesianas.
44
5.2 Curvas en el plano y en el espacio
5.2.1 Curvas en el plano, ecuaciones paramétricas
En general, las ecuaciones de las curvas en el plano vienen dadas en coordenadas carte-
sianas, x e y. Mathematica sabe representar este tipo de ecuaciones de forma directa
cuando y = f (x) mediante Plot:
No obstante, a veces es útil introducir una tercera variable para representar una
curva en el plano. El interés de introducir esta tercera variable es doble: por un lado
permite dibujar mas fácilmente algunas curvas planas que no se pueden escribir de
forma inmediata como funciones. Por otro lado, en mucho casos este parametro se
puede considerar como el tiempo y permite la descripción completa de la curva en
términos de la trayectoria seguida por un móvil. Veamoslo:
x = cos t, y = sin t.
La orden que permite dibujarlo es:
ParametricPlot[{Cos[t],Sin[t]},{t,0,2 Pi}]
45
Este conjunto de ecuaciones permite determinar en que punto está el objeto en
cada instante. El dibujo de la trayectoria se puede obtener, además de utilizar la
orden Plot, mediante
ParametricPlot[{5 Sqrt[2] t ,5 Sqrt[2] t-5 t^2},{t,0, Sqrt[2]}]
El utilizar las ecuaciones paramétricas permite, además, conocer el sentido de
recorrido de la trayectoria.
Coordenadas polares
Para construir un sistema de coordenadas polares en el plano, se fija un punto O llamado
origen (o polo) y desde O se considera un rayo inicial llamado eje polar. A cada punto
P del plano se le asignan las coordenadas polares (r, t)1 de la siguiente forma:
r : distancia dirigida de O a P.
t : ángulo orientado en sentido antihorario desde el eje polar hasta el segmento OP .
En general se suele elegir el origen de las coordenadas cartesianas como origen de
las polares y el eje x como eje polar.
Las coordenadas cartesianas estan relacionadas con las polares mediante las fórmu-
las ¯ 2 2 2
x = r cos t ¯¯ x + y = r
y
y = r sin t ¯ tan t =
x
Ejercicio 33 Dibujar las siguientes curvas utillizando coordenadas paramétricas y carte-
sianas:
x2 + y2 = 9
x2 + y2 − 2x = 0
x2 + y2 − 4y = 0
2
¡y 2= 2x2 ¢2 ¡ ¢
x +y − 9 x2 − y 2 = 0
y=x
46
ParametricPlot3D[{t,t^2,2t}, {t,-1,1}]
Estudiaremos dos nuevos sistemas de coordenadas espaciales: el sistema de coorde-
nadas cilíndricas y el sistema de coordenadas esféricas.
Coordenadas cilíndricas
En un sistema de coordenadas cilíndricas un punto P del espacio se representa por un
trio ordenado (r, t, z), donde
(r, t) es una representación polar de la proyección del punto P en el plano xy, y
z es la distancia orientada de (r, t) a P.
Las coordenadas cartesianas estan relacionadas con las cilíndricas mediante las
fórmulas ¯ 2 2 2
x = r cos t ¯¯ x + y = r
y
y = r sin t ¯¯ tan t =
¯ x
z=z z=z
Este tipo de coordenadas está especialmente indicado cuando hay trayectorias que
tienen al eje z como eje de simetría.
x = 2 cos t
y = 2 sin t , 0 ≤ t ≤ 2π
z=t
Coordenadas esféricas
En un sistema de coordenadas esféricas un punto P del espacio se representa por un
trio ordenado (R, t, u)2 , donde
R es la distancia de P hasta el origen, R ≥ 0
t es el mismo ángulo que se usa en coordenadas cilíndricas, 0 ≤ t ≤ 2π, y
u es el ángulo entre el eje z positivo y el segmento OP , 0 ≤ u ≤ π.
Las coordenadas cartesianas estan relacionadas con las cilíndricas mediante las
fórmulas
¯ x2 + y2 + z 2 = R2
x = R sin u cos t ¯¯ y
y = R sin u sin t ¯¯ tan t =
xz
z = R cos u ¯
u = arccos
R
Este tipo de coordenadas es especialmente útil para dibujos con un centro de
simetría.
2
En general, las coordenadas esféricas se conocen por (ρ, θ, φ). Utilizamos la otra notación por
comodidad de escritura.
47
5.3 Dibujo de superficies, parametrización de superficies
Una superficie necesita dos parámetros para poder dibujarla, el Mathematica dibuja de
forma inmediata superficies que son funciones de dos variables, z = f (x, y)
Plot3D[x+y, {x,-1,1},{y,-1,1}];
Pero si las superficies no son planos, su dibujo es mejor si se utilizan las coordenadas
adecuadas.
48
5.4.1 Derivación explícita e implícita
El programa ofrece varios comandos para el cálculo de derivadas tanto de funciones de
una variable como de varias variables. En este apartado los repasaremos brevemente y
veremos cómo se pueden aplicar a gran número de problemas que aparecen en Cálculo.
El comando
D[f , x ]
∂
calcula la derivada parcial f;
∂x
D[f , x , y, ...]
∂ ∂
calcula la derivada múltiple . . . f;
∂x ∂y
D[f , {x , n}]
∂n
proporciona la derivada n-ésima f , mientras que
∂xn
D[f , x , NonConstants →{u, v, ...}]
Derivative[1][f ]
Dt[f ]
mientras que
Dt[f , x ]
df
da la derivada total ;
dx
49
Dt[f , x , y, ...]
d d
da la derivada total múltiple · · · f, y
dx dy
Dt[ecuación, x ]
Calculus‘VectorAnalysis.m
5.4.2 Problemas
Vamos ahora a resolver algunos problemas típicos:
x (t) = t cos t
y (t) = t sin t
50
2. Determinar los puntos de corte de estas rectas tangente y los ejes coordenados.
Ejercicio 47 Aplicar el teorema de los incrementos finitos para ver cuales de las fun-
ciones anteriores del problema 45 son diferenciables en el punto (0, 0) .
1
f (x, y, z) = p
x + y2 + z2
2
51
Ejercicio 50 Dibujar las curvas siguientes y estudia en que puntos la función no tiene
derivada. Demuéstralo.
r = 2 cos 3t (rosa de tres pétalos)
r2 = 4 sin 2t (lemniscata).
r = 2 ± 3 sin t (caracoles).
Ejercicio 54 Usar el método de los multiplicadores de Lagrange para hallar los valores
máximo y mínimo absoluto de f (x, y) = x2 + y 2 − x − y + 1 en el disco unidad. Haz
una representación gráfica.
Dibujarla.
52
Ejercicio 58 Dada la función f (x, y) = y sin (πx).
1. Dibujarla.
2. Calcular el plano tangente a esta superficie en un entorno del punto (1, 1, −1) .
53