Lab 02

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

MATE1118

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.

Name Size Bytes Class


D 1x1 8 double
a 1x1 8 double
b 1x1 8 double
c 1x1 8 double
x 1x2 16 double

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:

function [salida1, salida2, ...] = nombre(entrada1,entrada2,...)

instrucciones

endfunction

El programa anterior escrito como function queda de la siguiente forma:

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

Se almacena en un archivo ejemplo2.m y se ejecuta del siguiente modo:

>> 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:

Name Size Bytes Class


ans 1x2 16 double

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.

>> edit roots

Si queremos calcular las raı́ces del polinomio 2x2 + 3x + 1, debemos escribir:

>> roots([2 3 1])

Para guardar la solución en la variables x:

2 de 5
MATE1118
Laboratorio 2 (Semana 3)
S2-2023

>> x=roots([2 3 1])

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

Las instrucciones se ejecutan si la relación es verdadera.


if La sintaxis de este comando es

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:

< menor que


> mayor que
<= menor o igual a
>= mayor o igual a
== igual a
!= distinto a

También se tienen los siguientes operadores lógicos:

&& y
|| o
xor o excluyente
! negación

Cálculo de raı́ces de ecuaciones: Parte 1


El método de la bisección en un tipo de busqueda incremental en el que el intervalo se divide siempre a la
mitad. Si la función cambia de signo sobre el intervalo, se evalúa el valor de la función en el punto medio. La
posición de la raı́z se determina situándola en el punto medio del subintervalo, dentro del cual ocurre un
cambio de signo. El proceso se repite hasta que se cumpla algun criterio.
Sea f una función continua sobre el intervalo [a, b] tal que f (a)f (b) < 0. Deseamos encontrar una solución a
f (x) = 0. Para el método de la bisección tenemos el siguiente pseudocódigo [1]:

Entradas puntos finales a, b; tolerancia T OL; número máximo de iteraciones N0 .

Salida solución aproximada p o mensaje de error.

Paso 1 Sea i = 1;

F A = f (a).

Paso 2 Mientras i ≤ N0 haga los pasos 3-6.

Paso 3 Sea p = a + (b − a)/2; (calcule pi )

F P = f (p)

Paso 4 Si F P = 0 o (b − a)/2 < T OL entonces

Salida (p); (procedimiento completado exitosamente)

Pare.

Paso 5 Sea i = i + 1.

4 de 5
MATE1118
Laboratorio 2 (Semana 3)
S2-2023

Paso 6 Si F A · F P > 0, entonces fijamos a = p; (calcule ai y bi )

FA = FP

también fijamos b = p. (F A no cambia)

Paso 7 Salida (el método fracasó después de N0 iteraciones);

(el procedimiento fue exitoso)

Pare

1. Descargue el archivo bisec1.m desde


√ Educa. Este programa (rutero) usa el método de la bisección para
para calcular una aproximación a 2.

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

También podría gustarte