mathematica comandos basicos

53
Prácticas con Mathematica Fundamentos Matemáticos de la Ingenieria I. P. Vindel Departament de Matemàtiques. ESTCE. Campus de Riu Sec. 2005-2006 1

Upload: felix-angel-hernandez-rodriguez

Post on 07-Aug-2015

116 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Mathematica Comandos Basicos

Prácticas conMathematica

Fundamentos Matemáticos de la Ingenieria I.

P. Vindel

Departament de Matemàtiques.ESTCE. Campus de Riu Sec.

2005-2006

1

Page 2: Mathematica Comandos Basicos

Índice

1 Introducción a Mathematica 41.1 Convenios sobre notación . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.1 Funciones incorporadas. . . . . . . . . . . . . . . . . . . . . . . . 51.1.2 Funciones no incorporadas . . . . . . . . . . . . . . . . . . . . . . 61.1.3 Sumatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 Aproximaciones numéricas . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3 Posibilidades simbólicas y algebraicas . . . . . . . . . . . . . . . . . . . 8

1.3.1 Problemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4 Asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.4.1 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5 Iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.6 Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2 Álgebra lineal 132.1 Resolviendo problemas con el Mathematica . . . . . . . . . . . . . . . 13

2.1.1 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.2 Sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . 152.1.3 Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . 16

2.2 Problemas de Álgebra Lineal . . . . . . . . . . . . . . . . . . . . . . . . 172.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 . . . . . . . . . 202.3.2 Descomposición QR y descomposición de Shur . . . . . . . . . . 23

3 Resolución numérica de ecuaciones no lineales 243.1 Método de la bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.2.1 Análisis del error . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3 Resolución de ecuaciones no lineales con Mathematica . . . . . . . . . . 28

3.3.1 Método de la bisección . . . . . . . . . . . . . . . . . . . . . . . . 283.3.2 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.3 Métodos Numéricos de Mathematica . . . . . . . . . . . . . . . . 30

2

Page 3: Mathematica Comandos Basicos

4 Interpolación y aproximación de funciones 324.1 Interpolación polinómica de Newton . . . . . . . . . . . . . . . . . . . . 32

4.1.1 El efecto Runge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.1.2 Polinomio interpolador de Newton . . . . . . . . . . . . . . . . . 334.1.3 Interpolación a trozos . . . . . . . . . . . . . . . . . . . . . . . . 35

4.2 Interpolación con un splin cúbico . . . . . . . . . . . . . . . . . . . . . . 364.3 Ajuste de datos por mínimos cuadrados . . . . . . . . . . . . . . . . . . 38

5 Estudio de funciones reales 425.1 Gráficas en Dos y Tres Dimensiones . . . . . . . . . . . . . . . . . . . . 42

5.1.1 Gráficas en el plano. . . . . . . . . . . . . . . . . . . . . . . . . . 425.1.2 Gráficas Tridimensionales . . . . . . . . . . . . . . . . . . . . . . 44

5.2 Curvas en el plano y en el espacio . . . . . . . . . . . . . . . . . . . . . . 455.2.1 Curvas en el plano, ecuaciones paramétricas . . . . . . . . . . . . 455.2.2 Curvas en el espacio, ecuaciones paramétricas. . . . . . . . . . . 46

5.3 Dibujo de superficies, parametrización de superficies . . . . . . . . . . . 485.4 Cálculo Diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.4.1 Derivación explícita e implícita . . . . . . . . . . . . . . . . . . . 495.4.2 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.4.3 Máximos y mínimos de funciones . . . . . . . . . . . . . . . . . . 51

3

Page 4: Mathematica Comandos Basicos

Capítulo 1

Introducción a Mathematica

Los ingenieros realizan una gran cantidad de cálculos y manipulaciones matemáticasa mano. La mayoría de estos cálculos es posible realizarlos mediante un programade ordenador como Mathematica. Mathematica, por tanto, trabaja sobre problemasque no es práctico realizar a mano. Mathematica es una herramienta útil para hacermanipulaciones simbólicas y numéricas, así como para trabajar con gráficos.

Mathematica es un lenguaje interpretado, es decir, lee expresiones, evalúa el resul-tado y luego lo muestra en pantalla. Al ser interactivo, es más fácil de usar que loslenguajes compilados como C o FORTRAN.

Mathematica dispone de una gran cantidad de funciones ya definidas (funcionesincorporadas) con las que se pueden cubrir los aspectos más generales de las ingenierías.Además,Mathematica es programable; cualquier función no disponible la puede escribiruno mismo.

1.1 Convenios sobre notación

Para introducirnos en el lenguaje de Mathematica, en cada práctica veremos algunosejemplos que muestran las posibilidades de este programa.

Cada ejemplo consiste en un input del usuario encabezado con In[n] , n-ésimo in-put, y una respuesta de Mathematica encabezada con Out[n] , n-ésimo output, cuandoproceda. Para comenzar conMathematica es conveniente probar con los ejemplos prop-uestos.

Las expresiones escritas en letra mecanografiada corresponden al input y al output.Las correspondientes al input se deben escribir tal y como aparecen en los ejemplos;las correspondientes al output no se tienen que escribir: las escribe Mathematica. Laspalabras y símbolos escritos en tipo máquina se deben reemplazar por expresionesintroducidas por el usuario.

En el siguiente ejemplo la expresión 2 + 2 corresponde al input, y por tanto se debeescribir tal y como aparece, mientras que la expresión 4 corresponde al output, y no sedebe escribir en pantalla.

2 + 2Out[] = 4

4

Page 5: Mathematica Comandos Basicos

Hay que poner atención en la diferencia entre mayúsculas y minúsculas, el tipo deparé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. CuandoMathematica espera la introducción de una expresión, aparece un indicador de la formaIn[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.

?SinOut [] = Sin[z] gives the sine of z.

Así, podemos calcular el seno de π/4

Sin[Pi/4]

Mediante ?? obtenemos información adicional.Mathematica tiene incorporados la mayoría de los símbolos matemáticos con los

que se trabaja habitualmente. Entre ellos están las operaciones básicas: suma (+),diferencia (-), producto (*), división (/) y potencia (^).

El texto entre (* y *) no se evalúa. Estos paréntesis se utilizan para hacer comen-tarios.

v = {7, 3, -1} (* Aquí v es un vector *)

1.1.1 Funciones incorporadas.

El Kernel de Mathematica reconoce más de 1100 funciones. Estas funciones se llamanfunciones incorporadas. Los nombres de las funciones incorporadas consisten en pal-abras inglesas completas o abreviaciones matemáticas estándar, de forma que la primeraletra de cada palabra se escribe con mayúscula. Por ejemplo, una de las funciones queaparecen cuando pedimos a Mathematica los nombres de las funciones que empiezanpor Si es SingularValues.

Las funciones propiamente dichas son el equivalente a las funciones que empleamosen matemáticas, en el sentido de que no tienen por qué tomar siempre un valor con-stante. La función trigonométrica sin(x) es una función no constante; la letra x dec-imos que es su variable. En la notación de Mathematica la función seno hemos visto

5

Page 6: Mathematica Comandos Basicos

que se representa por Sin, de forma que cuando queremos calcular sin(π/2) escribimosSin[Pi/2]. El concepto análogo al concepto matemático de variable en la terminologíade Mathematica es el término argumento.

Evidentemente, no todas las funciones requieren un único argumento. Cuando unafunción requiere más de un argumento, estos van separados por comas. Aquí calculamosla 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]

1.1.2 Funciones no incorporadas

Como se ha indicado en la introducción, Mathematica es programable y, por tanto,podemos añadir funciones a Mathematica. Un ejemplo muy sencillo es definir unafunción que eleve al cuadrado su argumento.

f[x_]=x^2f[2]Out [] =4

El carácter _ (referido como blanco) en la parte de la izquierda es muy importante.No hay que poner un blanco en la parte de la derecha de la definición.

Una función puede tener más de un argumento. Aquí definimos la función g(x, y) =xy:

g[x_,y_]= x y;g[2, 3]Out [] =6

En algunas ocasiones necesitamos una definición aplazada. Por ejemplo, cuandodefinimos la función factorial

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

Page 7: Mathematica Comandos Basicos

1.1.3 Sumatorios

El sumatoriomPi=n

f(i) en Mathematica se expresa como

Sum[f[i], {i, n, m}]

En su forma más general la función Sum tiene la siguiente sintaxis:

Sum[expr, {i, min, max, paso}]

La función Sum tiene dos argumentos: la expresión sobre la que se efectúa la sumay un iterador. Un iterador es una lista como mínimo de un elemento y como máximocuatro. En nuestro caso utilizaremos tres o cuatro elementos para un iterador. Lositeradores de la forma var, vmin, vmax ejecutan una función para var = vmin hastavar = vmax , incrementando var en 1 en cada iteración. Por ejemplo, para hacer lasuma de los diez primeros números naturales, hacemos

Sum[i, {i, 1, 10}]Out [] =55

En cambio, para hacer la suma de los 10 primeros números naturales impares,hacemos

Sum[i, {i, 1, 10, 2}]Out [] =25

1.2 Aproximaciones numéricas

Mathematica trabaja con aritmética exacta pero, a menudo, esta situación no es posibleo, al menos, no es operativa. Como veremos más adelante muchos problemas se hande resolver de forma aproximda. Mathematica utiliza el comando N para dar unaaproximación de un resultado numérico con la precisión deseada. Por ejemplo, paracalcular la raíz cuadrada de 2 introducimos

Sqrt[2]Out [] =

√2

En esta situación, para obtener una aproximación utilizaremos el comando N.

N[Sqrt[2]]Out [] =1.41421

Por defecto Mathematica trabaja con números de seis cifras. Podemos cambiar elnúmero de dígitos con los que Mathematica nos presenta la aproximación:

N[Sqrt[2],20]Out [] =1.4142135623730950488

Problema 1 Como ejemplo, utilizar el comando anterior para calcular√2, e, y π con

varias precisiones.

7

Page 8: Mathematica Comandos Basicos

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 loscomandos que permiten esta manipulación.

• La primera letra siempre se escribe en mayúscula.• Los argumentos van siempre entre corchetes [ ].• Si el comando admite más de un argumento, éstos van separados por comas.

Estas reglas también las siguen las funciones y constantes predefinidas en Mathe-matica como por ejemplo

Sin[x] Tan[0] Log[2] Sqrt[8] . . .E Pi I . . .

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)

Cuando escribamos el producto de dos variables x e y se ha dejar un espacio enblanco entre las dos o poner un ∗. Esto no es necesario cuando escribimos el productode un número por una variable.

La función Apart transforma un resultado en fracciones simples:

x/((x+2)(x-2))Apart[%]

Out [] =1

2 (x− 2) +1

2 (x+ 2)

La función Together combina dos o más fracciones con común denominador y sim-plifica los factores comunes:

Together[%]

Out [] =x

(x− 2) (x+ 2)

El comando D calcula la derivada de una función respecto de una variable:

Cos[E^x];D[%]Out [] =−ex sin ex

8

Page 9: Mathematica Comandos Basicos

Hay que prestar atención al escribir esta función porque tanto el coseno como elnúmero e son funciones predefinidas en Mathematica y han de seguir las reglas desintaxis descritas anteriormente.

Este comando admite argumentos opcionales que nos permiten calcular derivadassegundas, terceras, :

D[x^2 E^x,{x,2}]Out [] =2ex + 4xex + x2ex

Para calcular límites tenemos el comando Limit. Por ejemplo,

Limit[1/x, x− > 0]Out [] =∞

Para resolver ecuaciones Mathematica tiene el comando Solve:

Solve[xˆ2− 1 == 0, x]Out [] ={x→ 1}{x→ −1}

Un sistema de ecuaciones se expresa mediante una lista de ecuaciones y una listade variables:

Solve[{xˆ2+ y == 0, x− yˆ2 == 0}, {x, y}]

El comando Solve no puede resolver de forma exacta ecuaciones polinómicas degrado igual o mayor que cinco. Para este tipo de ecuaciones utilizaremos el comandoNSolve para obtener una aproximación de las soluciones:

NSolve[xˆ5− xˆ2+ 1 == 0, x]

1.3.1 Problemas.

Problema 2 Calcular y simplificara

a− b− b

a+ b

Problema 3 Factorizar los polinomiosx2 − 4x− 5x3 + x2 + x+ 13x2 − 6x+ 1

Problema 4 Descomponer en fracciones simples1

n (n+ 1)n2 + 1

n4 + n2 + 1

Problema 5 Calcular las derivadas primera y segunda de la función xx.

9

Page 10: Mathematica Comandos Basicos

Problema 6 Calcular la derivada primera dexy2 − x3

x2 + y2respecto de x y de y.

Problema 7 Calcular el límite de la sucesiónµ1 +

1

n

¶n

Problema 8 Resolver el sistema linealx+ 2y − 3z = −13x− y + 2z = 75x+ 3y − 4z = 2

1.4 Asignaciones

Supongamos que queremos evaluar la expresión

exp= (a ∗ b−a^b)/(a∗b− 1)

en a = 3, b = −2. Para ello no necesitamos definirla como una función, simplementeaplicaremos una regla o lista de reglas, con el comando /. (sin espacios entre / y .):

exp /.{a->3,b->-2}Evaluarla en a = 1, b = 1. ¿Qué ha ocurrido?Como hemos visto en los ejemplos anteriores, las constantes, las funciones y los

comandos queMathematica lleva incorporados tienen su primera letra en mayúscula. Elusuario puede definir sus propias funciones, pero para evitar problemas es recomendableabstenerse de usar letras mayúsculas en el nombre. La forma de definirlas consiste enutilizar lo que se denomina una assignación, cuya sintaxis es de la forma:

nombre-función[variable1_, variable2_ , ... , variablen_]:=definición

donde nombre-función es el nombre que asignamos a esa función. Puede constar deuna sola letra o de diversas letras. Entre corchetes y separadas por comas escribiremosla variable o variables de las que dependerá nuestra función. En la definición de lafunción se ha de escribir obligatoriamente detrás de cada variable el subrayado paraindicarle al Kernel que efectivamente es una variable. No obstante, al evaluar la funciónsubstituyendo las variables por los valores deseados ya no debemos escribir el subrayado.

Por ejemplo, al definir la sucesión

a[n_]:=(−1) ˆnn+ 1

hay que tener en cuenta que el subrayado indica que n es la variable. A continuaciónpodemos escribir el tipo de variable, restringiendo si es conveniente su dominio; porejemplo,

a[n Integer] o a[n Real]

10

Page 11: Mathematica Comandos Basicos

Para evaluar la función en n = 5 escribiremosIn[] :=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 precisionesel valor de 3

√2 i 5√π.

1.5 Iteradores

Los iteradores son comandos que nos permiten realizar de forma sencilla procesos quese repiten un número determinado de veces. Uno de los más habituales es el comandoDo. Como ejemplo vamos a ejecutar

Do[Print[Prime[n]], {n, 1, 10}]Out [] =2357111317192329

Como puede apreciarse,Mathematica imprime en la pantalla (Print) los 10 primerosnúmeros primos (Prime). La lista {n, 1, 10} expresa que la variable n toma los valoresdel 1 al 10 incrementándose en cada paso una unidad. Se puede añadir otro argumentosi queremos cambiar el incremento.

Otro iterador muy usado es For; veamos un ejemplo

For[i=1,i≤5,i=i+2,Print[i]]135

For[inicio, test, incremento, argumento] ejecuta el argumento desde inicio hasta quefalla 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

Page 12: Mathematica Comandos Basicos

Table[expr, {i, min, max, paso}]

Otros iteradores, While, la sintaxis y el funcionamiento de los cuales los podemosencontrar con los comandos de ayuda de Mathematica.

Problema 10 Definir bn :=1

n2, n = 1, 2, . . . y calcular

1. bn desde n = 10 hasta n = 20 :

2. bn desde n = 10 hasta n = 100 pero con n múltiplo de 10 :

3. b10, b100, b1000, b10000 :

Problema 11 Muestra el valor de√2 con una precisión desde 1 hasta 10 cifras deci-

males.

1.6 Gráficos

Las posibilidades gráficas de Mathematica han sido una de las causas de su éxito. Pormedio 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 laayuda que puede prestar la interpretación gráfica en el cálculo de los puntos extremosde funciones, en particular de funciones de dos variables. Trabajaremos sobre todo conla representación paramétrica de curvas y superfícies.

12

Page 13: Mathematica Comandos Basicos

Capítulo 2

Álgebra lineal

2.1 Resolviendo problemas con el Mathematica

En esta sección repasaremos algunas de las posibilidades que ofrece Mathematica pararesolver problemas de álgebra lineal. La idea será ofrecer una lista de los comandosnecesarios y mostrar ejemplos que ilustren su utilización. Con lo que aquí se exponga,se estará en condiciones de resolver la mayoría de los problemas elementales que sepueden plantear en un primer curso de álgebra lineal: dependencia e independencialineal, cambios de base en espacios vectoriales, estudio de aplicaciones lineales condeterminación de los subespacios núcleo e imagen, resolución de sistemas de ecuacioneslineales, diagonalización, etc.

2.1.1 Matrices

En Mathematica los vectores se representan mediante listas, y las matrices, como listasde listas. Por ejemplo, la lista de listas {{a,b}, {c,d}} representa la matriz 2 × 2cuyas 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]

genera una matriz diagonal con los elementos de lista en la diagonal;

IdentityMatrix[n]

genera la matriz identidad n× n. Así, por ejemplo,

Table[0, {m}, {n}]

genera una matriz cero,El comando

MatrixForm[matriz]

13

Page 14: Mathematica Comandos Basicos

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 alos 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 unade sus filas. Para que se tenga una matriz válida, todas las filas han de tener la mismalongitud, de manera que los elementos de la matriz formen efectivamente un tablerorectangular.

Operaciones con matrices y vectores.

La mayoría de las funciones matemáticas en Mathematica se pueden aplicar por sepa-rado a cada elemento de una lista. Esto ocurre, en particular, para todas las funcionesque tienen el atributo Listable, de manera que dichas funciones se pueden aplicarsobre cada elemento de una matriz o un vector:

La suma de dos vectores se lleva a cabo elemento a elemento, siempre que ambostengan la misma longitud. De hecho, Mathematica admite las operaciones del álgebramatricial (suma, producto, producto por escalar) siempre que las dimensiones sean lascorrectas. Así, si m1 y m2 son dos matrices dadas y c es un escalar, tiene sentido escribir

m1+m2, c m1, m1.m2

De igual modo, si v denota un cierto vector, tienen sentido las operaciones

v.v,v.m1,m1.v

debiendo tener cuidado con estas dos últimas operaciones, pues aunque se representande igual forma, proporcionan resultados muy diferentes.

El comando Inverse[m] calcula la inversa de la matriz cuadrada m. Obsérvese queMathematica supone implícitamente que el determinante es no nulo. Al multiplicar lainversa por la matriz original debería dar la matriz identidad. Cuando se le da unamatriz cuyos elementos son números exactos o símbolos, el programa proporciona lainversa exacta. Ahora bien, si en la matriz de entrada algunos elementos son númerosreales aproximados, Mathematica obtiene un resultado numérico aproximado; en esecaso, como en cualquier otro cálculo numérico, se puede controlar el número de cifrassignificativas a manejar.

Otros comandos que se utilizan habitualmente al trabajar con matrices son:

Transpose[m]

para calcular la traspuesta de la matriz m,

MatrixPower[m, k]

para calcular la potencia k-ésima de m.Cálculo del determinante de una matriz cuadrada ,Det[m].

14

Page 15: Mathematica Comandos Basicos

2.1.2 Sistemas de ecuaciones lineales

Para resolver un sistema de ecuaciones lineales dado, varias son las alternativas queMathematica ofrece. En primer lugar, puede ser conveniente escribir todas y cadauna 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 enuna ecuación matricial, y aplicar después operaciones matriciales para resolverlo, talcomo se hace normalmente en Matemáticas, sobre todo si el número de ecuaciones yde 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,

donde x es el vector de variables, m es la matriz de coeficientes y b es la matriz de lostérminos independientes. Como el estudiante ya está familiarizado con la teoría generalde los sistemas de ecuaciones lineales, procederemos directamente con los comandosinvolucrados y analizaremos en detalle algunos ejemplos.

Las funciones incorporadas que Mathematica ofrece para resolver este tipo de sis-temas de ecuaciones son los siguientes:

LinearSolve[m,b]

da un vector x que resuelve la ecuación matricial m · x = b;

NullSpace[m]

da un conjunto de vectores cuyas combinaciones lineales satisfacen la ecuación matricialm · x = 0, esto es, proporciona una base del subespacio núcleo de la matriz m;

RowReduce[m]

transforma la matriz m en otra de filas reducidas, mediante combinaciones lineales delas filas, coincidiendo, por tanto, el rango de la matriz con el número de filas no nulasde esta matriz.

Se puede obtener también el número de ecuaciones redundantes correspondientes auna matriz particular calculando

Length[NullSpace[m]]

Con los comandos anteriores y el teorema de Rouché-Frobenius, estamos en disposi-ción de analizar (y resolver en su caso) cualquier sistema de ecuaciones lineales.

Ejercicio 1 Discutir y resolver en su caso los siguientes sistemas:

1.2x + 3y − z = 04x + 6y − z = 08x + 12y − 3z = 0

15

Page 16: Mathematica Comandos Basicos

2.y − z − 2t = 1

x − z − t = −2x + y − 3t = −1

3.

x + 4y + z = b3x − y + 2z = 12x − 5y + az = −2

4.

4x + 2y + z = ax2x + 4y + 2z = ay2x + 4y + 8z = az

5.

ax− 2y + z = 1x+ ay + z = a

x+ z = 1

6.

x1 + 3x2 + x3 − x4 = 62x1 + 7x2 + 3x3 − 4x4 = 15x1 + x2 + 2x3 + x4 = 1

2.1.3 Valores y vectores propios

Como es bien sabido, los valores propios de una matriz m son los números λi para loscuales existen vectores xi no nulos, llamados vectores propios, tales que m · xi = λixi.El cálculo de los valores propios de una matriz n×n supone, en principio, resolver unaecuación polinomial de grado n. Si n ≥ 5 no es posible obtener, en general, solucionesalgebraicas explícitas de una tal ecuación, de manera que es imposible dar resultadosalgebraicos explícitos para los valores y vectores propios de una matriz genérica.

Mathematica dispone de los siguientes comandos para abordar este problema:

Eigenvalues[m]

proporciona una lista de los valores propios de la matriz 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 devalores propios y de vectores propios asociados. Por otra parte,

Eigenvalues[N[m]]

16

Page 17: Mathematica Comandos Basicos

proporciona una aproximación numérica a los valores propios, etc. Por tanto, cuando seda una matriz cuyos elementos son números reales aproximados,Mathematica encuentravalores numéricos aproximados para valores y vectores propios.

La función Eigenvalues da siempre una lista de n valores propios para una matrizn×n, pudiendo estar alguno de ellos repetidos, mientras que Eigenvectors da una listade vectores propios linealmente independientes; si el número de tales vectores propios esmenor que n, entonces Eigenvectors añade vectores nulos a la lista hasta completarlacon n vectores. Como es bien sabido, los valores y vectores propios de una matrizjuegan un papel muy importante a la hora de analizar la diagonalizabilidad de dichamatriz. En el caso general, dada una matriz m, siempre será posible encontrar unamatriz c tal que c−1mc = j, donde j es la llamada forma canónica de Jordan (que en elcaso de ser m diagonalizable no es más que una matriz diagonal tal que los elementosde su diagonal principal son los valores propios de m). La función que lleva a caboesta descomposición es JordanDecomposition, la cual proporciona una lista con lasmatrices c y j.

2.2 Problemas de Álgebra Lineal

Problema 12 Dadas las matrices

A =

3 −4 58 0 −35 2 1

, B =

10 −6 −96 −5 −7

−10 9 12

calcula A+B, B − 4A, (AB)−1, ((A−B)B)T , A2, det(B3) y las raíces del polinomiocaracterístico de A.

Problema 13 Resolver el sistema½x + 5y = a2x + y = b

dependiente de dos parámetros. El método más eficiente es usar LinearSolve.

Problema 14 Consideramos ahora el sistema½x + 2y = ax + 2y = b

que es incompatible, Mathematica lo indica.

Ejercicio 2 Estudia y resuelve el sistemax + 2y + 3z = 6x + 3y + 8z = 192x + 3y + z = −15x + 6y + 4z = 5

17

Page 18: Mathematica Comandos Basicos

Ejercicio 3 Estudia y resuelve, según los valores de a, el sistema formado por lasecuaciones

ax + y + z = 1x + ay + z = ax + y + az = a2

Ejercicio 4 Forma una matriz cuyas filas sean los vectores

(−1,−1, 2, 0,−1), (−2, 2, 0, 0,−2), (2,−1,−1, 0, 1),(−1,−1, 1, 2, 2), (1,−2, 2,−2, 0)

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.

Ejercicio 5 Evaluar el determinante de: A =

t− 2 4 31 t+ 1 −20 0 t− 4

, B =2 0 0 51 −1 0 02 1 3 46 5 2 −1

Ejercicio 6 Hallar la inversa de: C =

−1 2 −32 1 04 −2 5

, D =

2 1 −10 2 15 2 −3

Ejercicio 7 Sea la matriz A =

2 −2 60 a 4− a0 a −a

, a ≥ 0

1. Estudia su diagonalización en función de los valores de a.

2. Diagonalizar A (si es posible) cuando a = 4, hallando explícitamente la matriz depaso.

Ejercicio 8 Dada la matriz

A =

1 a 1−1 1 −a1 0 a+ 1

1. Calcular el polinomio característico de A, así como sus valores propios.

2. ¿Para qué valores de a la matriz es diagonalizable?

18

Page 19: Mathematica Comandos Basicos

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:

A =

5 0 00 −1 b3 0 a

, B =

a b 00 1 20 0 2

Ejercicio 10 Calcular los valores y vectores propios del endomorfismo f : R3 −→ R3definido por

f(x, y, z) = (x+ y + z, 3x+ y − z,−2x+ 2y + 3z)

Ejercicio 11 Diagonaliza ortogonalmente las matrices 3 2 22 2 02 0 4

−1 2 22 −1 22 2 −1

,

3 −1 0−1 3 00 0 2

,

3 −2 0−2 3 00 0 5

,

Ejercicio 12 Dada la matriz A =µ

3 −2−1 2

¶1. Obtener p (A) donde p (x) = 3 + 2x− 5x2.2. Obtener su inversa utilizando el teorema de Cayley-Hamilton.

2.3 Introducción a los Métodos Numéricos. Métodos delÁlgebra Lineal

En esta sección repasaremos algunas de las posibilidades que ofrece Mathematica pararesolver problemas numéricos de Álgebra Lineal, en particular veremos la resoluciónnumérica de sistemas de ecuaciones lineales. Los métodos iterativos para el cálculo devalores y vectores propios son usados por Mathematica en los comandos Eigenvalues[N[m]],como ya hemos comentado.

Para resolver el sistema de ecuaciones lineales:

E1 : a11x1 + a12x2 + ...+ a1nxn = b1,

E2 : a21x1 + a22x2 + ...+ a2nxn = b2,

...

En : an1x1 + an2x2 + ...+ annxn = bn,

1. La ecuación Ei puede multiplicarse por una constante no nula λ y se puede usarla ecuación resultante en vez de Ei. Esta operación se denota por (λEi)→ Ei.

2. La ecuación Ej puede multiplicarse por una constante no nula λ, sumarla a laecuación Ei y usar la ecuación resultante en vez de Ei. Esta operación se denotapor (Ei + λEj)→ Ei.

19

Page 20: Mathematica Comandos Basicos

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ássencillo 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 contienetoda la información del sistema.

2.3.1 Eliminación Gaussiana y sustitución hacia atrás

El sistema anterior lo podemos representar como una matriz, conocida como matrizampliada,

a11 a12 ... a1na21 a22 ... a2n... ... ... ...an1 an2 ... ann

¯¯ b1b2...bn

y realizar operaciones elementales sobre las filas para conseguir ceros por debajo de ladiagonal.

a11 a12 ... a1na022 ... a02n

... ... ... ...... a0nn

¯¯ b1b02...b0n

que equivale al siguiente sistema

E1 : a11x1 + a12x2 + ...+ a1nxn = b1,

E2 : a022x2 + ...+ a02nxn = b02,...

En : a0nnxn = b0n,

Despejando xn en la última ecuación y sustituyendola en la ecuación En−1 se obtienexn−1. Despejando en la ecuación anterior se obtiene xn−2, y así, sucesivamente, se vanobteniendo el resto de las incógnitas.

Al hacer este tipo de eliminación muchas veces se necesita cambiar el orden de lasfilas para conseguir los ceros. Esto también es necesario porque cuando los cálculos serealizan usando aritmética de dígitos finitos pueden aparecer muchos errores debido alredondeo de las cifras. Por lo cual se han de tener en cuenta cuales son los elementosmás adecuados para conseguir los ceros, es decir, los pivotes. La estrategia más simpleconsiste en seleccionar el elemento en la misma columna que está abajo de la diagonaly que tiene el mayor valor absoluto. Esta técnica se conoce como pivoteo máximode columna o pivoteo parcial.

El Mathematica ofrece paquetes que permiten realizar de forma numérica muchoscálculos algebráicos. Nosotros utilizaremos el paquete de eliminación gaussiana, que secarga mediante

20

Page 21: Mathematica Comandos Basicos

<<LinearAlgebra‘GaussianElimination‘

Como hemos visto, la función LinearSolve permite calcular la solución de un sistemade ecuaciones lineales.

Existen casos en que se quieren resolver varios sistemas de ecuaciones lineales dondecoincide la parte de la izquierda del sistema, pero no así la de la derecha, es decir, lamatriz de los coeficientes es la misma pero cambian los términos independientes. Eneste caso también se puede usar LinearSolve pero mucho del trabajo es repetitivo.

Por eso, como el primer paso se puede ver de forma abstracta como la factorizaciónde la matriz de los coeficientes en el producto de una matriz triangular inferior, L, poruna matriz triangular superior, U (factorización LU) se puede recurrir a

LUFactor

que produce esta factorización y da la información sobre que filas han de cambiarsepara 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.

Estas dos ordenes están el el paquete

<<LinearAlgebra‘GaussianElimination‘.

Veamoslo mediante un ejemplo:

Ejemplo 1 Resolver el sistema de ecuaciones:

E1 : 5x1 + 3x2 = 6

E2 : 7x1 + 9x2 + 2x3 = −3E3 : −2x1 − 8x2 − x3 = 7

utilizando la descomposición LU de la matriz de los coeficientes y la orden LUSolve

In[1]:= <<LinearAlgebra‘GaussianElimination‘

In[2]:= MatrixForm[a = {{5, 3, 0}, {7, 9, 2},{-2, -8, -1}}].

Out[2]:=

5 3 07 9 2−2 −8 −1

In[3]:= lu = LUFactor[a]

Out[3]:= LU[{{57 ,1219 ,

−2219 },{7,9,2},{

−27 ,

−387 , −37 }},{2,3,1}]

In[4]:= b={6,-3,7};

In[5]:= c=LUSolve[lu, b]

Out[5]:= {7544 ,−3744 ,

−8122 }

In[6]:= a .c - b

Out[6]:= {0,0,0}

21

Page 22: Mathematica Comandos Basicos

Obsérvese que el resultado de Out[3] da la factorización LU de la matriz a y nosdice tambien como se han colocado las filas de dicha matriz para hacer la reduccióngaussiana. En términos matriciales, se leería: 1 0 0

−27 1 057

1219 1

7 9 20 −387 −370 0 −2219

=

7 9 2−2 −8 −15 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

Ejemplo 2 Resolver el sistema de ecuaciones:

E1 : 5x1 + 3x2 = 2

E2 : 7x1 + 9x2 + 2x3 = −1E3 : −2x1 − 8x2 − x3 = −2

utilizando los resultados del problema anterior.

In[1]:= b1={6,-3,7};

In[2]:= c=LUSolve[lu, b1]

In[3]:= a .c - b1

Ejercicio 13 Resolver el sistema de ecuaciones:

x + 4y + z = 03x − y + 2z = 12x − 5y + az = −2

utilizando la descomposición LU de la matriz de los coeficientes y la orden LUSolve.Estudiar para que valores del parámetro a tiene solución única.

El Mathematica permite construir matrices utilizando la función

Do[p[i,j],{i,1,m},{j,1,n}]

Veamoslo en un ejemplo

Ejemplo 3 Construir una matriz (8× 8) mediante Do.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

Page 23: Mathematica Comandos Basicos

Ejercicio 14 Resuelve el sistema representado en la matriz anterior utilizando comomatrices 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.

Ejercicio 15 Resolver un sistema lineal de 20 ecuaciones y 20 incognitas, utilizandocomo matriz de coeficientes una matriz que sigua la recurencia de la matriz del ejemploanterior y como vector de términos independientes el vector b = (9, 5, 5, 5, ....., 5, 3).

Ejercicio 16 Repetirlo para un sistema de 100 ecuaciones y 100 incógnitas.

2.3.2 Descomposición QR y descomposición de Shur

La descomposición QR de una matriz A consiste en encontrar dos matrices Q y R,ortonormal la primera y triangular la segunda, de forma que A = QTR. Mathematicala calcula usando

QRDecomposition[matriz]

La descomposición de Schur de una matriz A consiste en encontrar dos matricesS y T, ortogonal la primera y triangular superior la segunda, tal que A = STST .Mathematica la calcula usando

SchurDecomposition[matriz]

Problema 15 Dada la matriz 1 3 −10 −1 1−1 0 −1

Encontrar su descomposición QR y de Schur.

23

Page 24: Mathematica Comandos Basicos

Capítulo 3

Resolución numérica deecuaciones no lineales

El objetivo de esta práctica es aprender a utilizar los comandos de Mathematica quepermiten abordar el estudio de ecuaciones y sistemas no lineales, es decir, nos pro-ponemos resolver ecuaciones de la forma

f (x) = 0 (3.1)

donde f es una función real de variable real. Este tipo de ecuaciones reciben el nombrede ecuaciones no lineales y el valor α que satisface la igualdad f (α) = 0 se conoce comosolución, cero o raíz de la ecuación.

Las ecuaciones no lineales son más habituales de lo que pueda pensarse, por ejemplo,al describir el movimiento de los planetas alrededor del sol o de los satélites alrededorde los planetas se obtienen órbitas elípticas; para determinar entonces en que puntode la elipse se encuentra un móvil en un tiempo dado hay que resolver la ecuación deKepler:

x− e sinx = z

donde e es la excentricidad de la elipse y z es un número conocido que se calcula apartir del tiempo t. Es decir, se han de encontrar los ceros de la función:

f (x) = x− e sinx− z.

El caso más sencillo de ecuaciones no lineales es cuando la función f es una funciónpolinómica P (x) . Si P (x) = ax+ b, la solución de (3.1) sólo requiere el cálculo de unadivisión. Si P (x) = ax2+ bx+ c, la solución de (3.1) necesita extraer raíces cuadradas.El método de resolución de un polinomio cúbico se debe a Tartaglia (1499-1557) y adel Ferro (1465-1526) y el de una ecuación polinómica de cuarto grado a Ferrari (1522-1565). Durante siglos se buscó la fórmula para resolver polinomios de quinto grado hastaque Abel demostró que no tenían solución. La imposibilidad de encontrar una fórmulaque resolviera una ecuación polinómica de grado mayor o igual que cinco mediantecombinaciones de operaciones elementales fue demostrada por Galois. Estos resultadosindican que, desde muy pronto, se vió la necesidad de utilizar técnicas numéricas pararesolver las ecuaciones no lineales.

24

Page 25: Mathematica Comandos Basicos

Calcular la raíz de una ecuación con un ordenador utilizando técnicas numéricastiene 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 unaaproximació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 toleranciadel algoritmo y tiene la función de actuar como criterio de parada del algoritmo cuandoconsideramos que estamos suficientemente cerca del valor exacto de la raíz. En losalgoritmos iterativos en los que se genera una sucesión de aproximaciones {xn}n∈Nque queremos que converja a la solución, se utiliza como criterio de parada el que dositeraciones sucesivas cumplan uno de los dos siguientes criterios:

1. |xn+1 − xn| < ε, criterio de la diferencia absoluta.

2.|xn+1 − xn|

|xn| < ε, criterio de la diferencia relativa.

En un proceso de cálculo de raíces de una ecuación no lineal primero hay quetener un cierto conocimiento de la zona en que se encuentran las raíces para, después,construir de forma iterativa una sucesión de valores que converja a la solución. En elcaso de tener raíces muy próximas es conveniente determinar intervalos que contenganuna única raíz.

3.1 Método de la bisección

El algoritmo de la bisección es el más sencillo pero converge lentamente a la solución,aunque siempre converge a ella, por lo que suele usarse inicialmente para determinarlos intervalos donde aplicar los métodos iterativos más rápidos. Se basa en el teoremade Bolzano:

Teorema 1 Dada una función f (x) continua en un intervalo [a, b] que verifica lacondición f (a) · f (b) < 0, existe α ∈ (a, b) tal que f (α) = 0.

Para construir el algoritmo de iteracción se crea una sucesión de intervalos encajadosde la siguiente forma:

1. Se parte del intervalo [a0, b0] = [a, b] .

2. Se calcula el punto medio del intervalo [ak, bk] .

mk = 0.5 · (ak + bk)

Si |f (mk)| < ε1 ⇒ α ≈ mk, se para el proceso.

Si f (ak) · f (mk) < 0⇒ [ak+1, bk+1] = [ak,mk] .

Si f (ak) · f (mk) > 0⇒ [ak+1, bk+1] = [mk, bk] .

k = k + 1

25

Page 26: Mathematica Comandos Basicos

3. Los cálculos se paran cuando |bk − ak| < ε2 o cuando k > kmax. Se obtiene

α ≈ mk =ak + bk2

donde ε1 y ε2 son tolerancias fijadas por el algoritmo y que pueden ser igualeso no, kmax es el valor de la iteración máxima que consideremos, para evitar unproceso excesivamente largo.

Como hemos comentado, este método converje siempre y da cotas superiores einferiores para la raíz buscada, pero no utiliza propiedades de la función que se estudiay su convergencia es muy lenta.

Ejemplo 4 Consideremos el ejemplo anterior f (x) = x − e sinx − z, con e = 0.5 yz = 0.7.

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 queel error que se comete es menor que 0.0 312 5.

3.2 Método de Newton

El método de Newton, también llamado de Newton-Raphson, es un ejemplo de unmétodo de punto fijo. Es decir, se basa en utilizar una ecuación de la forma g (x) = xequivalente a f (x) = 0 con f (x) derivable. Para encontrar el punto en el que f (x0) = 0se parte de un valor x1, llamado pivote, desde el que se traza la recta tangente a la curvay = f (x) en el punto (x1, f (x1)) , de ecuación y− f (x1) = f 0 (x1) (x− x1) . Esta rectacorta al eje de las x en un punto x2 = x1 − 1

f 0(x1)f (x1) que, en principio, se encuentramás cerca de x0 buscado. A continuación se traza la recta tangente a la curva en elpunto (x2, f (x2)) a partir del cual se localiza el punto x3 = x2 − 1

f 0(x2)f (x2) y así

sucesivamente. En general, obtenemos la fórmula xn+1 = xn − 1f 0(xn)f (xn), que nos

permite construir la sucesión {xn}n∈N recursivamente, la cual converge a la raíz x0.1. Se parte de un valor x0, llamado pivote.

2. Se calcula xk = g (xk−1) = xk−1 − 1f 0(xk−1)

f (xk−1) .

si |g (xk)| < ε1 ⇒ α ≈ xk, se para el proceso.

si |g (xk)| > ε1 ⇒ k = k + 1.

3. El cálculo se para cuando |xk − xk−1| < ε2 o cuando k > kmax, donde nos asegu-ramos que α ≈ xk.

26

Page 27: Mathematica Comandos Basicos

Cuando limk→∞

xk = α, diremos que la sucesión converge a la solución del problema

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 ∈ C1 ([a, b]) tal que |g0 (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 quexk = g (xk−1) , k ∈ N, se verifica g (xk) ∈ (a, b) para todo k > 0, entonces la sucesión{xk}k∈N converge a α.

El hecho de utilizar la función g dada está motivado por la idea de aproximarfunciones por sus rectas tangentes, es decir, aproximar el comportamiento de la funcióny = f (x) por un comportamiento lineal y, sobre este último ir localizando las raíces,las cuales se supone que se irán acercando a la raíz de la función dada.

0.5 1 1.5 2 2.5 3

2

4

6

8

Esta idea es muy útil a la hora de reemplazar problemas no lineales por problemaslineales y se ha mostrado como una idea muy fructífera en Matemáticas. Es fácilcomprobar que si en la iteración k−1 construimos la recta tangenta a f (x) en el puntoxk−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 esposible, ya que puede ocurrir que xk−1 no pertenezca al dominio de la función f o quef no sea derivable en xk−1. Las iteraciones del método de Newton convergen bajo lascondiciones que se especifican en el siguiente teorema:

Teorema 3 Dada f ∈ C1 ([a, b]) tal que existe α ∈ (a, b) para el cual f (α) = α yf 0 (α) 6= 0 y dada {xk}k∈N tal que si x0 ∈ (α− δ, α+ δ) se verifica que la sucesión{xk}k∈N converge a α.

3.2.1 Análisis del error

Para analizar la bondad relativa de los métodos es necesario conocer la mejora que seintroduce en la solución de la ecuación, o bien, la rapidez con que se aproxima a la

27

Page 28: Mathematica Comandos Basicos

solución verdadera. Para poder comparar diferentes métodos introducimos la siguientedefinición.

Definición 1 Sea {xk}k∈N una sucesión que converge a una solución α de la ecuaciónf (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

limk→∞

|εk+1||εk|p = c, (3.2)

diremos que p es el orden de convergencia mientras que c es la constante del errorasintótico.

Si p = 1 diremos que la convergencia es lineal, si p = 2 se dice que es cuadrática,etc.

El límite anterior significa que la sucesión {xk}k∈N converge a la solución α aprox-

imadamente igual de rápido que la función1

xptiende a cero cuando x → ∞. La con-

vergencia es más rápida a medida que p aumenta, por lo que un método de orden másalto es mejor que uno de orden más bajo, siempre que no aumente de forma desmedidael número de operaciones a realizar. Puede comprobarse que el método de la bisecciónes de orden 1 mientras que el de Newton es de orden 2.

3.3 Resolución de ecuaciones no lineales conMathematica

3.3.1 Método de la bisección

Podemos escribir este algoritmo como:

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[]]]

La impresión de los resultados podemos realizarla con las siguientes instrucciones:

apm=SetPrecision[m,cifras];

If[sale==’’precisión’’,

Print[’’posible solución exacta:’’,apm],

If[k≤nmax,Print[’’solución pedida:’’,apm],

28

Page 29: Mathematica Comandos Basicos

Print[’’Se ha llegado al número máximo de iteraciones’’]]]

Print[’’Número de iteraciones: ’’,k];

Print[’’Error máximo cometido: ’’,tol];

Obsérvese que apmt da la solución aproximada obtenida por Mathematica usandosu propia aproximación.

Ejercicio 17 Utilizar el algoritmo del método de la bisección para resolver la ecuación

1

x− 2 log x = 0.5

para diferentes valores de a, b, tol, nmax y cifras.

Dibujar la función f (x) =1

x−2 log x−0.5 y comprobar como de cerca se ha quedado

la aproximación obtenida.

3.3.2 Método de Newton

El algoritmo para el método de Newton se puede escribir como:

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, cifrasy tol.

Ejercicio 18 Utilizar los métodos de la bisección y de Newton para encontrar las raícespositivas en los intervalos correspondientes de las funciones siguientes con un errormenor que 0.02. Dibujar primero las funciones para decidir el intervalo adecuado.

1. f (x) = x cosx− log x.

29

Page 30: Mathematica Comandos Basicos

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-

tos, la raíz de la ecuación sinx =³x2

´2.

Ejercicio 20 Dada la función f (x) = 12x+ ex.

Encuentra de forma aproximada el valor de su raíz con un error menor que 0.01.

3.3.3 Métodos Numéricos de Mathematica

Mathematica tiene paquetes numéricos que utilizan estos métodos de cálculo de raícesde una ecuación no lineal. Para encontrar las raíces de funciones polinómicas de formanumérica, se utiliza:

NSolve[ecuación==0,x]

Si la función no es polinómica se ha de recurrir a:

FindRoot[ecuación==0, {x, x0}]

busca una solución numérica de la ecuación empezando en x = x0. Se puede usartambién

FindRoot[ecuación==0, {x, x0,x1}]

usa x0 y x1 como los dos primeros valores de x.

FindRoot[ecuación==0, {x, x0,xmin,xmax}]

busca la solución y se para si x está fuera del intervalo (xmin, xmax)

FindRoot[{ec1,ec2,...}, {x, x0},{y,y0},...]

encuentra las raíces de las ecuaciones ec1, ec2,... simultaneamente.No obstante, si no se conoce con exactitud el punto inicial puede resultar muy

costosa de utilizar. El paquete

<<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 delos puntos a,b de forma mucho más precisa.

InterpolateRoot[función,{x,a,b}]

InterpolateRoot[ecuación,{x,a,b}]

30

Page 31: Mathematica Comandos Basicos

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étodosanteriores:

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

Page 32: Mathematica Comandos Basicos

Capítulo 4

Interpolación y aproximación defunciones

La interpolación, que es el cálculo de valores para una función tabulada en puntos queno aparecen en la tabla, es historicamente una tarea fundamental. Los nombres demuchos 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 desenos, logaritmos y demás funciones no algebraicas a partir de tablas, sus calculadorasy 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, estosmétodos resultan interesantes ya que constituyen la base para muchos procedimientosque estudiarán, como los de derivación e integración numérica, resolución de ecuacionesdiferenciales, 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 queresultan muy útiles a los alumnos de ingenieria.

4.1 Interpolación polinómica de Newton

Dado un conjunto de puntos (xi, f (xi)) se intentará encontrar un polinomio tal que lafunción y el polinomio se comporten casi igual en el intervalo en consideración. Portanto, los valores del polinomio deben ser estimaciones razonables de los valores de lafunción desconocida. Cuando el polinomio es de primer grado se obtiene la conocidainterpolación lineal. Estamos interesados en polinomios de grado mayor.

En general, dado un entero positivo n, los n+1 puntos x0, x1, ..., xn (llamados nodos)distintos dos a dos en la recta real y los valores correspondientes f(x0), f(x1), ..., f(xn)de una función el problema de interpolación polinomial consiste en encontrar un poli-nomio de grado ≤ n, tal que

pn (xi) = f (xi) , i = 0, 1, ..., n

Este problema tiene solución única, el polinomio que satisface estos requisitos se conocecomo polinomio interpolador o interpolante de la función f en los puntos x0, x1, ..., xn.

32

Page 33: Mathematica Comandos Basicos

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.

Teorema 4 Si f ∈ Cn+1 (a, b) y xi ∈ (a, b) para i = 0, 1, ..., n. Entonces, ∀x ∈ (a, b)se verifica

f (x)− pn (x) =fn+1 (ξx)

(n+ 1)!(x− x0) (x− x1) ... (x− xn) , ξx ∈ (a, b)

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 aumentarel grado debido al cáracter oscilatorio de los polinomios de grado alto. El error tieneuna dependencia directa de la derivada de orden n+1 y de la proximidad de los puntosa los nodos.

4.1.1 El efecto Runge

Si se considera la sucesión {pn (x)} de polinomios de interpolación obtenida aumentandoindefinidamente la cantidad de nodos de interpolación, se observa que al crecer n,además de aumentar el grado del polinomio y el número de operaciones que se han derealizar se acentua la pérdida de la precisión en los extremos del intervalo donde seinterpola. Este fenómeno se conoce como el efecto Runge, por lo que es preferible dividirel intervalo donde se va a efectuar la interpolación en diversos trozos con polinomiosde grado pequeño.

4.1.2 Polinomio interpolador de Newton

La ventaja del polinomio interpolador de Newton es la sencillez de su formulación.Aunque utiliza las llamadas diferencias divididas, nosotros, por sencillez, veremoscomo calcular el polinomio mediante la resolución de un sistema de ecuaciones lineales.Veamoslo en el siguiente ejemplo,

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, luegose han de encontrar los valores de ai en el polinomio:

y = a0 + a1x+ a2x2 + a3x

3 + a4x4

para que pase por los puntos exigidos. Esto es equivalente a resolver un sistema deecuaciones lineales, donde ai son las incognitas.

In[] := datos={{1, 1},{2, 0},{4, 0},{5, 1},{6, 1.5}};x={1,2,4,5,6};y={1,0,0,1,1.5};sol = Solve[Table[y[[i]] == a0 + a1*x[[i]] + a2*(x[[i]])^2 +

a3*(x[[i]])^3+a4*(x[[i]])^4, {i, 1, 5}], {a0,a1,a2,a3,a4}];El polinomio de Newton será:

33

Page 34: Mathematica Comandos Basicos

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.01dib2 = Plot[newton[t], {t, 0, 6}];Show[dib1, dib2];

1 2 3 4 5 6

0.5

1

1.5

observando que el polinomio pasa por todos los puntos.Por otra parte, el comandoInterpolatingPolynomial

permite obtener el polinomio de interpolación que pasa por los puntos dados.

In[] :pol= Expand[InterpolatingPolynomial[datos,x]]Plot[pol,{x,1,6}];

2 3 4 5 6

0.5

1

1.5

Ejercicio 22 Dada la tabla siguiente para la función f (x) = ex

x 0.0 0.2 0.4 0.6

f (x) 1.0000 1.2214 1.4918 1.8221

1. Encontrar los valores aproximados de 3√e por interpolación lineal y cúbica.

2. Encontrar las cotas respectivas de los errores debidos a la interpolación. Compararcon el valor exacto, obtenido en la calculadora.

Ejercicio 23 Dados los puntosx 0.5 −0.2 0.7 0.1 0.0

f (x) −1.1518 0.7028 −1.4845 −0.1494 0.1353

1. Interpolar con un polinomio cúbico que pase por los cuatro primeros puntos yutilizarlo para calcular f (0.2) .

34

Page 35: Mathematica Comandos Basicos

2. Hacer una estimación del error.

Ejercicio 24 La función f (x) =1

1 + x2, se conoce como función de Runge y fue

la utilizada por Runge para demostrar el efecto que lleva su nombre. Calcular lospolinomios interpoladores de grados 4 y 10, de dicha función en el intervalo [−5, 5].

4.1.3 Interpolación a trozos

Una solución al problema de la oscilación de los polinomios de grado alto consisteen subdividir el intervalo en intervalos más pequeños e interpolar un número menorde nodos con polinomios de grado menor, se suele utilizar la interpolación mediantepolinomios cúbicos.

Para ello recordemos como se dibuja una función a trozos utilizando el Mathematica.

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}];

-4 -2 2 4

0.5

1

1.5

2

2.5

Por tanto, dado un conjunto de nodos, utilizaremos una interpolación mediante poli-nomios cúbicos cada cuatro nodos. Veremos el ejemplo anterior utilizando polinomiosinterpoladores 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

Page 36: Mathematica Comandos Basicos

1 2 3 4 5 6-0.25

0.250.5

0.75

11.251.5

4.2 Interpolación con un splin cúbico

No obstante, cuando los datos no son ”suaves” hay problemas con los polinomios deinterpolación, lo que significa que hay irregularidades locales. El interpolar con poli-nomios de orden superior en la mayor parte de los casos conduce a que el polinomio sealeje de la función en otras regiones. Una solución es ajustar subregiones de los datoscon polinomios diferentes tal y como se ha hecho en el apartado anterior, pero estemétodo también es problemático porque las uniones de los polinomios no tienen unapendiente continua. Para impedir este problema son de utilidad los tipos especiales depolinomios denominados splines.

Por otro lado, el estudio de los splines conduce a algunas otras formas especialesde polinomios (curvas de Bezier y splines-B) que no se interpolan, es decir, no pasanexactamente por todos los puntos de la función, pero que son de mucha utilidad paratrazar curvas suaves. Aunque los splines pueden ser de cualquier grado, usaremos losde grado tres por ser los más conocidos.

El ajuste de una curva mediante splines cúbicos exige la creación de una sucesiónde splines cúbicos sobre intervalos sucesivos de los datos con la condición de que lapendiente de los polinomios debe coincidir en los nodos en que se unen. Así, se escribela ecuación para un polinomio cúbico, gi (xi) , en el iésimo intervalo, entre los puntos(xi, yi) y (xi+1, yi+1) y la función splin cúbico que se desea es de la forma

g (x) = gi (xi) , x ∈ [xi, xi+1]y cumple las condiciones:

1. gi (xi) = yi, i = 0, 1, ..., n− 1, gn−1 (xn) = yn;

2. gi (xi+1) = gi+1 (xi+1) , i = 0, 1, ..., n− 2;3. g0i (xi+1) = g0i+1 (xi+1) , i = 0, 1, ..., n− 2;4. g00i (xi+1) = g00i+1 (xi+1) , i = 0, 1, ..., n− 2.De donde se obtiene

yi+1 = ai (x− xi+1)3 + bi (x− xi+1)

2 + ci (x− xi+1) + di =

= aih3i + bih

2i + cihi + di, i = 0, 1, ..., n− 1.

36

Page 37: Mathematica Comandos Basicos

Si se hace Si = g00i (xi) y Sn = g00n−1 (xn) , los valores de los coeficiente vienen dadospor

ai =Si+1 − Si6hi

, bi =Si2, ci =

yi+1 − yihi

− 2hiSi + hiSi+16

, di = yi

Como los nodos extremos no tienen ninguna condición hay distintas aproxima-ciones, la más sencilla es la lineal S0 = Sn = 0.

El Mathematica tiene esta aproximación incorporada en el paquete

<<Graphics‘Spline‘

Ejemplo 6 Veamos como utilizar este comando para ajustar la siguiente tabla de datos1 2 3 41 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];

1.5 2 2.5 3 3.5 4

1.5

2

2.5

3

3.5

4

Ejercicio 25 Los datos de la siguiente tabla provienen de observaciones astronómicasde un tipo de estrella variable denominada variable cefeida y representan magnitudesen su variación aparente con el tiempo:

Tiempo 0.0 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0Magnitud aparente 0.302 0.185 0.106 0.093 0.240 0.579 0.561 0.468 0.302Dibujar una curva de interpolación usando

1. un polinomio interpolador de Newton,

2. la interpolación a trozos,

3. una aproximación de splines cúbicos.

Compara los resultados que se obtienen con las distintas aproximaciones para t=0.25.

37

Page 38: Mathematica Comandos Basicos

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 paraajustar 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 paraun conjunto de datos, también coincide con el principio de máxima probabilidad deestadística. Si los errores de medición poseen una distribución normal y si la desviaciónestandar 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 ordenadaen 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

donde xi es un valor particular de la variable que se supone libre de error. Se quierendeterminar los mejores valores de a y b para que las y predigan los valores de la funciónque corresponden a x. El criterio de mínimos cuadrados requiere que la suma de loserrores, ei = Yi − yi, sea mínima, es decir, minimíza la función

S = e21 + e22 + ...+ e2n =NXi=1

(Yi − axi − b)2 ,

Como el mínimo se alcanza al elegir de forma ”adecuada” a y b, se obtiene:

∂S

∂a= 0 =

NXi=1

2 (Yi − axi − b) (−xi)⇒ aNXi=1

x2i + bNXi=1

xi =nXi=1

xiYi

∂S

∂b= 0 =

NXi=1

2 (Yi − axi − b) (−1)⇒ aNXi=1

xi + bN =NXi=1

Yi

un sistema de dos ecuaciones cuyas incógnitas son a y b.Por supuesto, en muchos casos los datos provenientes de pruebas experimentales no

son lineales, por lo que se desea ajustarlos por una función que no sea un polinomiolineal. Las funciones más usuales son las exponenciales y = aebx y potenciales y = axb.

Se podría hacer un estudio análogo al anterior para el caso de estas funciones, perolos resultados serían más engorrosos y difíciles de obtener, por lo que se suelen utilizarlos logaritmos para linealizarlas

log y = log a+ bx,

log y = log a+ b log x

y se ajusta la nueva variable z = log y como una función lineal de x o log x.Otro ajuste muy usual es el uso de polinomios para ajustar valores cuya gráfica no

es lineal. Dado que un polinomio de grado n ajusta de forma exacta n+ 1 puntos y sepodrían utilizar los métodos expuestos antes utilizaremos polinomios cuyo grado seramayor que o igual que el número de puntos N .

38

Page 39: Mathematica Comandos Basicos

Se supone la relacióny = a0 + a1x+ ...+ anx

n

con errores definidos como

ei = Yi − yi = Yi − a0 − a1xi − ...− anxni

y se minimiza la suma de cuadrados de estos errores, obteniéndose

a0N + a1

NXi=1

xi + a2

NXi=1

x2i + ...+ an

NXi=1

xni = Yi

a0

NXi=1

xi + a1

NXi=1

x2i + a2

NXi=1

x3i + ...+ an

NXi=1

xn+1i =NXi=1

xiYi

...

a0

NXi=1

xni + a1

NXi=1

xn+1i + a2

NXi=1

xn+2i + ...+ an

NXi=1

x2ni =NXi=1

xni Yi

un sistema de n+1 ecuaciones lineales con las incógnitas a0, a1, ..., an. Para su resoluciónse usarán los métodos algebraícos explicados anteriormente.

Mathematica posee una función integrada para realizar ajuste de datos por mínimoscuadrados

Fit[datos, función, variable]

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 ajustarla ecuación. En particular,

Exp[Fit[Log[datos], {1,x}, x]]

ajusta los datos a la función ea+bx.

Ejemplo 7 Ajustar una recta por mínimos cuadrados a la tabla20.5 32.7 51.0 73.2 95.7765 826 873 942 1032

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

Page 40: Mathematica Comandos Basicos

20 40 60 80 100

750

800

850900

950

1000

1050

También se pueden buscar funciones que ajusten datos tridimensionales, en estecaso tendremos superfícies de ajuste.

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 6y 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 errorson 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 28 Ajustarlos suponiendo que es un polinomio de orden dos.

Ejercicio 29 Parece que los datos siguientes se ajustan una ecuación cúbica, perodeterminar 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.1y 1.9 7.9 24.9 24.9 34.9 42.7 29.7 49.8 36.1 23.7 13.0 20.59.4 11.1-3.1 -13.0

11.4 12.2 13.2 14.1 15.6 16.1 17.6 17.9 19.1 20.0-28.7 -39.5 -48.6 -40.2 -51.6 -30.5 -34.6 -16.4 -13.4 -1.1

Ejercicio 30 En un experimento se obtuvieron los siguientes datost -1 -0.96 -0.86 -0.79 0.22 0.5 0.930y -1 -0.151 0.894 0.986 0.895 0.5 -0.306

1. Dibujar los puntos y la curva de interpolación de forma intuitiva.

2. Calcular y dibuja el polinomio de sexto grado que interpola estos puntos.

3. Dibujar una curva de interpolación usando splines cúbicos.

4. Comparar los resultados.

5. ¿Qué valores obtienes para t = 0.90 con las distintas curvas de interpolaciónobtenidas?

40

Page 41: Mathematica Comandos Basicos

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 unalocalidad cercana:

Temperatura 95 96 97 99 94Potencia 153.4 158.5 159.6 160.0 154.0

.

1. Ajustarlos a una ecuación exponencial mediante mínimos cuadrados. Calcularel coeficiente de correlación.

2. Utiliza tres puntos para calcular un polinomio de interpolación de grado dos.

3. Utiliza los dos resultados anteriores para calcular el valor de y cuando x = 98.¿Qué resultado consideras correcto?

Ejercicio 32 Dados los datos siguientes

x 2 3 4 5 6

y 12 24 50 95 190

1. Hallar la curva exponencial mínimo cuadrática y = abx .

2. Calcula un polinomio interpolador a trozos con polinomios de grado dos

41

Page 42: Mathematica Comandos Basicos

Capítulo 5

Estudio de funciones reales

Como hemos comentado en la introducción, las posibilidades gráficas del Mathematicahan sido una de las causas de su éxito. Mediante Mathematica se pueden dibujarfunciones y datos en dos y tres dimensiones; producir gráficos de nivel y de densidad,además de dibujar objetos y figuras arbitrarias. En esta práctica exploraremos algunasde las posibilidades que Mathematica ofrece a la hora de hacer gráficas además de suuso en el reconocimiento de los puntos extremos, en particular para funciones de dosvariables.

5.1 Gráficas en Dos y Tres Dimensiones

5.1.1 Gráficas en el plano.

Para hacer una gráfica en dos dimensiones de una función de una variable se usa laorden Plot. Esta orden necesita al menos de dos argumentos, una expresión expr, y unrango. El rango es un triplete: la variable de la expresión, x, un valor mínimo, xmin, yun valor máximo, xmax.

Plot [expr, {x, xmin,xmax}]

Así la gráfica de la parábola y = −x2 + 4 es producida por la siguiente orden:In[] := Plot [-x^2+4,{x,-3,3}];

Además de este tipo de funciones Mathematica también puede hacer gráficas defunciones que tienden a infinito o que tienen singularidades, así por ejemplo podemosproducir la gráfica de la tangente en valores donde la tangente se hace infinito (re-cuerdese que los argumentos de las funciones trigonométricas deben estar en radianes,a menos que se indique otra cosa)

In[] := Plot [Tan[x], {x,-2Pi,2Pi}];

Obsérvese que Mathematica no muestra todo el rango de valores de y, muestra laregión en que la función es interesante. Fuera del rango en que está dibujada la funciónel comportamiento de la tangente no es especialmente relevante.

42

Page 43: Mathematica Comandos Basicos

Opciones

Cuando Mathematica dibuja una gráfica, debe tomar muchas decisiones. Estas deci-siones pueden ser modificadas dependiendo de los valores de las opciones. Recuerdeseque 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]

Estas opciones se pueden especificar en cualquier orden después de los argumentosrequeridos,

Plot [expr, {x, xmin,xmax}, opciones]

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 defectoAl 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 suevaluación.

Modificando el estilo de una gráfica

Mediante la opción PlotStyle se puede cambiar el grosor, color y estilo de una curva.El grosor se cambia utilizando la expresión Thickness, cuyo argumento [a] es la razóndel ancho de línea al de todo el gráfico.

Plot[expr, rango, PlotStyle->Thickness[a]]

El valor inicial para la función Plot es Thickness[0.004].La función RGBColor permite especificar un color: Dicha función tiene tres argu-

mentos: el primero es la cantidad de rojo (Red), el segundo de verde (Green) y el tercerode azul (Blue). Estos argumentos deben ser números entre 0 y 1, donde 1 indica lapresencia del color y 0 su ausencia. Se puede utilizar también GrayLevel si se deseaun sombreado gris; su argumento es un número entre 0 y 1.

Plot[expr, rango, PlotStyle->RGBColor[rojo, verde, azul]]Plot[expr, rango, PlotStyle->GrayLevel[g]].

La función Dashing crea una línea a trazos en la que los sucesivos trazos dibujadoso no dibujados son de longitud d1,d2,..., los argumentos de la función. Las longitudesd1,d2,... se especifican como fracciones del ancho total del gráfico.

Plot[expr, rango, PlotStyle->Dashing[{d1,d2,...}]]

Todas estas opciones pueden usarse simultaneamente con PlotStyle si se especi-fican en una lista de listas. Lo cual además permite dibujar varias curvas al mismotiempo con estilos diferentes.

43

Page 44: Mathematica Comandos Basicos

Gráficas de varias curvas

Plot permite obtener la gráfica de varias curvas al mismo tiempo, para ello se han deescribir las ecuaciones de las distintas curvas en forma de lista en el primer argumentode Plot

Plot[{ecuación 1, ecuación 2, ...}, {x, xmin,xmax}].

Como hemos indicado antes cada una de las líneas puede dibujar con un estilodiferente, 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 losvalores de x e y en función de un parámetro. Permite asimismo dibujar gráficas encoordenadas polares.

La función ParametricPlot dibuja una curva parametrizada, una función dondelos valores de x e y vienen dados en función de un parámetro; en general se usa t comodicho parámetro ya que suele representar el tiempo.

ParametricPlot[{fx[t],fy[t]},{t,tmin,tmax}]

5.1.2 Gráficas Tridimensionales

La función Plot3D produce una gráfica trimensional donde se da la coordenada z enfunción de x e y. Sus argumentos son una expresión y los rangos para las dos variables:

Plot3D[expr, {x,xmin,xmax},{y,ymin,ymax}, opciones];

Una opción interesante de Plot3D es que la gráfica obtenida puede verse desdedistintos puntos de vista mediante ViewPoint. El Front End tiene una opción en elmenú que permite visualizar los distintos enfoques que se le puede dar a la figura, sinmá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 lasopciones 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 coordenadasx, y, z están dadas en términos de dos parámetros

ParametricPlot3D[{fx[u,v],fy[u,v],fz[u,v]}, {u,umin,umax}, {v,vmin,vmax},opciones], oParametricPlot3D[{fx[u],fy[u],fz[u]}, {u,umin,umax}, opciones],

Al igual que antes, la ventaja de utiliza esta opción consiste sobre todo en el dibujode funciones que son dificiles de hacer en coordenadas cartesianas.

44

Page 45: Mathematica Comandos Basicos

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 directacuando y = f(x) mediante Plot:

Plot [expr, {x, xmin,xmax}]

Así la gráfica de la curva y = x3 + x es producida por la siguiente orden:

In[] := Plot [x^3+x,{x,-3,3}];

No obstante, a veces es útil introducir una tercera variable para representar unacurva en el plano. El interés de introducir esta tercera variable es doble: por un ladopermite dibujar mas fácilmente algunas curvas planas que no se pueden escribir deforma inmediata como funciones. Por otro lado, en mucho casos este parametro sepuede considerar como el tiempo y permite la descripción completa de la curva entérminos de la trayectoria seguida por un móvil. Veamoslo:

• Si se quiere dibujar la circunferencia x2+y2 = 1 utilizando Plot, se ha de despejarla variable y y dibujar las dos curvas correspondientes

In[] := Plot [{Sqrt[1-x^2],-Sqrt[1-x^2]},{x,-1,1}]Pero esta misma circunferencia se puede dibujar utilizando un parámetro angular

y escribiendo x e y en términos de dicho parámetro:

x = cos t, y = sin t.

La orden que permite dibujarlo es:ParametricPlot[{Cos[t],Sin[t]},{t,0,2 Pi}]

• Para ver la versión temporal del parámetro, consideremos la trayectoria de unobjeto lanzado al aire formando un ángulo de 45o con una velocidad inicial de10m/s. Podeis comprobar que este objeto sigue la trayectoria parabólica dadapor

y = −x2

10+ x

Pero esta ecuación no nos dice en que momento el objeto ha estado en cada puntode la trayectoria. Para determinar ésto se introduce una tercera variable, t, a laque llamamos parámetro. A partir de las leyes de Newton se pueden reescribir xe y en términos de dicho parámetro, obteniéndose las ecuaciones paramétricas

x = 5√2t

y = 5√2t− 5t2

45

Page 46: Mathematica Comandos Basicos

Este conjunto de ecuaciones permite determinar en que punto está el objeto encada instante. El dibujo de la trayectoria se puede obtener, además de utilizar laorden 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 derecorrido de la trayectoria.

Coordenadas polares

Para construir un sistema de coordenadas polares en el plano, se fija un punto O llamadoorigen (o polo) y desde O se considera un rayo inicial llamado eje polar. A cada puntoP 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-

lasx = r cos ty = r sin t

¯x2 + y2 = r2

tan t =y

x

Ejercicio 33 Dibujar las siguientes curvas utillizando coordenadas paramétricas y carte-sianas:

x2 + y2 = 9x2 + y2 − 2x = 0x2 + y2 − 4y = 0y2 = 2x¡x2 + y2

¢2 − 9 ¡x2 − y2¢= 0

y = x

Ejercicio 34 Dibujar las siguientes gráficas polaresr = 2cos 3t (rosa de tres pétalos) ¿Cómo dibujarías una rosa de cuatro pétalos?¿Yde

25?r2 = 4 sin 2t (lemniscata).r = 2± 3 sin t (caracoles).

Ejercicio 35 Escribir las ecuaciones polares de las cónicas y dibujalas.

5.2.2 Curvas en el espacio, ecuaciones paramétricas.

En el espacio, una curva se representa como la intersección de dos superficies, por loque es más interesante la utilización de coordenadas paramétricas, ya que la curva seobtiene al variar un único parámetro,

1En general, las coordenadas polares se conocen por (r, θ). Utilizamos t como ángulo por comodidadde escritura.

46

Page 47: Mathematica Comandos Basicos

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 untrio ordenado (r, t, z), donde

(r, t) es una representación polar de la proyección del punto P en el plano xy, yz es la distancia orientada de (r, t) a P.Las coordenadas cartesianas estan relacionadas con las cilíndricas mediante las

fórmulasx = r cos ty = r sin tz = z

¯¯ x2 + y2 = r2

tan t =y

xz = z

Este tipo de coordenadas está especialmente indicado cuando hay trayectorias quetienen al eje z como eje de simetría.

Ejercicio 36 Dibujar la curva dada por

x = 2cos ty = 2 sin tz = t

, 0 ≤ t ≤ 2π

Ejercicio 37 Dibujar la curva intersección del cilindro x2 + y2 = 9 y el plano x = z.

Ejercicio 38 Dibujar la curva intersección del paraboloide x2 = z y el plano x = y.

Coordenadas esféricas

En un sistema de coordenadas esféricas un punto P del espacio se representa por untrio ordenado (R, t, u)2, donde

R es la distancia de P hasta el origen, R ≥ 0t es el mismo ángulo que se usa en coordenadas cilíndricas, 0 ≤ t ≤ 2π, yu 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

x = R sinu cos ty = R sinu sin tz = R cosu

¯¯x2 + y2 + z2 = R2

tan t =y

xu = arccos

z

R

Este tipo de coordenadas es especialmente útil para dibujos con un centro desimetría.

2En general, las coordenadas esféricas se conocen por (ρ, θ, φ). Utilizamos la otra notación porcomodidad de escritura.

47

Page 48: Mathematica Comandos Basicos

5.3 Dibujo de superficies, parametrización de superficies

Una superficie necesita dos parámetros para poder dibujarla, el Mathematica dibuja deforma 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 coordenadasadecuadas.

Ejercicio 39 Dibujar las siguientes superficies:x = y (plano)x2 + y2 = 9 (cilindro de radio 3).x2 + y2 = 4z (paraboloide).x2 + y2 = z2 (cono).x2 + y2 − z2 = 1 (hiperboloide)x2 + y2 + z2 = 1 (esfera)

Ejercicio 40 Dibujar las siguientes superficies dadas en coordenadas paramétricas eidentificalas:

r = 3

r = 2√z

r = z

r2 = z2 + 1

R = 1

t =π

4

u =π

4x = (2 + cosu) cos v, y = (2 + cosu) sin v, z = sinu, 0 ≤ u ≤ 2π, 0 ≤ v ≤ 2π

(toro).

Ejercicio 41 Encontrar, en su caso, las ecuaciones de las superficies anteriores encoordenadas cartesianas.

5.4 Cálculo Diferencial

Vamos a introducir ahora algunos comandos de los que dispone Mathematica paraabordar, y en muchos casos resolver con éxito, gran variedad de problemas que surgenen el Cálculo Diferencial en una y en varias variables. Desde luego, no se trata aquí deestudiar a fondo esta disciplina matemática, sino más bien de ilustrar las técnicas queel programa pone a disposición del usuario para reducir considerablemente los cálculosy, lo que es más importante, para entender qué es lo que se está haciendo

48

Page 49: Mathematica Comandos Basicos

5.4.1 Derivación explícita e implícita

El programa ofrece varios comandos para el cálculo de derivadas tanto de funciones deuna variable como de varias variables. En este apartado los repasaremos brevemente yveremos 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∂

∂xf ;

D[f, x , y, ...]

calcula la derivada múltiple∂

∂x

∂y. . . f ;

D[f, {x , n}]

proporciona la derivada n-ésima∂n

∂xnf , mientras que

D[f, x , NonConstants →{u, v, ...}]

calcula la derivada parcial de f respecto a x considerando u, v, . . . también comofunciones de x. Obviamente, estos comandos también sirven si la función f dependesólo de x:

Si y depende de x, se puede usar la forma funcional explícita y[x] para efectuar laderivación:

Así es posible, por ejemplo, derivar implícitamente. Los siguientes comandos pro-porcionan otras formas de calcular derivadas: f’[x] obtiene la derivada primera deuna función de una variable; f’’[x] da la derivada segunda de una función de unavariable, y así sucesivamente. El objeto f’ en Mathematica es el resultado de aplicarel funcional de diferenciación a la función f . La forma completa de f’ es, de hecho,

Derivative[1][f]

de manera que Derivative[1] puede ser considerado como el operador de diferen-ciación, esto es, como el operador que al actuar sobre una función f proporciona sufunción derivada. El comando para obtener la diferencial total de una función f es

Dt[f]

mientras que

Dt[f, x ]

da la derivada totaldf

dx;

49

Page 50: Mathematica Comandos Basicos

Dt[f, x , y, ...]

da la derivada total múltipled

dx

d

dy· · · f , y

Dt[f, x , Constants →{c, d,...}]

proporciona la derivada total con c, d, constantes. Podemos hacer una definición

explícita parady

dxcon el comando

Dt[y, x ] = algo

pudiendo anular la definición para la derivada con Clear[y].A veces ocurre que una función y(x) viene dada implícitamente por una cierta

ecuación e interesa calcular su derivada. Los comandos anteriores resuelven este prob-lema. Así,

Dt[ecuacion, x ]

efectúa la derivada de la ecuación con respecto a x, obteniéndose una expresión dedonde se podrá despejar la derivada.

Dada una aplicación f : Rn −→ Rm, a veces interesará calcular su matriz jaco-biana y su determinante jacobiano. La función que Mathematica incorpora para estaeventualidad es Outer.

Para concluir este apartado diremos que el paquete

Calculus‘VectorAnalysis.m

dispone de funciones específicas para el cálculo del gradiente, la divergencia, el rota-cional y el laplaciano de un campo vectorial f . Los comandos respectivos son: Grad[f],Div[f], Curl[f] y Laplacian[f].

5.4.2 Problemas

Vamos ahora a resolver algunos problemas típicos:

Ejercicio 42 Calcular y0(x) sabiendo que cos(x+ sin y) = sin y.

Ejercicio 43 La trayectoria de un móvil en dos dimensiones viene descrita por lasecuaciones

x (t) = t cos t

y (t) = t sin t

1. Dibujar la trayectoria desde t = 0 hasta t = 2π y la recta tangente en los puntost = 1.7 y t = π.

50

Page 51: Mathematica Comandos Basicos

2. Determinar los puntos de corte de estas rectas tangente y los ejes coordenados.

Ejercicio 44 Una fuente de alimentación suministra un voltaje periódico en el tiempode modo que en [−π, π] vale V (t) = e−t2 . Aproximar esta función en torno a lospuntos 0 y

π

2mediante un polinomio de Taylor de grado cuatro. Dibujar la función y

el polinomio en dicho intervalo.

Ejercicio 45 Calcular las derivadas parciales de la función

f(x, y) =x3y − xy3

x2 + y2

f(x, y) =

xy2

x2 + y4si (x, y) 6= (0, 0)

0 si (x, y) = (0, 0)

Ejercicio 46 Dada la función

f (x, y) =

xy¡x2 − y2

¢x2 + y2

, (x, y) 6= (0, 0)0, (x, y) = (0, 0)

1. Estudia su continuidad en todo su dominio.

2. Calcula sus derivadas parciales en todo el dominio.

3. ¿Es diferenciable? ¿Se cumple el teorema de Young?

4. Estudiar la continuidad de las derivadas parciales calculadas en el problema an-terior. Dibuja las gráficas de las funciones dadas.

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) .

Ejercicio 48 Calcular la derivada direccional de la función

f(x, y, z) =1p

x2 + y2 + z2

en el punto (2, 1, 1) según el vector (1, 1, 0).

5.4.3 Máximos y mínimos de funciones

Vamos ahora a resolver algunos problemas típicos de cálculo de máximos y mínimos defunciones de una y dos variables, así como su interpretación geométrica:

Ejercicio 49 Dibujar la curva 2x2− 2xy+y2+x+2y+1 = 0. Calcula la ecuación desus tangentes en los puntos de abcisa x = −1/2. Dibujar la curva y las dos tangentes.

51

Page 52: Mathematica Comandos Basicos

Ejercicio 50 Dibujar las curvas siguientes y estudia en que puntos la función no tienederivada. Demuéstralo.

r = 2cos 3t (rosa de tres pétalos)r2 = 4 sin 2t (lemniscata).r = 2± 3 sin t (caracoles).

Ejercicio 51 Dibujar las curvas siguientes:Curva intersección del cilindro x2 + y2 = 9 y el plano x = z.Curva intersección del paraboloide x2 = z y el plano x = y.Suponiendo que estas curvas son las seguidas por un móvil, ¿cúal es la velocidad de

dicho móvil en cada uno de los puntos?. ¿Y su aceleración?

Ejercicio 52 Dibujar la función f(x, y) = x2 + y2, calcula y clasifica sus puntos ex-tremos.

Ejercicio 53 Hallar los puntos extremos de las funciones siguientes y determinarcuales son máximos, mínimos y puntos silla locales.

f (x, y) = x2 − y2 − xy ,f (x, y) = x2 + y2 − xy,f (x, y) = e1+x

2−y2 ,f (x, y) =

¡x2 + 3y2

¢e1−x2−y2 .

Dibujar las gráficas correspondientes.

Ejercicio 54 Usar el método de los multiplicadores de Lagrange para hallar los valoresmáximo y mínimo absoluto de f (x, y) = x2 + y2 − x − y + 1 en el disco unidad. Hazuna representación gráfica.

Ejercicio 55 Hallar y clasifica los puntos extremos no degenerados de la función

f(x, y) = −120x3 − 30x4 + 18x5 + 5x6 + 30xy2

Dibujarla.

Ejercicio 56 Hallar y clasificar los puntos extremos de la función f(x, y, z) = x2 +xy + y2 + z2.

Ejercicio 57 La energia interna de un cierto sistema viene dada en función de lapresión x y el volumen y por

U (x, y) = 1− e−(x−1)2−(y−2)2

1. Dibujar la gráfica de la función U y los conjuntos de nivel para presión y volumenentre 0 y 3.

2. Obtener los máximos y mínimos de U.

3. Calcular el polinomio de Taylor de grado 2 de U en uno de los mínimos obtenidos.Calcular el error cometido al aproximar la función por este polinomio de Taylor.

52

Page 53: Mathematica Comandos Basicos

Ejercicio 58 Dada la función f (x, y) = y sin (πx).

1. Dibujarla.

2. Determinar sus puntos críticos.

3. Calcular las aproximaciones de Taylor de primer y segundo grado en el punto(0, 0) .

4. Determinar sus puntos críticos restringidos al plano z = 1.

Ejercicio 59 Dada la ecuación z4 + x2z3 + y2 + xy = 2.

1. Demostrar que define a z como una función de x e y en un entorno del punto(1, 1,−1) .

2. Calcular el plano tangente a esta superficie en un entorno del punto (1, 1,−1) .3. Calcular la aproximación de segundo grado en dicho punto.

53