Escolar Documentos
Profissional Documentos
Cultura Documentos
1
1.4 Interface e menus do Scilab
2 Noes fundamentais
2.1 Usando o Scilab como uma simples calculadora
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.
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.
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.
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
8
Paulo
-->m + n // Concatena Paulo com Pedro sem
ans =
PauloPedro
-->m + +e+ +n
Paulo e Pedro
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
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 ]
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
-->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
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
18
1. 2. 3.
4. 5. 6.
-->A(1,2); // Acessando o elemento da primeira linha e
segunda coluna de A
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
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
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
23
33
Para fixar conceitos, vamos considerar a matriz quadrada B
2 2 2
B 2 2 2
2 2 2
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 .
25
Por exemplo, vamos fazer a soma 1+2+3+...+10:
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 :
comandos ...
endfunction
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 :
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
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():
30
31