C alculo Num erico. Curso 2010-2011 Pr actica 2 Tema 2 : Iteraciones

Anuncio
Calculo Numerico. Curso 2010-2011
Practica 2
Tema 2 : Iteraciones
1. Ejercicios
Programar en Matlab una funcion que permita calcular las soluciones de ecuaciones de la forma
f (x) = 0 utilizando el metodo de Newton. La funcion deben tener la siguiente sintaxis y variables de
entrada y salida:
1. a.
function [y, iter, est_error] = newton(fun, df, x0, maxiter, tol)
Variables de entrada:
fun: cadena de caracteres que contiene el nombre del chero .m que declara la funcion f del
problema f (x) = 0.
df: cadena de caracteres que almacena el nombre del chero .m que declara la derivada de la
funcion f .
x0: valor inicial.
maxiter: mero mximo de iteraciones permitidas.
tol: tolerancia requerida para el calculo de la aproximacion.
Variables de salida:
y: contiene la aproximacion numerica.
iter: n
umero de iteraciones necesarias para la convergencia.
est error: estimacion del error cometido en la aproximacion.
Aplicar esta rutina para la resolucion de la ecuacion cos(x) x=5 = 0. Buscar aproximaciones iniciales
que sirvan para poder encontrar cada una de las races.
b.
Si fun es el nombre del chero .m que declara una funcion f y x es el argumento de esta funcion, el
valor de f (x) puede ser calculado mediante el comando feval(fun; x). Por ejemplo, si denimos cadenas
de caracteres
fun1 =0 cos0 ; fun2 =0 sin0
Nota:
2.
entonces los comandos feval(fun1; 0); feval(fun2; 0) evaluan cos(0) y sin(0), respectivamente.
La funcion de Bessel Jn (x) se puede denir como
1
Jn (x) =
Z 0
cos(x sin t
nt) dt
Representar gracamente J0 (x) y localizar sus siete primeros ceros.
Utilizando el metodo de Newton calcular estos ceros de J0 (x) con seis decimales correctos. Para la
derivada de J0 (x) utilizar que J00 (x) = J1 (x)
a.
b.
Matlab tiene la rutina besselj(n; x) para calcular Jn (x).
Adaptar la funcion del ejercicio 1 para que resuelva sistemas no lineales de la forma
Nota:
3.
8
f1 (x1 ; x2 ; : : : ; xn )
>
>
>
>
< f2 (x1 ; x2 ; : : : ; xn )
>
>
>
>
:
=0
=0
..
.
fn (x1 ; x2 ; : : : ; xn ) = 0:
La nueva funcion debe seguir la sintaxis siguiente
function [y, iter, est_error] = newton2(fun, df, x0, maxiter, tol),
(1)
con las siguientes variables de entrada y salida:
Variables de entrada:
fun: cadena de caracteres que contiene el nombre del chero .m donde se declara la funcion
dada por
t
(x1 ; : : : ; xn ) 7! f1 (x1 ; : : : ; xn ); : : : ; fn (x1 ; : : : ; xn ) ;
que permite escribir el sistema (1) en la forma f (x) = 0. La salida de la funcion f debe ser un
vector columna.
df: cadena de caracteres que almacena el nombre del chero .m que declara la derivada de la
funcion f . En este caso, la salida de esta funcion debe ser una matriz n n.
x0: iterante inicial, un vector columna de dimension n.
maxiter: n
umero maximo de iteraciones permitidas (como antes).
tol: tolerancia requerida para el calculo de la aproximacion (como antes).
Variables de salida:
y: contiene la aproximacion numerica en un vector columna.
iter: n
umero de iteraciones necesarias para la convergencia.
est error: estimacion del error cometido en la aproximacion.
Debe tenerse en cuenta que en este caso y; fun; x0 son vectores columna y df es una matriz n n para llevar
a cabo las modicaciones pertinentes en la funcion newton.
Utilizar la nueva funcion newton2 para encontrar todas las soluciones de los siguientes sistemas no lineales:
(
x2 + y 2 = 2;
2x y = 0;
(
x2 + y 2 = 1;
cos(x) 2y = 3=2:
2. Fecha de entrega y presentacion de la practica
La fecha de entrega sera el jueves 28 de octubre en la clase de teora. Debera presentarse individualmente
un guion (impreso) de la practica, que incluya el codigo, los estudios teoricos, resultados y comentarios
que se consideren oportunos. Mas adelante en un examen oral se podra preguntar sobre los problemas y
programacion de esta practica, junto con ejercicios de problemas o preguntas teoricas relacionados con
ellos.
Descargar