Você está na página 1de 30

Introduo ao Scilab

Prof Gilka Rocha Barbosa


1
Introducao ao Scilab
Apresentar comandos bsicos necessrios
introduo programao e
desenvolvimento de programas simples.
Ambiente
Elementos bsicos
Nmeros, Vetores e Matrizes
Variveis
Operadores
Funes elementares
Carga e gravao


Introduo ao Scilab 2 2
Introduo ao Scilab 3
Linguagens de Programao (LP)
As linguagens de programao permitem ao
usurio especificar um programa de uma forma
semelhante ao algoritmo.
Um compilador/interpretador da linguagem
dever fazer a traduo das instrues de alto
nvel para as de nvel mquina (por exemplo,
manter os endereos de memria onde esto
guardadas as variveis).
C = A + B
LDA 11A810A0
LDB 22345A91
ADD A,B
STA 1234FE88
3
Exemplo 1: Asembly
Trecho de cdigo em C
a=5;
b=10;
c=a+b;

Cdigo em Assembly (MIPS)
ADDi $t0,$zero,5 //Adiciona-se ao registrador t0 o valor 5
ADDi $t1,$zero,10 //Adiciona-se ao registrador t1 o valor 10
ADD $t2,$t0,$t1 //Soma-se os valores contidos nos
registradores t0 (5) e t1 (10) e atribui o
resultado ao registrador t2
4
Exemplo 2: Asembly
Cdigo em C
A=5;
B=10;
media=(a+b)/2;

Cdigo Assembly (MIPS)
ADDi $t0,$zero,5 //Adiciona-se ao registrador t0 o valor 5
ADDi $t1,$zero,10 //Adiciona-se ao registrador t1 o valor 10
ADD $t2,$t0,$t1 //Somam-se os valores contidos nos
registradores t0 (5) e t1 (10) e atribui-se
o resultado ao registrador t2
ADDi $t3,$zero,2 //Adiciona-se ao registrador t2 o valor 2
(divisor)
DIV $t2,$t3 //Divide-se o valor contido no registrador
t2(50) pelo valor contido em t3 (2)

5
Traduo Cdigo Fonte Cdigo Objeto
6
Introduo ao Scilab 7
Linguagens de Programao (LP)
Existem vrios tipos de LP baseadas em diferentes
paradigmas (estilos) de programao.
Linguagens imperativas:
Fortran, Pascal, C, MATLAB, SCILAB
Controle explcito da execuo
Linguagens Orientadas a Objetos:
Smalltalk, C
++
, Java
Controle implcito na manipulao dos dados
Linguagens Funcionais:
LISP, Scheme
Baseadas na especificao de funes
Linguagens Lgicas:
Prolog
Implementando a Lgica de Predicados
7 Introduo ao Scilab 8
Linguagens de Programao (LP)
Java
C
C
C++
Objective-C
PHP
Visual Basic
Python
Perl
JavaScript
Delphi / Object Pascal
Ruby
Lisp
Transact-SQL
Pascal
Visual Basic .NET
PL/SQL
Logo
Ada
R

8
Scilab
Software livre para clculo numrico e simu-
lao de sistemas fsicos. Usado nas reas:
Fsica
Sistemas complexos
Processamento de imagens
Controle e processamento de sinais
Automao industrial
Controle de processos
Computao grfica
Matemtica
Modelagem biolgica
...
9
Scilab
Criado em 1989 por um grupo de pesquisadores da INRIA
e da ENPC.
Disponvel como software livre desde 1994 pelo site
http://www.scilab.org

Consrcio Scilab desde 2003 mantido por diversas empre-
sas.
Objetivos do consrcio:
organizar cooperao entre os desenvolvedores
obter recursos para manuteno da equipe
garantir suporte aos usurios

Sistemas Operacionais:
Linux
Windows
Solaris
Unix
10
Introduo ao Scilab 11
Scilab
Ambiente utilizado no desenvolvimento de
software para resoluo de problemas numricos
Gratuito, software free
A ltima verso est sempre disponvel,
geralmente via Internet
O software pode ser legalmente utilizado,
copiado, distribudo, modificado
Distribudo com cdigo fonte
Sintaxe semelhante ao Matlab
Permite interface com rotinas escritas em outras
linguagens como C
Suporta o desenvolvimento de conjuntos de
funes voltadas para aplicaes especificas
(toolboxes).

11
Prompt de comando
Help
Editor
Ambiente Scilab
12
Ambiente Scilab
Introduo ao Scilab 13
Mude
o diretrio
13 Introduo ao Scilab 14
Ambiente de programao
Um conjunto de comandos digitado em um arquivo
texto e este arquivo executado no ambiente Scilab




14
Teste!!!!!!!!
// Programa para calcular a media de duas notas
clear
nota1 = input ('Digite a primeira nota: ');
nota2 = input ('Digite a segunda nota: ');
media = (nota1 + nota2)/ 2;
if media >= 7
resultado = ' aprovado.';
else
resultado = ' reprovado. ';
end
printf ( "\n A mdia entre %1.2f e %1.2f %1.2f e o
aluno est %s \n\n", nota1, nota2, media, resultado)
Introduo ao Scilab 15
Salve com o nome
Media.sce
15
Teste!!!!!!!!
// Programa para calcular a media de duas notas
clear
clc
nota1 = input ('Digite a primeira nota: ');
nota2 = input ('Digite a segunda nota: ');
media = (nota1 * 2 + nota2 * 3)/ 5;
if media >= 5
resultado = ' aprovado.';
else
resultado = ' reprovado. ';
end
printf ( "\n A mdia entre %1.2f e %1.2f %1.2f e o
aluno est %s \n\n", nota1, nota2, media, resultado)
Introduo ao Scilab 16
Salve com o nome
Media.sce
16
Introduo ao Scilab 17
Teste!!!!!!!!!!




execute
Media
17 Introduo ao Scilab 18
Janela de grficos




18
Teste!!!!!!!!
Introduo ao Scilab 19
-->a= 1 : 0.1 : 10;

-->plot (a, sin(a))
Veja a barra
Scilab Graphic
19 Introduo ao Scilab 20
Utilizao bsica
Variveis especiais pr-definidas.
So protegidas e no podem ser apagadas.
who: lista as variveis
whos (): lista e dimensiona as variveis
clear: remove todas as variveis do espao de trabalho
help: informa sobre os comandos e funes
Ex.: help, help inv, help help
pwd: Mostra o diretrio atual.
sci: Mostra o diretrio onde o Scilab foi instalado.
ls: Lista os arquivos do diretrio.
chdir(dir): Muda de diretrio.
mkdir(dir): Cria um diretrio.
rmdir(dir, s): Remove um diretrio.
quit ou exit sai do Scilab

20
Introduo ao Scilab 21

Utilizao bsica

Outras variveis podem ser criadas
-- > a=1
-- > A = 2
-- > a

Algumas constantes especiais so precedidas
pelo caractere %:
%e: constante neperiana
%i: raiz quadrada de -1, nmero imaginrio
%pi: constante pi
%eps: mximo valor tal que 1+%eps=1
%inf: infinito
%nan: no um nmero
%t: verdadeiro
%f: falso
21 Introduo ao Scilab 22
Utilizao bsica
... continua uma expresso em outra
linha
-->s = 1-1/2+1/3-1/4+1/5-1/6+1/7...
-->-1/8+1/9-1/10;
s =
0.6456349


22
Introduo ao Scilab 23
Utilizao bsica

; ao final de uma expresso o clculo
feito mas o resultado no apresentado

-- > A=1 // Atribui o valor 1 a A
-- > b=2; // Atribui o valor 2 a b
-- > A + b; // soma de A e b

23 Introduo ao Scilab 24
Utilizao bsica
Adio +
Subtrao -
Multiplicao *
Diviso direita /
Diviso esquerda \
Potenciao ^

capaz de executar matemtica elementar como uma
calculadora:
-- > 4 * 1 + 6 * 0.5 + 5 * 2

Podem-se armazenar em variveis:
-- > macas = 2
24
Introduo ao Scilab 25
Variveis
Nomes legais de variveis consistem numa
combinao qualquer de letras, dgitos e
sublinha, comeando com uma letra.
Ali22B, Cost, X3_f22 and s2Sc6
case-sensitive (diferencia letras maiscula de
minscula)
Mat1 diferente de mat1
Variveis ilegais
Ali-22, 5x, 3Cost, &r5, %67 and @xyt56
Caracteres
x= a ou x= a
Strings
mg1='Ali'; ou mg2=SCILAB DEMOS'
25 Introduo ao Scilab 26
Elementos bsicos
Nmeros, Vetores e Matrizes
Uma matriz pode ser
Um escalar (nmero): matriz com dimenso 1 x 1
Um vetor linha: matriz 1 x n
Um vetor coluna: matriz n x1
Uma matriz bidimensional: matriz n x m
Uma matriz multidimensional: matriz com dimenso
n
1
x n
2
x n
3
x ... n
m


ltimo
valor
calculado
Casa
decimal
No ambiente do Scilab digite:
--> 10
ans =
10
-->
--> p=%pi
p =
3.1415927
-->
26
Introduo ao Scilab 27
Nmeros, Vetores e Matrizes
O Scilab reconhece vrios tipos de
nmeros:

Real: 4.607, - 199.34,
Complexo: 2 + 3i , i=j=sqrt(-1)),
Literal: nome
Lgico: V/F


27 Introduo ao Scilab 28
Exemplo
Calcular a equao do segundo grau: ax
2
+ bx + c.
As razes da equao so dadas por:
a
ac b b
x x
2
4
,
2
2 1
r

Resolvendo a seguinte equao:


x
2
+ 4 x + 13 = 0
-- > a = 1, b = 4 , c = 13
-- > x1 = (-b + sqrt (b^2 4 * a * c)) / (2 * a)
-- > x2 = (-b - sqrt (b^2 4 * a * c)) / (2 * a)
O Scilab apresenta como soluo:
x1 = -2.00 + 3.000i
x2 = -2.000 3.000i
28
Z = a + %i*b

Exerccio:
Dados os seguintes nmeros complexos,
Z1 = 3 + 5i; Z2 = 7 + 3i
execute as seguintes operaes:
a) Z1 + Z2;
b) Z1 * Z2;
c) Z1 + sqrt(-20);
d) Calcule os mdulos de Z1 e Z2 e compare com
abs(z);

Lembre-se

2 2
| | b a z
Nmeros complexos
29
Vetores e matrizes
As grandezas vetoriais podem ser criadas
colocando-se seus componentes entre
colchetes [ ]

Os componentes de um vetor podem ser
separados por vrgula, espao ou por
ponto-e-vrgula.

30

Vetores
Declarao de vetores:
X = [ x1 x2 x3 ...] vetor linha
X = [x1;x2;x3;...] vetor coluna

Transposio de vetores: X

Exerccios:
Verifique a diferena entre: x = [1 2 3], z = [1,2,3] e y = [1;2;3]
Dados os vetores:
x = [1,2,3,4,5] e y = [2,4,6,8,10]
Calcule:
a) z = x + y;
b) z = x*y;
c) Formas transpostas de x e y;
d) Dados z1 = x*y; e z2 = x*y;
Verifique se z1 = z2.
31 Introduo ao Scilab 32
Exemplo de funo com vetor
--> x=0:0.1:10;
--> plot (x,sin(x))







--> z=cos(x);
--> plot (x,z)
0 1 2 3 4 5 6 7 8 9 10
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7 8 9 10
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
32
Introduo ao Scilab 33
Exemplo
-->g
!--error 4
undefined variable : g

-->g = 1:5
g =
1. 2. 3. 4. 5.

-->g*g
!--error 10
inconsistent multiplication
33
Algumas funes elementares
imag(x): Mostra a parte imaginria de um complexo
real(x): Mostra a parte real de um complexo
log(x), log10(x), log2(x): Logaritmos natural, base 10 e base 2
modulo(x,y): Mostra o resto da diviso de x por y
abs(x): Retorna o valor absoluto (se x real) e o mdulo se x
complexo)
round(x): Arredonda o valor de x para o inteiro mais prximo
floor(x): Arredonda para o menor inteiro
ceil(x): Arredonda para o maior inteiro
sqrt(x): Calcula a raiz quadrada de x
cos(x), sin(x), tan(x), cotg(x): Retorna cosseno, seno, tangente
ou cotangente de x (x deve estar em radianos)
acos(x), asin(x), atan(x): Retorna o ngulo (em radianos)
34
Algumas funes elementares
abs(x): Retorna o valor absoluto (se x real) e o mdulo
se x complexo)
acos(x), asin(x), atan(x): Retorna o ngulo (em radianos)
ceil(x): Arredonda para o maior inteiro
cos(x), sin(x), tan(x), cotg(x): Retorna cosseno, seno,
tangente ou cotangente de x (x deve estar em radianos)
exp(x): Exponencial (e) de um valor x.
factorial(x): I Fatorial (e) de um valor x.
floor(x): Arredonda para o menor inteiro
imag(x): Mostra a parte imaginria de um complexo
log(x), log10(x), log2(x): Logaritmos natural, base 10 e
base 2
modulo(x,y): Mostra o resto da diviso de x por y
real(x): Mostra a parte real de um complexo
round(x): Arredonda o valor de x para o inteiro mais
prximo
sqrt(x): Calcula a raiz quadrada de x
35
Programando com o Scilab
Caractersticas do Scilab
Interpretador de comandos e por isso o
cdigo gerado no precisa ser compilado.
Facilidade e simplicidade da linguagem
estruturada.
No h necessidade de declarao prvia
das variveis.

36
scripts
Scripts so arquivos de texto que contm
comandos que seriam usados em um prompt do
Scilab.
Por conveno estes arquivos possuem
extenso .sce ou .sci
Os arquivos so criados no editor de texto do
Scilab, o Scipad (ou em qualquer outro editor
de texto).
Os arquivos so executados no Scilab com o
comando exec,


37
Exerccio
Faa um programa em Scilab que encontre
a mdia de duas notas de vrios alunos.
O script deve ser digitado em um editor de
textos e salvo com a extenso .sce, por
exemplo media.sce.
Para executar no Scilab, digite: exec
(media.sce).
Note que voc deve estar no diretrio em
que o arquivo media.sce se encontra.

38
Introduo ao Scilab 39
Exemplo
// Programa para calcular a media de duas notas
clear
cont = 0;
fim = "s"
while fim == "s" | fim == "S"
nota1 = input('Digite a primeira nota: ');
nota2 = input('Digite a segunda nota: ');
media = (nota1 + nota2)/ 2;
if media >= 7
resultado = ' aprovado.';
else
resultado = ' reprovado. ';
end
printf ( "\n Mdia: 1.2f . Aluno: %s \n\n, media, resultado)
cont = cont + 1;
fim = input('Para continuar, digite s: ', "s");
end
disp (cont)
39 Introduo ao Scilab 40
Exemplo Media
40
Introduo ao Scilab 41
Exemplo
Exec...
Media
41 Introduo ao Scilab 42
Operadores Relacionais
Operador Resultado
== igual a
~= , <> diferente de
> maior do que
< menor do que
>= maior ou igual a
<= menor ou igual a
= usado para atribuio e no para comparao
42
Introduo ao Scilab 43
Operadores Lgicos
Operador Descrio
& e
| ou
~ no
A
F
F
V
V
B
F
V
F
V
A & B
F
F
F
V
A | B
F
V
V
V
~A
V
V
F
F
~B
V
F
V
F
Tabela Verdade dos operadores &, | e ~
43 Introduo ao Scilab 44
Comandos de controle de fluxo - if
Formatos:

if condio
comandos1;
else
comandos
end

if condio1
comandos1;
elseif condio2
comandos2;
else
comandos3
end

if condio
comandos;
end
if condio1
comandos1;
else
if condio2
comandos2;
else
comandos3;
end
end
44
Introduo ao Scilab 45
Exemplo do comando if
Exemplo:

x = -1;
if x < 0 then
y = 2*x;
else
y = x;
end
disp(y);
x = 10;
if x < 0 then
y = -x;
elseif x == 1
y = x;
elseif x == 2
y = 2*x;
else
y = 5*x;
end
disp(y);
45 Introduo ao Scilab 46
Comandos de controle de fluxo select
Formato:
select var
case expr-1,
comandos1
case expr-2,
comandos2
...
else
comandos
end


O valor da varivel var comparado s expresses, se os valores
so iguais, a seqncia correspondente executada.
46
Introduo ao Scilab 47
Exemplo do comando select
// Exemplo de case
A=input('Digite um nmero')
select A
case 1,
disp('A vale 1')
case 2,
disp('A vale 2')
else
disp('A nao nem 1 nem 2')
end

47
Comandos de controle de fluxo - for
Formato:
for var = inicio : incremento : fim
comandos;
end

Exemplo:
a = 0
for i=1:3
a = a+1
end
Introduo ao Scilab 48
L = list (2, [1 2; 3 4], 'elemento');
for k=L
disp(k);
end
48
Introduo ao Scilab 49
Exemplo do comando for
// Gera e mostra uma matriz
n=3;m=2;
for i=1:m
for j=1:n
a(i,j)=i+j
end
end
s=sprintf( '\n Matriz A:a(i,j)=i+j\n );
disp(s);
disp(a);

49 Introduo ao Scilab 50
Comandos de controle de fluxo - while
Formato:
while condio
comandos;
end

// Exemplo while 1
n=1;
x=input ();
while n<=x
n=n+1;
end
disp( final);
disp (n)

50
Introduo ao Scilab 51
Exemplo do comando while
// Exemplo while 3
x =1, v = []
while x <= 16
v = [v x]; x = x*2;
end
// Exemplo while 2
n=1;
while n<=23
n=n+1;
end
printf(\n final: %d,n);
51 Introduo ao Scilab 52
Funes de entrada - input
input( )
possibilita a interao entre o usurio e o programa

Exemplo:
Receber um dado numrico
nu = input( Digite um numero qualquer: )




Receber um dado texto
tx = input( Digite a resposta: ,s )
varivel
string
comando de
atribuio
solicita ao usurio que
fornea algum dado de
entrada
52
Introduo ao Scilab 53
Funes de Sada - disp
disp(varivel) ou disp(texto)
exibe na tela o valor da varivel sem mostrar seu nome ou
exibe o texto ou string colocado entre aspas.

Exemplo:

disp(Media Geral ) // exibe a frase Media Geral

i = 4
disp(i) // exibe o valor armazenado na varivel i (4)

nome = "maria";
disp ("Seu nome " + nome) // concatena os strings

v=10
disp ("A velocidade final " + string(v))
// converte numero em string e concatena
53 Introduo ao Scilab 54
Funes de Sada - printf

printf (formato, dado)
exibe valores e texto e permite a formatao










Exemplo:
printf ( "\n O valor de pi = %.f \n\n",%pi )

printf ( \n O valor de pi = %6.2f \n ",%pi )

Caractere de
formatao
Resultado
%d ou %i Exibe o valor como inteiro
%f ou %x.yf Exibe o valor em formato de ponto flutuante
%s Exibe o valor de um literal
\n Muda de linha
\t Insere espao
54
Introduo ao Scilab 55
Exemplo
// Programa para calcular a media de vrios alunos
clear
totalAlunos = input('Digite o numero de alunos: ');
for cont = 1:totalAlunos
nota1 = input('Digite a primeira nota: ');
nota2 = input('Digite a segunda nota: ');
media = (nota1 + nota2)/ 2;
if media >= 7
resultado = ' aprovado.';
else
resultado = ' reprovado. ';
end
printf ("\n O aluno %d teve mdia %.2f e sua
situao %s", cont, media, resultado)
// exibe a palavra Aluno, o nmero, a mdia e o resultado
end
55 Introduo ao Scilab 56
Exemplo
// Programa para calcular a media de duas notas
clear
cont = 0;
fim = "s"
nota1= -1;
nota2 = -1;
while fim == "s" | fim == "S"
while nota1 < 0 | nota1 > 10
nota1 = input('Digite a primeira nota: ');
if nota1 < 0 | nota1 > 10
disp ('Nota invlida')
end
end

while nota2 < 0 | nota1 > 10
nota2 = input('Digite a segunda nota: ');
if nota2 < 0 | nota1 > 10
disp ('Nota invlida')
end
end


56
Introduo ao Scilab 57
Exemplo
// Programa para calcular a media de duas notas - continua

media = (nota1 + nota2)/ 2;

if media >= 7
resultado = ' aprovado.';
else
resultado = ' reprovado. ';
end

printf "\n Mdia %.2f \t %s, media, resultado)

cont = cont + 1;

fim = input('Para continuar, digite s: ', "s");
End

printf "\n Total de aluno(s) processados %.d \n, cont)

57
Funes
Variveis definidas dentro do escopo da
funo (variveis locais) no permanecem no
ambiente aps a execuo da funo.

Uma funo pode ser definida de trs formas:
no ambiente Scilab;
usando o comando deff ou
digitando o texto no Scipad e clicando no menu
Execute, opo load into Scilab

58
Funes
Definio
function [y1,...,yn]= nome_da_funcao(x1,...,xm)
instrucao_1
instrucao_2
...
instrucao_p
endfunction

onde:
x1,...,xm so os argumentos de entrada
y1,...,yn so argumentos de sada
instruco_1,...,instrucao_p so as instrues ex
ecutadas pela funo.
59
Funes - Exemplo
Definir uma funo que converte um nmero complexo da
forma cartesiana para a polar.

1 (Salve em: cart_to_polar.sci)
function [mod,ang] = cart_to_polar(re,im)
mod = sqrt(re^2 + im^2);
ang = atan(im/re) * 180/%pi;
endfunction


2. (Salve em program_chama_funcao.sce)
exec(' cart_to_polar.sci');
z = 2 + 2*%i;
[mod,ang] = cart_to_polar(real(z),imag(z));
disp(mod);
disp(ang);
60
Funes - Exerccios
1. Crie uma funo que calcule as razes de
uma equao do segundo grau usando a
frmula de Bskara. Desenvolva um
programa para a funo e um para a
execuo da funo.

2. Crie uma funo que calcule o fatorial de
um nmero usando o comando de iterao
for. Faa o mesmo usando o comando
while.

61

Vetores
Declarao de vetores:
X = [ x1 x2 x3 ...] vetor linha
X = [x1;x2;x3;...] vetor coluna

Transposio de vetores: X

Exerccios:
a) Verifique a diferena entre: a = [1 2 3] e b = [1;2;3]
b) Dados os vetores:
x = [1,2,3,4,5] , y = [2 4 6 8 10], w = [2;4;6;8;10]
Calcule:
a) z = x + y b) z1 = x*y
c) z2 = x*w d) z3 = x.* y
e) z4 = x*y f) z5 = x*y
g) verifique se z4 = z5.
62
Introduo ao Scilab
Exemplo
-->g
!--error 4
undefined variable : g

-->g = 1:5
g =
1. 2. 3. 4. 5.

-->g*g
!--error 10
inconsistent multiplication
63

Vetores
V = Valor_inicial : incremento : Valor_final

Exemplos:
A1 = 1:10
B1 = 1:2:10
C1 = 1:0.2:10
D1 = 10:-1:1
E1 = 1:%pi:20
F1 = 0:log(%e):20
G1 = 20:-2*%pi:-10

64

Vetores
V2 = linspace (Valor_inicial, Valor_final,
quantidade de elementos):

Exemplos:
A2 = linspace (1 ,10,15)
B2 = linspace ( 1,2,10)
C2 = linspace ( 1,0.2,10)
D2 = linspace ( 10,-1,1)
E2 = linspace ( 1,%pi,20)
F2 = linspace ( 0,log(%e),20)
G2 = linspace ( 20,-2*%pi,10)

65
Operaes com vetores
Dimenso: length(x)
Nmero de linhas e colunas: [nr,nc] = size(x)
Elementos iguais a 1: x = ones(m,n)
Matriz identidade: x = eye(m,m)
Vetores nulos: x = zeros(m.n)
Vetores com valores aleatrios: x =rand(m,n)
Apaga elemento: x(i,j) = []
Insere elemento i no final: x = [x i]
Acessa ltimo elemento: x($)
Acessa elementos entre n e m: x(n:m)
Agrupa dois vetores: c = [x y]
66
Operaes e estruturas bsicas
As grandezas vetoriais podem ser criadas
colocando-se seus componentes entre
colchetes [ ]

Os componentes de um vetor podem ser
separados por vrgula, espao ou por
ponto-e-vrgula.

67
Operaes com vetores
Valor mnimo: min(x)
Valor mnimo e posio relativa: [V,P] = min(x)
Valor mximo: max(x)
Valor mximo e posio relativa: [V,P] = max(x)
Encontra um elemento: find(x operador elemento)
Soma dos elementos: sum(x)
Multiplicao dos elementos: prod(x)
Ordenao dos elementos: gsort(x)
68
Operaes com vetores
Acesso linha i: A(i,:)
Acesso coluna j: A(:,j)
Insere linha no final: A = [A;linha]
Insere coluna no final: A = [A coluna]
Acesso ultima linha: A($,:)
Acesso ltima coluna: A(:,$)

69
Operaes com vetores
Soma: C = A + B
Multiplicao: C = A*B
Multiplicao elemento: C = A.*B
Multiplicao por um escalar: B = a*A
Matriz complexa: C = A + B*%i (A e B reais)
Matriz transposta: C = A
Determinante: d = det(A)
Diagonal: d = diag(A).

70
Operaes com vetores
Exerccio:
1. Crie:
a) Um vetor unitrio com 10 elementos
b) Um vetor nulo com 5 elementos
c) Um vetor com 10 elementos aleatrios
d) Verifique suas dimenses

2. Dado o vetor X = [1 2 3 4 5];
a) Insira o valor 10 no final
b) Apague o quinto elemento do vetor
c) Atribua valor zero aos elementos entre 2 e 4

3. Dados os vetores



crie um vetor Z que seja dado pela unio de X e Y.
X = [ e sin( ) log(10)]
Y = [10,3 1,1 -2,2]
S S
71 Introduo ao Scilab 72
Exerccio
1. Desenhe a funo f(x) = 2e
-0,2x
para o intervalo 0x10.

2. Suponha que u = 1 e v = 3. Avalie as seguintes expresses.
a) 4u b) _2v
-2
___ c) v
3
___ d) 4_ v
3v (u + v)
2
v
3
u
3
3



3. Digite essas declaraes. Que resultado obtm?

--> // criar um array de entrada entre -2*pi e 2*pi
--> t = -2*%pi : %pi/10 : 2*%pi;
--> // calcular |sin(t)|
--> x = abs(sin(t));
--> // plot resultado
--> plot (t,x);
72
Matriz
Uma matriz geral consiste em m*n nmeros
dispostos em m linhas e n colunas:

73
Matriz







No Scilab:

-->M = [1 2 3; 4 5 6; 7 8 9]
M =

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

74
Operaes com matrizes
Exerccio
1. Dadas as matrizes
A = [1 2 3;4 5 6]; e B = [7;8;9]
Determine:
a) A*B
b) B*A
c) A*identidade(A)
d) A*ones(A)
e) A*ones(A) + identidade(A)

2. Dada a matriz A = [2 4 6;8 10 12; 1 2 3]
a) Atribua valor zero linha 3;
b) Multiplique a linha 2 por 10;
c) Remova a ltima linha
d) Insira o vetor B = [1 2 3] na ltima linha de A


75
Operaes com matrizes
Exerccio:
1. Crie uma matriz 5X5 de nmeros aleatrios.
a) Atribua valor 0 coluna 2.
b) Multiplique os elementos de 2 a 4 da coluna 3 por 10.
c) Divida os elementos de 1 a 3 da coluna 5 por 5.
d) Remova a coluna 3.
e) Remova a linha 2.


76
Operaes com matrizes
Exerccios: Dadas as matrizes
1 3 4 6 8 9
2 3 4 9 1 3
3 3 3 6 5 3
8 8 7 9 9 2
9 8 2 3 4 1
1 1 3 8 7 9
A=
2 2 2 3 4 5
9 0 0 1 2 3
0 1 2 3 7 8
1 9 2 3 5 6
8 9 0 1 2 3
4 2 3 4 5 5
B=
Calcule:
a) C = A + B
b) C = A*B
c) C = 10*A + 5*B
d) C = A + B*%i
e) C = A + rand(B)
f) Determinante de A
g) Determinante de B
h) Diagonal de A
77
Matrizes simblicas
Uma matriz simblica pode ser construda com
elementos do tipo string:
--> M =['a' 'b';'c' 'd'] ;
Se atribudos valores s variveis pode-se visualizar a
forma numrica da matriz com a funo evstr():

Exemplo:
--> a = 1;
--> b = 4;
--> c = 3;
--> d = 5;
--> evstr(M);

78
Matrizes: operadores especiais
Operador \: diviso esquerda.
Seja Ax=b um sistema de equaes lineares escrito na
forma matricial, sendo A a matriz de coeficientes, x
o vetor da incgnitas e b o vetor dos termos
independetes:

79
Matrizes: operadores especiais
Soluo do sistema:
x=A
-1
b (inversa de A multiplicada pelo vetor b)

--> A=[1 3;3 4]
-->b=[5;2]
--> x=inv(A)*b
--> w = A\b
--> y = A^(-1)*b

Exerccio:
Resolva o sistema linear.

Substitua as solues na equao para confirmao
a soluo.
2X + 3y + 3z = 2
4x + 3y+ 2z = 1
3x + 7y + 9z = 5
1x + 3y = 5
3x + 4y = 2
80
Matrizes: operadores especiais
Operador . (usado com outros operadores para
operaes elemento a elemento)

Exemplo:
A = [1 2 3; 3 4 6; 7 8 9]
B = [2 4 6;8 10 12; 14 16 18]

-->A.*B
ans =
2. 8. 18.
24. 40. 72.
98. 128. 162.
-->A./B
ans =
0.5 0.5 0.5
0.375 0.4 0.5
0.5 0.5 0.5
81 Introduo ao Scilab 82
Sistemas lineares
x
1
+ 2x
2
+ x
3
= 5 1 2 0 x
1
5
-x
1
+5x
2
- 3x
3
= 0 -1 5 -3 x
2
= 0
4x
1
- 2x
2
+ x
3
=3 4 -2 1 x
3
3

A * X = B

Soluo : X = A
-1
. B
--> A=[1 2 0;-1 5 -3;4 -2 1]
--> B=[5; 0; 3]
--> X=A\B
--> Y=inv(A)*B
82
Introduo ao Scilab 83
Expresses
Exemplo: resolver o sistema linear
-x
1
+ x
2
+ 2x
3
= 2

3x
1
+ x
3
= 6
-x
1
+ 3x
2
+ 4x
3
= 4

83 Introduo ao Scilab 84
Expresses
Exemplo: resolver o sistema linear
-x
1
+ x
2
+ 2x
3
= 2

3x
1
- x
2
+ x
3
= 6
-x
1
+ 3x
2
+ 4x
3
= 4
--> A = [-1 1 2; 3 1 1; -1 3 4]
A =
-1 1 2
3 -1 1
-1 3 4
--> b = [2; 6; 4]
b =
2
6
4
--> x = A\b
x =
1.
-1.
2.
84
Introduo ao Scilab 85
Expresses
Resolva o sistema linear

85 Introduo ao Scilab 86
Polinmios
Funo poly(a, x, flag)
a: matriz de nmero reais
x: smbolo da varivel
flag: string ("roots", "coeff"), por default seu
valor "roots".

86
Introduo ao Scilab 87
Polinmios
Dado p1 =
-- > p1 = poly([1, -6, -72, -27], "x", "coeff")
p1 =
2 3
1 - 6x - 72x - 27x

-- > r = roots(p1) // obtendo as razes do polinmio
r =
0.0824886
- 0.1743828
- 2.5747724

-->p2 = poly (r, "x", "roots") // definindo pelas razes
p2 =
2 3
- 0.0370370 + 0.2222222x + 2.6666667x + x
87 Introduo ao Scilab 88
Polinmios
Polinmio definido pelas suas razes
-->p = poly([1 2], "s, roots)
p =
2
2 - 3s + s
-->
Com a funo roots, comprova-se que as razes
de p so, realmente, 1 e 2,
-->roots(p)
ans =
1.
2.
88
Introduo ao Scilab 89
Polinmios
Polinmio criado a partir dos seus coeficientes.
Ex.: criar o polinmio q = 2s + 1

-->q = poly([1 2], "s", "coeff")
q =
1 + 2s

-->roots(q)
ans =
- 0.5

89
Polinmios Soma, Subtrao, Multiplicao, Diviso
-->p + q // Adio
ans =
2
3 - s + s

-->p - q // Subtrao
ans =
2
1 - 5s + s

-->p * q // Multiplicao
ans =
2 3
2 + s - 5s + 2s
90
-->p / q // Diviso
ans =
2
2 - 3s + s
-----------
1 + 2s

-->[r, c] = pdiv(p,q) // Diviso: c=quociente,
r=resto
c =
- 1.75 + 0.5s
r =
3.75
Polinmios Soma, Subtrao, Multiplicao, Diviso
91
Polinmios
-->h = poly ([5, -3, 1], x, coeff)
// definindo o polinmio
h =
2
5 - 3x + x

-->horner(h, 2) // avaliando o polinmio em x = 2
ans =
3.
92
Polinmios
Exemplo
--> y = poly([1 2 3], x, coeff)
ou:
--> x = poly(0,x) z = 1+2*x + 3*x^2

Exerccio:
Dados os polinmios:
y = 6x
3
+ 5x
2
+ 4x + 1

z =7x
4
+ 5x
3
+3x

Calcule:
a) y + z
b) y*z
c) y
2
+ 3z
d) z/y
e) z*y/(z
3
)
93
Polinmios
roots(z): calcula as razes de um polinmio
[r,q] = pdiv(y,z): efetua a diviso e calcula
quociente e resto
coeff(y): retorna os coeficientes do polinmio.

Exerccio:
Dados os polinmios:
y = 6 x
5
+ 10x
4
+ 8x
3
+ 10x
2
+ 3x + 5

z = 5x
5
+ 4x
4
+ 3x
3
+ 2x

Calcule:
a) suas razes
b) os coeficientes
c) o resto e o quociente das divises:
y/z e z/y
94
Matrizes de polinmios
Os elementos da matriz podem ser polinmios:
Exemplo:
--> s = poly(0, s);
--> A = [1-2*s+s^3 3*s+4*s^2; s 2*s]

Exerccio:
Dadas as matrizes de polinmios:
A = [2*x^2 + 3*x x ; 1 x^3+2];
B = [3*x^4 + x^2 x^5 ; 8*x + 1 5];
Calcule:
A*B
A/B
Determinantes de A e B

95
Matrizes de polinmios
Se A uma matriz de polinmios:
A = A(num): retorna apenas os numeradores
A = A(den): retorna apenas os denominadores

Exemplo:
s = poly(0, s)
A = [(1+2*s+3*s^3)/(s+2) 3*s+1/(2*s+1);
s^4/(s^2+2) 3*s^2+4*s^3]
N = A(num)
D = A(den)
96
Introduo ao Scilab 97
Exerccios
1. Desenvolva uma soluo em SCILAB para
encontrar as razes da equao
y= 2x
2
- 3x + 1

2. Apresente o grfico da equao com 30
pontos entre 0 e 5
97 Introduo ao Scilab 98
Exerccios
1. Resolva o sistema linear 2x + 2y + 2z = 20
2x 2y + 2z = 8
2x 2y 2z = 0
2. Calcule o seno, o coseno, a tangente, a raz quadrada e a raz
cbica de x/2.
3. Calcule o logaritmo e a raz quadrada de -1.
4. Calcule o valor da funo e
x
em 100 pontos do intervalo [-1 . .
. 1] e apresente o grfico da funo
5. Calcule o valor da funo sin(x+pi/10) . cos(x) entre -pi e pi,
considerando um incremento de 0.1 entre os pontos e
apresente o grfico da funo
6. Calcule o produto dos polinmios x
6
+ 10 e x
2
- 2x + 3.
7. Obtenha o polinmio cujas razes so os nmeros 1, 2 e 3.
8. Calcule os zeros do polinmio p(x) = x
6
+ 4x
2
- 3x + 1.
98
Derivadas
Derivada o coeficiente angular da reta tangente ao grfico de
uma funo f(x), no ponto x
0




Clculo da derivada: derivat(p)
onde p o polinmio.

Avaliao da derivada em um ponto: horner(d,x)
onde d a derivada do polinmio p e x o valor da varivel.

Exemplo:
Dada a funo 0.5x
5
+ 3x
2
+ 2x + 10, determine:
a) o valor da funo para x = 2.5
b) a derivada de f(x)
c) o valor da derivada para x = 2.5.

99
Derivadas - Exemplo
Dada a funo 0.5x
5
+ 3x
2
+ 2x + 10, determine:
a) o valor da funo para x = 2.5
b) a derivada de f(x)
c) o valor da derivada para x = 2.5.

-->p = poly ([10 2 3 0 0 -0.5], "x", "coef")
p =
2 5
10 + 2x + 3x - 0.5x
-->pt = horner (p, 2.5)
pt =
- 15.078125
-->d = derivat(p)
d =
4
2 + 6x - 2.5x
-->ptd = horner (d, 2.5)
ptd =
- 80.65625
100
Introduo ao Scilab 101
Exerccios
6. Calcule a derivada de
x
6
+ 10
-------------
x
2
- 2x + 3.
101 102
103
http://www.decom.ufop.br/bob/com400/livr
os/livroSci_LSB.pdf
2.11 Limites
Nesta seco, apresentarei uma breve
incurso sobre o tpico limites de funes.
A funo
x
seno x
f x
( )
( ) =
uma indeterminao no ponto x=0.
Recorrendo regra de lHopital, mostra-se
que o seu
104
Integrais
A integral de uma funo f(x) outra funo, I(x), tal
que a sua derivada, I(x), igual funo f(x)

Integral definida aquela restrita a um determinado
intervalo de x, x
0
x x
1

Clculo da integral: integrate(expr, v, x0 ,x1 )
onde x
0
o limite inferior e x
1
o limite superior.

Ex.: Dada a funo f(x) = sin(x), determine I(x), onde:

--> v = integrate('sin(x)','x',0,1)
v = 0.4596977
105
Listas
agrupamento de objetos no necessariamente do mesmo tipo.

L = list(elemento1, elemento2, elemento3, elementoaN)

Exemplo:
L = list(23,1+2*%i,'palavra',eye(2,2))
-->L
L =
L(1)
23.
L(2)
1. + 2.i
L(3)
palavra
L(4)
1. 0.
0. 1.
[23, 1+2i, palavra,
1 0
0 1
] L=
106
Listas
Pode se criar listas dentro de listas (sublistas).

Exemplo:
L = list(23,1+2*%i,'palavra',eye(2,2))
L(4) = list('outra palavra',ones(2,2))

Elementos dentro da lista da lista:
L(4)(1)
L(4)(2)

Agrupando duas listas:
L1 = list(5,%pi, velocidade, rand(2,2));
L2 = list(1+2*%i,ones(3,3), acelerao);
L = list(L1,L2);
107
Grficos
Grficos bidimensionais:

plot2d (x,y,style,xtitle,rect,frameflag,nax,axesflag,logflag,leg)
opcionais

Exemplo:
x = [-2*%pi:0.1:2*%pi];
y = sin(x);
plot2d(x,y);
plot2d(x,y,-1);

Exerccio
Detalhe cada elemento opcional do comando plot2d
108
Grficos Comandos bsicos
clf: limpa a tela, evitando que o prximo grfico se
sobreponha ao anterior
xbasc ou xbasc( ): limpa o ambiente grfico e apaga os
grficos a ele associados
xtitle (titulo): apresenta o ttulo do grfico
legend(legenda1, legenda2,)

Exemplo:
t = 0:0.1:10;
S = 5 + 10*t + 0.5*2*t.*t;
V = 10 + 2*t;
plot2d(t,S,-2);
plot2d(t,V,-4);
xtitle(Cinematica);
legend(Posio, Velocidade);
109
Grficos
Grficos tridimensionais:

plot3d (x,y, z, theta, alpha, leg, flag, ebox)
opcionais
Exemplo:
Construa o grfico, considerando as varivies:
x = 2 : 0.1 : 2,
y = 2 : 0.1 : 2,
z = (x
2
) y
3
.


Exerccio
Detalhe cada elemento opcional do comando plot3d
-->x = -2 : 0.1 : 2;
-->y = -2 : 0.1 : 2;
-->z=(x^2)' * y^3;
-->plot3d(x,y,z)
110
Grficos
Outros grficos:
bar (x,width,color,style) ou bar (x,y,width,color,style)
barh (x,width,color,style) ou barh (x,y,width,color,style)
pie (x,[sp],[txt])

Exemplo:
-->x = [1, 2, 3, 4, 5]; y = [5, 3, 1,-1, 1];
-->bar(x);
-->barh(x,y,'red')
-->pie(x)
-->pie(x,[0,1,0,0,1], ['um','dois','tres','quatro','cinco'])

Exerccio
Detalhe cada elemento opcional dos comandos bar, bar e pie
111
Grficos Comandos bsicos
subplot: divide um janela de um grfico em
sub-graficos

Exemplo:
subplot(221)
plot2d(x,sin(x))
subplot(222)
plot2d(x,cos(x))
subplot(223)
plot2d(x,tan(x))
subplot(224)
plot2d(x,sin(x).*cos(x))
112
Funes Matemticas Comuns
113
Funes de Arredondamento
114
Funes de Manipulao de String
115
Constantes Especiais
116
Operadores matriciais
117
Operaes com polinmios
118

Você também pode gostar