Вы находитесь на странице: 1из 23

MODO CONSOLA

ASPECTOS GENERALES
Modo consola
En el modo bsico de funcionamiento de Scilab, se lo puede utilizar como si se tratara de una calculadora
cientfica, escribiendo las expresiones matemticas y obteniendo los resultados de las mismas en forma
inmediata. Este es el llamado modo consola.
El modo consola de Scilab est soportado a travs de un editor de lnea, esto significa que el usuario no se
puede desplazar libremente por la pantalla,
pantalla como por ejemplo cuando se utiliza un procesador de textos.
textos Slo se
puede escribir a continuacin del denominado prompt

que est compuesto por los caracteres -->.

Las teclas
de cursor derecha e izquierda permite el desplazamiento sobre la lnea que est siendo escrita para poder hacer
correcciones, mientras que las teclas arriba y abajo permiten acceder a las lneas previamente escritas, ya sea
para utilizarlas nuevamente tal cual estn o previa modificacin,
modificacin, algo muy til cuando se quiere repetir un clculo
ya hecho.
Nombre de variables
En Scilab los nombres de las variables deben responder a las siguientes reglas:
1- Pueden estar formadoss por caracteres alfanumricos (letras y nmeros), pero las letras deben ser las
correspondientes al alfabeto ingls (no se pueden utilizar , acentos, etc.).
Nombres vlidos: velocidad,
velocidad altura.
Nombres no validos: dimetro,
dimetro ao.
2- Los nombres deben comenzar con un carcter alfabtico; es decir, deben comenzar con una letra.
Nombres vlidos: fuerza1,, giro2.
Nombres no vlidos: 1presion,
1presion 2volumen.
3- Scilab hace diferencia entre maysculas y minsculas, por lo que las variables radio y Radio son
distintas.
4- No se pueden utilizar espacios, pero s es posible usar el guin bajo _. As por ejemplo,
ejemplo no es vlido el
nombre radio 1,, pero s se puede usar radio_1.
Se recomienda no utilizar la diferencia entre maysculas y minsculas para representar dos variables distintas,
de esta manera es preferible trabajar con las variables r_menor y r_mayor,, que con las variables llamadas
radio y Radio.. Esto se debe a que un error de escritura; por ejemplo, escribir radio en lugar de Radio, va a
producir resultados incorrectos de muy difcil correccin.
Operaciones y precedencia
En Scilab se pueden realizar todas las operaciones matemticas habituales, tales como:
Operacin
Potenciacin
1
Radicacin
Multiplicacin
Divisin
Adicin
Sustraccin

Simbologa
^
^
*
/
+
-

Ejemplo
2^3 = 8
16^(1/4)=2
3*4 = 12
12/6 = 2
4+6=10
8-5=3

Como se explicar ms adelante, el exponente debe estar entre parntesis, ya que la potenciacin tiene prioridad sobre el cociente.

Ing. Juan E. Nez Mc Leod

Pgina 1 de 23

Las expresiones matemticas se resuelven con las mismas prioridades utilizadas en una calculadora cientfica.
Primero
rimero se calculan los parntesis, luego las potencias y races, luego los productos y cocientes, y finalmente las
sumas y restas. Si hay operaciones
ones de igual prioridad se resuelven de izquierda a derecha.
Los parntesis son utilizados para cambiar las prioridades de clculo, ya que los mismos son los primeros en ser
evaluados. As por ejemplo, la expresin 10/2+3 da como resultado 8,, mientras que 10/(2+3) da como
resultado 2. Debido a que la radicacin se resuelve como potencia de exponente fraccionario, el exponente debe
ser colocado entre parntesis, de esta manera es calculado antes que la potencia. Por ejemplo: 9^(1/2), se
calcula
a primero el exponente, que resulta igual a 0.5,, y luego se evala la potencia 9^0.5 que resulta igual a 3.
Si no fuera por la presencia del parntesis, quedara 9^1/2,, y en tal caso se calcula primero la potencia 9^1 y
luego el resultado se dividira por 2 dando finalmente 4.5.
En un clculo como -1^2 Scilab interpreta el signo -
como smbolo de sustraccin, por lo tanto tiene menor
prioridad que la potencia, dando como resultado final el valor -1.. Para evitar este problema se deben usar
parntesis, escribiendo (-1)^2,, en cuyo caso se obtiene el valor 1 como respuesta.
Como se ver ms adelante, Scilab maneja tanto el lgebra como el anlisis complejo, por lo que es posible
calcular races de ndice
ce par y radicandos negativos. As por ejemplo, si se desea calcular la raz cuadrada de -1,
y teniendo en cuenta la discusin previa, se puede escribir:
escribir
-->(-1)^(1/2)
ans =
6.123D-17 + i
Se observa que el resultado obtenido no es el esperado, pero analizndolo se aprecia que la parte real es
prcticamente nula, comparada con la parte imaginaria, por lo que se puede considerar como una aproximacin
del valor correcto.
Estos errores de clculo, que dan resultados aproximados y no los correctos, son comunes en cualquier
computadora y en general no constituyen un problema. S
S se debe tener en cuenta que Scilab ofrece funciones
que permiten realizar ciertos clculos
clculo de manera ms precisa; as por ejemplo, para calcular races cuadradas se
tiene la funcin llamada sqrt,, por lo que para obtener la raz cuadrada de -1 se puede escribir:
escribir
-->sqrt(-1)
ans =
i
Obteniendo
bteniendo como resultado el valor correcto i.
Como conclusin se puede decir que si Scilab tiene una funcin de clculo especfico, sta debe ser utilizada ya
que no solo se obtiene una mejor precisin en los resultados,, sino tambin se consume menos tiempo de
procesador.
Se puede mencionar como otro ejemplo el caso del clculo de exponenciales del tipo
, para las cuales
Scilab incorpora una funcin especfica llamada exp.. De esta manera si se desea calcular el valor de
se
puede escribir la siguiente instruccin:
-->exp(2)
ans =
7.3890561
Se insiste en la necesidad de utilizar las instrucciones especficas de clculo, en la medida que Scilab las
incorpore, con el objeto de optimizar los tiempos de clculo y la precisin de los mismos.

Ing. Juan E. Nez Mc Leod

Pgina 2 de 23

Constantes predefinidas
Scilab define las siguientes constantes matemticas:

Nombre
%pi

Significado
Valor de la contante .

%e

Valor del nmero e, base de los logaritmos naturales.

%i

Valor de la unidad imaginaria

%inf

1.
Representa el infinito matemtico .

%t

Representa el valor lgico verdadero (true).

%f

Representa el valor lgico false (false).


Indic que la expresin matemtica no es calculable
Indica
(
(not
a number)

%nan

As por ejemplo si se escribe %pi y se presiona la tecla Enter, Scilab responde con la siguiente informacin:
-->%pi
%pi =
3.1415927
La primera lnea est compuesta por el prompt -->,, el cual no debe ser escrito, solamente se debe ingresar el
texto %pi para luego presionar la tecla Enter, momento en el cual Scilab responde mostrando
most
las dos lneas
siguientes, que constituyen el resultado de la operacin.
Tipos de datos
Los tipos de datos bsicos que maneja Scilab son los siguientes:
-

Datos numricos: que pueden ser tanto valores reales como complejos .
Cadenas de caracteres: que corresponden a todo
todo tipo de textos, los cuales deben estar encerrados entre
4
comillas dobles o simples (apstrofes) , para que Scilab no las confunda con nombres de variables.
Datos booleanos: son todos aquellos datos que se pueden expresar en trminos de verdadero o falso.
Por ejemplo: la variable x es igual a 5?

Notacin cientfica
La representacin de valores en notacin cientfica,
cientfica, tambin llamada notacin de punto flotante, es muy comn
en ingeniera.. Es de gran utilidad tanto para representar nmeros muy grandes como muy pequeos, en un
formato muy reducido. As por ejemplo:

Descripcin
Masa del electrn
Masa de la Tierra

Notacin cientfica
-31

9.11 x 10

Notacin de punto fijo

kg

0.000000000000000000000000000000911 kg

5.9722 x 10 kg

5972200000000000000000000
00000000000000000000 kg

24

Es importante notar que todos los nombres de constantes de Scilab estn precedidas por el signo %.
Scilab no solo maneja el lgebra de nmero complejos, sino tambin el anlisis matemtico con dicho nmeros. De esta manera se
s pueden
calcular funciones con argumento complejo.
4
El apstrofe no se debe confundir con los acentos graves y agudos. El apstrofe o comilla simple se ubica generalmente en la tecla
inmediatamente a la derecha del 0 (cero) junto con el signo de cierre de interrogacin ?.
3

Ing. Juan E. Nez Mc Leod

Pgina 3 de 23

Las partes constitutivas de la notacin cientfica son:


son la mantisa, la base y el exponente. As por ejemplo, si se
-5
tiene el valor 1.58 x 10 sus distintas partes son:
-

Mantisa: 1.58
Base: 10
Exponente: -5

Tal como se observa a continuacin:

Si bien en ingeniera la base 10 es el valor por defecto, en informtica los microprocesadores utilizan la base 2
para representar nmeros en notacin cientfica, aunque esto es totalmente transparente al usuario.
Para representar esta notacin en una computadora, se escribe primero la mantisa, luego la letra d o la letra e (la
cual representa la base 10 y se puede escribir en mayscula o minscula)
minscula) y finalmente el exponente, todo lo
dicho sin dejar espacios intermedios
dios y cada elemento, ya sea mantisa o exponente, con su correspondiente
signo, el cual puede ser omitido si es positivo.
De esta manera en el ejemplo anterior se debe escribir: 1.58d-5. Del mismo modo,
modo la masa del electrn se
representa como 9.11d-31 y la
a masa de la Tierra es 5.9722d24.
En lugar de utilizar notacin cientfica, se puede caer en la tentacin de escribir el valor correspondiente de la
siguiente manera:
-->5.9722*10^24
ans =
5.972D+24
Si bien el resultado es el correcto, no es conveniente utilizar este mtodo ya que Scilab debe resolver la
expresin matemtica para obtener el resultado, desperdiciando tiempo de cmputo del microprocesador, por lo
que este mtodo es ineficiente y por lo tanto no es recomendable.
Especificacin del formato numrico en pantalla
Por defecto Scilab escribe las cantidades numricas en campos de 10 caracteres de tamao; es decir, que se
5
utiliza un mximo de 10 posiciones para representar dgitos, signos y punto decimal.
Si esta forma de representacin
in no es adecuada, la
l funcin format permite indicarle a Scilab el formato con el
cual debe mostrar los valores numricos en pantalla.
Esta funcin tiene dos argumentos: el primero indica si se debe utilizar notacin de punto fijo (en lgebra llamada
notacin decimal, representado por v) o punto flotante (en lgebra llamada notacin cientfica,
cientfica representado
6
por e)) y el segundo indica la cantidad mxima de dgitos a escribir . En la siguiente tabla se pueden analizar
distintos ejemplos:

5
6

Slo es representado visualmente el signo negativo. En caso del signo positivo Scilab deja un espacio en blanco.
Un lugar se reserva para el signo del nmero y otro para el punto decimal.

Ing. Juan E. Nez Mc Leod

Pgina 4 de 23

Instruccin
format(v,8)
ormat(v,8)
format(v,5)
ormat(v,5)
format(e,10)
ormat(e,10)
format(e,15)

Clculo
1/3
-1/8
4^10
-5.2^10

Resultado en pantalla
0.33333
-0.12
1.049D+06
-1.44555106D+07
1.44555106D+07

Se debe tener presente que la funcin format afecta a la representacin de los valores numricos en pantalla,
no a la precisin con que dichos valores son almacenados, ya que Scilab los calcula y almacena con la mxima
precisin disponible.
Precisin numrica de una computadora
En la matemtica formal
rmal existen valores numricos que tienen infinitos dgitos, tal es el caso de 2, , que
constituyen ejemplos clsicos de nmeros irracionales y otros como 1/3 que si bien son nmero racionales, pero
no tienen una representacin decimal finita, son los llamados nmeros peridicos.
Las cantidades numricas son almacenadas en formato decimal y la
l memoria de las computadoras es finita, por
lo que es imposible almacenar este tipo de nmeros,
nmeros por lo tanto las computadoras almacenan una cantidad finita
de dgitos, que por lo general son entre 14 y 16. Esto se puede comprobar fcilmente en Scilab mediante la
instruccin format(v,25),, la cual solicita 25 espacios para la representacin decimal (es el mximo valor
admitido por esta funcin),, lo que equivale a 23 dgitos un vez restados los lugares reservados para el punto
decimal y el signo.
Si a continuacin se escribe 1/3, el resultado que se ver en pantalla ser:
-->1/3
ans =
0.3333333333333333148296
Como se observa, los primero 16 dgitos
dgitos son correctos y despus aparecen valores que responden a un
resultado artificial, al exigirle a la computadora que muestre una cantidad de dgitos que exceden su precisin
intrnseca (la precisin del procesador numrico del microprocesador).
-16

Si se desea sumar 1 + 10

el resultado obtenido ser el siguiente:

-->1+1d-16
ans =
1.
Analizando el resultado se observa que el clculo est por fuera de la precisin numrica de la computadora, ya
-15
que le exige al microprocesador trabajar con 17 dgitos.
dgitos Por otro lado, sii se hace el clculo 1 + 10 , el resultado
ser:
-->1+1d-15
ans =
1.000000000000001110223
Se observa que si bien el resultado es correcto hasta el decimal 15, luego sigue una serie de valores residuales
provenientes de las limitaciones numricas del microprocesador.
Si bien, en este texto, se ha hecho una discusin muy somera sobre la precisin numrica en una computadora,
se advierte al lector que este tema es mucho ms amplio, y es algo que el ingeniero debe conocer, ya que en
determinadas circunstancias se pueden
puede producir problemas de precisin numrica graves; es decir, se tienen los
lo
modelos matemticos correctos y los datos son correctos, pero los resultados son incorrectos debido a las
limitaciones tecnolgicas de las computadoras.

Ing. Juan E. Nez Mc Leod

Pgina 5 de 23

VECTORES Y MATRICES
La informacin numrica manejada por Scilab es almacenada en forma de escalares y matrices, siendo un caso
particular de estas ltimas los vectores fila y columna.
Declaracin
La primera operacin que se debe aprender es cmo definir o ingresar matrices. Sea por ejemplo, un sistema de
ecuaciones lineales como el que se da a continuacin:
2
2

3
6

2
2

4
10
11

Desde el punto de vista matricial, este sistema est definido por la matriz de los coeficientes
coefici
A, la matriz de los
trminos independientes B y la matriz de las incgnitas X,, tal cual se observa a continuacin:
.
En donde cada matriz est definida de la siguiente manera:
2
2
1

3
6
1

2
2 ;
1

4
10 ;
11

;
7

La matriz A se puede definir en Scilab de acuerdo a las instrucciones dadas a continuacin :


1- Escribir
A=[2 -3 2;-2 6 -2;1 -1 -1] y presionar la tecla Enter.
2- Escribir
A=[2,-3,2;-2,6,
,6,-2;1,-1,-1] y presionar la tecla Enter.
3- Escribir
A=[2 -3 2 presionar la tecla Enter y luego escribir,
-2 6 -2 presionar Enter
Ent y terminar escribiendo,
1 -1 -1] y presionar Enter nuevamente.
En todos los casos la matriz comienza con un corchete izquierdo y termina con un corchete derecho. En los dos
primeros casos se observa como una matriz se puede ingresar en una sola lnea, separando los elementos de
cada fila por espacios (primer caso) o con comas (segundo caso). El punto y coma sirve para separar las distintas
filas de la matriz. En el tercer caso,
caso cada fila de la matriz se escribe en una nueva lnea, ac no es necesario
escribir el punto y coma. En este ltimo caso cuando se escribe el corchete derecho,
derecho Scilab interpreta que
termin el ingreso de la matriz.
Sin importar cul de los mtodos se utilice, en el momento de terminar el ingreso y presionar la tecla Enter, Scilab
muestra el resultado para poder revisar que todo est en orden, tal como se muestra a continuacin:
A

=
2.
- 2.
1.

- 3.
6.
- 1.

2.
- 2.
- 1.

Si el resultado no se corresponde con el esperado, se debe proceder a ingresar nuevamente la matriz, ya sea
escribiendo todo de nuevo o utilizando las flechas del cursor arriba y abajo para corregir el error cometido.

Se dan tres posibles formas, el lector debe probarlas y adoptar la que le parezca ms sencilla o con la que se sienta ms cmodo.

Ing. Juan E. Nez Mc Leod

Pgina 6 de 23

Siguiendo el primer mtodo, para ingresar la matriz B se escribe B. Obsrvese que de esta manera queda
definido un vector columna (tres filas y una columna), pero si se escribiera B=[-4
4 10 -11] se define un vector
fila (una fila y tres columnas). Desde el punto de vista del lgebra de matrices una es la traspuesta de la otra y se
debe utilizar la que corresponda en cada caso;
caso es decir, no son intercambiables.
Para resolver el sistema de ecuaciones se debe
deb hacer el clculo
. , que significa multiplicar la matriz
inversa de A por la matriz B.. Para hacer esto en Scilab se escribe X=inv(A)*B, donde la funcin inv() calcula
la matriz inversa del argumento, el cual debe ser una matriz cuadrada. El resultado obtenido es el siguiente:
siguiente
-->X=inv(A)*B
X =
- 4.
2.
5.
Adems de lo visto, hay tres formas adicionales para definir vectores fila:
1- Indicando el valor inicial, el incremento y el valor final. As si se desea definir un vector cuyos valores
vayan de 0 a 10, yendo de 0.5 en 0.5, se puede escribir x=[0:0.5:10] y presionar la tecla Enter. El
resultado que se obtiene es el siguiente:
-->x=[0:0.5:10]
x =
column 1 to 11
0.
0.5
1.
1.5
column 12 to 21
5.5
6.
6.5
7.

2.
7.5

2.5
8.

3.

3.5

8.5

9.

4.
9.5

4.5

5.

10.

La forma particular en que se muestra la informacin


informacin en este caso se debe a la falta de espacio
esp
en la
ventana de la consola de Scilab para mostrar la fila completa,
a, por lo que se observa primero desde la
columna 1 a la 11 y a continuacin de la 12 a la 21.
2- La otra posibilidad
ad es indicar el valor inicial, el valor final y la cantidad de valores deseados, pero en este
caso se debe utilizar una funcin especfica. Por ejemplo,
ejemplo se desea un vector que comience en
e 0 y
termine en 36,, pero que contenga 10 valores, para lo cual se debe escribir x=linspace(0,36,10), y
es resultado es el siguiente:
--> x=linspace(0,36,10)
x=linspace(0,36,10
x =
0.

4.

8.

12.

16.

20.

24.

28.

32.

36.

Estos valores constituyen una distribucin que se denomina lineal, ya que la diferencia entre dos valores
contiguos cualesquiera es constante.
3- La ltima opcin es similar a la anterior, sin embargo los valores iniciales y finales son los exponentes de
potencias de base 10, de esta manera se logra una distribucin logartmica, tal cual se ve en el siguiente
ejemplo:
-->x=logspace(2,6,5)
x =
100.

1000.

10000.

100000.

1000000.

Para observar mejor el resultado, se expresarn los valores en notacin cientfica, segn muestran las
siguientes instrucciones:

Ing. Juan E. Nez Mc Leod

Pgina 7 de 23

-->format("e",9)
-->x=logspace(2,6,5)
x

=
1.00D+02

1.00D+03

1.00D+04

1.00D+05

1.00D+06

Esta distribucin se denomina logartmica ya que la diferencia entre los logaritmos de dos valores
consecutivos cualesquiera se mantiene constante.
Uso de las distribuciones lineales
es y logartmicas
Como se discuti anteriormente, la funcin linspace permite obtener un conjunto de valores espaciados
linealmente, ya que la diferencia entre dos valores consecutivos es constante, as por ejemplo en la siguiente
serie de valores dicha diferencia es de 10:
0, 10, 20, 30, 40, ...
Sin
in embargo, en ingeniera es muy comn la necesidad de utilizar espaciados logartmicos,
logartmico por ejemplo para
trabajar con concentraciones de hidrogeniones, nmeros
n
de Reynolds, etc.
c. En estos casos se tiene un rango muy
-14
amplio de valores; as en el caso de hidrogeniones se puede ir de concentraciones de 10
1
hasta 1 mol/litro,
8
habiendo una diferencia de 14 rdenes de magnitud entre los dos valores , mientras que para el caso del nmero
de Reynolds el mismo puede ir desde valores muy bajos como algunas decenas y llegar a valores muy altos, que
en algunos casos
os pueden superar el milln, habiendo en este caso 5 rdenes de magnitud de diferencia. Cuando
se habla de un conjunto de valores
res con espaciado logartmico significa que la diferencia de los logaritmos de dos
valores consecutivos es constante.
Sea la siguiente serie de valores:
102, 104, 106, 108, ...
Los logaritmos decimales de cada uno de dichos valores son:
2, 4, 6, 8, ...
Siendo la diferencia entre dos valores consecutivos igual a 2 en todos los casos, lo que indica un espaciado
logartmico.
En un curso de anlisis matemtico, donde se estudian las caractersticas y propiedades de las funciones, es
normal graficar las mismas con escalas lineales, ya que se busca representar slo una porcin,
porci para analizar
visualmente
e los extremos relativos, periodicidad, pendiente, positividad, negatividad, etc. En ingeniera, la
situacin es distinta, ya que se desean graficar expresiones
expresiones funcionales, con el objeto de permitir conocer el valor
de la variable dependiente conociendo el valor de la independiente.
Para comprender la necesidad de utilizar ejes logartmicos
logartmicos se ver el siguiente ejemplo:
Con el objeto de calcular la cada de presin en una tubera, es necesario conocer el valor del coeficiente de
friccin denominado Fanning, el cual depende del nmero de Reynolds exclusivamente para el caso de tubos
lisos.
En las siguientes figuras se ha representado
represent
el valor del Fanning vs Re para un Reynolds que va desde 100 a un
milln. En la primera imagen el eje de abscisas es lineal y en la segunda es logartmico, y en ambos casos el eje
de ordenadas es lineal.

El orden de magnitud es el valor del exponente al representar la cantidad en notacin cientfica; as por ejemplo, el valor 2 y el valor 2000
difieren en tres rdenes de magnitud.

Ing. Juan E. Nez Mc Leod

Pgina 8 de 23

Fig.1 . Representacin del Fanning vs Reynolds para tubos lisos con escalas lineales en ambos ejes.

Fig. 2.. Representacin del Fanning vs Reynolds para tubos lisos con escala logartmica en el eje de abscisas y lineal en el de ordenadas.
ordenadas

Ing. Juan E. Nez Mc Leod

Pgina 9 de 23

Si se desea conocer el valor del Fanning para un Reynolds de un milln, no es difcil encontrar que el mismo vale
alrededor de 0.0025 sin importar el grfico utilizado. Sin embargo, si el valor del Reynolds es de 10000, el grfico
9
lineal da un valor que puede
ede ir desde 0.008 hasta 0.0114
0.011 , mientras que en la representacin logartmica es fcil
f
leer un valor de Fanning cercano a 0.008. Siguiendo con la lectura de valores, para un Reynolds de 1000, es
imposible determinar el Fanning con la escala lineal; sin embargo,
mbargo, la lectura es fcil en la escala logartmica,
dando un valor alrededor de 0.014.
Otra forma de ver la bondad del espaciado logartmico es para el caso de querer representar las concentraciones
-14
de hidrogeniones desde 10 hasta 1 mol/l. Al utilizar un espaciado lineal el resultado es el siguiente (ntese que
Scilab selecciona automticamente la notacin cientfica al tratarse de nmeros muy pequeos o muy grandes):
grandes)
-->x=linspace(1d-14,1,15)
x =
column 1 to 5
1.000D-14
14
0.0714286
column
0.3571429

0.1428571

6 to 11
0.4285714

0.5

column 12 to 15
0.7857143
0.8571429

0.2142857

0.5714286

0.9285714

0.2857143

0.6428571

0.7142857

1.
-14

Como se observa el resultado no representa lo que se busca, una distribucin homognea desde 10
1
en su lugar, la mayora de los valores (en trminos relativos) se aproximan a 1.

hasta 1,

Utilizando la funcin logspace,, se logra un espaciado logartmico el cual se traduce en una distribucin de
valores ms homognea en el rango de concentraciones requerida.
-->x=logspace(-14,0,15)
x =
column 1 to 5
1.000D-14
1.000D-13
13
column
1.000D-09

6 to 11
1.000D-08
08

column 12 to 15
0.001
0.01
0.1

1.000D
1.000D-12

1.000D-11

1.000D 07
1.000D-07

0.000001

1.000D-10

0.00001

0.0001

1.

Analizando el resultado es clara la distribucin pareja de valores.


valores. Para lograr esto se debe tener en cuenta que
10
los argumentos de logspace son la potencia inicial, la potencia final y la cantidad de valores.
Evitar el eco a pantalla
Como se ha visto, cada vez que se escribe alguna instruccin y se presiona la tecla Enter, Scilab muestra en
pantalla el resultado correspondiente, esto es lo que se llama un eco. Este fenmeno es muy til para conocer los
resultados a medida que se va calculando;
calculando; sin embargo, en otros casos puede resultar innecesario o incluso
tedioso: imagnese el caso de generar un vector con la funcin linspace de 1000 elementos.
En caso que no se desee que se produzca un eco en pantalla, se debe escribir un punto y coma
co
al final de la
instruccin correspondiente, como se ve a continuacin, donde una vez que se presiona Enter Scilab ejecuta la
instruccin, no enva informacin a la pantalla y muestra nuevamente el prompt para la siguiente instruccin.
-->x=linspace(1,50,1000);
-->
9

La incertidumbre
idumbre se debe a la elevada pendiente de la curva en las cercanas del origen de coordenadas.
Teniendo en cuenta que se representan dichos valores en notacin cientfica.

10

Ing. Juan E. Nez Mc Leod

Pgina 10 de 23

Si aparece el prompt nicamente, sin ninguna informacin adicional, significa que la operacin fue realizada con
xito, ya que de lo contrario Scilab mostrar un mensaje de error, como se observa en la siguiente secuencia de
clculos.
-->x=0;
-->y=1/x;
!--error 27
Divisin por cero...
-->
Acceso a elementos individuales de una matriz
Sean las matrices A y B declaradas anteriormente, en donde A es una matriz cuadrada de 3 x 3 y B es un vector
columna de 3 x 1, tal cual se reproduce a continuacin:
2
2
1

3
6
1

4
10
11

2
2 ;
1

Para acceder a los elementos individuales de una matriz se escribe por ejemplo A(i,j) o B(i,1), donde i es la
fila y j la columna del elemento deseado,
deseado obsrvese que en el caso de la matriz B, como columna slo es posible
colocar el nmero uno.
As por ejemplo, para conocer el elemento de la primera fila y la primera columna, se escribe:
-->A(1,1)
ans =
2.
Mientras que si se desean trabajar con el elemento de la segunda fila de la matriz B,, se escribe:
-->B(2,1)
ans =
10.
En el caso particular de vectores fila o columna, al ser una de las dimensiones fija, Scilab nos permite obviarla y
escribir nicamente la dimensin que cambia,
cambia sin importar si es la fila o la columna,, en el caso anterior se podra
escribir:
-->B(2)
ans =
10.
Acceso a submatrices
Se ver a continuacin la forma de acceder a varios elementos a la vez. Sea la matriz A definida anteriormente:
2
2
1

3
6
1

2
2
1

Se puede acceder a una columna completa de la misma mediante una instruccin como la siguiente,
siguiente obteniendo
como resultado la segunda columna completa:
completa

Ing. Juan E. Nez Mc Leod

Pgina 11 de 23

-->A(:,2)
ans =
- 3.
6.
- 1.
De la misma manera se puede obtener la tercera fila completa escribiendo la siguiente instruccin:
-->A(3,:)
ans =
1.

- 1.

- 1.

Finalmente se podra escribir


cribir la siguiente instruccin, que nos devuelve la submatriz compuesta por los
elementos ubicados en la primera y segunda filas, y en la segunda y tercera columnas.
-->A(1:2,2:3)
ans =
- 3.
6.

2.
- 2.

Matrices caractersticas
Existe una serie de matrices que son caractersticas, que si bien se pueden definir con las tcnicas vistas
anteriormente, se dispone de funciones especficas para facilitar esta tarea.
Si se desea obtener una matriz unitaria de 4 x 4 se puede escribir A=eye(4,4),, obteniendo como resultado lo
siguiente:
A

=
1.
0.
0.
0.

0.
1.
0.
0.

0.
0.
1.
0.

0.
0.
0.
1.

Si se desea obtener una matriz nula de 4 x 4 se puede escribir A=zeros(4,4),, obteniendo como resultado lo
siguiente:
A

=
0.
.
0.
0.
0.

0.
0.
.
0.
0.

0.
0.
0.
.
0.

0.
0.
0.
0.

Si se desea obtener una matriz cuyos elementos sean todos uno, de 4 x 4,


4 se puede escribir A=ones(4,4),
obteniendo como resultado lo siguiente:
A

=
1.
1.
1.
1.

1.
1.
1.
1.

1.
.
1.
.
1.
.
1.
.

1.
1.
1.
1.

Existen otras funciones para realizar operaciones con matrices que se detallan en la siguiente tabla.

Ing. Juan E. Nez Mc Leod

Pgina 12 de 23

Funcin
A

11

Descripcin
Devuelve la matriz traspuesta de A.

diag(A)

Devuelve un vector con la diagonal principal de la matriz A.

tril(A)

Devuelve la matriz triangular inferior de A.

triu(A)

det(A)

Devuelve la matriz triangular superior de A.


Devuelve un valor escalar que equivale al producto de todos los
elementos de la matriz A.
Devuelve un valor escalar que equivale a la suma de todos los
elementos de la matriz A.
Calcula el valor del determinante de la matriz A.

inv(A)

Calcula la matriz inversa de A.

norm(x)

Calcula el mdulo del vector x (norma euclideana).

size(A)

Devuelve un vector con la cantidad de filas y columnas de la matriz A.

length(A)

Devuelve la cantidad total de elementos de la matriz A.

prod(A)
sum(A)

FUNCIONES MATEMTICAS
En la siguiente tabla se presenta una lista de las funciones matemticas ms comunes, hacindose mencin de
las caractersticas de cada una de ellas. Se aclara que no es una lista exhaustiva y se debe recordar que los
argumentos de las funciones pueden ser matrices, no solo escalares. Tambin siempre se debe recordar que
Scilab diferencia entre maysculas y minsculas, por lo que si se desea calcular el seno de un ngulo la
expresin correcta es sin(x),, por el contrario Sin(x) o SIN(x),, dar el error Variable indefinida.

Funcin
sin(x)
sind(x)
sinh(x)
asin(x)
asind(x)
asinh(x)
cos(x)
cosd(x)
cosh(x)
acos(x)
acosd(x)
acosh(x)
tan(x)
tand(x)
tanh(x)
atan(x)
atand(x)
atanh(x)
sec(x)
secd(x)
sech(x)
11

Descripcin
Seno del ngulo x expresado en radianes.
Seno del ngulo x expresado en grados sexagesimales.
Seno hiperblico de x.
Arcoseno
seno de x, el resultado estar en radianes.
Arcoseno de x, el resultado estar en grados sexagesimales.
Funcin inversa del seno hiperblico de x.
Coseno del ngulo x expresado en radianes.
Coseno del ngulo x expresado en grados sexagesimales.
Coseno hiperblico de x.
Arcocoseno de x, el resultado estar en radianes.
Arcocoseno de x, el resultado estar en grados sexagesimales.
Funcin inversa del coseno hiperblico de x.
Tangente del ngulo x expresado en radianes.
Tangente del ngulo x expresado en grados sexagesimales.
Tangente hiperblica de x.
Arcotangente de x, el resultado estar en radianes.
Arcotangente de x, el resultado estar en grados sexagesimales.
Funcin inversa de la tangente hiperblica de x.
Secante del ngulo x expresado en radianes.
Secante del ngulo x expresado en grados sexagesimales.
Secante hiperblica de x.

El smbolo a utilizar es el apstrofe, no se debe confundir con los acentos graves o agudos.

Ing. Juan E. Nez Mc Leod

Pgina 13 de 23

Funcin
asec(x)
asecd(x)
asech(x)
csc(x)
cscd(x)
csch(x)
acsc(x)
acscd(x)
acsch(x)
cotg(x)
cotd(x)
coth(x)
acot(x)
acotd(x)
acoth(x)
log(x)
log10(x)
exp(x)
sqrt(x)
abs(x)

Descripcin
Arcosecante de x, el resultado estar en radianes.
Arcosecante de x, el resultado estar en grados sexagesimales.
Funcin inversa de la secante hiperblica de x.
Cosecante del ngulo x expresado en radianes.
Cosecante del ngulo x expresado en grados sexagesimales.
Cosecante hiperblica de x.
Arcocosecante de x, el resultado estar en radianes.
Arcocosecante de x, el resultado estar en grados sexagesimales.
Funcin inversa de la cosecante hiperblica de x.
Cotangente del ngulo x expresado en radianes.
Cotangente del ngulo x expresado en grados sexagesimales.
Cotangente hiperblica de x.
Arcocotangente de x, el resultado estar en radianes.
Arcocotangente de x, el resultado estar en grados sexagesimales.
Funcin inversa de la cotangente hiperblica de x.
Logaritmo natural de x.
Logaritmo en base 10 de x.
Calcula el antilogaritmo natural de x.
Calcula la raz cuadrada de x.
Calcula el valor absoluto de x.

FUNCIONES DE MANEJO DE NMEROS COMPLEJOS


Se detalla a continuacin un conjunto de funciones especficas para aplicar a nmeros complejos.
complejos Si bien en el
actual curso no se estima utilizar este conjunto numrico;
num
sin embargo, es necesario indicar que el conjunto de
los nmeros complejos, junto con sus funciones, tienen gran aplicacin en el campo de la ingeniera.

Funcin
complex(x,y)
real(z)
imag(z)
isreal(z)
conj(z)

Descripcin
Crea el nmero
n
complejo x + i y, donde
onde los argumentos x e y,
y de
ser matrices,
matrices tienen que tener las mismas dimensiones y ser
nmeros reales.
reales
Devuelve la parte real del nmero complejo z.
Devuelve la parte imaginaria del nmero complejo z..
Devuelve verdadero (%t) si el argumento z es un nmero real, de
lo contrario devuelve falso (%f).
Devuelve el complejo conjugado de z

Es importante mencionar que todas las funciones matemticas mencionadas anteriormente trabajan en el campo
de los nmeros complejos. De esta manera se pueden calcular races de ndices pares y radicandos negativos,
logaritmos negativos, etc. Por otro lado estas funciones tambin admiten argumentos complejos. A modo de
ejemplo se pueden ver los siguientes clculos:
clc
-->sqrt(-4)
ans =
2.i
-->log(-1)
ans =
3.1415927i
-->z=1+%i
Ing. Juan E. Nez Mc Leod

Pgina 14 de 23

=
1. + i

-->sin(z)
ans =
1.2984576 + 0.6349639i
POLINOMIOS
Declaracin
Desde el punto de vista algebraico,, un polinomio puede ser expresado ya sea a travs de sus coeficientes o de
sus races, de esta manera un polinomio de tercer grado tiene las dos representaciones que se dan a
continuacin:
!"

"

!" %

!&

' (%

' (%

'" (

Siendo !# los coeficientes del polinomio y '# las races del mismo. Es importante destacar que en el caso de
utilizar la forma factorizada, la misma debe estar multiplicada por el coeficiente del trmino de mayor grado, que
en el caso del ejemplo es !" .
Sea por ejemplo el siguiente polinomio:
$%% (

"

1(%

2(%

3((

Para definir este polinomio en Scilab,


Scilab se puede recurrir a cualquiera de los mtodos siguientes:
1- Haciendo uso de los coeficientes se puede escribir la instruccin:
instruccin
p=poly([6 1 -4 1],x,
,coef)12
Ntese que los coeficientes se escriben como un vector (los valores estn encerrados entre corchetes)
comenzando por el coeficiente independiente y avanzando en orden creciente hasta el coeficiente de
tercer orden, se escribe la letra que representar a la variable del polinomio, encerrada entre comillas, y
finalmente la expresin coef
coef,, indicando que los datos ingresados corresponden a los coeficientes del
polinomio. Una vez presionada la tecla Enter, Scilab responde con la siguiente informacin,
informaci
para
comprobar
probar que el resultado concuerde con el polinomio original:
p

=
2
3
6 + x - 4x + x

2- Haciendo uso de las races se puede escribir la instruccin:


instruccin
p=poly([-1
1 2 3],x,roots)
3],x,roots
En este caso se indica con la expresin roots que la informacin dada en el vector corresponde a las
races del polinomio. Scilab responde con el siguiente polinomio:
p

=
2
3
6 + x - 4x + x

Como se observa en ambos casos se obtiene el mismo polinomio. De esta manera se pueden declarar todos los
polinomios que sean necesarios, y a cada uno se le asigna un nombre para poder diferenciarlos.

12

Se
e puede utilizar el apstrofe en lugar de las comillas, en este caso se podra escribir tambin p=poly([6 1 -4 1],'x','coef')

Ing. Juan E. Nez Mc Leod

Pgina 15 de 23

Operaciones con polinomios


Una vez declarados los polinomios, se pueden realizar las operaciones bsicas como suma, resta, multiplicacin,
multiplica
divisin y potenciacin.
Sean por ejemplo los polinomios $%% (
las siguientes instrucciones:

"

6 y )% (

4,, definidos en Scilab mediante

p=poly([6 1 -4 1],x,coef
coef)
q=poly([-4 1 -2],x,coef
)
En la siguiente tabla se muestran las distintas operaciones matemticas anteriormente mencionadas y los
resultados devueltos por Scilab:

Operacin
p+q
p-q
p*q
q^2

Resultado
2
3
2 + 2x - 6x + x
2
3
10 - 2x + x
2
3
4
5
- 24 + 2x + 5x - 10x + 9x - 2x
2
3
4
16 - 8x + 17x - 4x + 4x

Para el caso especial de la divisin de polinomios, se debe recurrir a una funcin especfica, la cual devuelve dos
valores, el cociente y el resto de la operacin. Si lo que se desea hacer es dividir el polinomio p por el polinomio
q, se puede escribir la siguiente instruccin:
[r,c]=pdiv(p,q)
En donde la expresin [r,c] hace referencia a un vector de dos dimensiones, en la primera de las cuales se
obtendr el resto y en la segunda el cociente de la divisin. De esta manera Scilab devuelve los siguientes
resultados:
c =
1.75 - 0.5x
r =
13 - 2.75x
Para verificar que estos resultados son correctos, se puede multiplicar el cociente por el divisor y sumar el resto,
como resultado tiene que dar el dividendo, tal como se observa a continuacin:
-->c*q+r
ans =
2
3
6 + x - 4x + x
Evaluacin de un polinomio para un valor determinado de la variable
Para obtener el valor de un polinomio, cuando la variable adopta valores especficos, se utiliza la funcin horner.
Por ejemplo, si se desea obtener el valor del
de polinomio p anteriormente visto,, cuando la variable x toma el valor 5,
se hace uso de la instruccin horner(p,5),
horner(p,5), la cual devuelve el valor 36, como se ve a continuacin:

Ing. Juan E. Nez Mc Leod

Pgina 16 de 23

-->horner(p,5)
ans =
36.
Derivadas de un polinomio
Supngase que el polinomio p(x),, anteriormente declarado, indica la posicin de un mvil respecto de un
13
determinado sistema de referencia , entonces la derivada primera de este polinomio representa la velocidad del
mvil y la derivada segunda representa la aceleracin. Para obtener estas expresiones, se hace uso de la funcin
derivat que permite obtener la derivada de un polinomio, segn las siguientes instrucciones:
v=derivat(p)
a=derivat(v)
Scilab devuelve los siguientes resultados:
v

=
2
1 - 8x + 3x

=
- 8 + 6x

Si se desea conocer el valor de la posicin, velocidad y aceleracin del mvil en el momento inicial y a las 10
unidades de tiempo, se puede escribir lo siguiente:

Dato a calcular
Inicial
Posicin
Final
Velocidad
Aceleracin

Instruccin
horner(p,0)
horner(p,10)

Resultado
6.
616.

Inicial

horner(v,0)

1.

Final
Inicial
Final

horner(v,10)
horner(a,0)

221.
-8.
8.

horner(a,10)

52.

Otra forma ms rpida de hacer lo mismo es recordando que Scilab tiene una base matricial de manejo
matemtico, por lo que se puede definir un vector con los dos valores a calcular, de la siguiente manera:
x=[0 10]
Para posteriormente obtener los resultados buscados segn la siguiente tabla:
Clculo
Posicin inicial y final
Velocidad inicial y final
Aceleracin inicial y final

Instruccin
horner(p,x)
horner(v,x)
horner(a,x)

Resultado
6. 616.
1. 221.
-8.
8.
52.

Determinacin de las races de un polinomio


Dado un polinomio se pueden obtener las races del mismo mediante la instruccin roots, como se observa en
los siguientes ejemplos, que se basan en los polinomios p(x) y q(x) vistos anteriormente:

13

En este caso la variable x representa el tiempo.

Ing. Juan E. Nez Mc Leod

Pgina 17 de 23

rp=roots(p)
rq=roots(q)
Obteniendo como resultado en cada caso:
rp

rq

=
3.
2.
- 1.
=
0.25 + 1.3919411i
0.25 - 1.3919411i

Se observa que en este ltimo caso, las dos races del polinomio q(x) son complejas conjugadas. Es importante
destacar que para representar los valores complejos, Scilab incorpora la unidad imaginaria i al final de la
notacin numrica, lo que puede generar problemas de interpretacin ya que dicho simbolismo se pierde entre
tantos dgitos.
ASIGNACIN DE RESULTADOS
Todas las instrucciones de clculo que se han visto se pueden realizar de dos maneras:
1- Escribiendo solamente el clculo y presionando la tecla Enter, como se ve a continuacin:
sin(%pi/5)
ans =
0.5877853
Se observa que Scilab responde con la informacin ans = 0.5877853 lo que significa que el resultado
ha sido almacenado en una variable genrica denominada ans,, de una manera similar a como lo hacen
las calculadoras cientficas modernas. Dicha variable ans puede ser utilizada en el clculo siguiente.
2- Se puede realizar el mismo clculo, pero asignando el resultado a una variable especificada por el
usuario, tal como se ve en el siguiente ejemplo:
alfa=sin(%pi/5)
alfa =
0.5877853
A diferencia del primer caso, ahora el resultado queda almacenado en la variable denominada alfa, la
cual va a mantener este valor hasta que el usuario no lo cambie por otro en forma explcita.
Como se explic con anterioridad, si
s por algn motivo no se desea ver el resultado, sino simplemente
calcularlo y que quede almacenado en la variable, se debe escribir punto y coma al final de la instruccin,
14
segn se observa a continuacin :
alfa=sin(%pi/5);
Los nombres de las variables son creadas por el usuario, de acuerdo a sus necesidades, slo se deben recordar
las reglas para nombrarlas, dadas al principio de este texto.. Por otro lado, es recomendable que el nombre de la
variable haga mencin al contenido de la misma. De esta forma es ms claro tener variables llamadas temp,
presin y altura que otras llamadas, t, p y a,, las cuales perfectamente podran estar representando tiempo,
posicin y aceleracin.

14

Esto
sto es vlido para cualquier instruccin que muestre resultados en pantalla.

Ing. Juan E. Nez Mc Leod

Pgina 18 de 23

PRECAUCIONES
CIONES AL ESCRIBIR EXPRESIONES MATEMTICAS
Siempre se debe recordar que Scilab tiene una estructura
e
de clculo matemtico matricial. Olvidar esto puede
15
ocasionar situaciones que, en el peor de los casos, originen resultados errneos , y en el mejor de los casos,
mensajes de error que alerten al usuario de que algo anda mal.
Funciones con matrices como argumentos
Cualquier funcin matemtica admite matrices como argumentos, en tales casos Scilab aplica la funcin
elemento a elemento, devolviendo una matriz de las mismas dimensiones con los distintos valores funcionales.
16
As se pueden realizar
zar los siguientes clculos :
-->x=[90 45 60;0 180 270]
x =
90.
0.

45.
180.

60.
270.

-->y=sind(x)
y =
1.
0.

0.7071068
0.

0.8660254
- 1.

-->x=[1 4 9;36 100 144]


x =
1.
36.

4.
100.

9.
144.

-->y=sqrt(x)
y =
1.
6.

2.
10.

3.
12.

De esta manera se puede decir que al aplicar una funcin matemtica a una matriz, se obtendr como resultado
una matriz del mismo tamao,
o, en la cual cada elemento de la nueva matriz ser igual a la aplicacin de la funcin
al elemento original.
17

En un lenguaje simblico matemtico, esto se escribira de la siguiente manera :

0% (

0%

0%

.+

0%

0%

+(

.+ (

15

Nunca
unca se debe olvidar que el responsable de los resultados, sobre los que se toman decisiones, es el ingeniero, quien debe verificar
ver
que la
computadora est entregando resultados vlidos.
16
Se debe recordar que la funcin sind(x) calcula el seno de ngulo expresados en sistema sexagesimal.
17
Se debe recordar que en lenguaje simblico las matrices se representan con letras maysculas y los elementos con minsculas.
minsculas

Ing. Juan E. Nez Mc Leod

Pgina 19 de 23

Problemas con los argumentos matriciales


A continuacin se vern tres casos en los cuales el uso de argumentos matriciales
riciales ocasiona problemas. Aunque
el lector debe estar prevenido que estos son solo ejemplos, y debe recordarlos cada vez que escriba expresiones
matemticas con Scilab, y evaluar si debe tomar o no precauciones adicionales.
Multiplicacin y divisin
Si se desea evaluar la expresin
instrucciones:

1 2% ( para x=2, entonces se pueden escribir


escribi en Scilab las siguientes

-->x=2
x =
2.
-->y=x*sin(x)
y =
1.8185949
Siendo este ltimo un resultado correcto (suponiendo que x est expresado en radianes).
Difcilmente se utilice Scilab para realizar un clculo de esta naturaleza, ya que seguramente se usara una
calculadora cientfica. Un caso ms razonable sera tener que armar una tabla de valores para hacer un grfico.
De esta manera se piensa en generar un vector con una serie de valores de x, y evaluar la expresin anterior,
como Scilab trabaja en forma matricial debera devolver otro vector con todos los resultados.
Para calcular diez valores de la funcin entre 0 y 2,
2 se podran
an escribir las siguientes instrucciones:
-->x=linspace(0,2*%pi,10)
x =
column 1 to 6
0.
0.6981317
1.3962634
column
4.1887902

7 to 10
4.8869219

2.0943951

5.5850536

2.7925268

3.4906585

6.2831853

-->y=x*sin(x)
!--error 10
Multiplicacin inconsistente.
Sorprendentemente,
dentemente, en lugar de obtener los diez resultados esperados, slo aparece un mensaje de error
indicando que la multiplicacin es inconsistente. Esto sucede justamente porque Scilab es un procesador
matemtico matricial, por lo que todas la operaciones las
las interpreta en este contexto.
El operador * es, por lo tanto, representativo del producto matricial, en el cual se debe cumplir la regla de
multiplicacin de matrices, tal que si se desea multiplicar una matriz n x m, slo es posible hacerlo por otra matriz
m x s y el resultado ser una matriz n x s. En otras palabras, la cantidad de columnas de la primera
primer matriz debe
ser igual a la cantidad de filas de la segunda.
En el caso visto anteriormente, se ha multiplicado una matriz x de 1 x 10 por otra sin(x),
sin(x) tambin de 1 x 10. La
primera tiene diez columnas
lumnas mientras que la segunda tiene una nica fila. Claramente
laramente la multiplicacin es
inconsistente, no se puede realizar.
Si se piensa en qu es lo que se pretende
pretend hacer con el clculo, es claro que no se trata de una operacin
matricial, sino de una lista de valores a la cual se debe aplicar la funcin de manera independiente, esto es lo que
se denomina clculo elemento a elemento;
elemento es decir, tomar el primer elemento de x y multiplicarlo por el primer
elemento de sin(x), luego hacer los mismo con los segundos elementos y as sucesivamente hasta terminar.

Ing. Juan E. Nez Mc Leod

Pgina 20 de 23

18

Para realizar multiplicaciones de matrices, pero elemento a elemento , se utiliza el operador .* (es un punto
seguido inmediatamente del asterisco, sin dejar espacio intermedios). De esta manera, al utilizar este operador el
resultado obtenido es el deseado, el cual se muestra a continuacin:
-->y=x.*sin(x)
y =
column 1 to 6
0.
0.4487504
1.375051
column 7 to 10
- 3.6275987 - 4.8126786

1.8137994

- 3.5900033

0.9551004

- 1.1938755

- 1.539D-1519

El mismo problema se tiene con el operador /, utilizado para realizar divisiones matriciales. Si se desea realizar
una divisin elemento a elemento, se debe utilizar el operador ./ (un punto seguido de la barra, sin espacios
intermedios).
Para analizar esta ltima operacin se ver el caso de una transformacin isotrmica de un gas ideal, la cual
responde a la conocida ley 3. 4 5,
5 donde k es una constante.
Suponiendo que la constante valga 100, para evaluar el volumen de un gas ideal cuando la presin aumenta de 1
a 10 atmsferas, se podran escribir las siguientes instrucciones en Scilab:
-->k=100;
-->p=linspace(1,10,5)
p =
1.

3.25

5.5

7.75

10.

-->v=k/p
v =
0.4953560
1.6099071
2.7244582
3.8390093
4.9535604
Analizando el resultado obtenido se observa que el mismo es un vector columna, mientras que los datos estn
constituidos por un vector fila.. Este cambio en la naturaleza de los vectores es un aviso importante de que algo
anda mal.
Por otro lado, haciendo un anlisis ms puntual para calcular el primer valor del volumen se debe realizar la
operacin 6 100/1 (la constante k dividida 1 atmsfera),
atmsfera) la cual da como resultado 100, mientras que el ltimo
volumen se calcula como 6 100/10
100
(la constante k dividida 10 atmsferas),, que da como resultado 10.
Revisando los valores del vector v no se encuentra ninguno de estos valores citados, dando un claro aviso que el
clculo no es correcto; sin embargo,, extraamente Scilab no ha dado ningn error.
Lo que Scilab ha hecho es un clculo
culo matricial, dando por resultado un vector tal que multiplicando al primero da
como resultado 100 (el valor de la constante), segn se ve a continuacin:

18

Para que esta multiplicacin se pueda realizar las dos matrices deben tener las mismas dimensiones.
Este valor debera ser 0 (cero), sin embargo por problemas de precisin numrica, discutidos anteriormente, el valor no es nulo
nu aunque se
trata de un valor muy pequeo.
19

Ing. Juan E. Nez Mc Leod

Pgina 21 de 23

-->p*v
ans =
100.
Para poder calcular lo que realmente se desea, es necesario realizar un clculo elemento a elemento, segn se
observa en la siguiente serie de instrucciones:
-->k=100;
-->p=linspace(1,10,5)
p =
1.

3.25

5.5

7.75

10.

-->v=k./p
v =
100.

30.769231

18.181818

12.903226

10.

Donde no se observa cambio en la naturaleza de los vectores de datos y resultados (se parte de un vector fila
con los datos y se obtiene como resultado otro vector fila), adems los valores inicial y final coinciden
coincide con los
calculados la discusin previa previamente.
reviamente.
Para hacer el clculo anterior se defini la variable k con el valor 100; sin embargo, se podra hacer el clculo
directamente con el valor de la constante, tal cual se ve a continuacin:

-->v=100./p
Warning: "100./ ..." is interpreted as "100.0/ ...". Use "100 ./ ..." for element
wise operation
v =
0.4953560
1.6099071
2.7244582
3.8390093
4.9535604
Analizando el resultado se obtiene un mensaje de error que indica que el punto decimal es interpretado como
parte del nmero, por lo que la divisin se calcula como una operacin matricial. Para evitar este problema se
debe utilizar un espacio despus del nmero, para que el punto sea interpretado
interpretado en conjunto con la barra de
divisin como una operacin elemento a elemento, tal cual se observa a continuacin:
-->v=100 ./p
v =
100.

30.769231

18.181818

12.903226

10.

Esta discusin tambin es vlida para el caso de la multiplicacin


multiplicacin elemento a elemento vista anteriormente.
Potenciacin
Si bien el operador ^ permite calcular la potencia de escalares, cuando la base est constituida por un vector, se
debe utilizar la notacin de elemento a elemento; es decir, el operador .^ en lugar del primero mencionado.
As por ejemplo, sii se quiere tener una tabla de 10 valores de la funcin
valores de x desde -5
5 a 5, se puede escribir lo siguiente:

Ing. Juan E. Nez Mc Leod

1 que abarquen los

Pgina 22 de 23

x=linspace(-5,5,10)
y=3*x.^2-5*x+1
Obteniendo por resultado lo que se expresa a continuacin:
x

=
column 1 to 6
- 3.8888889 - 2.7777778 - 1.6666667
column 7 to 10
1.6666667
2.7777778
3.8888889
5.

- 5.

- 0.5555556

0.5555556

=
101.
1.

column 1 to 6
65.814815
38.037037
column 7 to 10
10.259259
26.925926

17.666667

4.7037037

- 0.8518519

51.

Si por el contrario se escribiera


-->y=3*x^2-5*x+1
!
Warning: Syntax "vector ^ scalar" is obsolete. It will be removed in Scilab 6.0.
Use "vector .^ scalar" instead.
y

=
column 1 to 4
65.814815
38.037037
column 5 to 9
4.7037037 - 0.8518519
1.
column 10
51.

101.

17.666667
10.259259

26.925926

Como se aprecia se obtienen los resultados correctos; sin embargo, Scilab muestra un mensaje de advertencia,
indicando que la posibilidad de utilizar el operador ^ para clculos donde las bases sean vectores, ser eliminada
en una versin prxima del programa.
ama.
Ms all del tema de sintaxis; en
n este ejemplo,
ejemplo se observa la ventaja que ofrece Scilab al trabajar en modo
matricial, ya que no es necesario realizar el clculo de la expresin matemtica diez veces, como se debera
hacer con una calculadora, sino que
ue Scilab evala la funcin para cada uno de los elementos de la matriz que
representa a la variable independiente. De esta manera, fcilmente se pueden generar grandes tablas de datos
con muy pocas instrucciones.
AYUDA
En modo consola se puede solicitar ayuda sobre cualquier funcin de Scilab, escribiendo help seguido de la
funcin requerida. As si se desea leer informacin sobre la funcin seno, se debe escribir:
-->help sin
Y se abrir una nueva ventana denominada Navegador de Ayuda, donde se desplegar la informacin relativa a
la funcin.

Ing. Juan E. Nez Mc Leod

Pgina 23 de 23

Вам также может понравиться