capitulo 1

Anuncio
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
INDICE
CAPITULO 1: INTRODUCCIÓN A MATHEMATICA ................................................ 2
CAPITULO 2: FUNCIONES Y LISTAS ........................................................................ 7
CAPITULO 3: VECTORES Y MATRICES ................................................................. 11
CAPITULO 4: RESOLUCIÓN DE ECUACIONES Y SISTEMAS DE ECUACIONES
........................................................................................................................................ 18
CAPITULO 5: REPRESENTACION GRAFICA.......................................................... 22
CAPITULO 6: DERIVACIÓN E INTEGRACIÓN....................................................... 35
CAPITULO 8: APLICACIÓN DE MÉTODOS ............................................................ 42
1
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 1: INTRODUCCIÓN A MATHEMATICA
Mathematica es un programa utilizado en áreas científicas, de ingeniería,
matemáticas y áreas computacionales. Originalmente fue concebido por Stephen
Wolfram quien continúa siendo el líder del grupo de matemáticos y programadores que
desarrollan el producto. Comúnmente considerado como un sistema de álgebra
computacional, Mathematica es también un poderoso lenguaje de programación de
propósito general.
EL ESPACIO DE TRABAJO
El espacio de trabajo de la herramienta mathematica esta compuesta por las
siguientes partes:
Notebook y Núcleo
Entradas y salidas
Celdas
Paletas
2
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
NOTEBOOK Y NUCLEO
En el programa Mathematica se pueden distinguir dos grandes partes:
Una de ellas, llamada núcleo (Kernel), es la encargada de ejecutar todos los
comandos y realizar los cálculos necesarios.
La otra parte es la interfaz del usuario (Front-End). Existe un tipo especial de
Front-End que permite generar documentos interactivos en los que se mezclan
gráficos y textos y en el que se incluirán todos los comandos a evaluar por el
núcleo; a ese tipo de documentos se los denomina Notebooks.
ENTRADAS Y SALIDAS
Para que el núcleo evalúe todas las entradas (inputs) ingresadas, se debe pulsar las
teclas Shift y Enter simultáneamente.
Por cada entrada dada por el usuario, Mathematica devolverá una salida (output) que
numerará (ambos con el mismo número) secuencialmente a lo largo de una sesión de
trabajo.
CELDAS
Cada entrada y salida lleva un corchete situado a la derecha de la pantalla
delimitando lo que denominaremos celdas (Cell).
PALETAS
Las paletas son pequeñas ventanas que podemos activar (o desactivar) y que
contienen algunas de las operaciones, órdenes e instrucciones más usuales que se
necesitan durante una sesión de trabajo. Inicialmente son siete paletas que contienen
todo tipo de operaciones, desde las más básicas hasta otras más complejas de Cálculo
Algebraico, Cálculo Integral o de Cálculo Diferencial. Ofrecen la posibilidad de
escribir, y por tanto de resolver, de la misma forma que se realiza en una hoja.
Principios generales para escribir comandos:
Las mayúsculas y minúsculas. Mathematica distingue unos caracteres de otros.
Todas las funciones, opciones, variables y constantes incorporadas al programa
empiezan con mayúscula, por lo tanto se recomienda utilizar minúscula para
aquellas definidas por el usuario.
Los espacios. Un espacio entre dos variables se interpreta como un signo de
multiplicación. Por esto, nunca se debe dejar un espacio entre caracteres cuando
se define el nombre de una constante, variable o función.
Los paréntesis, corchetes y llaves.
Los paréntesis se utilizan para agrupar e indican prioridad en las operaciones a
efectuar.
Los corchetes son exclusivos de las funciones y delimitan el argumento de las
mismas, no se puede usar como un segundo nivel de paréntesis.
Las llaves se utilizan para definir listas (vectores y matrices, por ejemplo) de
elementos.
3
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
OPERADORES
Mathematica reconoce los operadores habituales de suma, diferencia, producto,
cociente y potenciación:
Operación
suma
resta
producto
cociente
potenciación
Notación en Mathematica
X+Y
X–Y
X * Y o X Y (un espacio)
X/Y
X^Y
Otras operaciones numéricas usuales son las siguientes:
Operación
Valor absoluto de x
Raíz cuadrada de x
Parte entera de x
Factorial de x
Número aleatorio real entre 0 y 1
Máximo y mínimo de una lista de vectores
Descomposición en factores primos de x
Notación en Mathematica
Abs[x]
Sqrt[x]
Floor[x]
X! o Factorial[x]
Random[x]
Max[x1,x2,…..], Min[x1,x2,…..]
FactorInteger[x]
NOTA:
Todas las funciones comienzan con mayúsculas (incluso cuando el nombre está
formado por varias palabras).
Los argumentos de las distintas funciones siempre van entre corchetes.
La mayoría de las operaciones se encuentran también en varias de las paletas.
Con respecto a la precisión en el cálculo, mathematica tiene precisión infinita; es
decir que las operaciones son realizadas en forma exacta o bien con la precisión
que le indique el operador. La única limitación es la memoria disponible de la
PC.
CONSTANTES INCORPORADAS
Mathematica tiene un gran número de constantes usuales predefinidas, algunas
de ellas son:
Operación
Notación en Mathematica
Pi
E
I
Infinity
π
E
ι
∞
Si bien "infinito" no es una constante, ya que no es un valor numérico,
mathematica la incluye como constante predefinida.
4
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
FUNCIONES
Algunas funciones usuales y la sintaxis correspondiente en Mathematica:
Operación
x
x
e
ln(x)
log a ( x)
sen(x)
cos(x)
tg (x)
cot g ( x)
sec(x)
cos ec( x)
arcsen(x)
arcsh(x)
Notación en Mathematica
Sqrt[x]
E^x o Exp[x]
Log[x]
Log[a,x]
Sin [x]
Cos[x]
Tan[x]
Cot[x]
Sec[x]
Csc[x]
ArcSin[x]
ArcSinh[x]
COMANDOS ALGEBRAICOS
Mediante el comando Expand[] podemos obtener el desarrollo de las
expresiones introducidas (por ejemplo, la aplicación de la propiedad distributiva, el
desarrollo del cuadrado del binomio...).
Operación
Expand[x]
Factor[x]
Together[x]
Apart[x]
Cancel[x]
Simplify[x]
FullSimplify[x]
TrigExpand[x]
TrigFactor[x]
Notación en Mathematica
Forma expandida (efectúa sumas, productos, potencias)
Factoriza x (escribe x como producto de factores mínimos)
Escribe todos los términos de x con un denominador común
Separa x en términos con denominadores lo más simples
posible.
Cancela factores comunes que posean numerador y
denominador
Simplifica x siguiendo reglas algebraicas estándar
Simplifica x usando reglas algebraicas más potentes
Expande expresiones trigonométrica en suma de términos
Factoriza expresiones trigonométricas en producto de
términos
EL COMANDO “N”
Para aproximar expresiones racionales periódicas o expresiones irracionales,
debemos utilizar el comando N[expresión, número de cifras], donde el primero de los
argumentos (expresión) corresponde a la cantidad numérica que se desea aproximar y el
segundo de los argumentos (número de cifras) a la cantidad de cifras con la que se
requiere el resultado (parte entera+decimales).
Por ejemplo; obtener el desarrollo de 123/9990 y de la raíz cuadrada de 3 con 20
cifras exactas.
5
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
123/99990
41
33330
N[123/99990]
0.00123012
N[Sqrt[3],20]
1.7320508075688772935
También se puede calcular aproximaciones numéricas indicando a la
herramienta que alguno de los números es real y no entero; para ello se coloca el punto
de los decimales y mathematica devolverá el resultado con una precisión por defecto.
Observar las siguientes salidas: 123/99 y 123./99
123/99
41
33
123./99
1.24242
6
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 2: FUNCIONES Y LISTAS
VARIABLES
En programación, las variables son estructuras de datos que, como su nombre
indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una
variable corresponde a un área reservada en la memoria principal del ordenador.
La asignación de valores a las variables se realiza de la siguiente manera:
x=7
7 (la variable x vale 7)
A partir de este momento cualquier cálculo que se realice y donde intervenga la
variable x, ésta equivaldrá al valor dado:
x+4
11
x^2 + x - 3
53
Es importante destacar, que los valores asignados a las variables son
permanentes. Una vez que se haya asignado un valor a una variable concreta, el valor
permanecerá hasta que no se libere o limpie la variable. Por supuesto, el valor
desaparecerá cuando se reinicie el núcleo o se empiece una nueva sesión de
Mathematica. Para liberar a las variables bastará con el Comando Clear.
x=7
7
x+4
11
Clear[x]
Print[x]
x
FUNCIONES
La definición de funciones se puede realizar de dos maneras diferentes:
Asignación inmediata (“=”)
Asignación diferida (“:=”)
Diferencia: cuando se utiliza la asignación diferida, ésta se produce cada vez que se
llama a la función, por lo tanto esta se ve afectada por todas las modificaciones que
puedan efectuarse.
Cuando se define una función en Mathematica, se debe especificar el nombre de la
misma y su variable independiente.
x=4
4
f[x_]:=x^2+5x
f[x]
36
f[5]
50
y=2
2
g[y_]=y^2+5y
14
g[y]
14
g[8]
7
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
En la asignación diferida se observa, que la entrada no produce salida. Esto se debe
a los dos puntos delante del signo de igualdad. Lo que se hace al añadir los dos puntos
equivale a un pequeño programa que se ejecutará cada vez que lo llamemos.
En cambio, si no se añade los dos puntos, Mathematica ejecutará la función
inmediatamente.
Nota: La variable x lleva un guión bajo "_" delante del signo igual, para que el
programa entienda que se trata de una variable muda, es decir, x puede llevar cualquier
nombre o valor.
Si se hubiese escrito f[x]:=x^2 se habría asignado el valor x^2 al objeto f[x] en vez
de a la función f y no entenderá, por ejemplo, f[3] ó f[y].
LISTAS
Son colecciones de objetos que son tratados como una entidad y constituyen una de
las estructuras más importantes de Matemática.
En particular tienen utilidad para la construcción de vectores y matrices.
CONSTRUCCIÓN Y MANIPULACIÓN DE LISTAS
Para definir una lista, se deben indicar sus elementos entre llaves y separadas por
comas.
Los elementos no son necesariamente del mismo tipo, de modo que una lista puede
estar formada por números, fracciones, otras listas, etc.
Otras formas de construir listas consisten en utilizar los comandos.
-Table -Array
Con las listas se pueden efectuar las operaciones aritméticas básicas, ser utilizados
como argumentos de las funciones elementales y efectuar una serie de manipulaciones.
COMANDOS
Sort[lista]: ordena la lista
Dimensions[matriz]: devuelve las dimensiones de una matriz
Reverse[lista]: invierte la lista
Length[lista]: calcula el número de elementos de la lista
Rest[lista]: devuelve la lista sin su primer elemento
Drop[lista,nºelemento]: elimina un número de elementos, a partir del
comienzo
Take[lista,cant elementos]: se obtiene la lista formada por los primeros
elementos de la lista
Append[lista, elemento nuevo]: sirve para añadir nuevos elementos al
final de la lista.
8
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Prepend[lista, elemento nuevo]: sirve para añadir nuevos elementos al
inicio de la lista.
l={5,2,6,1,9,0,4}
{5,2,6,1,9,0,4}
Sort[l]
{0,1,2,4,5,6,9}
Reverse[l]
{4,0,9,1,6,2,5}
Length[l]
7
Rest[l]
{2,6,1,9,0,4}
Drop[l,1]
{2,6,1,9,0,4}
Take[l,2]
{5,2}
Append[l,11]
{5,2,6,1,9,0,4,11}
Prepend[l,8]
{8,5,2,6,1,9,0,4}
Count[lista,suceso]: evalúa cuantas veces tiene lugar suceso en la lista.
Position[lista,suceso]: evalúa las posiciones en las que tiene lugar suceso en
lista.
Insert[lista,elemento,{i,j,…}]: inserta en la posesión {i,j,…} de lista elemento.
Delete[lista,{i,j,…}]: elimina de la lista el elemento de la posición {i,j,…}.
Flatten[lista]: convierte una matriz o una lista con sublistas en una lista única o
vector.
Partition[lista,nºelementos,paso]: agrupa elementos de una lista en grupos de
tamaño nºelementos y avanzando paso. Si se omite paso, se avanza nº elemento.
ReplacePart[lista, elemento nuevo, {i,j,…}]: reemplaza el elemento {i,j,…} de
lista por elemento nuevo.
Join[lista1,lista2,…listan]: crea una nueva lista concatenando los elementos de
lista1, lista2, …, listan.
Union[lista1,lista2,…listan]: crea una nueva lista realizando una unión
conjuntista de los elementos de lista1, lista2, …, listan.
Intersection[lista1,lista2,…listan]: crea una nueva lista realizando una
intersección conjuntista de los elementos de lista1, lista2, …, listan.
Plus@@lista: suma los elementos de lista.
Times@@lista: multiplica los elementos de lista.
9
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
h={{2,8,-5},{a,b},c}
p={2,4,-1,0,3}
r={{a,b},c,d}
{{2,8,-5},{a,b},c}
{2,4,-1,0,3}
{{a,b},c,d}
Count[h,c]
1
Position[r,{a,b}]
{{1}}
Insert[r,d,1]
{d,{a,b},c,d}
Insert[r,d,{1,2}]
{{a,d,b},c,d}
Delete[p,3]
{2,4,0,3}
ReplacePart[p,27,5]
{2,4,-1,0,27}
Join[h,r]
{{2,8,-5},{a,b},c,{a,b},c,d}
Union[h,r]
{c,d,{a,b},{2,8,-5}}
Intersection[h,r]
{c,{a,b}}
Plus@@p
8
Times@@p
0
Flatten[h]
{2,8,-5,a,b,c}
Partition[p,2]
{{2,4},{-1,0}}
10
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 3: VECTORES Y MATRICES
Para definir un vector se deben escribir los elementos entre llaves y separados
por comas. Igualmente, para definir una matriz bastará escribir como un vector de
vectores que corresponderán a las filas de la matriz. También se puede usar la paleta
BasicCalculations/Lists and Matrices.
v1={1,2,3}
v2={2,6,-3}
{1,2,3}
{2,6,-3}
OPERACIONES
Las operaciones que se pueden realizar son las siguientes:
El producto escalar, utilizando el comando Dot o el punto (.)
v1.v2
5
Dot[v1,v2]
5
La multiplicación elemento a elemento
v1*v2
{2,12,-9}
Para obtener el elemento i-ésimo de un vector haremos Part[v,i]. Por ejemplo, el
segundo elemento de v1 hacer:
Part[v1,2]
2
Una segunda forma de generar vectores, es a través de la orden Table[], cuya
definición es:
Table[expr,{imax}] genera un vector con imax copias de expr.
Table[expr,{i,imax}] genera un vector variando expr desde i=1 hasta i=imax.
Table[expr,{i,imin,imax}] genera un vector variando expr desde i=imin hasta
i=imax.
Table[expr,{i,imin,imax,di}] genera un vector variando desde imin hasta imax
con saltos di.
Table[i,{5}]
{i,i,i,i,i}
Table[n^2,{n,4}]
{1,4,9,16}
Table[2a,{a,2,6}]
{4,6,8,10,12}
Table[2^i,{i,1,9,0.5}]
{2,2.82843,4.,5.65685,8.,11.3137,16.,22.6274,32.,45.2548
,64.,90.5097,128.,181.019,256.,362.039,512.}
11
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Una tercera forma de definir vectores, es mediante el comando Array:
Array[a,n]: permite construir un vector simbólico de n componentes.
Array[g,4]
{g[1],g[2],g[3],g[4]}
g[1]=2
g[2]=4
g[3]=6
g[4]=8
2
4
6
8
MATRICES
Una matriz siempre está delimitada por un par de llaves y, separadas por comas,
se escriben las filas agrupadas también con llaves.
a={{1,2,5},{-2,5,7},{1,0,3}}
b={{1,1,1},{6,3,2},{1,-3,0}}
{{1,2,5},{-2,5,7},{1,0,3}}
{{1,1,1},{6,3,2},{1,-3,0}}
Mathematica no muestra el resultado en la forma de matriz que usualmente se
observa. Para conseguir este formato, se utiliza la orden MatrixForm[matriz].
MatrixForm[a]
1 2 5y
i
j
z
j
j
z
−2 5 7 z
j
z
j
z
k 1 0 3{
MatrixForm[b]
1 1 1y
i
j
z
j
z
j
z
6
3
2
j
z
j
z
k 1 −3 0 {
Una matriz también se puede definir con el comando Table y Array de la
siguiente manera:
Table[expresión, { i, imin, imax, incrementoi}, {j, jmin, jmax, incrementoj},
…]: se construye una lista cuyos componentes serán los distintos valores de
expresión, para cada uno de los índices i, j variando entre mínimo y máximo con
el incremento especificado en cada paso. Los incrementos y los valores mínimos
son optativos, por defecto toman el valor 1.
Array[a, {m,n}]: se construye una matriz simbólica de m filas y n columnas.
Los argumentos han de ser de tipo entero. Posteriormente se puede asignar
valores a sus componentes.
12
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Table[x^2+y^2,{x,0,2},{y,2,5}]
{{4,9,16,25},{5,10,17,26},{8,13,20,29}}
Array[t,{2,3}]
{{t[1,1],t[1,2],t[1,3]},{t[2,1],t[2,2],t[2,3]}}
t[1,1]=1
t[1,2]=0
t[1,3]=1
1
0
1
OPERACIONES
SUMA: Para sumar matrices, si los órdenes lo permiten, se utiliza el signo +.
MatrixForm[a]
1 2 5y
i
j
z
j
j
z
−2 5 7 z
j
z
j
z
k 1 0 3{
MatrixForm[b]
1 1 1y
i
j
z
j
z
j
z
6
3
2
j
z
j
z
1
−
3
0
k
{
a+b
{{2,3,6},{4,8,9},{2,-3,3}}
MatrixForm[a+b]
2 3 6y
i
j
z
j
z
j
z
4
8
9
j
z
j
z
k 2 −3 3 {
PRODUCTO:
El producto se realiza utilizando el punto y para obtener un formato matricial, utilizar
MatrixForm:
a.b
{{18,-8,5},{35,-8,8},{4,-8,1}}
MatrixForm[a.b]
18 − 8 5 y
i
j
z
j
j
z
35
−8 8 z
j
z
j
z
k 4 −8 1 {
Producto entre una Matriz y un vector:
13
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
MatrixForm[a.v1]
20 y
i
j
z
j
z
j
z
29
j
z
j
z
k 10 {
Producto entre una matriz y un escalar:
MatrixForm[2a]
2 4 10 y
i
j
z
j
z
j
z
−
4
10
14
j
z
j
z
k 2 0 6 {
Los siguientes comandos son los que nos permiten extraer elementos, filas,
columnas y submatrices de una matriz:
Para extraer el elemento (i,j)-ésimo de una matriz A, escribimos
Para extraer la fila i-ésima
Para obtener una submatriz de A el comando es:
Para extraer la columna j-ésima
A[[All,j]]
Sea la matriz A:
1 2 3y
i
j
z
j
z
j
z
4
5
6
j
z
j
z
k1 3 2{
Busquemos el elemento (2,3) de la matriz A definida anteriormente:
A[[2,3]]
6
Busquemos la fila segunda de la matriz A:
A[[2]]
{4,5,6}
Busquemos la submatriz de A que tiene las filas (1,2) y las columnas (2,3):
14
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
A[[{1,2},{2,3}]]
{{2,3},{5,6}}
Busquemos la tercera columna de la matriz A
A[[All,3]]
{3,6,9}
MatrixForm[%]
3y
i
j
z
j
z
j
z
6
j
j z
z
k9{
Tabla de alguna de las operaciones matriciales más usuales:
Operación
Inversa
Determinante
Valores propios
Vectores propios
Polinomio característico
Rango
Traspuesta
Traza
Matriz Diagonal
Matriz Identidad
Notación en mathematica
Inverse[a]
Det[a]
Eigenvalues[a]
Eigenvectors[a]
CharacteristicPolynomial[a,x]
MatrixRank[a]
Transpose[a]
Tr[a]
DiagonalMatrix[{a11,a22,…}]
IdentityMatrix[n]
EJEMPLOS
Definición de la matriz cuadrada ‘mat’
mat={{1,3,4},{-1,0,1},{1,3,-1}}
{{1,3,4},{-1,0,1},{1,3,-1}}
MatrixForm[%]
1 3 4 y
i
j
z
j
j
z
−1 0 1 z
j
z
j
z
k 1 3 −1 {
Cálculo de la determinante de ‘mat’ para comprobar que no sea nulo, y poder
calcular la inversa.
Det[mat]
-15
15
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Cálculo de la matriz inversa de ‘mat’.
inv=Inverse[mat]
::
1
1
1 1
1
1
, − 1, − >, :0, , >, : , 0, − >>
5
5
3 3
5
5
Con el producto matricial, se comprueba que ‘inv’ es la inversa de ‘mat’, ya que
el resultado es la matriz identidad.
iden=mat.inv
{{1,0,0},{0,1,0},{0,0,1}}
MatrixForm[%]
1 0 0y
i
j
z
j
z
j
z
0
1
0
j
z
j
z
0
0
1
k
{
Definición de la matriz ‘g’.
g={{1,2,7},{1,3,5}}
{{1,2,7},{1,3,5}}
MatrixForm[g]
J
1 2 7
N
1 3 5
Cálculo de la traspuesta de ‘g’.
MatrixForm[Transpose[g]]
1 1y
i
j
z
j
z
j
z
2
3
j
z
j
z
7
5
k
{
Definición de la matriz ‘h’.
h={{0,1,5,9},{2,1,6,8},{0,0,0,3},{0,0,1,-2}}
{{0,1,5,9},{2,1,6,8},{0,0,0,3},{0,0,1,-2}}
MatrixForm[%]
0
i
j
j
j
2
j
j
j
j
j0
j
k0
1
1
0
0
5
6
0
1
9 y
z
z
8 z
z
z
z
3 z
z
z
−2 {
Calculo de los autovalores de la matriz ‘h’.
valores=Eigenvalues[h]
{-3,2,-1,1}
MatrixForm[%]
−3 y
i
j
z
j
j
z
2 z
j
z
j
z
j
z
j
z
−
1
j
z
j
z
1
k
{
16
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Calculo de los autovectores de la matriz ‘h’.
vectores=Eigenvectors[h]
{{-7,1,-5,5},{1,2,0,0},{-1,1,0,0},{-13,-37,3,1}}
MatrixForm[%]
−7
1 −5
i
j
j
j
1
2
0
j
j
j
j
−1
1
0
j
j
k − 13 − 37 3
5y
z
z
0z
z
z
z
0z
z
z
1{
17
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 4: RESOLUCIÓN DE ECUACIONES Y
SISTEMAS DE ECUACIONES
Mathematica, puede resolver los tipos más comunes de ecuaciones y sistemas de
ecuaciones algebraicas, tanto de forma exacta (en el caso que se pueda) como de forma
aproximada.
Los comando para resolver sistemas de ecuaciones son:
LinearSolve
Solve
FindRoot
NSolve
LINEARSOLVE
El comando LinearSolve, devuelve un vector, el cual cumplirá la ecuación matricial
‘matriz . x = b’, siendo matriz una matriz y b un vector.
La sintaxis del comando es:
LinearSolve [matriz, b]
Sea el siguiente sistema de ecuaciones:
x + 2y − z =1
2x + 3 y + z = 1
− 2 y + z = −2
El planteamiento en mathematica es:
mat={{1,2,-1},{2,3,1},{0,-2,1}};
vec={1,1,-2};
LinearSolve [mat,vec]
{-1,1,0}
Se realizó la definición de una matriz de coeficientes y un vector de términos
independientes para un sistema de ecuaciones lineales. Como respuesta se obtuvo la
solución del sistema planteado.
En el caso de los sistemas indeterminados, este comando solo calcula una de las
soluciones.
SOLVE
Cuando la función sea polinómica o tenga una forma sencilla de expresión se
utiliza el comando solve. Devuelve el valor exacto de las raíces de la función. Resuelve
sistemas de grado bajo, pero con soluciones exactas. El problema de usar este comando,
es que solo permite resolver ecuaciones y sistemas de ecuaciones para los que es posible
aplicar un método algebraico sencillo, es decir que se puedan resolver mediante
operaciones elementales.
La sintaxis del comando es:
Solve [ecuaciones, variables]
18
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Una ecuación, es el conjunto de dos expresiones relacionadas con el operador de
igualdad (==).
Sea el siguiente sistema:
x + y =1
y − 2z = 1
x + 2z = 0
El planteamiento en mathematica es:
Solve[{x+y1,y-2 z1,x+2
{{x→-2 z,y→1+2 z}}
%/.z→2
{{x→-4.,y→5.}}
z0},{x,y,z}]
En este caso se observa, que se trata de un sistema compatible indeterminado y
por lo tanto la solución obtenida es en función de Z.
Sobre la solución de la ecuación se puede aplicar cualquier transformación.
Se considera alguna de las incógnitas como un parámetro y se obtiene resultados
particulares para ciertos valores del mismo.
En el ejemplo, se obtienen las soluciones de la ecuación con z=2.
El operador %: hace referencia a la última salida.
El operador /. : indica que sobre la expresión considerada se aplica la regla
z− > 2 .
NOTA:
El doble signo igual (==) entre la función y el valor cero indica que es una
ecuación.
La x que figura después de la coma identifica la variable o incógnita a despejar.
FINDROOT
El comando FindRoot, se utiliza en el caso de que la función sea más compleja, se
pueden calcular aproximaciones de las raíces utilizando métodos numéricos para su
resolución.
Como este comando usa métodos aproximados iterativos, es posible que si se
ingresan valores muy alejados para los puntos iniciales, Mathematica no pueda
encontrar una solución.
Los valores que comienzan para las variables de FindRoot son elegidos típicamente
usando estimaciones de las soluciones previstas, por ensayo y error, o haciendo
gráficos. Es decir, es conveniente hacer primero una gráfica de la función para “ver”
dónde se anula la función.
La sintaxis del comando es:
FindRoot[ecuacion, {x, x0 }] : que utiliza el Método de Newton (o método de la
tangente) tomando como punto inicial x = x0
FindRoot[ecuacion, {x, x0 }, { y, y0 }] que utiliza una variante del Método de la
secante tomando como puntos iniciales x = x0 , y = y0 .
19
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
El primer argumento, es la ecuación.
El segundo argumento, es una lista {x, x0 } que indica la variable y el valor inicial.
El resultado, es una lista que contiene una regla que muestra el valor de la variable.
Sea la siguiente ecuación:
e x − 3x
El planteamiento en mathematica es:
Plot[Exp[x]-3 x,{x,0,2}]
1.25
1
0.75
0.5
0.25
0.5
1
1.5
2
-0.25
FindRoot[Exp[x]-3
{x→0.619061}
FindRoot[Exp[x]-3
{x→1.51213}
x0,{x,0}]
x0,{x,1.5}]
Primero se realizo la gráfica, para observar los ceros de la función y determinar
los puntos iniciales que necesita FindRoot para comenzar la búsqueda de las raíces.
NSOLVE
El comando NSolve, resuelve todas las soluciones de una ecuación o de un sistema
de ecuaciones polinómicas y no polinómicas.
Los valores obtenidos, son raíces aproximadas y puede aplicarse para cualquier
grado.
La sintaxis del comando es:
NSolve[ecuación, variables]
Sea el siguiente sistema de ecuaciones:
x2 + y 2 = 1
y = x2
El planteamiento en mathematica es:
20
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
NSolve[{x^2+y^21,yx^2},{x,y}]
{{x→0. +1.27202 ,y→-1.61803},
{x→0. -1.27202 ,y→-1.61803},
{x→-0.786151,y→0.618034},
{x→0.786151,y→0.618034}}
La cuarta solución en el resultado de NSolve, corresponde a la solución devuelta
por FindRoot.
FindRoot[{x^2+y^21,yx^2},{x,1},{y,1}]
{x→0.786151,y→0.618034}
21
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 5: REPRESENTACION GRAFICA
Una de las grandes virtudes de Mathematica es lo fácil y completo que es su
tratamiento de los gráficos para funciones de una y dos variables. Es posible dibujar a la
vez varias funciones y personalizar el resultado en cuanto a escalas, color, etc. También
se pueden representar funciones en coordenadas paramétricas e incluso se pueden
realizar animaciones.
COMANDO PLOT
Para representar gráficamente una función de una variable, el comando que se
utiliza es Plot.
La sintaxis es la siguiente:
Plot [ función , {x, xmin , xmax } , opciones]
x : es la variable independiente.
xmin : Extremo inferior del intervalo del dominio de la función que se desea
representar.
xmax : Extremo superior del intervalo del dominio de la función que se desea
representar.
NOTA:
Mathematica decide automáticamente cual es la escala más apropiada para que
la gráfica se vea lo mejor posible.
Sean las siguientes funciones:
f ( x) = x 2 + 5 x en el intervalo [-7, 7]
g ( x) = x 3 − 7 x 2 + 6 x + 4 en el intervalo [-10, 14]
El planteamiento en Mathematica es:
Plot[x^2+5x,{x,-7,7}]
50
40
30
20
10
-6
-4
-2
2
Graphics
22
4
6
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
g[x_]:=x^3-7^2+6x+4;
Plot[g[x],{x,-10,14}]
2000
1000
-10
-5
5
10
-1000
Graphics
NOTA:
Como se puede ver, se puede escribir directamente la función a representar
“dentro” del comando Plot. El inconveniente que tiene, es que cada vez que se
necesita trabajar con esa función tenemos que volver a escribirla, siendo más
conveniente utilizar nombres de función, por ejemplo f ( x) = x 2 + 5 x ], y usar
después el nombre (Plot[f[x],{x,0,4Pi}]).
Para evitar que aparezca el mensaje –Graphics- en la salida, colocar un punto y
coma al final del comando Plot.
Existe la posibilidad de dibujar varias gráficas a la vez, con la siguiente sintaxis:
Plot [ {f1, f2,……,fn} , {x, xmin , xmax } , opciones]
Dibuja las n funciones conjuntamente para valores de x comprendidos entre xmin
y xmax .
f[x_]:=x^2+5x;
Plot[{f[x],g[x]},{x,-10,14}];
400
200
-10
-5
5
-200
23
10
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
OPCIONES DE PLOT
Cuando Mathematica realiza un gráfico, tiene que elegir cómo realizar la
representación gráfica (escalas, ejes, origen, color, grosor de línea, etc). En muchas de
las ocasiones, Mathematica probablemente hará una buena elección. No obstante, si se
desea cambiar algunas de estas opciones se pueden utilizar distintas órdenes.
Como último argumento del comando, por ejemplo Plot[], se puede incluir una
secuencia de órdenes del tipo nombre->valor, para especificar el valor de varias de las
opciones gráficas. A cada opción que no asignemos un valor explícito, Mathematica le
asignará un valor por defecto.
AspectRatio − > número: Determina la proporción entre los ejes de abscisas y
ordenadas. Si especificamos el valor 1 los dos ejes tendrán el mismo tamaño.
Plot[f[x],{x,0-7,7},AspectRatio→1.5]
50
40
30
20
10
-6 -4 -2
2 4 6
Graphics
PlotRange − > {número1, número2}: Cuando Mathematica realiza un gráfico,
trata de fijar unas escalas para x e y con la idea de incluir solo las partes más
interesantes de la gráfica. Si la función crece rápidamente, o tiene
singularidades, las partes de la gráfica demasiado largas las corta. Con la orden
PlotRange podemos controlar el rango de variación para la x y la y. Los posibles
valores para esta opción son:
* Automatic: muestra una gran parte de la gráfica incluyendo la parte " más interesante
que aparecería por defecto”.
* All: muestra todos los puntos (si es posible).
* { ymin , ymax } : muestra un rango específico para los valores de y.
* {xrange , yrange } : muestra un rango específico para los valores de x e y.
24
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Plot[f[x],{x,0-7,7},PlotRange→{-20,20}]
20
15
10
5
-6
-4
-2
2
4
6
-5
-10
-15
-20
PlotStyle − > {opciones}: indica el estilo de la línea o puntos de la gráfica,
como ser color, grosor, brillo, y fondo.
Cuando se crea un objeto gráfico en Mathematica, normalmente se añade una
lista de opciones gráficas. En esta lista se puede añadir directivas gráficas que
especifican cómo se deben reproducir los elementos del gráfico.
Mathematica dispone de varias opciones gráficas. Una de las más importantes es
aquélla que especifica el color de los elementos del gráfico. Incluso si el gráfico
es en blanco y negro, se puede especificar la intensidad de color dentro de la
escala de los grises. También se puede utilizar en gráficos a color las
intensidades del gris.
OPCIONES
1. RGBColor[número1,número2,número3]: Permite escoger un color en función de
la cantidad de rojo (número1), verde (número2) y azul (número3), donde los números
pueden tomar cualquier valor entre 0 y 1.
Plot[{f[x],g[x],h[x]},{x,07,7},PlotStyle→{{RGBColor[1,0,0]},{RGBColor[0,1,0]},{RGBC
olor[0,0,1]}}]
30
20
10
-6
-4
-2
2
4
6
-10
-20
-30
Graphics
25
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
2. GrayLevel[ i ]: indica la intensidad del gris, entre 0 (negro) y 1 (blanco).
Plot[f[x],{x,0-7,7},PlotStyle→{GrayLevel[0.14]}]
50
40
30
20
10
-6
-4
-2
Graphics
2
4
6
3. Hue[ h ]: proporciona otra manera de especificar el color usando un único parámetro.
Cuando h varía de 0 a 1, Hue[h] se mueve cíclicamente entre el rojo, amarillo, verde,
cian, azul, magenta, negro y rojo de nuevo.
Plot[f[x],{x,0-7,7},PlotStyle→{Hue[0.1]}]
50
40
30
20
10
-6
-4
-2
2
4
6
4. Hue[h,s,b]: especifica no solo el tono del color sino la “saturación” o contraste y el
brillo. Tomando la saturación igual a 1 tenemos el color más profundo; haciendo
decrecer este valor a 0 obtenemos progresivamente un color más "claro".
Plot[f[x],{x,0-7,7},PlotStyle→{Hue[0,1,1]}]
50
40
30
20
10
-6
-4
-2
Graphics
2
4
6
26
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
5. PointSize[d]: sirve para que todos los puntos del gráfico los represente como un
círculo de diámetro d. Con PointSize, el diámetro d está medido en proporción al ancho
de todo el gráfico.
Mathematica también permite la opción AbsolutePointSize[d], que especifica el
diámetro “absoluto” de los puntos, medidos en unidades fijas.
lista={{1,2},{2,3},{3,5},{4,7}}
{{1,2},{2,3},{3,5},{4,7}}
ListPlot[lista,PlotStyle→PointSize[0.15]]
7
6
5
4
3
1.5
2
2.5
3
3.5
4
ListPlot[lista,PlotStyle→AbsolutePointSize[5]]
7
6
5
4
3
1.5
2
2.5
3
3.5
4
AxesLabel − > {“etiqueta ejex”, “etiqueta ejey”}: incluye etiquetas para los
ejes x e y. La leyenda debe estar entre comillas.
Plot[f[x],{x,0-7,7},AxesLabel→{"eje de las x", "eje de
las y"}]
eje de las y
50
40
30
20
10
eje de las x
-6
-4
-2
2
4
6
27
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Frame − > valor: enmarca el gráfico según el valor dado. True, enmarca y
False, no enmarca.
Plot[f[x],{x,0-7,7},Frame→True]
50
40
30
20
10
0
-6
-4
-2
0
2
4
6
GridLines − > valor: muestra una malla para cada valor de la regla del marco.
El valor Automatic, incluye las líneas para la mayoría de las marcas y el valor
None, no muestra la malla.
Plot[f[x],{x,0-7,7},GridLines→Automatic]
50
40
30
20
10
-6
-4
-2
2
4
6
PlotLabel − > {“etiqueta”}: incluye una etiqueta para el gráfico, el texto debe ir
entre comillas.
Plot[f[x],{x,0-7,7},GridLines→None,PlotLabel->{"Gráfico
sin malla"}]
8Grá fico sin malla <
50
40
30
20
10
-6
-4
-2
2
4
28
6
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
COMANDO LISTPLOT
En muchas ocasiones es necesario mostrar gráficamente datos obtenidos, por
ejemplo, de una experiencia o experimento. Las coordenadas obtenidas pueden no
responder a una expresión analítica, pero puede interesarnos “ver” cómo se disponen
esos puntos en una gráfica (también denominada nube de puntos). Para ello, se debe
generar gráficas a partir de listas de datos correspondientes a dos variables cuantitativas.
Introducimos una lista de datos de la siguiente forma:
lista={{1,8},{2,5.5},{3,7},{4,3},{5,8.1},{6,1}}
{{1,8},{2,5.5},{3,7},{4,3},{5,8.1},{6,1}}
ListPlot[lista,PlotStyle->PointSize[0.02]]
8
7
6
5
4
3
2
2
3
4
5
6
ListPlot[lista,PlotJoined→True]
8
7
6
5
4
3
2
NOTA:
Para 2
mostrar 3todos los4 puntos5unidos 6por un segmento, se utiliza la opción
PlotJoined,
y
el valor True.
Graphics
COMANDO SHOW
Existe otra manera de superponer gráficas; consiste en asignarle a cada una un
nombre y usar el comando Show[] como se muestra en el siguiente ejemplo:
Sean tres funciones:
f ( x) = cos x
g ( x) = senx + 3
h( x) = x 2 + 3
Grafico1=Plot[Cos[x],{x,-Pi,Pi}];
grafico2=Plot[Sin[x],{x,-2Pi,2Pi}];
grafico3=Plot[x^2+3,{x,-Pi,Pi}];
Show[grafico1,grafico2,grafico3]
1
29
0.5
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
NOTA:
Mathematica primero, hace las gráficas individuales y luego la superposición.
30
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Se puede mostrar los gráficos en diferentes posiciones mediante el comando
GraphicsArray[].
Show[GraphicsArray[{grafico1,grafico2,grafico3}]]
1
1
12
10
0.5
0.5
8
-3-2-1
1
2
3
-6-4-2
2
4
6
6
-0.5
-0.5
-1
-1
-3-2-1 1 2 3
* Muestra los gráficas en fila.
Show[GraphicsArray[{{grafico1},{grafico2},{grafico3}}]]
1
0.5
-3 -2 -1
-0.5
1 2 3
-1
1
0.5
-6 -4 -2
-0.5
-1
2 4 6
12
10
8
6
-3 -2 -1
1
2 3
GraphicsArray
* Muestra los gráficos en columna.
COMANDO PLOT3D
Representa gráficamente funciones reales de dos variables. La principal
aplicación de la representación gráfica de una función de dos variables será dar una idea
aproximada de la variación de dicha función, lo que será especialmente útil para buscar
extremos.
La sintaxis es la siguiente:
Plot3D [ función de x, y {x, xmin , xmax } , { ymin , ymax } ]
Sea la siguiente función de dos variables:
f ( x, y ) = sen( x * y )
El planteamiento en mathematica es:
f[x_,y_]:=Sin[x*y];
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi}]
31
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
OPCIONES DEL COMANDO PLOT3D
Mesh->True/False: dibuja (True) o no (False) la retícula o malla sobre la que se
construye la gráfica.
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi},Mesh→False]
1
0.5
0
-0.5
-1
2
0
-2
0
-2
2
Shading->True/False: colorea (True) o no (False) la malla anterior. Si unimos
las opciones Mesh->False y Shading->False, no aparecerá gráfico alguno
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi},Shading→False]
1
0.5
0
-0.5
-1
2
0
-2
0
-2
2
PlotPoints->número de puntos: Representa el número de puntos que usará
Mathematica para dibujar la gráfica. Un número muy alto producirá un gráfico
32
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
más “suave”, pero aumentará considerablemente el tiempo empleado por
Mathematica para realizarlo.
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi},PlotPoints->5]
1
0.5
0
-0.5
-1
2
0
-2
0
-2
2
SurfaceGraphics
ViewPoint: Establece el punto de vista desde el que se dibujará la gráfica. La
forma de usar esta opción será “pegarlo” desde una ventana que automatiza el
proceso. A dicha ventana se accede a través del menú Input, submenú 3D
ViewPoint Selector.
ViewPoint
{1.3, -2.4, 2}
{0, -2, 0}
{0, 0, 2}
{-2, -2, 0}
{2, -2, 0}
{0, -2, 2}
Posición
Visión que da el programa
Visión de frente
Visión por encima
Visión desde la esquina izquierda
Visión desde la esquina derecha
Visión frontal superior
Show[grafico,ViewPoint→{1.3,-2.4,2}]
1
0.5
0
-0.5
-1
2
0
-2
0
-2
2
Show[grafico,ViewPoint→{0,-2,0}]
1
0.5 -2 0 2
0
33
-0.5
-1
-2
0
2
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
34
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 6: DERIVACIÓN E INTEGRACIÓN
DERIVACIÓN
Para calcular la derivada de una función podemos utilizar los símbolos de derivadas
parciales que aparecen en la paleta BasicInput o directamente alguna de las siguientes
órdenes
D[f[x],x]
D[f[x],{x,n}]
D[f[x1,x2,...],x1,x2,…]
Dt[f]
Derivada (o derivada parcial) de f con respecto a x.
Derivada parcial n-ésima de f con respecto a x.
Derivada parcial de f con respecto a x1, x2, …
Diferencial total d f
Dt[f,x]
Derivada total
d
f
dx
La última de las tres funciones es válida para funciones de varias variables.
Definamos una nueva función f y derivémosla:
Clear [ f ]
f [ x _] := x 2 − 3 x + 4
D[ f [ x], x ]
− 3 + 2x
También es posible calcular la derivada de una función con f'[x].
f '[ x]
- 3 + 2x
Mathematica conoce las derivadas de todas las funciones matemáticas estándar.
D[ArcTan[x], x]
1
1+ x2
La tercera derivada con respecto a .
D[x n , {x, 3}]
(-2 + n) (-1 + n) n x -3+ n
La función D[x^n,x] realmente da la derivada parcial, en la cual se asume que n no
depende x. Mathematica tiene otra función, llamada Dt, que encuentra derivadas totales,
en la cual todas las derivadas se asumen relacionadas. En notación matemática, D[f,x] es
∂f
df
∂
x
como
, mientras Dt[f,x] es como dx . Puede entenderse Dt como la “derivada total”.
dn
Dt da una derivada total, asumiendo que n puede depender de x. Dt[n,x] representa dx .
35
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Dt[x n , x]
n
x n ( + Dt[n, x] Log[x] )
x
n
Esto da la diferencial total d ( x ) . Dt[x] es el diferencial dx .
Dt[x n ]
n DT [ x]
xn (
+ Dt[n, x] Log[x] )
x
Así como trata variables simbólicamente, también puede tratar funciones
simbólicamente en Mathematica. Así, por ejemplo, puede encontrar fórmulas para las
derivadas de f[x], sin especificar una forma explícita para la función f.
Mathematica no sabe como diferenciar f, así que le devuelve un resultado simbólico en
términos de f'.
D[f[x], x]
f' '[x]
Mathematica utiliza la regla de cadena para simplificar derivadas.
D[2x f[x 2 ], x]
2 f[x 2 ] + 4x 2 f '[ x 2 ]
INTEGRACIÓN
INTEGRALES INDEFINIDAS E INTEGRALES DEFINIDAS
Mathematica permite calcular integrales mediante las instrucciones:
El comando Integrate, calcula la integral indefinida de la expresión dada con
respecto a la variable indicada. La sintaxis es:
Integrate[exp resion, var iable]
El comando Integrate, calcula la integral definida de la expresión dada con
respecto a la variable indicada en el intervalo [a,b]. la sintaxis es:
Integrate[exp resion, {var iable, a, b}]
NOTA: la integral también se puede indicar mediante símbolos, con la paleta
BasicInput.
Ejemplo 1: calcular las siguientes integrales
x 2 + 3x − 1
sen( x) en el intervalo [−π , π ]
Planteo en Mathematica
Integrate[x^2+3x-1,x]
3 x2 x3
−x +
+
2
3
Ÿ(x^2+3x-1)x
36
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
INTEGRALES IMPROPIAS
Para calcular integrales impropias se aplica la definición correspondiente, según
se trate de integrales de 1º, 2º o 3º especie.
Mathematica, calcula directamente integrales impropias en el caso de que se
trata de integrales convergentes y nos presenta un mensaje en aquellos casos en los que
la integral no sea convergente.
Ejemplo 2: calcular las siguientes integrales impropias
e − x en el intervalo [0 , ∞ ]
1
en el intervalo [0 , 1]
1− x2
1
en el intervalo [0 , 2]
x−2
Planteo en Mathematica
VALOR APROXIMADO DE UNA INTEGRAL
37
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
El programa Mathematica tiene, sus limitaciones a la hora de calcular ciertas
integrales. Cuando no puede dar un valor exacto de una integral, proporciona un
resultado expresado en términos de ciertas funciones especiales que el programa tiene
definidas. En esta situación se puede obtener un valor aproximado de la integral.
Ejemplo 3: calcular la integral
e− x
2
en [-1, 1]
Integrate[Exp[-x^2],{x,-1,1}]
è!!!!
π Erf@1D
En este ejemplo, Mathematica devuelve el valor exacto de la integral en términos de la
función Erf (que se denomina función error).
Para obtener un valor aproximado se utiliza el comando N.
N[%]
1.49365
N[Integrate[Exp[-x^2],{x,-1,1}]]
1.49365
NINTEGRATE
El comando NIntegrate, calcula el valor aproximado de una integral definida.
Obtiene un valor aproximado de la integral de la expresión dada con respecto a la
variable indicada en el intervalo [a ,b ]. La sintaxis es:
NIntegrate[exp resion, {var iable, a, b}]
Ejemplo 4: calcular la integral del ejemplo 3 con el comando NIntegrate
N[Integrate[Exp[-x^2],{x,-1,1}]]
1.49365
Aunque el resultado obtenido sea el mismo, se debe indicar que la forma de operar
es distinta entre N y NIntegrate.
N: fuerza al programa a calcular el valor exacto de la integral y a continuación
muestra un valor aproximado.
NIntegrate: aplica fórmulas de integración numérica para calcular directamente
un valor aproximado de la integral.
NOTA: las fórmulas de integración numérica que utiliza Mathematica al aplicar la
instrucción NIntegrate funcionan bien cuando se trata de calcular valores aproximados
de integrales definidas en intervalos acotadas. Por el contrario, si se aplica para calcular
integrales impropias definidas en intervalos no acotados.
Ejemplo 5: resolver la integral impropia con N y Nintegrate
sen( x)
en [1, ∞]
x
Planteo en Mathematica
38
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Integrate[(Sin[x]/x),{x,1,∞}]
1
Hπ − 2 SinIntegral@1DL
2
N[%]
0.624713
NIntegrate[(Sin[x]/x),{x,1,∞}]
NIntegrate ::ncvb :
NIntegrate failed to converge to prescribed
after 7 recursive bisections in x
near x = 1.9939919252733317`*^19
. More…
1.39383
accuracy
En la última expresión, el programa avisa que el resultado mostrado no es demasiado
fiable y es distinto al resultado real.
APLICACIÓNES DE LA INTEGRAL
Calculo de área de recintos planos
Mathematica permite visualizar el área limitada por dos curvas y=f(x) e y=g(x) en el
intervalo [a, b], mediante la instrucción FilledPlot, cuya sintaxis es la siguiente:
FilledPlot[{ f [ x], g[x]}, {x, a, b}]
Visualiza el área limitada por las curvas y=f(x) e y=g(x) en el intevalo [a, b].
FilledPlot[ f [ x], {x, a, b}]
Visualiza el área limitada por las curvas y=f(x) y el eje X en el intervalo [a, b].
Para utilizar la instrucción FilledPlot hay que cargar el paquete Graphics`FilledPlot`
Ejemplo 6: Calcular el área limitada por la parábola y=x2-3x y el eje X en el intervalo
[-1, 1]. El área viene dada por:
1
A = ∫ x 2 − 3x dx
−1
Ejemplo 7: Calcular el área limitadas por las parábolas y = x 2 − 2 x
en el intervalo [-1 , 3].
e
y = 2x − x2
Ejemplo 8: Calcular la longitud del arco de curva y=sen x en el intervalo [0,2π ] .
Longitud de un arco de curva: si f es una función en el intervalo [a,b], entonces la
longitud del arco de curva y=f(x) en el intervalo [a,b] viene dada por:
b
L = ∫ 1 + ( f ' ( x)) 2 dx
a
39
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
<< Graphics`FilledPlot`
f[x_]:=x^2-3x
FilledPlot[f[x],{x,-1,4}]
4
3
2
1
-1
1
2
3
4
-1
-2
Solve[f[x]0]
{{x→0},{x→3}}
AbsA‡ f@xD xE + AbsA‡ f@xD xE + AbsA‡ f@xD xE
0
3
−1
4
0
3
49
6
area1 = ‡ Abs@f@xDD x
4
−1
49
6
f[x_]:=x^2-2x
g[x_]:=2x-x^2
FilledPlot[{f[x],g[x]},{x,-1,3}]
3
2
1
-1
1
2
3
-1
-2
-3
Graphics
Solve[f[x]0]
{{x→0},{x→2}}
a = AbsA‡ Hf@xD − g@xDL xE + AbsA‡ Hf@xD − g@xDL xE +
0
2
−1
0
AbsA‡ Hf@xD − g@xDL xE
3
2
8
area = ‡ Abs@f@xD − g@xDD x
3
−1
8
40
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
f[x_]:=Sin[x]
Plot[Sin[x],{x,0,2Pi}]
1
0.5
1
2
3
4
-0.5
-1
Graphics
2 πè!!!!!!!!!!!!!!!!!!!!!!!!!!!
‡
0
4
è!!!!
1 + Hf'@xDL^2 x
2 EllipticEB
1
F
2
N[%]
7.6404
41
5
6
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
CAPITULO 8: APLICACIÓN DE MÉTODOS
MÉTODO DEL INTERVALO MEDIO
Para obtener la “parte entera” de un número que está expresado en notación
decimal, Mathematica tiene el comando Floor.
Para definir un algoritmo de cálculo de la sucesión de aproximaciones de este
método mediante Mathematica , vamos a resolver como ejemplo la ecuación x^6 + x - 5
= 0 en el intervalo [0, 2].
Definir en primer lugar la función, el intervalo y la exactitud. Seguidamente
calcular el número “P” de iteraciones (o pasos) necesarias, para a continuación llevar a
cabo el cálculo de dichas aproximaciones, que se irán visualizando a medida que se van
haciendo los sucesivos cálculos.
Clear[f,x];
f[x_]=x^6+x-5;
a=0;
b=2;
ex=10^(-6);
n=Floor[N[(Log[b-a]-Log[ex])/Log[2]]];
For[i=1,i≤n,i=i+1,c=(a+b)/2;
If[f[c]0,Print["Sol.Exacta:",N[c,10],"hallada
en",i,"pasos"];
Break[]
];
If[f[c]f[a]<0,b=c,a=c];
Print[i,"-aprox:", N[c,10],"(error<",N[b-a],")"]
]
1 -aprox: 1.000000000 (error< 1. )
2 -aprox: 1.500000000 (error< 0.5 )
3 -aprox: 1.250000000 (error< 0.25 )
4 -aprox: 1.125000000 (error< 0.125 )
5 -aprox: 1.187500000 (error< 0.0625 )
6 -aprox: 1.218750000 (error< 0.03125 )
7 -aprox: 1.234375000 (error< 0.015625 )
8 -aprox: 1.242187500 (error< 0.0078125 )
9 -aprox: 1.246093750 (error< 0.00390625 )
10 -aprox: 1.248046875 (error< 0.00195313 )
11 -aprox: 1.247070313 (error< 0.000976563 )
12 -aprox: 1.246582031 (error< 0.000488281 )
13 -aprox: 1.246826172 (error< 0.000244141 )
14 -aprox: 1.246704102 (error< 0.00012207 )
15 -aprox: 1.246643066 (error< 0.0000610352 )
16 -aprox: 1.246612549 (error< 0.0000305176 )
17 -aprox: 1.246627808 (error< 0.0000152588 )
−6
18−aprox:1.246635437Herror<7.62939 × 10 L
19−aprox:1.246631622Herror<3.8147 × 10−6L
20−aprox:1.246629715Herror<1.90735 × 10−6L
MÉTODO DE NEWTON RAPHSON
42
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Este método nos proporciona un algoritmo para obtener una sucesión de
aproximaciones.
Utilizar Mathematica para generar la sucesión de aproximaciones. Resolver de
nuevo el ejemplo de x^3 - 5 = 0 en el intervalo [1, 3].
Podemos comprobar, dibujando las gráficas de f (x) = x^3 - 5, f´(x) y
F”(x) en el intervalo [1, 3], que cumple las condiciones bajo las cuales el Teorema de
Newton-Raphson asegura convergencia.
A continuación, se generan los términos de la sucesión de aproximaciones
mediante el siguiente algoritmo. Comenzar con la definición de la función f, y el valor
de la primera aproximación.
Inmediatamente después se define el algoritmo del método de Newton-Raphson,
el cual brindará sucesivas aproximaciones. Se debe ingresar un límite iteraciones, en
este ejemplo de 10 iteraciones.
f[x_]:=x^3-5;
y=3;
For[i=1,i≤10,i=i+1,y1=N[y-f[y]/f'[y],20];Print[
"aprox:",y1];y=y1]
1
2
3
4
5
6
7
8
9
10
aprox:
aprox:
aprox:
aprox:
aprox:
aprox:
aprox:
aprox:
aprox:
aprox:
2.1851851851851851852
1.8058277563209096293
1.714973662124987646
1.709990496694423435
1.709975946800500259
1.709975946676696989
1.70997594667669699
1.70997594667669699
1.70997594667669699
1.7099759466766970
43
i,""
UNNE - Cátedra: Análisis Numéricos
Año: 2.009
Observar al ejecutar este grupo de comandos que ya en la sexta iteración se han
“estabilizado” veinte cifras decimales de la solución.
44
Descargar