Está en la página 1de 29

TUTORIAL BSICO DE SCILAB

Qu es Scilab?
Scilab fue desarrollado para aplicaciones de control de sistemas y
procesamiento de seales. Es un formato de cdigo distribuido libremente.
Scilab fue creado con tres partes distintas: un interpretador, libreras de
funciones (procedimientos Scilab) y libreras de Fortran y C.

Uno de los conceptos bsicos de la sintaxis Scilab es su habilidad de manejar


matrices: con manipulaciones bsicas como concatenacin, extraccin o
transposicin que son llevadas a cabo inmediatamente tan bien como las
operaciones bsicas como suma y multiplicacin. Scilab tambin maneja
objetos ms complejos que matrices numricas. Por ejemplo, para
aplicaciones de control se requiere manipular matrices racionales o
polinomiales. Esto es hecho en Scilab manipulando listas y escribindolas, lo
que permite una representacin simblica natural de objetos matemticos
complicados como funciones de transferencia.

Scilab provee una variedad de poderosas funciones para el anlisis de sistemas


no lineales. La integracin de modelos dinmicos explcitos a implcitos puede
ser llevada a cabo numricamente. La barra de herramientas scicos permite
una definicin grfica y simulacin de sistemas hbridos interconectados.
Existen facilidades de optimizacin numrica para la optimizacin no lineal
(incluyendo optimizacin no diferencial), optimizacin cuadrtica y lineal.

Scilab tiene una programacin ambiental abierta en donde la creacin de


funciones y libreras de funciones estn completamente en las manos del
usuario. Las funciones son reconocidas como objetos de datos in Scilab y
pueden ser manipulados o creados como otros objetos de informacin. Por
ejemplo, funciones pueden ser definidas en Scilab y pasadas como una entrada
o salida de argumentos de otras funciones. Adems, Scilab acepta caracteres
que permiten la creacin de funciones en lnea. Las matrices de caracteres
tambin son manupiladas como matrices ordinarias.

Finalmente, Scilab es fcilmente interfasado con Fortan o programas de C.


Esto permite utilizar paquetes estandarizados y libreras en el ambiente de
Scilab.

La filosofa general de Scilab es proveer el siguiente tipo de ambiente


computacional:
Tener tipos de datos que sean variables y flexibles con una sintaxis
natural y fcil de usar.
Proveer un set razonable de funciones que sirva como base para una
extensa variedad de clculos.
Tener un ambiente abierto de programacin en donde nuevas funciones
puedan ser adheridas.

El objetivo de este tutorial es dar al usuario una introduccin a los comandos y


estructuras bsica de Scilab para que empiece a utilizarlo. Para informacin o
tutoriales en temas especializados como control, existen varios tutoriales y
documentos accesibles por internet.

Instalacin de Scilab en Windows.


Puede obtenerse una versin lista para instalar, con interface grfica, de la
siguiente direccin:

http://www.scilab.org/download/

Para MS Windows, baja e instala la versin:

scilab-4.1.2 installer for binary version

El instalador te generar un enlace con el smbolo de Scilab en tu escritorio,


con el que podrs ejecutarlo.

Introduccin a la lna de comandos.


Al ejecutar Scilas, se abre una ventana con un indicador a la lnea de
comandos, inicada por >.A continuacin se presentarn algunos
comandos simples. Todos los comandos son interpretados.

Scilab hace diferencia entre minsculas y maysculas. El carcter ; despus


de cada comando le indica a Scilab NO desplegar el resultado en la lnea de
comandos:

>a=1;
>A=2;
>a+A
ans=
3.
Pueden escribirse varios comandos en una lnea, separados por ;. Sin
embargo, es preferible por claridad escribir un comando por lnea. Se pueden
escribir comentarios utilizando la combinacin de caracteres //:
>//Doscomandosenlamismalnea
>c=[12];b=1.5
b=
1.5

Puede escribirse un commando en varias lneas, utilizando la combinacin de


smbolos . Esto es til para frmulas muy largas. No est permitido
cortar el nombre de una variable o funcin en dos lneas.

>//Uncomandoendiferenteslneas
>u=1000000*(a*sin(A))2+...
>2000000*a*b*sin(A)*cos(A)+...
>1000000*(b*cos(A))2
u=
81268.994
Podemos obtener una lista de las variable existentes con el comando who:

>who
yourvariablesare...

uAbascicos_pal
%scicos_menu%scicos_short%scicos_help

%scicos_display_modemodelica_libs
scicos_pal_libs%scicos_lhb_list%CmenuTypeOneVector
%helps
WSCIhomeSCIHOMECreateScilabHomeDir
PWDTMPDIRMSDOSSCIguilibsparselib

xdesslibpercentlibpolylibintlibelemlib
utillibstatslibalglibsigliboptlibautolib
roblib
soundlibmetalibarmalibtkscilibtdcslibs2flib
mtlblib%F%T%z%s%nan
%inf
COMPILER%gtk%gui%pvm%tk$
%t%f%eps%io%i%e

using31767elementsoutof5000000.
and62variablesoutof9231

yourglobalvariablesare...

LANGUAGE%helpsdemolist%browsehelpLCC
%toolboxes%toolboxes_dir
using1165elementsoutof11000.
and7variablesoutof767

Observa que obtenemos la lista de las variables previamente definidas por


nosotros, u a b A junto con un ambiente inicial compuesto de diferentes
libreras y algunas variables especificas permanentes.
Tipos de Datos

Constantes predefinidas.
Scilab provee como constantes predefinidas %i, %pi, %e, y %eps. La
constante %irepresenta 1 , %pies = 3.1415927, %ees l nmero de
Euler e=2.7182818... y %epses una constante que representa la precisin de
la mquina (%epses el numero ms grande para el que 1+%eps=1). %inf
y %nanson para Infinito y NounNumero respectivamente. Otras
constantes son %ty %fque son para verdadero (trae) y falso (false)
respectivamente.

Estas constantes estn protegidas y no pueden ser borradas ni modificadas por


el usuario.

Escalares y Matrices

La estructura fundamental en Scilab son las matrices, como se ver a


continuacin. Pero antes es necesario definir que es un escalar para Scilab.

Escalares.
Los escalares son nmeros reales o complejos. Los valores de los escalares
pueden ser asignados a nombres de variable escogidos por el usuario.

>a=5+2*%i
a=
5.+2.i
>B=2+%i;

>b=43*%i
b=
4.3.i
>a*b
ans=
26.7.i
>a*B
ans=
12.+i

Observa que Scilab evala inmediatamente lneas que terminan con espacio.
Las instrucciones que terminan con punto y coma son evaluadas pero no se
despliegan en pantalla.

Matrices.
Las matrices son la estructura fundamental en Scilab. Una matriz es un
arreglo rectangular donde cada elemento puede localizarse con don ndices, el
nmero de rengln y el nmero de columna. Conocer el manejo de matrices es
fundamental para el uso eficiente de Scilab.

Creacin de una matriz.


La forma ms fcil para crear una matriz es especificando directamente sus
elementos. Observa que los elementos de cada rengln pueden separarse con
espacios o con comas, y para indicar un nuevo rengln se utiliza el punto y
coma. Los elementos deben especificarse dentro de parntesis cuadrados.

-->A = [1 2 4; 5 7 9]
A =

1. 2. 4.
5. 7. 9.

-->B = [2,7;5,1]
B =

2. 7.
5. 1.

Una matriz tambin puede especificarse sobre varias lneas:

-->C=[1 2 3 5;
-->2 8 9 3]
C =

1. 2. 3. 5.
2. 8. 9. 3.
Extraccin de rangos de matrices.
La extraccin de rangos de matrices o submatrices es una de la operaciones
mas importantes para la programacin eficiente en Scilab. Veamos algunos
ejemplos:

-->A = [1.5,2,7,9.2,8.3
-->2.7,5.2,3,1,8
-->1,2,3,4,5]
A =

1.5 2. 7. 9.2 8.3


2.7 5.2 3. 1. 8.
1. 2. 3. 4. 5.

Definimos una matriz de 3 renglones por 5 columnas. Si queremos extraer el


elemento correspondiente al primer rengln, segunda columna, utilizamos:
-->A(1,2)
ans =

2.

Observa que para acceder a los elementos de una matriz se utilizan parntesis
normales, no cuadrados!

Para extraer todos los elementos de la primera columna utilizamos:


-->A(:,1)
ans =

1.5
2.7
1.

Observa como el smbolo : se utiliza en la posicin correspondiente al


ndice del rengln, y un uno en la posicin correspondiente al ndice de la
columna. Este comando puede leerse como:

Regresa los elementos correspondientes a todos los renglones, primera


columna.

Observa como el resultado es una matriz de tres renglones por una columna, o
3 X 1.
Para extraer los elementos del tercer rengln utilizamos:
-->A(3,:)
ans =

1. 2. 3. 4. 5.

En este caso, el resultado es una matriz de un rengln por tres columnas, o 1 X


3, como es de esperarse.

Tambin podemos extraer submatrices definidas por rangos de renglones y


columnas, por ejemplo:

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

2.7 5.2
1. 2.

Este comando podemos leerlo como: regresa la submatriz formada por los
elementos correspondientes desde el segundo rengln hasta el tercer rengln,
y desde la primera columna hasta la tercera columna.

Formacin de matrices a partir de otras matrices.


Podemos componer matrices a partir de otras matrices, mientras las
dimensiones sean congruentes. Por ejemplo:

-->A = [ 1 2 3; 5 7 9; 2 8 7]
A =

1. 2. 3.
5. 7. 9.
2. 8. 7.

-->B = [ 1; 5; 9]
B =

1.
5.
9.
-->C = [A B]
C =

1. 2. 3. 1.
5. 7. 9. 5.
2. 8. 7. 9.

Observa que A y B tienen que tener el mismo nmero de renglones para poder
hacer esta composicin.

Como ejercicio, explica como se forma la siguiente matriz compuesta:

-->D = [C; [A(3,:) B(2,1)]]


D =

1. 2. 3. 1.
5. 7. 9. 5.
2. 8. 7. 9.
2. 8. 7. 5.

Matrices especiales.
Scilab tiene varios comandos para generar algunas matrices especiales de uso
comn. Observa los siguientes ejemplos:

Generacin de una matriz con todos sus elementos igual a uno:

-->C = ones(4,3)
C =

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

Generacin de una matriz con todos sus elementos igual a zero:

-->D = zeros(4,3)
D =

0. 0. 0.
0. 0. 0.
0. 0. 0.
0. 0. 0.
Generacin de una matriz cuadrada con unos en su diagonal principal y ceros
fuera de ella:
-->E=eye(5,5)
E =

1. 0. 0. 0. 0.
0. 1. 0. 0. 0.
0. 0. 1. 0. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.

Generacin de una matriz cuadrada con los elementos de la diagonal


especificados, y ceros fuera de la diagonal principal:

-->D = diag( [2 1 0 -1 -2] )


D =

2. 0. 0. 0. 0.
0. 1. 0. 0. 0.
0. 0. 0. 0. 0.
0. 0. 0. - 1. 0.
0. 0. 0. 0. 2.

Generacin de una matriz cuadrada con los elementos en la diagonal debajo de


la diagonal principal especificados:

-->L = diag( [1 2 3 4], -1 )


L =

0. 0. 0. 0. 0.
1. 0. 0. 0. 0.
0. 2. 0. 0. 0.
0. 0. 3. 0. 0.
0. 0. 0. 4. 0.

Generacin de una matriz con nmeros aleatorios entre 0 y 1:

-->R = rand(3,2)
R =

0.2922267 0.3321719
0.5664249 0.5935095
0.4826472 0.5015342
Operaciones con matrices
Transpuesta de una matriz.
La transpuesta de una matriz (intercambiar renglones y columnas) se obtiene
utilizando el smbolo de comilla simple , por ejemplo:
-->A = [ 1 3 8; 5 2 7]
A =

1. 3. 8.
5. 2. 7.

-->B = A'
B =

1. 5.
3. 2.
8. 7.

Multiplicacin por un escalar.


Una matriz puede multiplicarse por un escalar utilizando el smbolo *.
Todos los elementos de la matriz se multiplican por el escalar, por ejemplo:

--> B = [2, 5, 9; 3, 7, 4]
B =

2. 5. 9.
3. 7. 4.

-->C = 2*B
C =

4. 10. 18.
6. 14. 8.

Suma y resta de matrices.


Para que dos matrices puedan sumarse o restarse, tienen que ser del mismo
orden. La suma y resta se hacen elemento a elemento correspondiente.

-->A = [2, 3; 5,1; 7,9]


A =
2. 3.
5. 1.
7. 9.

-->B = [8,25; 2,37; 5,7]


B =

8. 25.
2. 37.
5. 7.

-->C=A+B
C =

10. 28.
7. 38.
12. 16.

-->D=A-B
D =

- 6. - 22.
3. - 36.
2. 2.

Multiplicacin de matrices.
La multiplicacin de matrices se representa con el smbolo *. Recuerda que
para que dos matrices puedan multiplicarse, deben ser conformes (el nmero
de columnas de la primera matriz tiene que ser igual al nmero de columnas
de la segunda matriz), y que la multiplicacin de matrices no es conmutativa.
El resultado tiene el mismo nmero de renglones que la primer matriz, y el
mismo nmero de renglones que la segunda.

->F = [2, 5, 9; 1, 7, 2]
F =

2. 5. 9.
1. 7. 2.
-->G = [0, 5; 10 29; 7 21]
G =

0. 5.
10. 29.
7. 21.

-->H=F*G
H =

113. 344.
84. 250.

Multiplicacin de matrices elemento a elemento.


Esta es una operacin que NO ESTA DEFINIDA dentro del lgebra matricial,
pero que es muy til en la solucin de algunos tipos de problemas con
matrices. Se define en Scilab como la multiplicacin de los elementos
correspondientes de dos matrices, y se representa con la secuencia de smbolos
punto y asterisco: .*. Observa que las matrices tienen que ser del mismo
orden, y que obviamente es conmutativa.
-->A = [1 5 3; 2 7 8; 3 5 4; 0 2 9]
A =

1. 5. 3.
2. 7. 8.
3. 5. 4.
0. 2. 9.

-->B = [0 0 25; 7 1 2; 2 1 3; 7 2 1]
B =

0. 0. 25.
7. 1. 2.
2. 1. 3.
7. 2. 1.

-->C = A .* B
C =

0. 0. 75.
14. 7. 16.
6. 5. 12.
0. 4. 9.
-->D = B .* A
D =

0. 0. 75.
14. 7. 16.
6. 5. 12.
0. 4. 9.

Vectores.
Un caso especial muy importante de matrices en Scilab son los vectores, que
se manejan como una matriz de un solo rengln (vector rengln) o de una sola
columna (vector columna). Los elementos de un vector pueden accederse
utilizando solo un ndice. Observa los siguientes ejemplos:

-->X = [1 5 7 9]' // Vector columna


X =

1.
5.
7.
9.

-->X(3)
ans =

7.

-->Y = [2 4 6 8] // Vector rengln


Y =

2. 4. 6. 8.

-->Y(4)
ans =

8.

Vectores con componentes equiespaciados.


Los vectores equiespaciados se utilizan frecuentemente para evaluar
funciones, por lo que Scilab provee una forma muy conveniente de formarlos.
Por ejemplo, para formar un vector con elementos del 0 al 10 en intervalos de
1 podemos usar:
-->X=0:10
X =

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

Si queremos que es espaciamiento entre los elementos sea de 0.5,


introducimos el comando:

X =
column 1 to 20

0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5


9. 9.5

column 21

10.

El siguiente comando genera un vector columna de 2 a 3 con espaciamientos


de =0.2:

-->Y=(2:0.2:3)'
Y =

2.
2.2
2.4
2.6
2.8
3.
Funciones en Scilab

Las funciones son otro de los componentes fundamentales de Scilab. Existen


cientos de funciones predefinidas, y el usuario puede definir sus propias
funciones fcilmente.

Por ejemplo, algunas de las mas utilizadas son: log(), sin(), cos(), tan(), asin,
acos, atan, exp(), abs(), sqrt().

Algo muy importante que debes recordar es que la mayora de las funciones
matemticas en Scilab aplican tanto a nmero reales como complejos.

Ejemplos:
-->sin(0.5)
ans =

0.4794255

-->c=sqrt(-9)
c =

3.i

-->exp(-3.2)
ans =

0.0407622

-->log(10)
ans =

2.3025851

Observa que en el ltimo ejemplo, la funcin log() obtiene el logaritmo


natural de un nmero.
Puede encontrarse informacin sobre lo que hace una funcin con el comando
help, por ejemplo:
-->help log
Abre una pgina con documentacin de esta funcin:

Last update : April 1993

log - natural logarithm

Calling Sequence
y=log(x)

Parameters
x : constant vector or constant matrix

Description

log(x) is the "element-wise" logarithm. y(i,j)=log(x(i,j)) . For matrix logarithm see


logm .

Examples
exp(log([1,%i,-1,-%i]))

See Also

exp , logm , ieee ,


Aplicacin de funciones a los elementos de una matriz.

Una caracterstica distintiva de paquetes como Scilab, Matlab, y Octave, es


que es muy fcil aplicar una funcin escalar a todos los elementos de una
matriz. Basta con pasar la matriz como argumento a la funcin. Esto se ve
claramente en el siguiente ejemplo:

-->A = [ 9 16; 25 36]


A =

9. 16.
25. 36.

-->B = sqrt(A)
B =

3. 4.
5. 6.

Observa como se aplic la funcin sqrt(), raz cuadrada, a cada elemento de


la matriz A.

Funciones especiales para matrices.


Existen varias funciones definidas especialmente para matrices. Algunas de las
mas tiles son:

Determinante de una matriz.


El determinante de una matriz cuadrada se obtiene utilizando la funcin inv.
-->A = [1 7 9; 2 5 4; 3 2 8]
A =

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

-->det(A)
ans =

- 95.
Nmero de condicin de una matriz.
El nmero de condicin de una matriz es un escalar positivo. Si el nmero es
muy cercano a cero, la matriz es mal condicionada, y el clculo de la inversa
puede ser errneo por errores de redondeo. El nmero de condicin es una
medida mas confiable que el determinante para evaluar la importancia de lo
errores de redeondeo. Se obtiene con la funcin cond(). Por ejemplo, para la
matriz anterior:

-->cond(A)
ans =

9.1383552

La matriz est bien condicionada y el clculo de la inversa es confiable.

Inversa de una matriz.


La inversa de una matriz cuadrada (si existe y la matriz es bien condicionada)
pude obtenerse con la funcin inv(). Para la matriz del ejemplo anterior:
-->inv(A)
ans =

- 0.3368421 0.4 0.1789474


0.0421053 0.2 - 0.1473684
0.1157895 - 0.2 0.0947368

Observa que en este caso, la funcin regresa una matriz.


En Scilab, una funcin pude regresar una matriz o un vector. Tmbin pude
regresar mas de un resultado. Un ejemplo muy til es la funcin size(), que
nos sirve para determinar el orden de una matriz. Observa los siguientes
ejemplos:

B =

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

-->size(B)
ans =

4. 3.

-->[reng,cols]=size(B)
cols =

3.
reng =

4.
Definicin de Funciones por el Usuario

Es posible definir funciones directamente en la lnea de comandos de Scilab,


pero es mas recomendable hacerlo abriendo el editor en la barra de opciones
(recuerda que puedes guardar el archivo creado con tus funciones para
reutilizarlo). Veamos un ejemplo para crear una funcin que obtenga la raz
cbica de un nmero.

function r = cubica(x)
// Funcion para calcular la raiz cubica
r = exp(1.0/3.0 * log(x));
endfunction

Una vez creada nuestra funcin, la cargamos a Scilab con la opcin Load
into Scilab dentro de Execute en el editor. La funcin esta lista para
usarse:

-->cubica(27)
ans =

3.

-->A = [27 8 64]


A =

27. 8. 64.

-->cubica(A)
ans =

3. 2. 4.

Observa que si utilizamos nuesta funcin con una matriz, la aplica a cada uno
de los elementos de sta!
Vamos a analizar uno por uno los elementos de nuestra funcin:

function r = cubica(x)

Este es el encabezado de nuestra funcin. La palabra reservada function


indica que se esta declarando una funcin. La vairable r es representa la
salida o resultado de la funcn, en este caso tenemos un escalar. El nombre
puede ser cualquier nombre vlido. El signo igual se utiliza para indicar la
asignacin de nuestra funcin. La palabra cubica es el nombre con el cual
vamos a llamar nuestra funcin. Puede ser cualquier nombre vlido.
Elparmetro x representa el argumento de nuestra funcin. Una funcin
puede tener mas de un argumento.

// Funcion para calcular la raiz cubica

Esta lnea es un comentario. Es importante incluir comentarios para facilitar el


uso de la funcin. Adems este comentario aparecer automticamente en la
documentacin de la funcin si se busca con el comandohelp cubica. No
deben incluirse caracteres especiales en el comentario, como acentos, ya que
la documentacin automtica no los permite.

r = exp(1.0/3.0 * log(x));

Esta lnea asigna a la variable de salida el valor de la raz cbica de lo que se


le pase a la funcin como argumento. Es necesario que en alguna parte de
nuesta funcin se le asigne valor a la variable o variables de salida.

endfunction

Esta lnea seala el final de la declaracin de la funcin.


Enseguida vamos a declarar una funcin que reciba como parmetro el radio
de un crculo, y regrese el valor del permetro y del rea.

function [p,a] = circulo(r)


// Regresa el perimetro del circulo de radio r en p,
// y el area en a.
p = 2 * %pi * r;
a = %pi * r * r;
endfunction

IMPORTANTE
Es muy importante dejar al menos una lnea en blanco al final del archivo,
ya que el interpretador de Scilab lo requiere!

Despus de cargar la funcin en Scilab, podemos utilizarla:

-->[perimetro,area] = circulo(3)
area =

28.274334
perimetro =

18.849556

Observa que si llamamos la funcin sola, regresa el valor de salida de la


ltima variable que se declar en el encabezado:

-->circulo(3)
ans =

18.849556

Ahora vamos a modificar la funcin crculo para que entregue el permetro y


el rea como componentes de un vector:

function S = circulo(r)
// Regresa el perimetro y el area del circulo de radio r.
// S(1) = perimetro. S(2) = area.
S(1) = 2 * %pi * r;
S(2) = %pi * r * r;
endfunction
Al ejecutar la funcin obtenemos el resultado en un vector columna:

-->circulo(3)
ans =

18.849556
28.274334

Mtodos Numricos

Scilab incluye funciones pre-programadas para diversos mtodos numricos.


En seguida presentamos algunos de los mas utilizados.

Solucin de sistemas de ecuaciones lineales.


Resolver sistemas de ecuaciones lineales es muy sencillo con Scilab. La mejor
forma de mostrarlo es con un ejemplo:

Resolver el sistema:

5 x1 2 x 2 5 x3 2 x 4 5 x5 12
2 x1 12 x 2 5 x3 2 x 4 5 x5 2
4 x1 x 2 5 x3 22 x 4 5 x5 1
3 x1 2 x 2 5 x3 2 x 4 8 x5 5
3 x1 2 x 2 15 x3 3 x 4 21x5 5

Primero capturamos la matriz de coeficientes del sistema en forma matricial


en Scilab:

-->A=[5 -2 -5 2 -5; 2 12 -5 2 -5; 4 1 -5 22 -5; 3 2 -5 2 -8; 3 2 15 3 -21]


A =

5. - 2. - 5. 2. - 5.
2. 12. - 5. 2. - 5.
4. 1. - 5. 22. - 5.
3. 2. - 5. 2. - 8.
3. 2. 15. 3. - 21.
Ahora el vector de trminos independientes como un vector columna:

-->b = [12 -2 -1 5 5]'


b =

12.
- 2.
- 1.
5.
5.

La solucin se obtiene como pre multiplicando el vector de trminos


independientes por la inversa de la matriz de coeficientes:

-->X = inv(A) * b
X =

2.4985607
- 0.4645941
0.0540779
- 0.4553828
0.0481673

Comprobacin:

-->A*X
ans =

12.
- 2.
- 1.
5.
5.

Otra forma (mas eficiente para sistemas grandes) es utilizando el comando \:


-->X = A \ b
X =

2.4985607
- 0.4645941
0.0540779
- 0.4553828
0.0481673

Solucin numrica de integrales definidas.


Para evaluar una integra definida numricamente existen varias opciones.
Vamos a utilizar la funcin predefinida intg(). Empezamos utilizando el
comando help para saber mas detalles de esta funcin:

intg - definite integral

Calling Sequence

[v,err]=intg(a,b,f [,ea [,er])

Parameters

a,b : real numbers


f : external (function or list or string)
ea, er : real numbers
ea : absolute error required on the result. Default value: 1.d-14
er : relative error required on the result. Default value: 1.d-8
err : estimated absolute error on the result.

Los parmetos entre parntesis cuadrados son opcionales.


Vamos a ver como se aplicara esta funcin si se desea evaluar numricamente
la siguiente integral:
2
x sen(30 x)
x 2
dx
0
1 ( )
2

Primero debemos programar la funcin en el editor de Scilab:

function y = f(x)
y = x * sin(30*x) / sqrt( 1 - ( (x / (2*%pi) )^2 ) );
endfunction

Una vez cargada la funcin en Scilab, utilizamos la funcin integ():

-->[v,error]=intg(0,2*%pi,f)
error =

4.625D-09
v =

- 2.5432596

El valor de la integral fue asignado a v, y a la variable error se le asign


el estimado del error del resultado.

Solucin numrica de ecuaciones no lineales.


En Silab podemos utilizar la funcin fsolve() para encontrar las races reales
de una ecuacin no lineal, o de un sistema de ecuaciones no lineales. Veamos
como se utiliza con varios ejemplos simples:

Deseamos encontrar una raz real de la ecuacin:

x2 ex 0
Primero programamos la funcin usando el editor de Scilab y la cargamos:

functiony=f(x)
y=x^2exp(x^2);
endfunction

RECUERDADEJARALMENOSUNALINEAENBLANCOALFINALDEL
ARCHIVO!

Ahora la pasamos como parmetro a fsolve():

>x=fsolve(1.0,f)
x=

0.0002122

Observa que fsolve requiere una aproximacin inicial de la raz, en este caso
utilizamos 1.0.

Ahora utlizaremos la funcin fsolve para encontrar una raz del siguiente
sistema de ecuciones no lineales:

x2 y2
5 0
8 16

y 2 5sen( x) 0

Primero programamos la funcin en el editor de Scilab, utilizando un vector


para los parmetros de entrada, y un vector de salida para las funciones
evaluadas:

function F = Fxy(V)
x = V(1);
y = V(2);
F(1) = x*x/8 + y*y/16 -5;
F(2) = y*y - 5*sin(x);
endfunction

Ahora podemos pasar la funcin como parmetro a fsolve() :


>fsolve([1.0,1.0]',Fxy)
ans=

6.3177262
0.4155362

Observa como tuvimos que pasar un vector con dos condiciones iniciales. El
resultado es un vector, donde el primer elemento correspode al valor de x, y el
segundo al valor a y, respetando el orden en que los asignamos al declarar la
funcin.

La funcin fsolve( ) tiene varias opciones, las cuales puedes explorar


utilizando el comando help.

También podría gustarte