MÓDULO 9: RAICES DE UNA FUNCIÓN DE UNA VARIABLE

Anuncio
18
Introducción al Cálculo Numérico y Programación
MÓDULO 9: RAICES
DE UNA FUNCIÓN DE UNA
VARIABLE
Ejercicio 1:
a) Escribe una función [x,it]=bisecc(fun,tol,a,b), que admita como parámetros de
entrada una función MATLAB fun(x), la tolerancia tol de la raiz, y el intervalo (a,b)
donde se ha de buscar la raiz, y devuelva la raiz x y el número de iteraciones it del método
de bisección. La función debe visualizar la solución aproximada en cada iteración.
Atención: Se puede introducir como argumento en una función MATLAB otra función.
Para evaluar esta función se debe utilizar la orden feval. (más ayuda con help feval) Por
ejemplo, la siguiente función evalúa una función introducida como primer argumento en el
punto introducido como segundo argumento:
function y = mi_feval(fun, x)
%
%
%
y = feval(fun, x);
mi_feval('sin', 0.01), mi_feval('cos', 0.01)
ans =
0.0100
ans =
1.0000
Nótese como el nombre de la función se coloca entre comillas simples cuando se
introduce como argumento.
b) Aplicar la función bisecc.m a la función f(x)= x-sen(x)-1, considerando una tolerancia
de 0.001. Ayúdese del comando PLOT para establecer los extremos a y b del intervalo en
donde se desee localizar la raiz x de f(x). Comprobar el resultado con el obtenido mediante
la función de MATLAB fzero.
Solución :
[a,b] =
x=
nº de iteraciones :
Ejercicio 2: Escribe una función MATLAB [x,it]=lineal(fun,tol,a,b), que admita
como parámetros de entrada una función MATLAB fun(x), la tolerancia tol de la raiz, y
el intervalo (a,b) donde se ha de buscar la raiz, y devuelva la raiz x y el número de
iteraciones it aplicando el método de interpolación bilineal. La función debe visualizar la
solución aproximada en cada iteración.
19
Introducción al Cálculo Numérico y Programación
Ejercicio 3: Aplicar las funciones biseccion y lineal para encontrar la raiz de f(x) = ex3x en [1,2]. ¿Qué método necesita menos iteraciones?.
Ejercicio 4: Escribe una función [x,it]=newton(fun,dfun,tol,x0), que admita como
parámetros de entrada una función MATLAB fun(x), su derivada dfun(x), la tolerancia
tol de la raiz, y el punto inicial x0 donde aplicar el método de Newton, y devuelva la raiz
x y el número de iteraciones it aplicando el método de Newton
Ejercicio 5: Aplica la función newton para encontrar la raiz de f(x) = ex-3x en [1,2].
Comparar el número de iteraciones de este método con los resultados del ejercicio 3.
Ejercicio 6: Escribe una función [x,it]=secante(fun,tol,x0,x1), que admita como
parámetros de entrada una función MATLAB fun(x), la tolerancia tol de la raiz, y dos
puntos iniciales (x0 y x1) donde comienza el método de la secante, y devuelva la raiz x y el
número de iteraciones it aplicando el método de la secante. La función debe visualizar la
solución aproximada en cada iteración.
Ejercicio 7: Aplicar las función secante para encontrar la raiz de f(x) = ex-3x en [1,2].
Compara el número de iteraciones de este método con el de Newton (ejercicio 5).
Ejercicio 8:
a) Escribir una función [x,it]=pfijo(fun,gun,tol,x0) para encontrar la raiz de una
función fun(x) usando el método del punto fijo con una tolerancia tol, siendo x0 un valor
próximo a la buscada y gun(x) una función tal que la expresión x=gun(x) sea equivalente a
fun(x)=0 que cumpla los requisitos para la convergencia del método. Mostrar por pantalla
los valores de : nº de iteración, la solución aproximada x y el valor de fun(x)
b) Aplicar la función pfijo.m a la función f(x) del ejercicio 1b), considerando una
tolerancia de 0.001. Ayúdese del comando PLOT para establecer el valor x0 con el que
comenzar el método iterativo.
Solución :
g(x)=
x0 =
x=
nº de iteraciones :
Apéndice 9A ¿Cómo calcula MATLAB las raíces?
MATLAB proporciona la función x=fzero(nombre_funcion,x0,tol,it) para obtener
la raiz de una función. La función que ha de ser de la forma y=nombre_funcion(x) se
introduce como primer argumento, x0 es la aproximación inicial, el número de iteraciones
del proceso iterativo para alcanzar la solución se introduce por medio del argumento it. Si
it es igual a 1, el proceso se repite hasta que la solución esté dentro de una tolerancia tol.
Los dos últimos argumentos se pueden omitir.
Introducción al Cálculo Numérico y Programación
20
Esta función emplea el método de Brent que combina la interpolación cuadrática inversa
con la bisección.
Apéndice 9B ¿Cómo calcula MATLAB las raíces de un polinomio?
La función MATLAB r=roots(c) calcula las raíces r de un polinomio cuyos
coeficientes se encuentran almacenados en el vector c de la forma:
c(1)xn+...+c(n)x+c(n+1).
Otra función relacionada con los polinomios es c=poly(r) que genera un polinomio con
las raíces introducidas como argumento en el vector r.
Descargar