Lab 02
Lab 02
Lab 02
Laboratorio 2 (Semana 3)
S2-2023
Existen dos tipos de programas Octave: uno se denomina rutero y el otro function.
Supongamos que tenemos un directorio donde guardaremos nuestros programas. Octave debe estar direccionado
a ese directorio. Un comando para cambiar de directorio dentro de Octave es:
>> cd directorio
Todos los archivos con programas Octave deben terminar con la extensión .m. Supongamos que deseamos
resolver la ecuación 2x2 + 3x + 1 = 0. Su programa rutero puede ser el siguiente:
a=2;
b=3;
c=1;
D=b^2-4*a*c;
x(1)=(-b+sqrt(D))/(2*a);
x(2)=(-b-sqrt(D))/(2*a);
x
Guarde el programa con el nombre ejemplo1.m. Luego escriba en Octave el nombre del archivo:
>> ejemplo1
x=
-0.5000 -1.0000
Este tipo de programas se conocemos como ruteros y las variables son globales, es decir, quedan en la memoria
después de ejecutarse el programa. Puede usar el comando whos para saber qué hay en la memoria.
Una desventaja de este tipo de programas es que debemos modificar el archivo .m para resolver otra ecuación
que utilice la misma fórmula.
1 de 5
MATE1118
Laboratorio 2 (Semana 3)
S2-2023
Los programas tipo function tienen una estructura más esquematizada y siempre tienen la forma:
instrucciones
endfunction
function x = ejemplo2(a,b,c)
D=b^2-4*a*c;
x(1)=(-b+sqrt(D))/(2*a);
x(2)=(-b-sqrt(D))/(2*a);
endfunction
>> ejemplo2(2,3,1)
ans=
-0.5000 -1.0000
Este programa puede usarse para resolver otras ecuaciones del mismo tipo. También puede usarse en otros
programas, como veremos en otros laboratorios.
En el último caso las variables son locales. Por ello, si se ejecuta whos se obtiene:
Es conveniente usar programas function, cuando sea posible, pues permiten un ahorro de memoria. Otro
ejemplo de programa es roots, que permite calcular las raı́ces de un polinomio de grado n ≥ 1.
2 de 5
MATE1118
Laboratorio 2 (Semana 3)
S2-2023
Ahora daremos los comandos más usados en programas. for La sintaxis de este comando es
for i=iv:in:vf
instrucciones
endfor
Aquı́ vi, in y vf son el valor inicial, el incremento y el valor final de la variable escalar i. Cuando in está
ausente, se presupone el valor 1. Ası́, son equivalentes for i=iv:1:vf y for i=iv:vf .
while La sintaxis de este comando es
while relación
instrucciones
endwhile
if relación
instrucciones
endif
Las instrucciones se ejecutan si la relación es verdadera. Otras formas de este comando son posibles, por
ejemplo,
if relación
if instrucciones A
else
instrucciones B
endif
Si la relación es verdadera se ejecutan las instrucciones A, caso contrario se ejecutan las instrucciones B.
3 de 5
MATE1118
Laboratorio 2 (Semana 3)
S2-2023
Las relaciones para los comandos if y while se construyen mediante los siguientes relacionadores:
&& y
|| o
xor o excluyente
! negación
Paso 1 Sea i = 1;
F A = f (a).
F P = f (p)
Pare.
Paso 5 Sea i = i + 1.
4 de 5
MATE1118
Laboratorio 2 (Semana 3)
S2-2023
FA = FP
Pare
a) Haga las modificaciones necesarias para transformar el programa rutero en un programa function.
b) Tome N0 = 17 y ejecute nuevamente el código. ¿Qué ocurre?
√
2. Encuentre una aproximación a 3 2 usando el método de la bisección con N0 = 25, T OL = 10−6 y el
intervalo [1, 3]. Escriba el resultado.
3. Para determinar el signo de la expresión F A · F P en cada paso del algoritmo de bisección, es mejor
utilizar la función
−1,
si x < 0,
sgn(x) = 0, si x = 0,
1, si x > 0.
Utilizar sgn(F A)·sgn(F P ) < 0 en lugar de F A·F P < 0 nos da el mismo resultado, pero evita problemas
de overflow o underlflow en la multiplicación de f (a) y f (b). Incluya esta modificación en el programa
del problema 2. La función Octave tiene el mismo nombre: sign .
Referencias
[1] R. L. Burden and J. D. Faires, Análisis numérico, Cengage Learning, México, 10a ed., 2017.
5 de 5