Intro Scilab 36

Embed Size (px)

Citation preview

Introduo ao ScilabMarcelo 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 variveisPrincipais: 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 interpretadaLinguagem CompiladaC 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 escalaresSINAL 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 RelacionaisSINAL == ou = < > = ou ~= OPERADOR igual a menor do que maior do que menor ou igual a maior ou igual a diferente EXEMPLO 1 == 2 12

1~= 2

Operaes LgicasSINAL OPERADOR EXEMPLO

& | ~

e ou no

2>1 & 1>2T & F =F

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

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

Alguns comandosAbrindo 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) // linha 2 coluna 1 A(4,1) // ndice invlido A(2,:) // linha 2 (toda coluna) A(:,1) // coluna 1 (toda linha) A(:,$) // ltima coluna

Operaes Estruturais e MatriciaisOperao Comando Scilab ComentrioSoma 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-Dx = 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 : listA 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 : tlisttlist 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 algoritmosAlgoritmo 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 FinalNa 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-cdigoIncio 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

N

MF