Anda di halaman 1dari 36

Introduo ao Scilab

Marcelo Perencin de Arruda Ribeiro Julho 2011

Scilab (Scientific Laboratory)


Software livre Desenvolvido para computao numrica Amplamente utilizado na Academia e Indstria Alternativa ao Matlab

Inclui centenas de funes matemticas Linguagem de computao de alto nvel permitindo acesso a estruturas de dados avanadas e funes grficas 2-D e 3-D

Algumas bibliotecas de funes:


Biblioteca Grfica 2-D e 3-D e animao. lgebra Linear Polinmios e Funes Racionais Integrao de Equaes Diferenciais (ODEPACK) e Equaes AlgbricoDiferenciais (DASSL) Modelagem e Simulao Controle Clssico e Robusto Otimizao Processamento de Sinais Processamento de Imagens Estatstica Rede Neuronal (Neural Network) Lgica Nebulosa (Fuzzy Logic) Controle timo Discreto Interfaces com Softwares de Computao Simblica (ex.:Maple)
(Ref.: Lopes, apostila Scilab)

Como obter o Scilab?


Baixar o arquivo de instalao conforme o Sistema operacional de seu computador A verso atual (julho de 2011): v 5.3.3 http://www.scilab.org/products/scilab/download

Vamos abrir o Scilab

Console

prompt de comando esperando comando

Testando: tipos de variveis


Principais: numricas: reais ex.: a = 2 caracteres: strings (cadeia de caracteres) ex.: b = 'papel' Lgicas (booleano) %t (true) e %f (false) ex.: c = %t Operao simples ex.: d=a+a

Linguagem interpretada
Linguagem Compilada
C Fotran Pascal Basic etc.

Linguagem Interpretada
Scilab Octave Matlab Maple LabVIEW etc.
Facilidade de implementao Vrias funes pr-definidas

Mais rpidos

Declaraes de variveis
No h a necessidade de declarar variveis Quando Scilab encontra um novo nome de uma varivel, ele automaticamente cria a varivel e aloca o tamanho apropriado para o seu armazenamento na memria. Se a varivel j existir, o Scilab muda o seu contedo e se necessrio, aloca novo espao para o seu armazenamento na memria. Scilab diferencia caixa alta e baixa (case sensitive): A a. O nome da varivel em Scilab dado por uma letra seguida de um nmero de letras, dgitos ou sublinhado (a123_joao = 1) Para se ter acesso ao valor contido em uma varivel basta fornecer o seu nome.

Operaes reais escalares


SINAL OPERADOR EXEMPLO

+ * / ^ ou **

Soma Subtrao Multiplicao diviso potncia

2+3.3 2-3.3 2*3.3 2/3.3 2^3.3

Hierarquia: (^ => * e / => + e -)

Operaes Relacionais
SINAL == ou = < > <= >= <> ou ~= OPERADOR igual a menor do que maior do que menor ou igual a maior ou igual a diferente EXEMPLO 1 == 2 1<2 1>2

1~= 2

Operaes Lgicas
SINAL OPERADOR EXEMPLO

& | ~

e ou no

2>1 & 1>2


T & F =F

2>1 | 1>2
T | F =T

~(2>1 | 1>2)
~( T | F ) ~( T ) = F

Alguns comandos
Abrindo e fechando dirio: diary("diario_de_hoje.txt") diary(0) // fecha o dirio Variveis alocadas na memria who whos who_user Limpando variveis clear Limpando tela clc Comentrio // este um comentrio Ajuda help Salvando e carregando variveis save(nome_do_arquivo.dat,variveis) load(nome_do_arquivo.dat,'variveis) a+a; // ;no imprime o resultado na tela

Escrevendo em mais de uma linha -->a = 12*34 + ... -->3 Escrevendo mais de um comando em uma linha --> a = 12; b=34 ; c = 3; d = a*b+c

Voltando ao Console

Pasta atual

Algumas constantes
%pi 3,1415927 %i raiz de -1 %e 2,7182818, base dos logaritmos naturais %eps preciso da mquina (menor nmero tal que 1+%eps > 1) %nan no um nmero (not a number) %inf infinito (1/%inf) %t e %f constantes lgicas %s polinmio [s = poly(0,s)]

Algumas Funes
abs - valor absoluto imag - parte imaginria log - logaritmo natural log10 - logaritmo em base 10 modulo - calcula o resto de uma diviso rand - gerador de nmeros aleatrios real - parte real sqrt - raiz quadrada exp funo exponencial Funes trigonomtricas: sin(); asin(); cos(); acos(); tan(); atan(); cotg()

Vetores e Matrizes
O Scilab desenvolvido para o trabalho com Vetores e Matrizes. a = [1 2 3]; b = [1; 2 ; 3]; c = [1 2 3]; // apstrofo gera a transposta! c == a b == a A = [1 2 3; 4 5 6; 7 8 9] // matriz 3 x 3

Vetores e Matrizes: acessando elementos


A = [1 2 3; 4 5 6; 7 8 9] Ex.: A(2,1) <enter> // linha 2 coluna 1 A(4,1) <enter> // ndice invlido A(2,:) <enter> // linha 2 (toda coluna) A(:,1) <enter> // coluna 1 (toda linha) A(:,$) <enter> // ltima coluna

Operaes Estruturais e Matriciais


Operao Comando Scilab Comentrio
Soma de matrizes estrutural idntica matricial Subtrao de matrizes estrutural idntica matricial

Soma estrutural Subtrao estrutural Multiplicao estrutural Multiplicao matricial Diviso direita estrutural Diviso esquerda estrutural Diviso matricial direita Diviso matricial esquerda Expoente estrutural

A+B A-B A.*B A*B A./B

Multiplicao elemento a elemento de A e B. As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar.

Multiplicao das matrizes A e B. O nmero de colunas em A precisa ser igual ao nmero de linhas em B.

Diviso elemento a elemento de A e B: a(i,j)/b(i,j). As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar.

A.\B A/B A\B a.^b

Diviso elemento a elemento deA e B: b(i,j)/a(i,j) . As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar. Diviso matricial definida por A * inv(B), onde inv(B) a inversa da matriz B. Diviso matricial definida por inv(A)*B, onde inv(A) a inversa da matriz A. Expoente elemento a elemento de A e B: a(i,j)^b(i,j). As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar

Operaes estruturais: operaes elemento a elemento

Vetores e Matrizes: Algumas Funes


inv - matriz inversa rank - calcula posto de matriz spec - calcula valores caractersticos trace - calcula trao de matriz (=sum(diag(X)) diag - matriz diagonal eye - matriz identidade floor - arredondamento para baixo linspace - vetor linearmente espaado max - mximo min - mnimo ndims - nmero de dimenses de uma matriz norm - norma de matriz ones - matriz de 1's sort - ordenamento decrescente sum - soma elementos de matrizes det determinante size dimenso da matriz

Grficos 2-D
x = linspace(0,4*%pi,100); // cria vetor linearmente espaado y = sin(x); plot(x,y) scf(1); // alterna ou cria figura atual plot(x,sin(x)); scf(2); plot(x,[sin(x) ; sin(2*x)]); a=gca(); // manipulao de eixos atuais a.y_location ="right"; a.x_location = "middle"; xdel(1) ; // fecha a janela 1 xdel(2) ; // fecha a janela 2 -->help plot GlobalProperty (opes de plot)

Listas : list
A lista uma coleo de objetos no necessariamente do mesmo tipo: Ex. M = list(1, cavalo, [1 2; 3 4], [%t %t]) N = list(); //cria lista vazia z = M(3); // extrai o primeiro elemento da lista L = M(3)(1,2) ;// extrai elemento do elemento da lista [x,w] = M([1 3]) // extrao de elementos da lista [x,y,z,w] = M(:) // extrai todos os elementos da lista M(2) = camelo; // altera ou insere elemento na lista M(2) = null() ; // apaga elemento da lista

Listas : tlist
tlist tem o primeiro elemento caracterstico que deve ser um vetor coluna de strings. Ex. M = tlist([minha lista; nome; altura; peso ], marcelo, 1.76 , pesado) M(1); M.nome M.altura M.peso

Algoritmos
O computador capaz de coletar informaes, processlas e fornecer um resultado com extrema rapidez e eficincia, mas no passam de mquinas de processamento. Para que o computador realize tarefas de nosso interesse e fornea resultados necessrio criarmos programas (softwares) que direcionam a maneira como ser feito o processamento na mquina. A descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada tarefa chamada de algoritmo. O algoritmo uma receita que indica as tarefa a serem processadas pelo computador.

Estrutura geral de um algoritmos


Algoritmo Nome do algoritmo Variveis Declarao de variveis Funes Declarao de funes Incio Corpo do algoritmo Fim

No necessrio no Scilab. Variveis so criadas ao tempo de interpretao Devem ser carregadas para que estejam disponveis ao serem chamadas. Procedimentos de clculo. Chamada a funes (prprias do Scilab ou definidas pelo usurio). Estruturas de repetio e condicionais.

Exemplo: Mdia Final


Na disciplina de Clculo Numrico a Mdia Final ser dada por: MF = (P1+P2+P3)*0,2 + T*0,4 onde P1, P2 e P3 so notas das avaliaes parciais e T a nota do trabalho. Sendo que 0 P1, P2, P3, T 10 A aprovao ocorre se MF 6. Criar algoritmo para calcular a mdia final e avaliar se o aluno foi aprovado ou no nessa disciplina.

Algoritmo em forma de fluxograma e pseudo-cdigo


Incio Incio

P1, P2, P3, T

Passo 1 : Ler P1, P2, P3 e T

MF = (P1+P2+P3)*0,2 + T*0,4

Passo 2: Calcular Mdia Final MF = (P1+P2+P3)*0,2 + T*0,4 Passo 3: Se MF < 6

MF<6?

Aprovado

Reprovado

ento escreva aprovado seno escreva reprovado Fim Se Fim

Fim

Algoritmo em forma de fluxograma e pseudo-cdigo


Incio

P1, P2, P3, T Estrutura Condicional

MF = (P1+P2+P3)*0,2 + T*0,4

MF<6?

Aprovado

Reprovado

Fim

Estruturas Condicionais: if
if (Condio) then Executa se Condio = T [else] [opcional] [Executa se Condio = F] end
if (Condio) then if (Condio) then XXX else XXXX end else if (Condio) then XXXX else XXXX end end

Aninhamento

Estruturas Condicionais: if
if (Condio1) then Executa se Condio1 = T elseif (Condio2) then Executa se Condio2 = T e (Condio 1 = F) elseif (Condio3) then Executa se Condio3 = T e (Condies 1 e 2 = F) else Executa se Condies 1, 2 e 3 = F end

Estruturas Condicionais: case select


select expresso case expresso 1 Instruo 1 case expresso 2 Instruo 2 else Instruo para Expresso diferente end

Pode haver variaes possveis na construo de estruturas. Busque no help diferentes formas de utilizar a mesma estrutura.

Estruturas de Repetio: Lao for


for var = valores Instruo end

for a = 1:2:10 Instruo end

for k = [1 4 10] Instruo end

for x = list(1, 2, exemplo) Instruo end

Estruturas de Repetio: Comando while


while (Condio) Repete enquanto Condio = T [else] [Executa se Condio = F] end

Funes
Procedimento que ser utilizado com frequncia

Argumentos de sada

Nome da funo

Argumentos de entrada

function [x,y,z, ...] = minhafuncao(A,b,c,d ...) Procedimentos endfunction

Funes: definindo antes do script


clc; clear; function [x, y]=myfct(a, b) x=a+b y=a-b endfunction a=2; b = 1; [x,y]=myfct(a,b) disp(x) disp(y)

Funes: definindo dentro do script


clc; clear; //definio inline (ver deff) deff('[x,y]=myfct(a,b)',['x=a+b'; 'y=a-b'])

[x,y]=myfct(3,2)

Funes: definindo em arquivo separado


function [x, y]=myfct(a, b) x=a+b y=a-b endfunction
myfct.sci

myscript.sce

clc clear // arquivo deve estar na pasta atual !!!! exec(myfct.sci) [x,y]=myfct(3,2)

Anda mungkin juga menyukai