Está en la página 1de 13

1

Maria Fernanda Castillo ced. 4-812-634

Laboratorio 2: 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 eficiente, y
para que la forma de escribir se parezca a la de ´algebra 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
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 momento
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.

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 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).
3

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 fácilmente 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.
4

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)


5

--> A (3,2:3) ans =


8. 9.

--> A(:,3) ans = 3.


6.
9.
Así como pueden sacarse submatrices, pueden construirse matrices
grandes 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.
6

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


matrices. Cargue estas matrices en Scilab

y
7

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
elemento (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 escribió w*w, pero puede ser alguna de las siguientes cosas:
--> w’*w
--> w*w’
--> w.^2
--> norm(w)^2
8

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
9

spec(A) autovalores (y autovectores) de A


inv(A) matriz inversa de A
clear borra la memoria
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 computadora
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 ejecú telo 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 ‘abola dibujada.

Ahora tenemos 3 ventanas abiertas: la del grá fico, la principal, y la


ventana donde escribimos los comandos que vamos a guardar.
10

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 continú a, ‘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) un polinomio de grado
nueve, nada del otro mundo.
11

Ahora queremos mirar má s cerca de la raíz, 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 grafico 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


raíces? ¿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
12

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 fuéramos muy despiertos y nos diéramos
cuenta de que, en realidad, ese polinomio es la expansió n de (x− 2)9.
Entonces 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) ..
13

.*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")

También podría gustarte