Practica 2
Practica 2
Practica 2
nb 1
Apellidos y Nombre:
El comando If
Mediante este comando se evalua una expresión u otra según que una determinada condición sea verdadera o
falsa. Su forma es :
If[condición, t, f]
Si la condición es verdadera se evalúa la expresión t, y si es falsa la f.
x 7; y 10; Ifx y, x^ 2, y ^ 3
practica2sr.nb 2
Entre otros, Mathematica dispone de los siguientes comandos para implementar ciclos: Do, For y While. El
comando más sencillo es el Do que se parece mucho al comando Table.
2º.- For
For[start,test,incr,body]
El comando For tiene cuatro partes:
- start : se inicializan con el valor deseado las variables que intervienen en el ciclo. Irán separadas por ;.
- test : condición lógica que será evaluada cada vez que se recorra el ciclo. Cuando test es falso se sale del
ciclo.
- incr : sirve para incrementar el contador utilizado.
- body : está constituído por el conjunto de acciones, separadas por ; , que se ejecutan cada vez que se
recorre el ciclo.
3º.- While
While[test,body]
Se evalúan las acciones que forman body mientras la expresión lógica contenida en test sea verdadera.
Como ejemplo de utilización de estos comandos se presentan algunos métodos de resolución de una ecuación no
lineal.
Método de la bisección
Ejemplo .
Obtener, mediante el método de la bisección , una solución aproximada de la ecuación :
x2 1 tanx, 0 x 2
En cada iteración se calcula también la longitud del intervalo. El proceso finalizará cuando la longitud del inter -
valo sea menor que 0.001 o el valor de la función en el resultado de la última iteración sea menor que 0.001.
practica2sr.nb 3
Solución:
En primer lugar realizamos la representación gráfica para obtener un intervalo [a,b] en el que la función cambie
de signo
fx_ x2 1 Tanx;
Solución :
En primer lugar representamos gráficamente la función para obtener el intervalo de trabajo y la aproximación
inicial.
fx_ x2 3 x Expx 2;
En este caso f'(x) = 2x-3+ex . Representando f'[x] en el intervalo [-1,0] se ve que está comprendida entre -4.5 y -2,
luego bastará con =-0.2.
gx_ x 0.2 fx; Plotgx, x, 1, 0, PlotRange 1, 0
Se comprueba que x [-1,0] , g(x) (también) x [-1,0]. A continuación representamos g'(x) en valor abso-
luto en dicho intervalo:
Una vez comprobadas las dos condiciones del teorema construimos la sucesión de aproximaciones. Podemos partir
de cualquier valor perteneciente al intervalo [0,1], por ejemplo, x0 = -0.5 y utilizar el comando For y el comando
SetPrecision con una precision de 10 dígitos.
1º. Utilizando el comando For:
Método de Newton-Raphson
Ejemplo
Hallar mediante el método de Newton y con un error menor que 104 las raices positivas de la ec.:
0.5 e x3 - sen(x) = 0.
Solución
En primer lugar representamos gráficamente la función para determinar una buena aproximación inicial.
A la vista de la gráfica, dos buenas aproximaciones son : 0.6 y 2. Utilizamos esta vez el comando While para
realizar las iteraciones del método de Newton-Raphson. Se utiliza como condición que la diferencia en valor
absoluto entre las dos últimas iteraciones sea menor que eps y que el nº de iteraciones sea inferior a nmax.
Solve[x^2 + 2x - 7 == 0, x]
NSolve[x^2 + 2x - 7 == 0, x]
El resultado es una lista de reglas en las que se asigna a x los valores de las raices. Para extraer de la solución el
resultado :
sol=NSolve[x^2 + 2x - 7 == 0, x];a=x/.sol[[1]]
El comando Solve siempre intenta dar como resultado fórmulas explícitas para la solución de una ecuación. Sin
embargo, si la ecuación es un poco compleja esto resultará imposible. Para ecuaciones algebráicas de grado menor
o igual que 4 Mathematica proporciona el reusltado exacto, pero puede que esto sea imposible para grados may-
ores.
Mathematica también puede resolver ecuaciones con funciones trascendentes . En muchos de estos casos da un
mensaje indicando que en el resultado no están todas las soluciones,
Se puede obtener una solución numérica de la ecuación mediante el comando FindRoot. Este comando imple-
menta una versión del método de Newton-Raphson y necesita una aproximación inicial. En la práctica esta
aproximación se obtiene a partir de la representación gráfica.
Ejercicios
1º.- Comprobar gráficamente que la función f(x) = x- 0.2 sen(x) - 0,5 tiene una única raiz real en el intervalo [0.5
, 1]. Aplicar los métodos de la bisección, punto fijo y Newton-Raphson, contando en cada caso el número de
iteraciones que se han realizado , para determinar la raiz con una precisión de 104 . Establecer un nº máximo de
iteraciones a realizar igual a 50.
Utilizar el comando FindRoot con x0=0.75 para obtener la raiz.
practica2sr.nb 6
2º.- Representar en una misma gráfica las funciones f(x) = 2 cos(x) y g(x) = ex para obtener aproximaciones
iniciales de las raices de 2cos(x) - ex = 0. ¿Cuántas raíces tiene?. ¿Cuántas son positivas?. Determinar las raices
con una precisión de 108 utilizando el método de Newton-Raphson .
Utilizar el comando FindRoot para obtener las raices.
Ejercicio nº 21
Sea f(x) = 8x cosx 2x2 , representar gráficamente f(x) en el intervalo [0,/6]. Justificar que la
expresión :
gxn
4n
cosxn x 2
8
permitirá obtener una sucesión cuyo límite sea la raiz de la ec. en el intervalo [0,/6]. Hallar dicha
raiz con una precisión de 104 .
practica2sr.nb 7
Ejercicio nº 22
Determinar la raiz cuadrada negativa de 0.5 con cuatro decimales y una precisión de
103 considerando la función f(x) = x2 0.5 y resolviendo la ec. x = x2 x 0.5 mediante el método de
las aproximaciones sucesivas comenzando con x0 0.6. ¿Puede determinarse del mismo modo la
raiz positiva?
Ejercicio nº 24
Hacer una representación gráfica de las funciones f(x) = 2cosx y g(x) = e x para obtener estimaciones
iniciales de las raices de la ec. 2cosx - e x =0. ¿Cuántas raices tiene ? ¿Cuántas son positivas?.
Determinar las raices positivas con una precisión f(r) < 103 utilizando el método de la secante y el
de Newton-Raphson.
Ejercicio nº 8
Resolver con un error relativo inferior al 0.05% la ec. f(x) = ex -x = 0, mediante el método de la
secante tomando como valores iniciales x1 0, y x0 1, y sabiendo que la solución exacta es
0.56714329. Trabajar con redondeo a seis cifras decimales.