INDICE - Facultad de Ciencias Exactas y Naturales y ...
Transcript of INDICE - Facultad de Ciencias Exactas y Naturales y ...
UNNE - Cátedra: Análisis Numéricos Año: 2.009
1
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
UNNE - Cátedra: Análisis Numéricos Año: 2.009
2
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
UNNE - Cátedra: Análisis Numéricos Año: 2.009
3
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.
UNNE - Cátedra: Análisis Numéricos Año: 2.009
4
OPERADORES Mathematica reconoce los operadores habituales de suma, diferencia, producto, cociente y potenciación: Operación Notación en Mathematica suma X + Y resta X – Y producto X * Y o X Y (un espacio) cociente X/Y potenciación X ^ Y Otras operaciones numéricas usuales son las siguientes: Operación Notación en Mathematica Valor absoluto de x Abs[x] Raíz cuadrada de x Sqrt[x] Parte entera de x Floor[x] Factorial de x X! o Factorial[x] Número aleatorio real entre 0 y 1 Random[x] Máximo y mínimo de una lista de vectores Max[x1,x2,…..], Min[x1,x2,…..] Descomposición en factores primos de x 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 E ι I ∞ Infinity
Si bien "infinito" no es una constante, ya que no es un valor numérico,
mathematica la incluye como constante predefinida.
UNNE - Cátedra: Análisis Numéricos Año: 2.009
5
FUNCIONES
Algunas funciones usuales y la sintaxis correspondiente en Mathematica:
Operación Notación en Mathematica x Sqrt[x]
xe E^x o Exp[x] )ln(x Log[x]
)(log xa Log[a,x]
)(xsen Sin [x] )cos(x Cos[x]
)(xtg Tan[x] )(cot xg Cot[x]
)sec(x Sec[x] )(cos xec Csc[x] )(xarcsen ArcSin[x]
)(xarcsh 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 Notación en Mathematica Expand[x] Forma expandida (efectúa sumas, productos, potencias) Factor[x] Factoriza x (escribe x como producto de factores mínimos) Together[x] Escribe todos los términos de x con un denominador común Apart[x] Separa x en términos con denominadores lo más simples
posible. Cancel[x] Cancela factores comunes que posean numerador y
denominador Simplify[x] Simplifica x siguiendo reglas algebraicas estándar FullSimplify[x] Simplifica x usando reglas algebraicas más potentes TrigExpand[x] Expande expresiones trigonométrica en suma de términos TrigFactor[x] 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.
UNNE - Cátedra: Análisis Numéricos Año: 2.009
6
123/99
41
33 123./99 1.24242
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
UNNE - Cátedra: Análisis Numéricos Año: 2.009
7
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.
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=7 7 x+4 11 Clear[x] Print[x] x
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] 14
UNNE - Cátedra: Análisis Numéricos Año: 2.009
8
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.
UNNE - Cátedra: Análisis Numéricos Año: 2.009
9
� Prepend[lista, elemento nuevo]: sirve para añadir nuevos elementos al inicio de la lista.
� 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.
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}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
10
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}}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
11
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.
OPERACIONES Las operaciones que se pueden realizar son las siguientes:
� El producto escalar, utilizando el comando Dot o el punto (.)
� La multiplicación elemento a elemento
� Para obtener el elemento i-ésimo de un vector haremos Part[v,i] . Por ejemplo, el segundo elemento de v1 hacer:
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.
v1={1,2,3} v2={2,6,-3} {1,2,3} {2,6,-3}
v1.v2 5 Dot[v1,v2] 5
v1*v2 {2,12,-9}
Part[v1,2] 2
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.}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
12
Una tercera forma de definir vectores, es mediante el comando Array: � Array[a,n]: permite construir un vector simbólico de n componentes.
MATRICES
Una matriz siempre está delimitada por un par de llaves y, separadas por comas, se escriben las filas agrupadas también con llaves.
Mathematica no muestra el resultado en la forma de matriz que usualmente se observa. Para conseguir este formato, se utiliza la orden MatrixForm[matriz].
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.
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
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}}
MatrixForm[a]
i
kjjjjj
1 2 5−2 5 71 0 3
y
{zzzzz
MatrixForm[b]
i
kjjjjj
1 1 16 3 21 −3 0
y
{zzzzz
UNNE - Cátedra: Análisis Numéricos Año: 2.009
13
OPERACIONES
� SUMA: Para sumar matrices, si los órdenes lo permiten, se utiliza el signo +.
� PRODUCTO: El producto se realiza utilizando el punto y para obtener un formato matricial, utilizar MatrixForm:
Producto entre una Matriz y un vector:
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
MatrixForm[a]
i
kjjjjj
1 2 5−2 5 71 0 3
y
{zzzzz
MatrixForm[b]
i
kjjjjj
1 1 16 3 21 −3 0
y
{zzzzz
a+b {{2,3,6},{4,8,9},{2,-3,3}} MatrixForm[a+b]
i
kjjjjj
2 3 64 8 92 −3 3
y
{zzzzz
a.b {{18,-8,5},{35,-8,8},{4,-8,1}} MatrixForm[a.b]
i
kjjjjj
18 −8 535 −8 84 −8 1
y
{zzzzz
UNNE - Cátedra: Análisis Numéricos Año: 2.009
14
Producto entre una matriz y un escalar:
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: Busquemos el elemento (2,3) de la matriz A definida anteriormente: Busquemos la fila segunda de la matriz A:
Busquemos la submatriz de A que tiene las filas (1,2) y las columnas (2,3):
MatrixForm[a.v1]
i
kjjjjj
202910
y
{zzzzz
MatrixForm[2a]
i
kjjjjj
2 4 10−4 10 142 0 6
y
{zzzzz
A[[2,3]] 6
A[[2]] {4,5,6}
i
kjjjjj
1 2 34 5 61 3 2
y
{zzzzz
UNNE - Cátedra: Análisis Numéricos Año: 2.009
15
Busquemos la tercera columna de la matriz A Tabla de alguna de las operaciones matriciales más usuales:
Operación Notación en mathematica
Inversa Inverse[a] Determinante Det[a] Valores propios Eigenvalues[a] Vectores propios Eigenvectors[a] Polinomio característico CharacteristicPolynomial[a,x] Rango MatrixRank[a] Traspuesta Transpose[a] Traza Tr[a] Matriz Diagonal DiagonalMatrix[{a11,a22,…}] Matriz Identidad IdentityMatrix[n] EJEMPLOS
� Definición de la matriz cuadrada ‘mat’
� Cálculo de la determinante de ‘mat’ para comprobar que no sea nulo, y poder
calcular la inversa.
A[[{1,2},{2,3}]] {{2,3},{5,6}}
A[[All,3]] {3,6,9} MatrixForm[%]
i
kjjjjj
369
y
{zzzzz
Det[mat] -15
mat={{1,3,4},{-1,0,1},{1,3,-1}} {{1,3,4},{-1,0,1},{1,3,-1}} MatrixForm[%]
i
kjjjjj
1 3 4−1 0 11 3 −1
y
{zzzzz
UNNE - Cátedra: Análisis Numéricos Año: 2.009
16
� Cálculo de la matriz inversa de ‘mat’.
� Con el producto matricial, se comprueba que ‘inv’ es la inversa de ‘mat’, ya que el resultado es la matriz identidad.
� Definición de la matriz ‘g’. � Cálculo de la traspuesta de ‘g’.
� Definición de la matriz ‘h’. � Calculo de los autovalores de la matriz ‘h’.
inv=Inverse[mat]
:: 1
5, −1, −
1
5>, :0,
1
3,
1
3>, : 1
5, 0, −
1
5>>
iden=mat.inv {{1,0,0},{0,1,0},{0,0,1}} MatrixForm[%]
i
kjjjjj
1 0 00 1 00 0 1
y
{zzzzz
g={{1,2,7},{1,3,5}} {{1,2,7},{1,3,5}} MatrixForm[g]
J1 2 7
1 3 5N
MatrixForm[Transpose[g]]
i
kjjjjj
1 12 37 5
y
{zzzzz
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[%]
i
k
jjjjjjjjj
0 1 5 92 1 6 80 0 0 30 0 1 −2
y
{
zzzzzzzzz
valores=Eigenvalues[h] {-3,2,-1,1} MatrixForm[%]
i
k
jjjjjjjjj
−32−11
y
{
zzzzzzzzz
UNNE - Cátedra: Análisis Numéricos Año: 2.009
17
� 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[%]
i
k
jjjjjjjjj
−7 1 −5 51 2 0 0−1 1 0 0−13 −37 3 1
y
{
zzzzzzzzz
UNNE - Cátedra: Análisis Numéricos Año: 2.009
18
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:
22
132
12
−=+−=++
=−+
zy
zyx
zyx
El planteamiento en mathematica es: 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]
mat={{1,2,-1},{2,3,1},{0,-2,1}}; vec={1,1,-2}; LinearSolve [mat,vec] {-1,1,0}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
19
Una ecuación, es el conjunto de dos expresiones relacionadas con el operador de igualdad (==). Sea el siguiente sistema:
02
12
1
=+=−
=+
zx
zy
yx
El planteamiento en mathematica es:
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
2>−z .
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: � }],{,[ 0xxecuacionFindRoot : que utiliza el Método de Newton (o método de la
tangente) tomando como punto inicial 0xx =
� }],{},,{,[ 00 yyxxecuacionFindRoot que utiliza una variante del Método de la
secante tomando como puntos iniciales 0xx = , 0yy = .
Solve[{x+y �1,y-2 z �1,x+2 z �0},{x,y,z}] {{x →-2 z,y →1+2 z}} %/.z →2 {{x →-4.,y →5.}}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
20
El primer argumento, es la ecuación. El segundo argumento, es una lista },{ 0xx 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:
xex 3− El planteamiento en mathematica es:
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:
2
22 1
xy
yx
==+
El planteamiento en mathematica es:
Plot[Exp[x]-3 x,{x,0,2}]
0.5 1 1.5 2-0.25
0.25
0.5
0.75
1
1.25
FindRoot[Exp[x]-3 x �0,{x,0}] {x →0.619061} FindRoot[Exp[x]-3 x �0,{x,1.5}] {x →1.51213}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
21
La cuarta solución en el resultado de NSolve, corresponde a la solución devuelta
por FindRoot.
NSolve[{x^2+y^2 �1,y �x^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}}
FindRoot[{x^2+y^2 �1,y �x^2},{x,1},{y,1}] {x →0.786151,y →0.618034}
UNNE - Cátedra: Análisis Numéricos Año: 2.009
22
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 , },,{ maxmin xxx , opciones]
x : es la variable independiente.
minx : Extremo inferior del intervalo del dominio de la función que se desea representar.
maxx : 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:
xxxf 5)( 2 += en el intervalo [-7, 7]
467)( 23 ++−= xxxxg en el intervalo [-10, 14] El planteamiento en Mathematica es:
Plot[x^2+5x,{x,-7,7}]
-6 -4 -2 2 4 6
10
20
30
40
50
�Graphics �
UNNE - Cátedra: Análisis Numéricos Año: 2.009
23
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 xxxf 5)( 2 += ], 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} , },,{ maxmin xxx , opciones]
Dibuja las n funciones conjuntamente para valores de x comprendidos entre minx
y maxx .
f[x_]:=x^2+5x; Plot[{f[x],g[x]},{x,-10,14}];
-10 -5 5 10
-200
200
400
g[x_]:=x^3-7^2+6x+4; Plot[g[x],{x,-10,14}]
-10 -5 5 10
-1000
1000
2000
�Graphics �
UNNE - Cátedra: Análisis Numéricos Año: 2.009
24
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.
� 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). * },{ maxmin yy : muestra un rango específico para los valores de y.
* },{ rangerange yx : muestra un rango específico para los valores de x e y.
Plot[f[x],{x,0-7,7},AspectRatio →1.5]
-6 -4 -2 2 4 6
10
20
30
40
50
�Graphics �
UNNE - Cátedra: Análisis Numéricos Año: 2.009
25
� 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],{x,0-7,7},PlotRange →{-20,20}]
-6 -4 -2 2 4 6
-20
-15
-10
-5
5
10
15
20
Plot[{f[x],g[x],h[x]},{x,0-7,7},PlotStyle →{{RGBColor[1,0,0]},{RGBColor[0,1,0]},{RGBColor[0,0,1]}}]
-6 -4 -2 2 4 6
-30
-20
-10
10
20
30
�Graphics �
UNNE - Cátedra: Análisis Numéricos Año: 2.009
26
2. GrayLevel[ i ]: indica la intensidad del gris, entre 0 (negro) y 1 (blanco). 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. 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 →{GrayLevel[0.14]}]
-6 -4 -2 2 4 6
10
20
30
40
50
�Graphics �
Plot[f[x],{x,0-7,7},PlotStyle →{Hue[0.1]}]
-6 -4 -2 2 4 6
10
20
30
40
50
Plot[f[x],{x,0-7,7},PlotStyle →{Hue[0,1,1]}]
-6 -4 -2 2 4 6
10
20
30
40
50
�Graphics �
UNNE - Cátedra: Análisis Numéricos Año: 2.009
27
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.
� 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"}]
-6 -4 -2 2 4 6eje de las x
10
20
30
40
50
eje de las y
lista={{1,2},{2,3},{3,5},{4,7}} {{1,2},{2,3},{3,5},{4,7}} ListPlot[lista,PlotStyle →PointSize[0.15]]
1.5 2 2.5 3 3.5 4
3
4
5
6
7
ListPlot[lista,PlotStyle →AbsolutePointSize[5]]
1.5 2 2.5 3 3.5 4
3
4
5
6
7
UNNE - Cátedra: Análisis Numéricos Año: 2.009
28
� Frame >− valor: enmarca el gráfico según el valor dado. True, enmarca y
False, no enmarca.
� 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.
� PlotLabel >− {“etiqueta”}: incluye una etiqueta para el gráfico, el texto debe ir
entre comillas.
Plot[f[x],{x,0-7,7},Frame →True]
-6 -4 -2 0 2 4 6
0
10
20
30
40
50
Plot[f[x],{x,0-7,7},GridLines →Automatic]
-6 -4 -2 2 4 6
10
20
30
40
50
Plot[f[x],{x,0-7,7},GridLines →None,PlotLabel->{"Gráfico sin malla"}]
-6 -4 -2 2 4 6
10
20
30
40
508Grá fico sin malla <
UNNE - Cátedra: Análisis Numéricos Año: 2.009
29
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: NOTA:
Para mostrar todos los puntos unidos por un segmento, se utiliza la opción PlotJoined, y el valor True.
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:
3)(
3)(
cos)(
2 +=+=
=
xxh
senxxg
xxf
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]]
2 3 4 5 6
2
3
4
5
6
7
8
ListPlot[lista,PlotJoined →True]
2 3 4 5 6
2
3
4
5
6
7
8
�Graphics �
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]
0.5
1
UNNE - Cátedra: Análisis Numéricos Año: 2.009
30
NOTA: Mathematica primero, hace las gráficas individuales y luego la superposición.
UNNE - Cátedra: Análisis Numéricos Año: 2.009
31
Se puede mostrar los gráficos en diferentes posiciones mediante el comando GraphicsArray[]. * Muestra los gráficas en fila. * 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 },,{ maxmin xxx , },{ maxmin yy ] Sea la siguiente función de dos variables:
)*(),( yxsenyxf = El planteamiento en mathematica es:
Show[GraphicsArray[{grafico1,grafico2,grafico3}]]
-3 -2 -1 1 2 3-1
-0.5
0.51
-6 -4 -2 2 4 6-1
-0.5
0.51
-3 -2 -1 1 2 3
68
1012
Show[GraphicsArray[{{grafico1},{grafico2},{grafico3 }}]]
-3 -2 -1 1 2 3
6
81012
-6 -4 -2 2 4 6
-1
-0.5
0.5
1
-3 -2 -1 1 2 3
-1
-0.5
0.5
1
�GraphicsArray �
f[x_,y_]:=Sin[x*y]; Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi}]
UNNE - Cátedra: Análisis Numéricos Año: 2.009
32
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.
� 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 � 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
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi},Mesh →False]
-20
2-2
0
2-1
-0.50
0.51
-20
2
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi},Shading →False]
-20
2-2
0
2-1
-0.50
0.51
-20
2
UNNE - Cátedra: Análisis Numéricos Año: 2.009
33
más “suave”, pero aumentará considerablemente el tiempo empleado por Mathematica para realizarlo.
� 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 Posición
{1.3, -2.4, 2} Visión que da el programa {0, -2, 0} Visión de frente {0, 0, 2} Visión por encima {-2, -2, 0} Visión desde la esquina izquierda {2, -2, 0} Visión desde la esquina derecha {0, -2, 2} Visión frontal superior
Plot3D[f[x,y],{x,-Pi,Pi},{y,-Pi,Pi},PlotPoints->5]
-2
0
2-2
0
2-1
-0.50
0.51
-2
0
2
�SurfaceGraphics �
Show[grafico,ViewPoint →{0,-2,0}]
-2 0 2
-2 0 2
-1
-0.5
0
0.5
1
�SurfaceGraphics �
Show[grafico,ViewPoint →{1.3,-2.4,2}]
-2
0
2-2
0
2-1
-0.50
0.51
-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
35
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] Derivada (o derivada parcial) de f con respecto a x. D[f[x],{x,n}] Derivada parcial n-ésima de f con respecto a x. D[f[x1,x2,...],x1,x2,…] Derivada parcial de f con respecto a x1, x2, … Dt[ f] Diferencial total fd
Dt[ f,x] Derivada total fdx
d
La última de las tres funciones es válida para funciones de varias variables. Definamos una nueva función f y derivémosla:
x
xfD
xxxf
fClear
23
] x],[[
43:_][
][ 2
+−
+−=
También es posible calcular la derivada de una función con f'[x] .
2x3-
]['
+xf
Mathematica conoce las derivadas de todas las funciones matemáticas estándar.
2x1
1
x]],D[ArcTan[x
+
La tercera derivada con respecto a .
n3-
n
n x n)(-1 n)(-2
3}] {x, ,D[x+++
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
como x
f
∂∂
, mientras Dt[f,x] es como dx
df
. Puede entenderse Dt como la “derivada total”.
Dt da una derivada total, asumiendo que n puede depender de x. Dt[n,x] representa dx
dn
.
UNNE - Cátedra: Análisis Numéricos Año: 2.009
36
) Log[x] ] ,[(x
x],Dt[x
n
n
xnDtx
n +
Esto da la diferencial total )( nxd . Dt[x] es el diferencial dx .
) Log[x] ] ,[][
(x
]Dt[x
n
n
xnDtx
xDTn +
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'.
[x]'f'
x]D[f[x],
Mathematica utiliza la regla de cadena para simplificar derivadas.
]['4x]f[x 2
x]],f[xD[2x 222
2
xf+
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:
]var,[exp iableresionIntegrate
� 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:
}],,{var,[exp baiableresionIntegrate
NOTA: la integral también se puede indicar mediante símbolos, con la paleta BasicInput. Ejemplo 1: calcular las siguientes integrales
� 132 −+ xx � )(xsen en el intervalo ],[ ππ−
Planteo en Mathematica Integrate[x^2+3x-1,x]
−x +
3 x2
2+
x3
3
Ÿ(x^2+3x-1) �x
UNNE - Cátedra: Análisis Numéricos Año: 2.009
37
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
� xe− en el intervalo [0 , ∞ ]
� 21
1
x− en el intervalo [0 , 1]
� 2
1
−x en el intervalo [0 , 2]
Planteo en Mathematica VALOR APROXIMADO DE UNA INTEGRAL
UNNE - Cátedra: Análisis Numéricos Año: 2.009
38
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 2xe−
en [-1, 1] 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. 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:
}],,{var,[exp baiableresionNIntegrate Ejemplo 4: calcular la integral del ejemplo 3 con el comando NIntegrate
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
� x
xsen )( en ],1[ ∞
Planteo en Mathematica
Integrate[Exp[-x^2],{x,-1,1}]
è!!!!
π Erf @1D
N[%] 1.49365 N[Integrate[Exp[-x^2],{x,-1,1}]] 1.49365
N[Integrate[Exp[-x^2],{x,-1,1}]] 1.49365
UNNE - Cátedra: Análisis Numéricos Año: 2.009
39
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:
}] , ,{ },[x] ],[[{ baxgxfFilledPlot Visualiza el área limitada por las curvas y=f(x) e y=g(x) en el intevalo [a, b].
}] , ,{ ],[[ baxxfFilledPlot 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
1
2 3 dxxxA
Ejemplo 7: Calcular el área limitadas por las parábolas xxy 22 −= e 22 xxy −= en el intervalo [-1 , 3]. Ejemplo 8: Calcular la longitud del arco de curva y=sen x en el intervalo ]2,0[ π . 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
a
dxxfL 2))('(1
Integrate[(Sin[x]/x),{x,1, ∞}]
1
2Hπ −2 SinIntegral @1DL
N[%] 0.624713 NIntegrate[(Sin[x]/x),{x,1, ∞}]
NIntegrate ::ncvb :
NIntegrate failed to converge to prescribed accuracy
after 7 recursive bisections in x
near x = 1.9939919252733317̀*̂ 19 . More… 1.39383
UNNE - Cátedra: Análisis Numéricos Año: 2.009
40
<< Graphics`FilledPlot ̀ f[x_]:=x^2-3x FilledPlot[f[x],{x,-1,4}]
-1 1 2 3 4
-2
-1
1
2
3
4
-1 1 2 3 4
-2
-1
1
2
3
4
Solve[f[x] �0] {{x →0},{x →3}}
AbsA‡
−1
0f @xD �xE +AbsA‡
0
3f @xD �xE +AbsA‡
3
4f @xD �xE
49
6
area1 = ‡
−1
4Abs@f @xDD �x
49
6
f[x_]:=x^2-2x g[x_]:=2x-x^2 FilledPlot[{f[x],g[x]},{x,-1,3}]
-1 1 2 3
-3
-2
-1
1
2
3
-1 1 2 3
-3
-2
-1
1
2
3
�Graphics � Solve[f[x] �0] {{x →0},{x →2}}
a= AbsA‡−1
0Hf @xD−g@xDL �xE+AbsA‡0
2Hf @xD −g@xDL �xE +
AbsA‡2
3Hf @xD−g@xDL �xE
8
area = ‡
−1
3Abs@f @xD −g@xDD �x
8
UNNE - Cátedra: Análisis Numéricos Año: 2.009
41
f[x_]:=Sin[x] Plot[Sin[x],{x,0,2Pi}]
1 2 3 4 5 6
-1
-0.5
0.5
1
�Graphics �
‡
0
2 πè!!!!!!!!!!!!!!!!!!!!!!!!!!!1+ Hf' @xDL^2 �x
4è!!!!
2 EllipticE B 1
2F
N[%] 7.6404
UNNE - Cátedra: Análisis Numéricos Año: 2.009
42
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. MÉTODO DE NEWTON RAPHSON
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 )
18−aprox:1.246635437 Herror <7.62939 ×10−6L
19−aprox:1.246631622 Herror <3.8147 ×10−6L
20−aprox:1.246629715 Herror <1.90735 ×10−6L
UNNE - Cátedra: Análisis Numéricos Año: 2.009
43
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[ i,"" "aprox:",y1];y=y1] 1 aprox: 2.1851851851851851852 2 aprox: 1.8058277563209096293 3 aprox: 1.714973662124987646 4 aprox: 1.709990496694423435 5 aprox: 1.709975946800500259 6 aprox: 1.709975946676696989 7 aprox: 1.70997594667669699 8 aprox: 1.70997594667669699 9 aprox: 1.70997594667669699 10 aprox: 1.7099759466766970
UNNE - Cátedra: Análisis Numéricos Año: 2.009
44
Observar al ejecutar este grupo de comandos que ya en la sexta iteración se han “estabilizado” veinte cifras decimales de la solución.