MÉTODOS NUMÉRICOS.
Enviado por OTREUM • 22 de Marzo de 2017 • Informe • 717 Palabras (3 Páginas) • 169 Visitas
UNIVERSIDAD NACIONAL DE COLOMBIA
FACULTAD DE INGENIERÍA
MÉTODOS NUMÉRICOS
Inducción SCILAB
Laboratorio 0
Un procedimiento (de los varios que existen) para ejecutar un programa en SCILAB
1) Escoja la función a investigar, codifíquela, grábela en un archivo .sci usando el editor del SCILAB
2) Seleccione y programe el método numérico como una función y grábela en un archivo .sci usando el editor del SCILAB
3) Escriba el programa en SCILAB donde defina los valores de los parámetros que necesita el método numérico definido en 2). Grabe este último como un archivo .sce
4) Ejecute el programa definido en 3), cargando primero desde el editor las funciones dadas en 1) y 2) y luego cargue el programa definido en 3). En la consola de comandos aparecerá los resultados del programa.
Ejemplo: Encontrar la raíz de la ecuación f(x)=x3 + 4x2 -10 = 0, usando el método de la falsa posición, tomando como intervalo de búsqueda [a, b] = [1.3, 2.7]
Pasos:
1) Función a investigar: f(x)=x3 + 4x2 -10 = 0.
Codificación SCILAB:
// f(x)=x^3 + 4*x^2 – 10 = 0
function z=fun1(x)
z=x.^3 + 4*x.^2 - 10;
endfunction
Nombre del archivo: fun1.sci
2) Método numérico (falsa posición) codificado:
function [c,err,yc]=falsa1(a,b,delta,max1)
// Input - f is the function
// - a and b are the left and right endpoints
// - delta is the tolerance for the zero
// - max1 is the maximum number of iterations
// Output - c is the zero
// - yc=f(c)
// - err is the error estimate for c
// ya=f(a);
// yb=f(b);
ya=fun1(a);
yb=fun1(b);
if ya*yb>0
disp('Nota: f(a)*f(b) >0'),
return,
end
for k=1:max1
dx=yb*(b-a)/(yb-ya);
c=b-dx;
ac=c-a;
yc=fun1(c);
if yc==0,break;
elseif yb*yc>0
b=c;
yb=yc;
else
a=c;
ya=yc;
end
dx=min(abs(dx),ac);
if abs(dx)<delta,break,end
end
c;
err=abs(b-a)/2;
yc=fun1(c);
endfunction
Nombre del archivo: falsa1.sci
3) Programa que encuentra la solución usando la función a investigar con el método seleccionado:
clc;
a=1.3;
b=2.7;
ya=fun1(1.3);
yb=fun1(2.7);
if ya*yb>0
disp('Revise intervalo. No hay cambio de signo: f(a)*f(b) >0'),
return,
end
disp('Rango adecuado')
delta=0.0005;
max1=10;
[c,err,yc]=falsa1(a,b,delta,max1)
...