Você está na página 1de 33

Minicurso: Introduo ao SciLab

Regiane Slongo Fagundes (UTFPR-TD)


Suellen Ribeiro Pardo Garcia (UTFPR-TD)
Vanderlei Galina (UTFPR-TD)
Sumrio

1 Apresentando o Scilab ..............................................................................1


1.1 Introduo .............................................................................................1
1.2 Algumas vantagens ................................................................................1
1.3 Instalando o Scilab .................................................................................1
1.4 Interface e menus do Scilab....................................................................2
2 Noes fundamentais................................................................................3
2.1 Usando o Scilab como uma simples calculadora....................................3
2.2 Variveis e comando de atribuio........................................................3
2.3 Expresses aritmticas...........................................................................4
2.4 Strings.....................................................................................................8
2.5 Nmeros complexos...............................................................................9
3 Polinmios.................................................................................................9
3.1 Operaes com polinmios..................................................................10
4 Vetores....................................................................................................11
4.1 Plotando funes .................................................................................14
5 Matrizes ..................................................................................................15
5.1 Acesso a elementos de vetores e de matrizes .....................................17
5.2 Operaes com vetores e matrizes .....................................................21
6 Programao no Scilab ...........................................................................24
6.1 Arquivos de Scripts ..............................................................................24
6.2 Criao de arquivos de script ...............................................................24
6.3.1 O loop for ..........................................................................................25
6.3.2 O comando de deciso if-then-else ..................................................26
6.4 Funes criadas pelo usurio ...............................................................26
6.5 Implementao Eliminao de Gauss ..................................................28
1 Apresentando o Scilab
1.1 Introduo

O Scilab um ambiente utilizado no desenvolvimento de programas


para a resoluo de clculos cientficos. O Scilab um software para
clculo numrico desenvolvido desde 1990 por pesquisadores do Institut
de Recherche em Informatique et en Automatique (INRIA) e da Ecole
Nationale des Ponts et Chaussees (ENPC) na Frana e mantido pelo Scilab
Consortium desde 2003. distribudo gratuitamente atravs da internet
(http://www.scilab.org) para diversas plataformas. Inclui um grande
nmero de bibliotecas (toolboxes) que englobam funes grficas,
integrao numrica, lgebra linear, otimizao e outras.
Alm de diversas funes matemticas, possui a possibilidade de
interao com programas em vrias linguagens como o C e Fortran.
uma plataforma em constante atualizao e aperfeioamento
(Scilab = Scientific Laboratory : Pronncia em sintaxe fontica
internacional sailb.)

1.2 Algumas vantagens do Scilab


uma poderosa ferramenta para clculos cientficos.
de fcil aprendizado.
A ltima verso do software est sempre disponvel, geralmente via
Internet.
O software pode ser legalmente utilizado, copiado, distribudo,
modificado.
Os resultados obtidos podem ser divulgados sem nenhuma
restrio.
Os programas desenvolvidos podem ser transferidos para outras
pessoas sem imposies de qualquer natureza.

1.3 Instalando o Scilab

Acesse o site http://www.scilab.org/, entre em Products, escolha a


opo Scilab. Do lado esquerdo da pgina voc encontrar a opo
Download. Agora, basta fazer a opo do seu sistema operacional.

1
1.4 Interface e menus do Scilab

2 Noes fundamentais
2.1 Usando o Scilab como uma simples calculadora

O Scilab pode fazer operaes aritmticas simples com nmeros reais e


complexos. Os operadores aritmticos so:
2
Adio +
Subtrao -
Multiplicao *
Diviso /
Potenciao ^
Execute o Scilab no seu sistema e procure pelo smbolo (prompt):
-->
Exemplos:
-->2+3 [ENTER]
ans =
5.
-->5+6/2 [ENTER]
ans =
8.
-->4^2 //4 elevado a potncia de 2
ans =
16.
A varivel ans (answer) armazena o valor do ltimo clculo realizado.
Exemplo:
-->4+5
ans =
9.
-->ans+ 3
ans =
12

2.2 Variveis e comando de atribuio

Informaes so armazenas em variveis para posterior uso. Muitos


programadores costumam interpretar variveis como sendo um nome
para uma posio na memria do computador. Para atribuir ou modificar
a informao contida na varivel usado o comando de atribuio (=).
Exemplo:
-->a = 2 // Atribui 2 para varivel a
a=
2.
-->b = 4 // Atribui 4 para varivel b
b=
4.
-->area = a*b // Atribui o produto de a e b para a varivel area

3
area =
8.
-->b = b+1 // Incrementa uma unidade na varivel b
b=
5.
OBS.(1): Os nomes de variveis (tambm conhecidos por identificadores)
devem seguir as seguintes regras:
1. Nomes de variveis comeam com uma letra, seguido de letras,
algarismos ou sublinhados.
Por exemplo: Alpha, notas, A1, B23 e cor_do_objeto;
2. Caracteres especiais no so permitidos. Isto , no permitido usar #,
$, &, %, ?, !, @, <, ~, etc.;
3. Caracteres acentuados no so permitidos;
4. Nomes de variveis so sensveis a maisculas e minsculas.
Por exemplo, varivel Alpha diferente das variveis ALPHA, alpha e
AlPhA.
OBS.(2): O resultado do seguinte comando, digitado com ponto e vrgula,
suprimido:
-->A = 4+4^2;
-->
Se este comando digitado sem ponto e vrgula, o resultado visualizado:
-->A = 4+4^2
A=
20.
Mais exemplos:
-->a=2;
-->b=4;
-->area=a*b // aqui o ponto e vrgula foi suprimido porque precisamos
visualizar o resultado.
area =
8.

2.3 Expresses aritmticas


As regras importantes so: prioridade, associatividade e parnteses.
Prioridade Operao Associatividade
1 Potenciao da direita para a esquerda
2 Multiplicao / Diviso da esquerda para a direita
3 Adio / Substrao da esquerda para a direita

4
Exemplos:
Com relao prioridade:
2+10/5 // 10/5 avaliada primeiro.
A+B/C+D // B/C avaliada primeiro.
R*3+B3/2+1 // B3 avaliada primeiro.
Com relao associatividade:
A-B+C+D //A-B avaliada primeiro, porque est mais a esquerda.
A*B/C*D //A*B avaliada primeiro, porque est mais a esquerda.
A^B^C^D //CD avaliada primeiro, porque est mais a direita.
A ordem de prioridade pode ser alterada pelo uso dos parnteses:
(A+4)/3 //A+4 avaliada primeiro devido aos parnteses
(A-B)/(C+D) //A-B avaliada primeiro. Depois a adio. Por ltimo, a
diviso.
R*3+B^(3/2)+1 //3/2 avaliada primeiro.
Alm dos operadores aritmticos podemos usar funes matemticas.
Exemplos:
2+3*cos(x)
x^(2*sin(y))
2+3*tan(x)+k^2
As principais funes matemticas do Scilab so mostradas na tabela a
seguir.
abs(x) Valor absoluto.
acos(x) Arco cosseno.
acosh(x) Arco cosseno hiperblico.
asin(x) Arco seno.
asinh(x) Arco seno hiperblico.
atan(x) Arco tangente.
atanh(x) Arco tangente hiperblico.
conj(x) Conjugado.
cos(x) Cosseno.
cosh(x) Cosseno hiperblico.
exp(x) Exponencial: ex.
imag(x) Parte imaginria de um nmero complexo.
log(x) Logaritmo natural.
log10(x) Logaritmo na base 10.
real(x) Parte real de um nmero complexo.
modulo(x,y) Resto da diviso de x por y.
sign(x) Funo sinal: retorna o valor -1, +1 seja negativo,
positivo ou nulo, respectivamente.
sin(x) Seno.

5
sinh(x) Seno hiperblico.
sqrt(x) Raiz quadrada.
tan(x) Tangente.
tanh(x) Tangente hiperblica.

Exemplos de funes matemticas:


// O nmero e a base do logaritmo natural e = 2, 718281828... so
representadas pelas variveis especiais %pi e %e.
-->cos(2*%pi) // cosseno de 2 vezes PI
ans =
1.
-->%e^2 // 2,718281828 ao quadrado
ans =
7.389056098931
-->abs(-5) // valor absoluto
ans =
5.
-->modulo(8,3) // Resto da diviso entre 8 e 3
ans =
2.
-->modulo(6,3)
ans =
0.
-->sign(-4) // Funo sinal: retorna o valor -1, +1 ou zero conforme o
argumento x seja negativo, positivo ou nulo, respectivamente.
ans =
- 1.
-->sign(5)
ans =
1.
Tambm temos Funes de Arredondamento, como por exemplo:
-->a = 34.885;
-->fix(a) // trunca a parte fracionria
ans =
34.
-->round(a) // arredonda para o inteiro mais prximo
ans =
35.

6
-->ceil(3.1) // arredonda para mais.
ans =
4.
As principais funes de arredondamento do Scilab so mostradas na
tabela a seguir.
ceil(x) Arredondamento na direo de mais infinito.
fix(x) Arredondamento na direo de zero (isto , desenvolve a
parte inteira de um nmero).
floor(x) Arredondamento na direo de menos infinito.
int(x) Mesmo que fix.
round(x) Arredondamento para o inteiro mais prximo.

Exemplos de funes de arredondamento:


x ceil(x) floor(x) fix(x) round(x)
1.75 2 1 1 2
1.5 2 1 1 2
1.25 2 1 1 1
-1.25 -1 -2 -1 -1
-1.5 -1 -2 -1 -2
-1.75 -1 -2 -1 -2

Podemos modificar o Formato de Visualizao dos Nmeros com o


comando format modifica a quantidade de dgitos com que os nmeros
so mostrados no Scilab.
Por exemplo, o comando
--> format(5) //far com que todas os nmeros sejam visualizados em 5
posies incluindo o ponto decimal e um espao para o sinal
Exemplo:
-->sqrt(3)
ans =
1.73
Para aumentar o nmero de posies para 16, usa-se:
-->format(16)
-->sqrt(3)
ans =
1.7320508075689
A raiz de 3 foi mostrada ocupando 16 posies (sendo uma posio para o
ponto, um espao reservado para o sinal, uma posio para a parte inteira
e 13 posies para a parte fracionria).
O comando format(e) mostra os nmeros em notao cientfica.

7
Por exemplo:
-->format(e)
-->2*%pi/10
ans =
6.283185307E-01 //6.283185307E-01 significa 6.28318530710^1.
Para retornar ao formato inicial usa-se -->format(v) que chamado de
formato de varivel.
O Scilab possui Constantes Especiais do Scilab, que so vrias constantes
pr-definidas.
Algumas constantes pr-definidas no podem ser alteradas. As principais
so mostradas na tabela a seguir:
%pi O nmero
%eps Constante que representa a preciso numrica da
mquina. o menor nmero que, somado a 1, resulta em
um nmero maior do que 1 no computador.
%inf Representa o infinito .
%i 1
%e A base do logaritmo natural.
%t ou %T Representa o valor booleano verdadeiro.
%f ou %F Representa o valor booleano falso.

2.4 Strings

Strings so usados para toda e qualquer informao composta de


caracteres alfanumricos e/ou caracteres especiais.
Exemplos
#, $, &, %, ?, !, @, <, ~, etc.
Os strings so envolvidos por aspas duplas ou simples.
Exemplos:
-->a= "Maria e Jose"
a=
Maria e Jose
Um das atividades mais comuns em programao a concatenao de
strings.
Exemplos:
-->n = "Pedro"
n=
Pedro
-->m = "Paulo"
m=

8
Paulo
-->m + n // Concatena Paulo com Pedro sem
ans =
PauloPedro
-->m + +e+ +n
Paulo e Pedro

2.5 Nmeros complexos

A unidade imaginria representado por %i, ou seja, %i = sqrt(-1).


Exemplo:
Sejam os nmeros imaginrios x e y, como segue:
x = 3 + 4*%i e y = 1 - %i
As operaes abaixo so feitas normalmente:
z1 = x - y
z2 = x * y
z3 = x / y
Bem como o uso de funes:
real(x) Parte real de x
imag(x) Parte imaginria de x
abs(x) Valor absoluto do nmero complexo
atan(imag(x),real(x)) Argumento do nmero complexo
conj(x) Conjugado

3 Polinmios
Os polinmios so criados no Scilab atravs da utilizao da funo
poly. Por exemplo, o polinmio p = 4 3t t 2 , que possui razes -1 e 4,
pode ser criado atravs do comando,
-->p=poly([-1 4],'t') // Polinmio definido pelas suas razes
p =
2
- 4 - 3t + t
Com a funo roots, comprovamos que as razes de p so,
realmente, -1 e 4,
-->roots(p) //razes do polinmio p

9
ans =
4.
- 1.
Um polinmio tambm pode ser criado a partir da especificao de
seus coeficientes atravs do comando, coeff. Exemplo, o polinmio
m = 4t - 1
-->m=poly([-1 4],'t','coeff') // polinmio definido pelo seus coeficientes
m =
- 1 + 4t
3.1 Operaes com polinmios
Vamos definir dois polinmios p e q, de fcil manipulao algbrica
para evidenciarmos as operaes entre eles.
-->p=poly([1 2 1], 't','coeff');
-->q=poly([1 1], 't','coeff');
-->p/q
ans =
1+t
-----
1
-->p+q
ans =
2
2 + 3t + t
-->p-q
ans =
2
t+t

10
-->p*q //Multiplicao
ans =
2 3
1 + 3t + 3t + t
-->[r,q]=pdiv(p,q) //Quociente e resto da diviso de p por q
q =
1+t
r =
0.
Para obter valores de polinmios, usamos a funo horner,
-->horner(p,2)
ans =
9.

4 Vetores
Vamos considerar o conjunto dos nmeros reais. Dizemos que x
um vetor de dimenso n em , indicado por x n , se, e somente se,
x1
x
2
x


xn

Nessa definio, cada um dos elementos do vetor x, xi, pertence a ,


xi

O elemento xi o i-simo elemento do vetor x.


O vetor x definido anteriormente um vetor coluna. Para explicitar
esta condio, escrevemos
n1
x

11
Essa notao indica que o vetor x possui n linhas e apenas uma
coluna.
No Scilab, os vetores so criados colocando-se seus componentes
entre colchetes, [ ]. Os elementos de um vetor coluna so separados por
ponto-e-vrgula. Assim,
-->x=[1;2;3] // vetor coluna. Elementos separados por ;
x =
1.
2.
3.
Um vetor linha, y, de dimenso n em pode ser escrito na forma
y [ y1 y2 ... yn ]

O vetor y definido anteriormente um vetor linha. Para explicitar


esta condio, escrevemos
1n
y

Essa notao indica que o vetor y possui apenas uma linha e n


colunas.
-->y=[1 2 3] // vetor linha; Elementos separados por espao
y=
1. 2. 3.
-->w=[4,5,6]; // vetor linha; Elementos separados por vrgula
Se x um vetor coluna, xT (l-se x transposto) e um vetor linha.
Essa operao realizada no Scilab atravs da utilizao do smbolo
(apstrofo).
-->x' // vetor transposto = vetor linha
ans =
1. 2. 3.
Para determinarmos a dimenso de um vetor, utilizamos o
comando size,
12
-->size(x')
ans =
1. 3.

Vetores podem ser multiplicados ou divididos por quantidades


escalares. Tambm, vetores de mesma dimenso podem ser somados ou
subtrados.
-->3*x //multiplicando x por uma constante
ans =
3.
6.
9.
-->w/3 // dividindo y por uma constante
ans =
1.3333333 1.6666667 2.

-->x'+w // somando dois vetores de mesma dimenso


ans =
5. 7. 9.
Dados dois vetores de mesma dimenso, x, y, n1 define-se o
produto escalar ou produto interno entre x e y atravs da expresso
vetorial, z = xT y. Assim, considerando os vetores:
1 4
x 2 e y 5
3 6

Temos:
-->z=x'*y // Atribuindo a z o produto escalar entre x e y
z =

13
32.
Nos exemplos a seguir, mostramos outras maneiras de construir
vetores, usando ndices e algumas funes internas do Scilab:
-->v=[3:0.5:5] // Vetor com elementos decrementados
v =
3. 3.5 4. 4.5 5.
-->m = ones(1:4) // Vetor constitudo de elementos iguais a 1
m =
1. 1. 1. 1
-->f = zeros(1:5) // Vetor constitudo de elementos iguais a 0
f =
0. 0. 0. 0. 0.
4.1 Plotando funes

A funo bsica para grficos plot, com a seguinte estrutura:

plot ( [veto i], [vetor j] )

-->x=[1 2 3];
-->y=[4 5 6];
-->plot(x,y)
Podemos utilizar outras funes como plot2d
Reta
-->x=[-1:0.2:6];
-->y=7-3*x;
-->plot2d(x,y)
Parbola
-->x=[-4:0.1:4];

14
-->plot2d(x,x^2-2)
Senide
-->x=[0:0.1:2*%pi];
-->y=sin(x);
-->plot2d(x,y)
Todos os comandos esto disponveis na biblioteca Graphic Library no
Help (?) do programa.

-->apropos graphics
-->help plot
5 Matrizes
No Scilab, as matrizes so representadas entre colchetes, [ ]. Os
elementos que constituem as linhas das matrizes so separados por
espaos ou por vrgulas. A indicao de termino de cada linha da matriz
feita com ponto-e-vrgula.
Nos exemplos a seguir, para fixar conceitos, a matriz A digitada
com os elementos de suas linhas separados por espaos enquanto a
matriz B digitada com os elementos de suas linhas separados por vrgula.
Assim,
-->A=[1 2 3; 5 -8 9] // Matriz A - Elementos das linhas separados por
espao
A =
1. 2. 3.
5. - 8. 9.
-->B=[1,2,3;4,5,6]; // Matriz B - Elementos das linhas separados por
vrgulas
-->size(A); // Dimenso da matriz A
-->size(B); // Dimenso da matriz B

15
Uma outra forma de digitar matrizes no ambiente Scilab,
separando os elementos de uma linha por espao (ou por vrgula) e as
linhas separadas por enter,
-->M = [ 1 2 3 4
-->5 6 7 8
-->9 11 13 15];
Matrizes podem ser multiplicadas ou divididas por quantidades
escalares. Tambm, matrizes de mesma dimenso podem ser somadas ou
subtradas. Considerando as matrizes A e B do exemplo anterior, temos:
-->2 * A; // Multiplicao por um escalar
-->A / 2; // Diviso da matriz A por uma constante
-->A + B; // Somando as duas matrizes
Se A mn ,a transposta da matriz A, indicada por AT , AT nm . No
Scilab, a transposio indicada pelo smbolo (apstrofo), ento a
transposta de A fica A. Considerando a matriz B do exemplo anterior,
temos:
-->size(B) ; // Dimenso da matriz B
-->C=B'; // C = transposta da matriz B
-->size(C); // Dimenso da matriz C
m p p n
Se A e B , podemos definir o produto das matrizes A e
B,
mn
C A B

Observar que, para que possa haver a multiplicao entre duas


matrizes, necessrio que o nmero de colunas da primeira matriz seja
igual ao nmero de linhas da segunda matriz.
-->A=[1 2 3;4 5 6;7 8 9];
-->B=[1 4; 2 5; 3 6];
-->size(A);
-->size(B);

16
-->A * B
ans =
14. 32.
32. 77.
50. 122.
Podemos usar funes internas do Scilab para gerar matrizes. Por
exemplo, usamos a funo ones para criar a matriz D 23 , com todos os
elementos iguais a 1,
-->D = ones(2,3);
33
ou a funo zeros para criar a matriz E , com todos os elementos
iguais a 0,
-->E = zeros(3,3);
ou, ainda, a criao de uma matriz identidade, I atravs da funo interna
eye,
-->I = eye(4,4);
Podemos criar matrizes a partir de elementos de outras matrizes,
-->// Definido as matrizes A, B e C
-->A = [1 2; 3 4];
-->B = [5 6; 7 8];
-->C = [9 10; 11 12];
-->// Definindo a matriz D
-->D = [A B C]
D =
1. 2. 5. 6. 9. 10.
3. 4. 7. 8. 11. 12.
5.1 Acesso a elementos de vetores e de matrizes
O acesso a elementos de um vetor ou de uma matriz pode ser
realizado de diversas maneiras.
17
Dentre elas, podemos citar:
a utilizao explcita dos ndices do elemento a ser acessado,
a utilizao do smbolo : (dois pontos)
a utilizao do smbolo $
Vamos considerar o vetor linha v = [1 2 3 4 5 6 7]. O acesso a um
elemento deste vetor feito de forma convencional, o ndice do vetor
indicando qual elemento que est sendo acessado.
Assim,
-->v= [1 2 3 4 5 6 7]
v =
1. 2. 3. 4. 5. 6. 7.
-->v(1); // acesso ao primeiro elemento de v

O smbolo : permite definir formas compactas de acesso a


elementos de um vetor. Por exemplo,
-->v(2:4); // acesso aos elementos 2, 3 e 4 de v
-->v(:); // acesso a todos os elementos de v
-->v(1:2:7); // acesso aos elementos mpares de v

enquanto o smbolo $ permite acessar o ltimo elemento do vetor,


-->v($) // acesso ao ltimo elemento de v
ans =
7.
Em relao as MATRIZES, temos:
-->// Definindo uma matriz A
-->A = [1 2 3; 4 5 6]
A =

18
1. 2. 3.
4. 5. 6.
-->A(1,2); // Acessando o elemento da primeira linha e
segunda coluna de A

O comando M = A([1 2], 2), permite construir uma matriz, M,


composta pelo primeiro e segundo elementos, indicados pelo vetor [1 2],
da segunda coluna da matriz A,
-->M = A([1 2], 2);
Considerando a matriz A do exemplo anterior, o comando A(:,3),
permite acessar todos os elementos da terceira coluna da matriz A,
-->A(:, 3); // Todos os elementos da terceira coluna da matriz A

enquanto o comando A(2,:) permite acessar todos os elementos da


segunda linha da matriz A,
-->A(2,:); // Todos os elementos da segunda linha da matriz A
-->A($); // Acesso ao ltimo elemento de A
-->A(1); // Primeiro elemento de A
-->A(5); // Quinto elemento de A
-->A(:); // Todos os elementos armazenados por coluna

possvel alterar os valores de elementos de uma matriz. Considerando a


matriz A, podemos mudar o valor do seu elemento A(2,1) atravs do
comando de atribuio A(1,2) = 10,
-->A(1,2) = 10 // Atribuir a A(1,2) o valor 10
A =
1. 10. 3.
4. 5. 6.

19
Depois, atribumos os valores [-1; -2] aos primeiro e segundo
elementos da segunda coluna da matriz A,
-->A([1 2], 2) = [-1; -2] // A(1,2) = -1 e A(2,2) = -2
A =
0. - 1.
0. - 2.
Finalmente, modificamos os elementos A(1,1) e A(1,2) da matriz A.
-->A(:,1) = [8;5] // A(1,1) = 8 e A(1,2) = 5
A =
8. - 1. 3.
5. - 2. 6.
5.2 Operaes com vetores e matrizes
SMBOLO OPERAO
transposta
+ adio
- subtrao
* multiplicao
/ diviso direita
\ diviso esquerda
^ exponenciao
.* multiplicao elemento-a-elemento
.\ diviso, esquerda, elemento-a-elemento
./ diviso, direita, elemento-a-elemento
.^ exponenciao elemento-a-elemento

As operaes envolvendo os operadores , +, -, * e / j foram


apresentadas em pargrafos anteriores. Os outros operadores mostrados
na Tabela sero apresentados nessa Seo. Vamos analisar a utilizao do
operador \. Para isso, definimos um sistema de equaes lineares,

20
a1,1 x1 a1,2 x2 a1,n xn b1
a2,1 x1 a2,2 x2 a2,n xn b2
...............................................
an,1 x1 an,2 x2 an, n xn bn

Que pode ser escrito na forma matricial


Ax=b
Onde
a1,1 a1,2 ... a1,n x1 b1
a a2,2 ... a2,n x b
A= x= b=
2,1 2 2
com e


an ,1 an ,2 an,n xn bn

Nas expresses anteriores, A nn a matriz dos coeficientes,


x n1 o vetor das incgnitas e b n1 o vetor de termos
independentes.
Resolver um sistema linear obter o valor do vetor x. Na situao
mais simples, a matriz A -1 no-singular (admite inversa) e a soluo,
nica, dada pela expresso:
--> x = inv(A) * b

Seja o sistema de equaes dado:


2 x1 3 x2 7

x1 4 x2 2

Temos:
-->inv(A) //A admite inversa
ans =

21
0.3636364 0.2727273
0.0909091 - 0.1818182
-->B=[7; -2] // vetor B
B =
7.
- 2.
-->x=inv(A)*B // Soluo do sistema linear
x =
2.
1.
O mesmo resultado pode ser encontrado utilizando-se o operador \.
Temos, ento,
-->x=A\B //Resoluo de Ax = b usando o operador \
x =
2.
1.
importante observar que o smbolo \ no define uma diviso
matricial. Indica, apenas, uma outra forma de se obter a soluo de um
sistema linear. O operador . (ponto), como pode ser visto na Tabela,
utilizado com outros operadores (*, \, /, ^) para realizar operaes
elemento a elemento de vetores ou de matrizes. A sesso do Scilab a
seguir mostra exemplos dessas operaes utilizando vetores.
-->x = [1 3 4 6]; //Definio do vetor x
-->y = [2 4 6 8]; //Definio do vetor y
-->x .* y; // Multiplicao elemento a elemento
-->x * y
!--error 10
Multiplicao incoerente.

22
A operao .* gera um vetor formado pelo produto dos elementos
dos vetores x e y. Apenas para fixar conceitos, verificamos que a operao
x * y no pode ser realizada. Continuando com os exemplos, usamos os
operadores ./ para dividir os elementos do vetor x pelos elementos do
vetor y,
-->x ./ y ; // elementos do vetor x divido pelos elementos do vetor y

-->x .\ y; // elementos do vetor y divido pelos elementos do vetor x

A utilizao do operador .^ mostrada nos exemplos apresentados


em seguida,
-->x .^ y;
-->y .^ x;
Vamos verificar tambm a utilizao do operador . (ponto) em
conjuno com os operadores (*, \, /, ^) quando se trata de matrizes. Para
isso, vamos considerar a matriz quadrada A 33 ,
1 2 3
A 4 5 6
7 8 9

A sesso do Scilab a seguir mostra exemplos dessas operaes


utilizando matrizes.
-->A = [ 1 2 3; 4 5 6; 7 8 9]; // Definindo a matriz A
A =
1. 2. 3.
4. 5. 6.
7. 8. 9.
-->A .* A;
-->A ^ 2;
-->A * A;
-->A ./ A;

23
33
Para fixar conceitos, vamos considerar a matriz quadrada B
2 2 2
B 2 2 2
2 2 2

-->B = [ 2 2 2; 2 2 2; 2 2 2]; // Definio da matriz B


-->A ./ B;
-->A .^ B;
-->A .\ B;
que equivale operao
-->B ./ A;
6 Programao no Scilab
6.1 Arquivos de Scripts
Um arquivo de script um arquivo texto que contm uma sequencia de
comandos para ser executada. O Scilab executa esses comandos
automaticamente da mesma forma como se fossem digitados na linha de
comando. O editor de texto do Scilab o SciNotes.
6.2 Criao de arquivos de script

Para criar um arquivo de script clique no boto na barra de


ferramentas ou no menu Aplicativos SciNotes:

Crie um arquivo script com os comandos:

24
Salve com o nome Soma.sce no menu Arquivo Salvar. Escolha a pasta
que preferir.
Por padro o Scilab salva os arquivos de script na pasta onde foi instalado,
porm voc pode alterar este caminho clicando em Arquivo Alterar
diretrio atual, ou no boto .

Na janela do arquivo script clique em para executar os comandos. O


resultado aparecer no console do Scilab:

6.3 Estruturas for e if


6.3.1 O loop for
A forma geral do comando for :

for varivel = vetor linha


instruo 1
instruo 2
...
instruo n
end

25
Por exemplo, vamos fazer a soma 1+2+3+...+10:

Clique no boto executar para ver o resultado.

6.3.2 O comando de deciso if-then-else


O comando if tem a forma geral:

if condio1 then
sequencia de instrues 1
elseif condicao2
sequencia de instrues 2

...

else
sequencia de instrues n
end

Exemplo:

26
6.4 Funes criadas pelo usurio
A forma geral de uma funo :

function [y1, y2, ..., ym]=nomedafuno(x1, x2, ..., xn)

comandos ...

endfunction

Como exemplo, vamos criar a funo somadif:

No console do Scilab chamamos a funo somadif(a, b) executando o


arquivo que a contm:
exec(somadif.sce).

27
Depois passamos os dois parmetros necessrios para a funo somadif(a,
b). Esta funo retornar dois valores, a soma a b e a diferena a b , que
vamos armazenar nas variveis s e d :

6.5 Implementao Eliminao de Gauss


Vamos implementar o Mtodo da Eliminao de Gauss para resoluo de
sistemas lineares. Isso ser feito em duas etapas:
1) Escalonamento da matriz dos coeficientes
Algoritmo:
Para k 1,..., n 1
Para i k 1,..., n
aik
m
akk
aik 0
Para j k 1,..., n
aij aij makj
bi bi mbk

28
Consideremos o sistema de equaes lineares:
3x1 2 x2 4 x3 1 3 2 4 x1 1

x1 x2 2 x3 2 1 1 2 x2 2
4 x 3x 2 x 3 4 3 2 x 3
1 2 3 3

Aplicando a funo que acabamos de criar:

29
2) Resoluo do sistema
Algoritmo:
xn bn / ann
Para k (n 1),..., 2,1
s0
Para j (k 1),..., n
s s akj x j
xk (bk s) / akk
Vamos incluir o cdigo para resoluo do sistema na funo elimGauss():

Chamando a funo elimGauss(A, b) na console do Scilab, temos como


resultado:

30
31

Você também pode gostar