Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Practica 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

practica2sr.

nb 1

Apellidos y Nombre:

Práctica 2ª : OPERADORES LÓGICOS Y


RELACIONALES. CICLOS Y ESTRUCTURAS DE
CONTROL. MÉTODOS DE RESOLUCIÓN DE UNA
ECUACIÓN NO LINEAL.

Operadores lógicos y relacionales


Los operadores lógicos son:
! p : Contrario de p. Resulta verdadero si p es falso y al reves.
p && q : ( And lógico ) Es verdadero si p y q son verdaderos y falso en caso contrario.
p q : (Or lógico ) Es verdadero si p o q o ambos son verdaderos.

Los operadores relacionales son :


x == y ( x igual a y)
x != y ( x distinto de y)
x > y ; x < y; x >= y; x <= y.

El resultado de una operación lógica o relacional es un valor lógico verdadero o falso.

 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; Ifx  y, x^ 2, y ^ 3
practica2sr.nb 2

Ciclos y estructuras de Control


La ejecución de un programas de Mathematica implica la evaluación de una sucesión de expresiones de Mathemat-
ica. En programas sencillos las expresiones a evaluar se suelen encontrar separadas por ; y se evalúan una tras
otra. A menudo, sin embargo, puede ser necesario evaluar un mismo grupo de expresiones varias veces, en una
especie de "ciclo". Esto es lo que ocurre en muchos métodos iterativos.

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.

La sintaxis de estos comandos es la siguiente:


1º.- Do
Do[expr,{i,imax}]
Do[expr,{i,imin,imax,di}]
Do[expr,{n}].
Este comando es muy parecido al comando Table con la diferencia de que no se gnera una lista, simple-
mente se evalúa expr tantas veces como indique el contador i.

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  tanx, 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


fx_   x2  1  Tanx;

Plotfx, x, 0,   2, PlotRange  1, 1

Tomamos el intervalo [0.8,1]

a  0.8; b  1; c  a  b  2; lon  Absb  a;

Whilelon  0.001  Abs fc  .001, Iffc  fa  0, b  c, a  c;


c  a  b  2; lon  Absb  a; Printc, " ", lon, " ", fc

Iteración de punto fijo


Ejemplo
La función : y = x2  3x  e x  2 tiene dos raíces, una positiva y la otra negativa. Obtener la más pequeña, con
un error menor que 0.00001, mediante la iteración de punto fijo, eligiendo una función de iteración g(x) que
verifique las condiciones del teorema de punto fijo.

Solución :
En primer lugar representamos gráficamente la función para obtener el intervalo de trabajo y la aproximación
inicial.

fx_  x2  3 x  Expx  2;

Plotfx, x, 1, 3

Interesa que g'(x) < 1. Una forma de obtener g(x) es la siguiente:


f(x) = 0  -  f(x) = 0  x- f(x) = x  g(x) = x -  f(x) 
g'(x) = 1-f'(x)
g'(x) < 1  0 < f'(x) < 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.

Plot2 x  Expx  3, x, 1, 0

Plot.2  2 x  Expx  3, x, 1, 0


practica2sr.nb 4

Probamos con g(x) = x+ 0.2*f(x) , y comprobamos las condiciones del teorema.

gx_  x  0.2  fx; Plotgx, 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:

PlotAbsg 'x, x, 1, 0, PlotRange  0, 1

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:

Fork  1; x0  .5; error  1, error  .00001, k ,


xk  SetPrecisiongxk1 , 10; error  Absxk  xk1 ;
Print"En la iter. ", k, " el valor aprox es: ", xk 

2º.- Utilizando el comando While

x0  .5; error  1; nmax  30; n  1;

Whileerror  105  n  nmax, x1  SetPrecisiongx0, 10;


error  Absx1  x0 ; Printx1; x0  x1; n 

Método de Newton-Raphson
Ejemplo
Hallar mediante el método de Newton y con un error menor que 104 las raices positivas de la ec.:
0.5 e x3 - sen(x) = 0.

Solución
En primer lugar representamos gráficamente la función para determinar una buena aproximación inicial.

fx_  0.5  Expx  3  Sinx; Plotfx, x, 0, 4

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.

xv  0.6; error  1; eps  1015 ; nmax  50; n  1;


practica2sr.nb 5

Whileerror  eps && n  nmax,


xn  SetPrecisionxv  fxv  f 'xv, 15; error  Absxn  xv;
Print"En la iter. ", n, " la sol.aprox.es ", xn; xv  xn; n 

Los comandos Solve y FindRoot


Una expresión como x^2 + 2 x - 7  0 representa en Mathematica una ecuación.Podemos utilizar el comando
Solve para obtener los valores de x que verifican la ecuación:

Solve[x^2 + 2x - 7 == 0, x]

Si se quiere el valor aproximado :

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,

Solve[ Sin[x] == 1.5 , x ]

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.

FindRoot[ Cos[x] == x, {x, 1} ]

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 104 . 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 108 utilizando el método de Newton-Raphson .
Utilizar el comando FindRoot para obtener las raices.

3º.- Comprobar de forma gráfica que la ecuación .


4 sen(x) = 1+x
tiene tres raices reales : r1 <r2 <r3 . A continuación determinar con una precisión de 106 ,
a) r1 utilizando el mdo de la secante.
b) r2 " " " " " bisección.
c) r3 " " " " Newton.

4º.- Encontrar una raiz aproximada de la ecuación :


x3  x  1  0
en el intervalo [1 , 2] con una precisión de 1010 primero por el método de Newton y luego por el de la secante.
Contar el nº de iteraciones que se han realizado en ambos casos para comprobar cuál de los dos métodos tiene una
convergencia más rápida.

 Ejercicio nº 21
Sea f(x) = 8x  cosx  2x2 , representar gráficamente f(x) en el intervalo [0,/6]. Justificar que la
expresión :
gxn   
   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 104 .
practica2sr.nb 7

 Ejercicio nº 22
Determinar la raiz cuadrada negativa de 0.5 con cuatro decimales y una precisión de
103 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) < 103 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) = ex -x = 0, mediante el método de la
secante tomando como valores iniciales x1  0, y x0  1, y sabiendo que la solución exacta es
0.56714329. Trabajar con redondeo a seis cifras decimales.

También podría gustarte