"90capacidadesnumericas_1.gif"
por José Luis Gómez Muñoz       
http://www.globalcomputing.com.mx/

Solución numérica de ecuaciones: NSolve

A continuación construímos un polinómio de décimo grado:

"90capacidadesnumericas_2.gif"

"90capacidadesnumericas_3.gif"

Ahora intentamos obtener las raíces del polinomio con el comando Solve. Observa que de las diez raíces, Mathematica sólo respondió con tres en forma numérica. Las otras 7 raíces son reportadas en un formato de programación, porque no se puede dar una respuesta exacta:

"90capacidadesnumericas_4.gif"

"90capacidadesnumericas_5.gif"

Si nosotros necesitamos soluciones numéricas, aunque sean aproximadas, podemos utilizar NSolve. Ahora obtenemos aproximaciones numéricas a las diez raíces.

"90capacidadesnumericas_6.gif"

"90capacidadesnumericas_7.gif"

NSolve también se puede utilizar en sistemas de ecuaciones:

NSolve[{x + y == 2, x - 3 y + z == 3, x - y + z == 0}, {x, y, z}]

"90capacidadesnumericas_8.gif"

Encontrando una raíz de una ecuación a partir de un valor cercano: FindRoot

NSolve no puede resolver esta otra ecuación:

"90capacidadesnumericas_9.gif"

"90capacidadesnumericas_10.gif"

"90capacidadesnumericas_11.gif"

Utilizamos mejor FindRoot. A este comando hay que indicarle un valor inicial de x. En este caso se toma como valor inicial x=1

"90capacidadesnumericas_12.gif"

"90capacidadesnumericas_13.gif"

Si utilizamos otro valor inicial, como x=10, encontramos otra solución:

"90capacidadesnumericas_14.gif"

"90capacidadesnumericas_15.gif"

En la siguiente gráfica podemos ver las dos soluciones que encontramos arriba, x→1.44726, x→13.1064. Podemos ver que hay además otras raíces. Podemos encontrar esas otras raíces al dar valores iniciales diferentes a x en FindRoot.

"90capacidadesnumericas_16.gif"

"90capacidadesnumericas_17.gif"

Encontrando alguna solución: FindInstance

FindInstance obtiene una solución en particular de una ecuación o sistema de ecuaciones que pueda tener muchas o infinitas soluciones. A continuación se encuentra una de las soluciones que tiene este sistema de tres variable y dos ecuaciones:

"90capacidadesnumericas_18.gif"

"90capacidadesnumericas_19.gif"

Aquí se encuentran tres de las soluciones:

"90capacidadesnumericas_20.gif"

"90capacidadesnumericas_21.gif"

Solución Numérica de Ecuaciones Diferenciales Ordinarias: NDSolve

Aquí intentamos usar DSolve para resolver el problema de valor inicial:
"90capacidadesnumericas_22.gif"

"90capacidadesnumericas_23.gif"

"90capacidadesnumericas_24.gif"

"90capacidadesnumericas_25.gif"

"90capacidadesnumericas_26.gif"

Entonces intentamos NDSolve. Nótese que hay que dar un intervalo de valores para la variable independiente t. En este  caso se escogió 0<t<4. La respuesta se guarda en la variable "solucion" para utilizarla más abajo.

"90capacidadesnumericas_27.gif"

"90capacidadesnumericas_28.gif"

Aquí está la gráfica de la solución numérica

"90capacidadesnumericas_29.gif"

"90capacidadesnumericas_30.gif"

Aquí está el valor de la solución en t=1.5

"90capacidadesnumericas_31.gif"

"90capacidadesnumericas_32.gif"

Solución Numérica de Ecuaciones Diferenciales Parciales: NDSolve

Obtendremos una solución numérica del problema:

"90capacidadesnumericas_33.gif"
Para x∈(0,1), t∈(0,5π)

Primero guardamos la solución numérica en la variable "solucion":

"90capacidadesnumericas_34.gif"

"90capacidadesnumericas_35.gif"

Aquí está la gráfica de la solución numérica:

"90capacidadesnumericas_36.gif"

"90capacidadesnumericas_37.gif"

Aquí está la solución evaluada en x=0.5, t=π

"90capacidadesnumericas_38.gif"

"90capacidadesnumericas_39.gif"

Optimización Numérica

Estos son ejemplos de optimización numérica para máximos y mínimos GLOBALES:

NMaximize[x/(1 + Exp[x]), x]

"90capacidadesnumericas_40.gif"

NMinimize[{Cos[x] - Exp[x y], x^2 + y^2 < 1}, {x, y}]

"90capacidadesnumericas_41.gif"

Estos son ejemplos de optimización numérica para máximos y mínimos LOCALES:

FindMinimum[x Cos[x], {x, 2}]

"90capacidadesnumericas_42.gif"

FindMinimum[x Cos[x], {x, 10}]

"90capacidadesnumericas_43.gif"

"90capacidadesnumericas_44.gif"

"90capacidadesnumericas_45.gif"

Ejercicio 1

Encuentra todas las soluciones reales de la ecuación
3Cos[x]==Log[x]
Respuesta:
1.44726
5.30199
7.13951
11.9702
13.1064
18.6247
19.0387

Ejercicio 2

a) Haz una gráfica de las funciones Sin[x], x/2 desde x=-2π hasta x=2π para averiguar cuantas soluciones tiene en ese intervalo la ecuación
Sin[x]=x/2
b) Usa FindRoot para encontrar los valores de las soluciones a la ecuación
Sin[x]=x/2
aprovecha la gráfica que obtuviste para decidir que valor inicial debes darle a x.
Respuesta:

"90capacidadesnumericas_46.gif"

-1.89549
0
1.89549

Ejercicio 3

Se tiene una barra conductora del calor, con coeficiente=1. La barra tiene longitud unitaria, y una distribución inicial de temperatura u(x,0)=1-x. Los dos extremos de la barra se introducen en hielo, lo que forza a que estén a cero grados centígrados, es decir u(0,t)=0, u(1,t)=0. Sin embargo la condición inicial en u(0,t) es inconsistente con la condición de frontera u(x,0). por lo cual utilizaremos u(0,t)=Exp[-1000t] (ver la "Nota Importante" más abajo). Vamos a estudiar la evolución de la temperatura en la barra para tiempos desde cero hasta 0.2. El problema de valor inicial es entonces:

"90capacidadesnumericas_47.gif"
Para x∈(0,1), t∈(0,0.2)

Resuelve numericamente este problema de valor inicial. Grafica la solución y explica como evoluciona la temeperatura en la barra conforme pasa el tiempo.

Nota Importante: Poner u(0,t)==Exp[-1000t] realmente es un truco para poner algo parecido a u(0,t)==0. Lo que pasa es que la condición u(0,t)==0 es inconsistente con la condición u(x,0)==1-x, ya que ambas condiciones dan diferentes valores para u(0,0). Sin embargo, ese tipo de condiciones inconsistentes son comunes (y útiles) para modelar algunos problemas en Física e Ingeniería. Para poder usar el método numérico fue necesario reemplazar la condición u(0,t)==0 por otra que es casi cero, pero que en el origen (0,0) coincide con la otra condición.

"90capacidadesnumericas_48.gif"

"90capacidadesnumericas_49.gif"

Ejercicio 4

Obtén todos los máximos locales de la función
y= x Cos[x]
en el intervalo 0<x<20
Respuesta:
{0.561096,{x→0.860334}}
{6.361,{x→6.4373}}
{12.6059,{x→12.6453}}
{18.876,{x→18.9024}}

"90capacidadesnumericas_50.gif"
Autor: José Luis Gómez Muñoz

     Global Computing S. A. de C. V.
Florencia 57 Piso 10-01
Col. Juárez C.P. 06600
México D.F.
México
+52-(0)55-5525-2215
Fax: +52-(0)55-5514-4225

Adriana Vadillo avadillo@mx.inter.net

Hector Vadillo  hector.vadillo@prodigy.net.mx

http://www.globalcomputing.com.mx/

Spikey Created with Wolfram Mathematica 7.0