PRÁctica 6 de matemáticas matlab




Descargar 46.8 Kb.
TítuloPRÁctica 6 de matemáticas matlab
Fecha de conversión07.01.2013
Tamaño46.8 Kb.
TipoDocuments
PRÁCTICA 6

DE

MATEMÁTICAS

MATLAB

Resolución de ecuaciones: Métodos de Newton y secante




Javier Balerdi Hernández

Grupo: D1B


Ejercicio

Localiza gráficamente una raíz real de la ecuación f(x) = 0 para las funciones:

1- f(x) = x*sin x – 1

a) Dibuja una iteración del método de Newton sobre la ecuación f(x) = 0 partiendo de una estimación inicial adecuada.

b) Aplica el método de Newton para hallar la raíz con precisión de millonésimas. Escribe los iterados con al menos 6 decimales.

c) Estima el error de cada iterado mediante su diferencia con el siguiente. Comprueba si los errores estimados decrecen linealmente o cuadráticamente. ¿Cuál es el orden del método para este ejemplo?

d) Dibuja una iteración del método de la secante sobre la ecuación f(x) = 0 partiendo de dos estimaciones adecuadas.

e) Aplica el método de la secante para hallar la raíz con precisión de millonésimas. Escribe los iterados con al menos 6 decimales.

f) Estima el error de cada iterado mediante su diferencia con el siguiente. Comprueba si los errores estimados decrecen linealmente o cuadráticamente. ¿Cuál es el orden del método para este ejemplo?

g) ¿Cuál de los dos métodos te parece mejor para este problema y por qué?


Función 1:

a)

function [y, dy] = ec1(x)

% Ecuación x*sin(x)–1=0

y = x*sin(x)-1;

% Derivada

dy = sin(x)+x.*cos(x)


>> a = -1; b = 2;

xg = a:0.01:b;

yg = ec1(xg);

plot(xg,yg)

title('y = x*sinx-1')

grid

hold on


>> x(1) = 1.5;

>> [y, dy(1)]= ec1(x(1))

y =

0.4962

dy =

1.1036

>> plot(x,0,'r*')

stem(x,y,'g')


>> [y,dy(1)] = ec1(x(1));

x(2) = x(1) - y(1)/dy(1)

x = 1.5000 1.0503


>> plot([x(1) x(2)],[y(1) 0],'m--')

plot(x(2),0,'r*')

title('Método de Newton.Primera iteración')


b)

>> [y(2),dy(2)] = ec1(x(2)); % Valor de la función y de la derivada

x(3) = x(2) - y(2)/dy(2) % Intersección de la tangente con OX

x = 1.5000 1.0503 1.1142

>> stem(x(2),y(2),'g')

plot([x(2) x(3)],[y(2) 0],'m--')

plot(x(3),0,'r*')

title('Método de Newton. Segunda iteración')


>> [y(3),dy(3)] = ec1(x(3));

x(4) = x(3) - y(3)/dy(3)

x = 1.5000 1.0503 1.1142 1.1142

stem(x(3),y(3),'g')

plot([x(3) x(4)],[y(3) 0],'m--')

plot(x(4),0,'r*')

title('Método de Newton. Tercera iteración')

hold off


>> abs(x(4)-x(3))

ans = 2.4110e-005

>> [y(4),dy(4)] = ec1(x(4));

x(5) = x(4) - y(4)/dy(4)

x = 1.5000 1.0503 1.1142 1.1142 1.1142

>> abs(x(5)-x(4))

ans = 2.4733e-011


function [sol,x,incr,k] = newton(fun,x1,tol,maxiter)


% Efectúa k pasos del método de Newton

% sobre la ecuación fun(x) = 0

% partiendo de x1

% mientras incr > tol y k < maxiter


% Inicializar

k = 0;

incr = tol + 1;

x(1) = x1;


% Iteraciones

while incr > tol && k < maxiter

k = k+1; % Paso

[y(k), dy(k)] = feval(fun,x(k));

x(k+1) = x(k) - y(k)/dy(k);

incr = abs(x(k+1)-x(k));

end


% Salida

sol = x(end);

if incr > tol

disp('Diverge o insuficientes iteraciones')

end


>> [sol,x,incr,k] = newton('ec1',-1,1e-6,10)

sol = -1.1142

x = -1.0000 -1.1147 -1.1142 -1.1142

incr = 1.4036e-008

k = 3

c)

[sol,x,incr] = newton('ec1',-1,1e-6,10);


>> [sol,x,incr] = newton('ec1',-1,1e-6,10);

>> e = abs(diff(x))

e = 0.1147 0.0006 0.0000

>> tcl = e(2:end)./e(1:end-1)

plot(tcl,'+-')

xlabel('Iteración')

title('Método de Newton')

ylabel('Tasa de convergencia lineal')

tcl = 0.0050 0.0000

>> tcc = e(2:end)./e(1:end-1).^2

plot(tcc,'s-')

xlabel('Iteración')

ylabel('Tasa de convergencia cuadrática')

title('Método de Newton')

tcc = 0.0434 0.0430

d)

>> a = -1; b = 2;

xg = a:0.01:b;

yg = ec1(xg);

plot(xg,yg)

title('y = x*sinx-1')

grid

hold on


e)

m = (y(2)-y(1))/(x(2)-x(1));


>> x(3) = x(2) - y(2)/m

x = -0.5000 1.5000 0.7101

>> plot([x(1) x(2) x(3)],[y(1) y(2) 0],'m')

>> plot(x(3),0,'r*')

>> title('Método de la secante. Primera iteración')


>> y(3) = ec1(x(3)); %Valor de la función

>> m = (y(3)-y(2))/(x(3)-x(2)); % Pendiente de la secante

x(4) = x(3) - y(3)/m % Intersección de la secante con OX

x = -0.5000 1.5000 0.7101 1.1207


>> stem(x(3),y(3),'g')

plot([x(2) x(3) x(4)],[y(2) y(3) 0],'m')

plot(x(4),0,'r*')

title('Método de la secante. Segunda iteración')


>> y(4) = ec1(x(4));

>> m = (y(4)-y(3))/(x(4)-x(3));

x(5) = x(4) - y(4)/m

x = -0.5000 1.5000 0.7101 1.1207 1.1139

>> stem(x(4),y(4),'g')

plot([x(3) x(4) x(5)],[y(3) y(4) 0],'m')

plot(x(5),0,'r*')

title('Método de la secante. Tercera iteración')


>> axis([-0.6 1.6 -0.1 0.1])


>> abs(x(5)-x(4))

ans = 0.0068

>> y(5) = ec1(x(5));

>> m = (y(5)-y(4))/(x(5)-x(4));

x(6) = x(5) - y(5)/m

x = -0.5000 1.5000 0.7101 1.1207 1.1139 1.1142


>> abs(x(6)-x(5))

ans = 2.8479e-004

>> stem(x(5),y(5),'g')

plot([x(4) x(5) x(6)],[y(4) y(5) 0],'m')

plot(x(6),0,'r*')

title('Método de la secante. Cuarta iteración')

hold off


f)


% partiendo de x1 y x2

% mientras incr > tol y k < maxiter

% Inicializar

k = 0;

incr = tol + 1;

x = [x1,x2];

y = feval(fun,x(1));

while incr > tol && k <= maxiter+1

k = k+1; % Paso

y(k+1) = feval(fun,x(k+1));

m = (y(k+1)-y(k))/(x(k+1)-x(k));

x(k+2) = x(k+1) - y(k+1)/m;

incr = abs(x(k+2)-x(k+1));

end


% Salida

sol = x(end);

if incr > tol

disp('Diverge o insuficientes iteraciones')

end


>> [sol,x,incr,k] = secante('ec1',-1,2,1e-6,10)

sol = -1.1142

incr = 3.3365e-007

k = 11

>> e = abs(diff(x))

tcl = e(2:end)./e(1:end-1)

tcc = e(2:end)./e(1:end-1).^2

plot([tcl' tcc'],'v-')

title('Método de la secante')

xlabel('Iteración')

legend('Tasa de convergencia lineal','Tasa de convergencia cuadrática',...

'Location','NorthWest')

e = Columns 1 through 10

1.2596 0.7555 0.1445 0.0499

Columns 11 through 12

0.0003 0.0000

tcl = Columns 1 through 10

0.5998 0.1913 0.3457 0.0057

Column 11

0.0012

tcc = Columns 1 through 10

0.2793 0.1900 2.5667 0.3039 0.0543 1.4373 0.4762 0.2532 2.3921 0.1135

Column 11

4.1602


g)El método de la secante, porque es mas rápido que el de bisección. Solo tiene un incoveniente que es que este método es mas lento que el de Newton, pero también es menos sensible que este.

Similar:

PRÁctica 6 de matemáticas matlab iconPractica nº 1 introduccion al matlab y simulink

PRÁctica 6 de matemáticas matlab iconMatemáticas administrativas ejercicios de práctica y evaluacióN UNIDAD II matemáticas financieras

PRÁctica 6 de matemáticas matlab iconFisica general. Ciencias naturales. AÑO 2010. Práctica Repaso de matemáticas (primera parte)

PRÁctica 6 de matemáticas matlab icon1. Programación en Matlab

PRÁctica 6 de matemáticas matlab iconApendice d3 simulacion en matlab

PRÁctica 6 de matemáticas matlab icon¿Cómo trabaja Matlab?

PRÁctica 6 de matemáticas matlab iconMi Primera Página Web. Practica uno Practica dos

PRÁctica 6 de matemáticas matlab iconProcesado de señal con Matlab y Modulación am

PRÁctica 6 de matemáticas matlab iconIntroducción a Matlab, un enfoque a la simulación y visualización dinámica

PRÁctica 6 de matemáticas matlab iconModelo de Oferta y Demanda Agregada: Una Simulación Computacional con Matlab

Coloca este botón en su sitio:
esdocs.org


La base de datos está protegida por derechos de autor ©esdocs.org 2014
enviar mensaje
esdocs.org
Página principal