Introducción al software para cálculo numérico SciLab

Autor: Hernán Ferrari Responsable disciplinar: Silvia Blaustein Área disciplinar: Física Temática: Software para modelado numérico Nivel: Secundario, ciclo básico Secuencia didáctica elaborada por Educ.ar

Propósitos generales

Promover el uso de los equipos portátiles en el proceso de enseñanza y aprendizaje.

Promover el trabajo en red y colaborativo, la discusión y el intercambio entre pares, la realización en conjunto de la propuesta, la autonomía de los alumnos y el rol del docente como orientador y facilitador del trabajo.

Estimular la búsqueda y selección crítica de información proveniente de diferentes soportes, la evaluación y validación, el procesamiento, la jerarquización, la crítica y la interpretación.

Introducción a las actividades

El software de libre distribución Scilab es un programa muy bueno para conocer y experimentar con el uso de variables y practicar programación. Es un programa de cálculo numérico que trabaja con una ventana de comandos y permite, entre otras tareas, realizar operaciones con cálculos matriciales, con polinomios, operaciones con ecuaciones lineales y diferenciales, graficar funciones en 2D y 3D, y además programar sus propias funciones. En esta actividad se trabajarán algunos comandos básicos que permitirán resolver un amplio espectro de problemas físicos a través del modelado numérico.

Objetivo de las actividades

Que los alumnos aprendan el manejo de ciertos comandos básicos de programación para el software Scilab.

Actividad 1: Variables, vectores y gráficos 2D

El software Scilab funciona a través de la ejecución de comandos en una ventana o consola que se abre al seleccionar el programa en el menú de programas de su sistema operativo. La forma de trabajo consiste en escribir una orden en la ventana de comandos para indicar al ordenador qué tarea debe realizar. Así, por ejemplo, se puede crear un vector con números enteros del 1 al 10 y asignar ese vector a una variable con un nombre que se desee, escribiendo en la consola de comandos los siguientes pasos:

-->nombre1=[1 2 3 4 5 6 7 8 9 10]

Aparecerá en la ventana de comandos lo siguiente:

 nombre1=

    1.    2.    3.    4.    5.    6.    7.    8.    9.    10. 

Si al final de la asignación se agrega un punto y coma, no se mostrará en pantalla el proceso de la asignación. Esto puede ser útil cuando se trabaja con matrices grandes, dado que el proceso de mostrar por pantalla suele utilizar un tiempo elevado del procesador.

-->nombre2=[1 4 9 16 25 36 49 64 81 100];

En todo momento se puede visualizar un valor dado en una variable poniendo el nombre de la variable y entre paréntesis el lugar en el vector que se quiere conocer. De esta manera, si se escribe: nombre1(4) en la pantalla se invocará el valor en la posición 4 del vector nombre1:

-->nombre1(4)

 ans  =

    4. 

De la misma forma se puede modificar un valor realizando la asignación del lugar deseado con el nuevo valor. Por ejemplo, si se escribe el comando:

-->nombre2(7)=1000

se modifica el lugar 7 del vector nombre2 con el valor 1000

nombre2=

    1.    4.    9.    16.    25.    36.    1000.    64.    81.    100. 

Para volver al vector anterior con los cuadrados de los primeros 10 enteros, hay que volver a cambiar el vector nombre2.

-->nombre2(7)=49

 nombre2=

    1.    4.    9.    16.    25.    36.    49.    64.    81.    100. 

Una vez que se tienen dos variables, con el comando “plot” se puede hacer un gráfico con ellas:

-->plot(nombre1,nombre2)

El comando “plot” abrirá una ventana mostrando el gráfico buscado.

Con el comando:

-->xtitle(“nombre2 vs nombre1”)

se puede agregar un título al gráfico y resulta la siguiente figura:

Trabajar en la ventana de comandos del Scilab es algo simple. Sin embargo, requiere escribir los comandos cada vez que se quieran repetir. Por eso, cuando se quiere ejecutar muchos comandos, suele ser de mayor utilidad escribirlos en un archivo de texto primero y luego leerlos y ejecutarlos desde la ventana de comandos. De esta forma será más fácil realizar pequeñas modificaciones sin tener que volver a escribir todos los comandos cada vez. Estos archivos deben tener la terminación .sce.

1. Abran un archivo de texto con el nombre Prueba1.sce.

a) Escriban allí los comandos a invocar:

nombre1=[ 1 2 3 4 5 6 7 8 9 10]

nombre2=[ 1 4 9 16 25 36 49 64 81 100];

plot(nombre1,nombre2)

b) Guarden el archivo en el directorio que deseen.

2. Abran el programa Scilab.

a) Para leer el archivo se debe cambiar el directorio en el que trabajará el Scilab. Para eso, en la ventana del programa seleccionen el menú de arriba a la derecha: Archivos (File) y luego Cambiar directorio actual (Change current directory). En ese ítem, seleccionen el directorio en el que grabaron el archivo con los comandos.

b) En el mismo menú verán el comando Ejecutar (Execute), que abrirá una ventana en el directorio que cambiaron y allí podrán seleccionar el archivo grabado. Una vez seleccionado, obtendrán el mismo resultado que si hubiesen escrito lo que tiene en el archivo comando por comando en la ventana de comandos.

3. Modifiquen el archivo “Prueba1.sce” agregando una variable nombre3 con los cubos de los primeros 10 enteros y graficando las tres variables en función de la variable nombre1:

nombre3=[1 8 27 64 125 216 343 512 729 1000];

plot(nombre1,nombre1)

plot(nombre1,nombre2)

plot(nombre1,nombre3)

a) En la ventana correspondiente a los gráficos, seleccionen el menú de arriba a la derecha: Archivos (File) y luego Copiar al portapapeles (Copy to Clipboard). En un archivo de Write de OpenOffice usen el comando “pegar” y podrán agregar este gráfico en un documento. En el mismo menú de la ventana del gráfico también pueden seleccionar Exportar a (Export to) para guardar el gráfico en distintos formatos de imágenes, entre ellos .jpg.

4. Realicen un informe en el procesador de textos de sus equipos portátiles con los comandos aprendidos, incorporando los gráficos realizados.

Actividad 2: Ciclos y condiciones

Ciclos o “loops”

La gran ayuda que puede brindar una computadora es repetir muchas veces sin “cansarse” una operación o a lo sumo una similar a la anterior según lo que el programador le indique. De esta forma, uno de los comandos de mayor importancia en la programación es el ciclo o “loop”, por medio del cual se repite una cantidad dada de veces una serie de comandos que pueden variar en función del número de repetición que se está evaluando. Por ello, los ciclos se llevan a cabo entre un valor inicial de una variable que define el ciclo y un valor dado final.

Por ejemplo, en el siguiente ciclo se mostrarán por pantalla los valores que toma la variable i, utilizada para contar el paso en el ciclo desde un valor inicial 1 hasta un valor final de 10. En cada paso, el comando a ejecutar es mostrar en la pantalla el valor que tiene la variable i. La sintaxis en Scilab para un ciclo que va desde 1 hasta 10 es la siguiente:

-->for i=1:10

-->     i

-->end

 i =

    1. 

 i =

    2. 

 i =

    3. 

 i =

    4. 

 i =

    5. 

 i =

    6. 

 i =

    7. 

 i =

    8. 

 i =

    9. 

 i =

    10.

El comando for i=1:10 se lee de la forma “Para (for) i igual 1 hasta (:) 10 realizar lo que se escribe luego, hasta que aparece el final del ciclo (end)”. Al llegar allí se aumenta el valor de i en una unidad y se vuelve a evaluar lo que está dentro del ciclo, hasta que i tome el valor final, que en este caso es el 10.

Con un ciclo se pueden construir las variables de la actividad anterior sin necesidad de escribir uno por uno los elementos de los vectores. Por ejemplo, con el siguiente ciclo se asigna en cada paso del ciclo el correspondiente elemento de cada vector:

for i=1:10

          nombre1(i)=i;

          nombre2(i)=i*i;

          nombre3(i)=i*i*i;

end

plot(nombre1,nombre3)

Condiciones

Finalmente, otra de las tareas que puede hacer muy eficientemente una computadora es comparar valores y tomar decisiones. Así, un comando importante en la programación es realizar una operación si algo es verdadero e incluso realizar una operación diferente si no es verdadero.

En Scilab, estos comandos con condiciones en programación se realizan con las expresiones:

if (si)“algo es verdadero” then (entonces) “realiza lo que acá se indica”

   elseif (sino)“realiza lo que se indica aquí”

end (finalización de la condición)

Siguiendo con las variables que se están trabajando, se pueden recorrer con un ciclo los valores que toma el vector nombre1 y pedir que el programa muestre por pantalla los valores que son mayores que 7. Como se sabe que los vectores tienen 10 elementos, se realiza un ciclo con ese número de repeticiones.

-->for i=1:10

-->     if nombre1(i)>7 then

-->               nombre1(i)

-->     end

-->end

Se obtiene el siguiente resultado en la pantalla:

 ans =

    8. 

 ans =

    9. 

 ans =

    10. 

1. Con un ciclo y una condición, muestren los valores mayores de 300 en el vector nombre3.

2. Investiguen cómo funciona el comando “modulo” en Scilab. Este comando calcula el resto de la división entre dos enteros. Así, el resto de dividir 17 por 5 es 2, por lo que el comando modulo(17,5) dará como resultado 2

a. Resuelvan cómo buscar y mostrar en cada vector los valores impares y no mostrar los pares. Ayúdense utilizando el comando modulo.

b. Encuentren los números primos menores que 100.

3. Realicen un informe sobre lo realizado que incluya un listado de los programas elaborados y los resultados obtenidos utilizando el Write de OpenOffice.

Actividad 3: Contadores y acumuladores

En programación se puede cambiar el valor de una variable utilizando el viejo valor de la variable.

Por ejemplo, si se considera una variable que sea igual a cuatro:

variable1=4;

y se quiere aumentar en 3 este valor, lo que se puede hacer es sumarle tres a cuatro y volver a guardar ese valor en la misma variable:

variable1= variable1+3;

con lo que la variable1 valdrá ahora 7.

De esta forma se pueden construir variables que permitirán, por ejemplo, contar los pasos realizados (contadores) en un ciclo simplemente aumentando en 1 su valor en cada paso del ciclo.

Además, se podrán acumular valores en un ciclo (acumuladores) utilizando una variable a la que en cada paso se le asigne el valor previo de la variable más la cantidad que se quiere acumular.

1. Con un acumulador:

a) Calculen la suma de los 100 primeros números naturales (1 al 100).

b) Calculen la suma de los cuadrados de los 20 primeros números naturales.

c) Realicen un informe sobre lo realizado, incluyendo un listado de los programas elaborados y los resultados obtenidos utilizando el Write de OpenOffice.