Sei sulla pagina 1di 6

Elementos de Matemática Aplicada 2013 1

Laboratorio 1: Introducción a SciLab

Scilab es un lenguaje de programación y una herramienta de cálculo.


Está diseñado para hacer cuentas con matrices y vectores de manera eficien-
te, y para que la forma de escribir se parezca a la de álgebra lineal.

1. Cuentas básicas
Se pueda abrir el programa desde el ı́cono correspondiente, y se abre la
ventana de comandos, donde se puede escribir después del sı́mbolo -->
Escriba algunas cuentas, por ejemplo:

--> 3^2
--> 9*8
--> 9*(1-4/5)
--> sin(%pi/3)^2

A veces aparece otra ventana que se llama ‘Explorador de Variables’ (y


si no aparece y la quieren ver, puede abrirse desde el menú ‘Aplicaciones’).
Ahı́ se ven las variables que están almacenadas en memoria. En este momen-
to deberı́a aparecer la variable ‘ans’, que guarda el resultado de la última
cuenta.
Para acceder al valor de esta variable, alcanza con invocar su nombre
(respetando las mayúsculas y minúsculas)

--> ans + cos(%pi/3)^2

Empecemos a crear nuestras propias variables.


Vamos a crear un vector. Escriban

--> a=[1 3 5 7]

y el resultado será

a =
1. 3. 5. 7.
Elementos de Matemática Aplicada 2013 2

y en el explorador de variables aparecerá ‘a’, indicando que es un matriz


de 1x4.
Si escribimos un punto y coma ; al final de un comando, entonces
MatLab hace la cuenta, guarda el resultado en memoria, pero no lo muestra
en la pantalla (esto es útil cuando algún cálculo intermedio es una matriz
muy grande).
Escribiendo el nombre del vector, vemos su contenido. Pero también se
puede acceder a las componentes individualmente. Por ejemplo
--> a(2)
y la respuesta será
ans =
3.
Una forma de ingresar vectores largos más facilmente es indicar el valor
inicial, el incremento y el valor final
--> a=2:3:17
da por resultado
a =
2. 5. 8. 11. 14. 17.
Para ingresar vectores columna hay dos maneras: separar con punto y
coma ;
--> a = [1;2;3;4]
o transponer un vector fila
--> a = [1:4]’
en cualquiera de los dos casos obtenemos
a =
1.
2.
3.
4.
Para crear una matriz, se cargan las filas separando los números por
espacios (o por comas, también funciona) y separando una fila de la otra
por punto y coma
--> A=[1 2 3;4 5 6;7 8 9]
A =
1. 2. 3.
4. 5. 6.
7. 8. 9.
Elementos de Matemática Aplicada 2013 3

y pueden obtenerse elementos sueltos de una matriz ingresando primero la


fila y después la columna
--> A(2,3) ans =
6.
y también pedazos de la matriz (submatrices)
--> A(3,2:3) ans =
8. 9.

--> A(:,3) ans =


3.
6.
9.
Ası́ como pueden sacarse submatrices, pueden construirse matrices gran-
des pegando submatrices
--> B = [ A zeros(3,2); zeros(2,3) eye(2,2) ]

B =
1. 2. 3. 0. 0.
4. 5. 6. 0. 0.
7. 8. 9. 0. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.
NOTA IMPORTANTE: Para Scilab no es lo mismo mayúscula que
minúscula, en el explorador de variables ahora tenemos las variables a, A, B
y ans. Muchas veces los programas no funcionan porque nos confundimos
mayúsculas con minúsculas, ojo.
Ahora, a hacer cuentas. Meta las siguientes cosas a SciLab, y fı́jense si
da lo mismo que ustedes esperan.
-->v=[1 2 3]’
-->w=[2 4 6]’
-->w+v
-->v-w
-->3*w+v-1
-->sin(v)
-->w^2
-->w*w
La última falló ¿no? Para entender qué pasó, pensemos en multiplicar ma-
trices. Cargue estas matrices en MatLab
   
4 3 6 5 8 3
A= y B=
5 7 0 1 0 6
Elementos de Matemática Aplicada 2013 4

Multiplicar A*B está mal porque las dimensiones de las matrices no coinciden.
Para multiplicar las matrices, hay que trasponer alguna de las dos. Puede
ser
--> A*B’
o
--> A’*B
También puede ser que lo que quiera hacer es multiplicar elemento a ele-
mento (o multiplicar punto a punto se dice a veces). Esto puede hacerse
ası́
--> A .* B
y el resultado será
ans =
20 24 18
5 0 0
Ahora podemos ver qué pasó con el w*w. No sé qué querı́a escribir el que
escirbió w*w, pero puede ser alguna de las siguientes cosas:
--> w’*w
--> w*w’
--> w.^2
--> norm(w)^2
Escrı́balas todas en Scilab, y asegúrese de entender qué es cada una.
Nota: En Scilab, si escribimos w^2, primero intenta hacer w*w, y si falla,
entonces hace w.^2
Algunos comandos útiles
Comando Descripción
abs(a) valor absoluto de los elementos de a
sin(a) seno de los elementos de a
cos(a) coseno de los elementos de a
exp(a) devuelve eai para cada uno de los elementos de a
log(a) logaritmo natural de los elementos de a
length(a) cantidad de elementos en a
sum(a) suma de todos los elementos de a
prod(a) producto de todos los elementos de a
size(A) dimensiones de A
det(A) determinante de A
rank(A) rango de A
trace(A) traza de A
spec(A) autovalores (y autovectores) de A
inv(A) matriz inversa de A
clear borra la memoria
Elementos de Matemática Aplicada 2013 5

2. Gráficos
Para graficar en Scilab hay que hacer una tabla de valores (ya sé, va
en contra de lo que enseñamos en Análisis I, pero las computadoras hacen
cuentas sin pensar y por eso hacen tablas de valores; nosotros tenemos que
pensar para decirle a las computadoras qué cuentas hacer)
Entonces hay que tener dos vectores, uno con los valores de x y otro con
los valores de y = f (x), y darle eso al comando plot para que la compu-
tadora grafique.
Antes de seguir adelante vamos a ver una forma para ingresar varios
comandos juntos, y después poder corregirlos si hiciera falta. Abra un archivo
nuevo (usando el menú ‘Aplicaciones’→‘SciNotes’, o usando el botoncito ese
que parece una libretita).

x=-3:0.1:7
y=2*x.^2 - 5*x -2
plot(x,y)

Ahora ejecutelo con la tecla ‘F5’ o eligiendo en el menú ‘Ejecutar’ la opción


‘Guardar y ejecutar’ (antes de ejecutarlo, les hace guardar lo que escribieron
en un archivo, por si algo llega a fallar no tener que escribirlo todo de nuevo).
Después de que guarden el programita que acaban de escribir, deberı́a
aparecer una ventana nueva con una linda parábola dibujada.
Ahora tenemos 3 ventanas abiertas: la del gráfico, la principal, y la ven-
tana donde escribimos los comandos que vamos a guardar.
También pueden graficarse varias funciones simultáneamente, cerremos
la ventana del gráfico y volvamos a la ventana de SciNotes y reemplacemos
los comandos por

x= -%pi:0.1:%pi; y1= sin(x); y2=cos(x);


plot(x,y1,"--r",x,y2,"-g")

y volvamos a presionar ‘F5’.


En el comando plot fı́jense que para cada curva hay que poner los dos
vectores de las tablas de valores (aunque el de x esté repetido) y la cosa
entre comillas indica el estilo de cada curva (rayitas, raya contı́nua, ‘r’ de
rojo, ‘g’ de verde).
Ahora vamos a graficar algo un poco más feo (recuerden cerrar la ventana
del gráfico)

x=0:.1:3;
y1=(x.^9 -18*x.^8 + 144*x.^7- 672*x.^6 + 2016*x.^5 ..
- 4032*x.^4+ 5376*x.^3 - 4608*x.^2 + 2304*x - 512);
plot(x,y1)
Elementos de Matemática Aplicada 2013 6

un polinomio de grado nueve, nada del otro mundo. Ahora queremos mirar
más cerca de la raiz, ası́ que volvemos a hacer la cuenta (fı́jense que sólo
hace falta cambiar el primer renglón, y recuerden como siempre cerrar la
ventana de gráfico antes de volver a ejecutar con ‘F5’)

x=1.95:.001:2.05;
y1=(x.^9 -18*x.^8 + 144*x.^7- 672*x.^6 + 2016*x.^5 ..
- 4032*x.^4+ 5376*x.^3 - 4608*x.^2 + 2304*x - 512);
plot(x,y1)

Bastante feo ¿no? ¿Será que este polinomio de grado 9 tiene más de 20
raices? ¿O será culpa del error de redondeo?
Ahora viene cuando nos acordamos de que nos explicaron que escribiendo
los polinomios de manera anidada se reduce el número de operaciones y por
lo tanto también el error por redondeo. Volvamos a cambiar el programa
entonces, agregando unas lı́neas con comentarios para recordar qué era cada
cosa.

x=1.95:.001:2.05;
// Calcula polinomio sin anidar
y1=(x.^9 -18*x.^8 + 144*x.^7- 672*x.^6 + 2016*x.^5 ..
- 4032*x.^4+ 5376*x.^3 - 4608*x.^2 + 2304*x - 512);
// Calcula el polinomio de manera anidada
y2=-512+(2304+(-4608+(5376+(-4032+(2016+(-672+(144+(-18+x) ..
.*x).*x).*x).*x).*x).*x).*x).*x;
// Grafica los dos
plot(x,y1,"--g",x,y2,"r")

Mejoró un poco, ¿no? Cuantas menos cuentas haya que hacer, menor será el
error de redondeo. Podrı́a ser que fueramos muy despiertos y nos dieramos
cuenta de que, en realidad, ese polinomio es la expansión de (x − 2)9 . En-
tonces el error se puede achicar muchı́simo, agregamos entonces los últimos
detalles a nuestro programa

x=1.95:.001:2.05;
// Calcula polinomio sin anidar
y1=(x.^9 -18*x.^8 + 144*x.^7- 672*x.^6 + 2016*x.^5 ..
- 4032*x.^4+ 5376*x.^3 - 4608*x.^2 + 2304*x - 512);
// Calcula el polinomio de manera anidada
y2=-512+(2304+(-4608+(5376+(-4032+(2016+(-672+(144+(-18+x) ..
.*x).*x).*x).*x).*x).*x).*x).*x;
// Calcula el polinomio factorizado
y3=(x-2).^9;
// Grafica los dos
plot(x,y1,"--g",x,y2,"r",x,y3,"b")

Potrebbero piacerti anche