Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Falsa Posicion Con Matlab PDF
Falsa Posicion Con Matlab PDF
Ingeniería Eléctrica
Métodos Numéricos
MC. Mario Alberto de la Cruz Padilla
Por:
• syms x,y,z,etc: Sirve para que Matlab reconozca a las letras como
variables(símbolos).
switch ( variable )
case constante1 :
// Bloque de instrucciones 1
break;
case constante2 :
// Bloque de instrucciones 2
break;
.
.
.
case constanteN :
//Bloque de instrucciones N
break;
otherwise:
// Opcional
// Bloque de instrucciones N+1
end
if expresión condicional
else
// Proceso(s);
end
while condición
// Proceso(s);
end
LÓGICA UTILIZADA EN LA
PROGRAMACIÓN
Utilizamos el comando de programación switch para hacer un
menú de opciones en el cual nos dé la opción de detener el proceso ya
sea por un porcentaje de error deseado o por un determinado número
de iteraciones, porque este método (falsa posición) permite hacerlo de
esa manera, es decir el usuario elige que tan cerca o lejos quiere llegar
al resultado.
CÓDIGO DE PROGRAMACIÓN EN
MATLAB:
fprintf('\nCÁLCULO DE LA RAÍZ DE UNA ECUACIÓN NO LINEAL POR EL MÉTODO DE LA FALSA
POSICION\n\n');
syms x;
f=input('Escriba la Función f(x)= ','s');
ezplot(f);
grid on;
fprintf('\nSe generó la gráfica de la función, revísela\n');
fprintf('\n::: Visualice un punto de corte de la gráfica de la función con el eje
x :::\n\n');
xa=input('Deme un valor a la izquierda del punto de corte: ');
xb=input('\nDeme un valor a la derecha del punto de corte: ');
fprintf('\n\nDesea detener el proceso... ');
fprintf('\n\n 1 Al alcanzar cierto porcentaje de error');
fprintf('\n 2 Por el número de iteraciones');
opcion=input('\n\nIntroduzca 1 ó 2: ');
x=xa;
fa=eval(f);
x=xb;
fb=eval(f);
et=100;
fm=0;
switch opcion;
case 1
e=input('\nPorcentaje de error deseado: ');
ni=0;
fprintf('\n ::::::::::::::: TABLA ::::::::::::::: \n');
fprintf('\n Iteración xa xr xb f(xa) f(xr) f(xb) Error \n\n');
while et>e;
xr=xb-fb*(xb-xa)/(fb-fa);
x=xr;
fr=eval(f);
et=abs((fr-fm)/fr)*100;
disp([ni,xa,xr,xb,fa,fr,fb,et])
if fb*fr<0
xa=xr;
fa=fr;
else
xb=xr;
fb=fr;
end
if et<e
fprintf('\n>>> La raíz aproximada es: \n');
fprintf(' x= %d\n\n',xr)
end
ni=ni+1;
fm=fr;
end
m=input('Desea calcular la raiz de otra ecuación, si(1) no(2):');
if(m==1);
clc;
clear all;
close all;
FALSAPOSICION;
else
clc;
clear all
close all;
break
end
case 2
n=input('\nNumero de iteraciones a realizar: ')
fprintf('\n ::::::::::::::: TABLA ::::::::::::::: \n');
fprintf('\n Iteración xa xr xb f(xa) f(xr) f(xb) Error \n\n');
for ni=0:n
xr=xb-fb*(xb-xa)/(fb-fa);
x=xr;
fr=eval(f);
et=abs((fr-fm)/fr)*100;
disp([ni,xa,xr,xb,fa,fr,fb,et])
if fb*fr<0
xa=xr;
fa=fr;
else
xb=xr;
fb=fr;
end
fm=fr;
if ni==n
fprintf('\n>>> La raíz aproximada es: \n');
fprintf(' x= %d\n\n',xr)
break
end
end
m=input('Desea calcular la raiz de otra ecuación, si(1) no(2):');
if(m==1);
clc;
clear all;
close all;
FALSAPOSICION
else
clc;
clear all
close all;
break
end
otherwise
fprintf ('\n\nOpción no válida, VUELVA A CORRER EL PROGRAMA!!!\n\n');
end