Upload
stiva-darcy
View
11
Download
1
Embed Size (px)
Citation preview
Integrantes del Equipo:
Nombre: Luis Alberto Cisneros Pacheco Matricula: 201021801
Nombre: Juan Carlos Campos Diego Matricula: 201014732
Nombre: Daniel Ramos Rendón Matricula: 200925971
Nombre: Francisco Agustín Núñez Álvarez Matricula: 200924907
Fecha: 13/09/2013
PRACTICA 3. ALGORITMO DE NEWTON. ALGORITMO DE LA SECANTE. ALGORITMO DE LA REGLA FALSA
OBJETIVO: Aplicar los Algoritmos de Newton, Secante y Regla Falsa para hallar una
aproximación a una raíz de la ecuación f ( x )=0.
1. El polinomio de cuarto grado
f ( x )=230x4+18x3+9 x2−221 x−9
tiene dos ceros reales, uno en [−1,0 ] y el otro en [0,1 ]. Aproxima estos ceros con una
exactitud de 10−6 por medio de
a) El algoritmo de la posición falsa
Código en MATLAB:
function varargout = ReglaFalsa(varargin)syms x;y=get(handles.funcion,'String');f=inline(y);p0=str2double(get(handles.p0,'String'));p1=str2double(get(handles.p1,'String'));TOL=str2double(get(handles.tolerancia,'String'));No=str2double(get(handles.it1,'String')); i=2;q0=f(p0);q1=f(p1);ezplot(f)grid on while (i<=No) p=p1-((q1*(p1-p0))/(q1-q0)); if(abs(p-p0)<TOL) set(handles.resultado,'String',num2str(p)); set(handles.it2,'String',num2str(i)); return end i=i+1; q=f(p); if ((q*q1)<0) p0=p1;
q0=q1; p1=p; q1=q; end if((q*q0)<0) p0=p0; q0=q0; p1=p; q1=q; end end h=msgbox('El metodo fracasó','Error');set(handles.resultado,'String','El metodo falló');set(handles.it2,'String',(i-1));
b) El algoritmo de la secante
Codigo en MATLAB:
function varargout = MetodoSecante(varargin)syms x;y=get(handles.funcion,'String');f=inline(y);p0=str2double(get(handles.p0,'String'));p1=str2double(get(handles.p1,'String'));TOL=str2double(get(handles.tolerancia,'String'));No=str2double(get(handles.it1,'String')); i=2;q0=f(p0);q1=f(p1);ezplot(f)grid on while i<=No p=p1-((q1*(p1-p0))/(q1-q0)); if(abs(p-p0)<TOL) set(handles.resultado,'String',num2str(p)); set(handles.it2,'String',num2str(i)); return end i=i+1; p0=p1;
q0=q1; p1=p; q1=f(p);end h=msgbox('El metodo fracasó','Error');set(handles.resultado,'String','El metodo falló');set(handles.it2,'String',(i-1));
Como se puede ver en la siguiente imagen el método fallo a pesar de que se le aumentaron el número de iteraciones.
a) El algoritmo de Newton
Código en MATLAB.
syms x;f=get(handles.funcion,'String');F=inline(f);TOL=str2double(get(handles.tolerancia,'String'));p0=str2double(get(handles.aprox,'String'));No=str2double(get(handles.it1,'String'));i=1; while (1<=No) FP=F(p0); fpr=diff(f); FPR=inline(fpr); Fs=FPR(p0); p=p0-(FP/Fs); if(abs(p-p0))<TOL set(handles.res,'String',num2str(p)); set(handles.it2,'String',num2str(i)); ezplot(f,[p-1,p+1])
grid on return end i=i+1; p0=p;endh=msgbox('El metodo fracaso','Error');
Utiliza los extremos de cada intervalo como aproximaciones iniciales en a) y en b) y los intermedios como aproximaciones iniciales en c).
Tomando en cuenta la recomendación de utilizar los valores intermedios de [-1,0] y [0,1], se tomó -0.5 como una aproximación inicial, teniendo como resultado -0.040659 después de 4 iteraciones.
El resultado anterior se conserva usando la aproximación inicial = 0, pero ahora con 3 iteraciones.
Finalmente se notó que al tomar como aproximación inicial a 0.6, el resultado es 0.9624 después de haber realizado 15 iteraciones.
2. La función
f ( x )=tan πx−6
tiene un cero en 1πtan−16≈0.447431543. Sean p0=0 y p1=0.48, usa 10 iteraciones
de los siguientes algoritmos para aproximar esta raíz ¿Cuál de estos es más eficaz y por qué?
a) El algoritmo de la bisección
A pesar que se recomienda utilizar 10 iteraciones, el programa (como se puede observar) solo puede arrojar un resultado después de 16 iteraciones. El resultado es bastante cercano al propuesto por el problema pero que se ve limitado porque el programa solo muestra hasta un FIX 4.
b) El algoritmo de la secante
c) El algoritmo de la posición falsa
Se obtuvieron los siguientes resultados: