Leonardo Vale de Arajo e-mail: segundoengeletrica@gmail.com nardo.2112@gmail.com O MINI-CURSO Parte I: Apresentao e Introduo ao ambiente do Scilab, Polinmios, Operaes com Matrizes e Vetores 2 Mini-Curso - Introduo ao Scilab @ UFRN Vetores Introduo ao Scilab; Comandos Bsicos etc. Polinmios; Demonstrao de tcnicas de manipulao de vetores: Declarao, Mdulo, exponenciao, diviso e manipulao de elementos de um vetor; Demonstrao de tcnicas de manipulao de matrizes; Declarao de Matrizes simples e complexas: Adio, Multiplicao e Diviso; Matriz Transposta, inversa etc. O MINI-CURSO Parte II: Controle de Fluxos no Scilab, Funes e Grficos Controle de laos (while, for, if, else, switch); 3 Mini-Curso - Introduo ao Scilab @ UFRN Controle de laos (while, for, if, else, switch); Funes com vrios parmetros de entrada e vrios parmetros de sada, Grficos bidimensionais; Grficos tridimensionais. Parte I Apresentao e Introduo ao ambiente do Scilab, Polinmios, 4 Mini-Curso - Introduo ao Scilab @ UFRN ambiente do Scilab, Polinmios, Operaes com Matrizes e Vetores Apresentao O Scilab um software cientfico para computao numrica. Fornece poderoso ambiente computacional aberto para aplicaes cientficas. 5 Mini-Curso - Introduo ao Scilab @ UFRN computacional aberto para aplicaes cientficas. Desenvolvido desde 1990 pelos pesquisadores do INRIA (Institut National de Recherche en Informatique et en Automatique) e do ENPC (cole Nationale des Ponts et Chausses), agora mantido e desenvolvido pelo Consorcio Scilab desde sua criao em Maio de 2003 . Distribuio gratuita. Apresentao Scilab inclui centenas de funes matemticas. Tem uma linguagem de programao de alto nvel, permitindo o acesso s estruturas de dados avanada, 2D e as funes grficas 3D. Um grande nmero de funcionalidades est includo no Scilab: 6 Mini-Curso - Introduo ao Scilab @ UFRN Scilab: Matemtica e Simulao; Visualizao 2D e 3D; Otimizao; Estatstica; Projeto de Sistemas de Anlise e Controle; Processamento de Sinal; Desenvolvimento de Aplicaes; Xcos Programar em Scilab Vantagens Linguagem de alto nvel Cdigo simples 7 Mini-Curso - Introduo ao Scilab @ UFRN Cdigo simples Implementao rpida e fcil Vrias bibliotecas com comandos e funcionalidades disponveis Desvantagens Lentido devido a ser uma linguagem interpretada M programao deixa o cdigo muito lento (tempo de execuo) Instalao http://www.scilab.org/download/5.4.1 8 Mini-Curso - Introduo ao Scilab @ UFRN Ambiente Scilab 9 Mini-Curso - Introduo ao Scilab @ UFRN Ambiente Scilab 10 Mini-Curso - Introduo ao Scilab @ UFRN Navegador de Arquivos Console Navegador de Variveis Histrico de Comandos Ambiente Scilab 11 Mini-Curso - Introduo ao Scilab @ UFRN Ambiente Scilab 12 Mini-Curso - Introduo ao Scilab @ UFRN Ambiente Scilab 13 Mini-Curso - Introduo ao Scilab @ UFRN Ambiente Scilab 14 Mini-Curso - Introduo ao Scilab @ UFRN Ambiente Scilab 15 Mini-Curso - Introduo ao Scilab @ UFRN O comeo... Passo 1 - Digite no console: s = Mini curso CN 2013.2 Passo 2 Digite no console: disp(s) 16 Mini-Curso - Introduo ao Scilab @ UFRN Passo 2 Digite no console: disp(s) Como acessar o histrico de comandos? Lembra-se apenas do incio da funo, o que fazer? Declarao de variveis A declarao da varivel importante, pois o resultado da operao armazenada na varivel que pode ser utilizada depois. 17 Mini-Curso - Introduo ao Scilab @ UFRN que pode ser utilizada depois. Digite no Console. a) a = 5 b) b = 7 c) S = a + b d) Area = a*b e) Sub = a-7 f) Div = a/b Declarao de variveis Regras para formao de Nomes de variveis 1. Nomes de variveis comeam com uma letra seguido de letras, algarismos ou sublinhados. Ex.: 18 Mini-Curso - Introduo ao Scilab @ UFRN seguido de letras, algarismos ou sublinhados. Ex.: Alfa, AlUnOs, A1, B123, sala_de_aula. 2. Caracteres especiais no so permitidos no incio da varivel. Isto , no permitido usar $, #, %, &, ?, @... 3. Caracteres acentuados no so permitidos; 4. Nomes das variveis so sensveis a maisculas e minsculas. Ex.: alunos, Alunos, AlUnOs. Declarao de Variveis 19 Mini-Curso - Introduo ao Scilab @ UFRN Variveis Reservadas Existem variveis que assumem valores pr-denidos no Scilab. Elas podem ser vistas atravs do comando who ou what. Essas variveis so protegidas e no podem ser apagadas. 20 Mini-Curso - Introduo ao Scilab @ UFRN Operaes Bsicas Adio (+) Subtrao (-) Multiplicao (*) Digite no Console. a) 5 + 7 21 Mini-Curso - Introduo ao Scilab @ UFRN Multiplicao (*) Diviso (/) e (\) Potenciao (^) ou (**) Transposta () Matriz a) 5 + 7 b) 15-25 c) 9/2 d) 9\2 * e) 3^2 f) 3**2 g) 2*8 * Fazer 9^-1*2 Operaes Bsicas Digite no Console. a&b E lgico; a|b OU lgico; ~a NO lgico; 22 Mini-Curso - Introduo ao Scilab @ UFRN a = %T b = (0==1) a&b a|b ~a ~a NO lgico; a==b as duas expresses so iguais. a~=b ou a<>b as duas expresses so diferentes. a<b a menor que b. a>b a maior que b. a<=b a menor ou igual a b. a>=b a maior ou igual a b. a = 5 b = 8 a==b a~=b a<b a>b Ordem de precedncia Importante levar em considerao a ordem de precedncia quando digitar a expresso. 23 Mini-Curso - Introduo ao Scilab @ UFRN Mesma prioridade, resolve-se a expresso mais a esquerda. Exemplo expresso algbrica Digite no console: a) A = 1 + 2/3 + 4; b) B = (1 + 2)/(3 + 4); 24 Mini-Curso - Introduo ao Scilab @ UFRN b) B = (1 + 2)/(3 + 4); c) C = 1 + 2/(3 + (4+1)/2); d) D = 3*2/5 e) E = 5^2/10 Importante Formato de Visualizao dos Nmeros O comando format modica a quantidade de dgitos com que os nmeros so mostrados no Scilab. Por exemplo, o comando Mini-Curso - Introduo ao Scilab @ UFRN 25 Scilab. Por exemplo, o comando format(5) sqrt(3) format(16) sqrt(3) format(e) 2*%pi/10 Importante Comandos do Scilab: clc limpa a tela do console; clear limpa as variveis armazenadas; 26 Mini-Curso - Introduo ao Scilab @ UFRN clear limpa as variveis armazenadas; help ajuda do scilab; pwd Mostra o diretrio de trabalho; chdir Muda de Diretrio; Dir Mostra o que tem no diretrio; save Salva variveis para posterior uso; Ex.: save(dados.dat,variavel1,variavel2) load Carrega o arquivo salvo; Funes Matemticas comuns Vamos Praticar!! cos(2*%pi) %e^2 27 Mini-Curso - Introduo ao Scilab @ UFRN %e^2 abs(-5) modulo(8,3) modulo(6,3) sign(-4) sign(5) O valor de representado por %pi. (3.1415...) A base do logaritmo natural %e. (2,71828...) Funes de arredondamento 28 Mini-Curso - Introduo ao Scilab @ UFRN Confirme no console do Scilab as funes acima utilizando a varivel x = 1,75; 1,5; 1,25; -1,25; -1,5; -1,75. Ex. Nmeros Complexos abs Mdulo; imag Parte imaginria; real Parte Real; Digite no Console: Z = 3 + 2*%i 29 Mini-Curso - Introduo ao Scilab @ UFRN real Parte Real; conj Conjugado. Z = 3 + 2*%i M = abs(Z) Angle = atan(imag(Z),real(x)) A = 3 + 2*%i C = conj(A) Strings o usados para toda e qualquer informao composta de caracteres alfanumricos e/ou caracteres especiais (exemplo, #, $, &, ?, !, @, <, 30 Mini-Curso - Introduo ao Scilab @ UFRN caracteres especiais (exemplo, #, $, &, ?, !, @, <, etc). Os strings so envolvidos por aspas duplas ou simples. Exemplo: A = Computao B = Numrica C = 2013.2 Strings Uma das atividades mais comuns em programao a concatenao de strings. Concatenao a juno de dois ou mais strings. 31 Mini-Curso - Introduo ao Scilab @ UFRN Concatenao a juno de dois ou mais strings. Isso pode ser feito com o operador +. A+B+C A+ +B+ +C Mini curso Como fazer em uma varivel que j contenha aspas? Strings - Funes Algumas funes de manipulao de strings. 32 Mini-Curso - Introduo ao Scilab @ UFRN M = A reunio ser s 10 horas. Hr = 10; N = A reunio ser s +string(Hr)+ horas Num = 58+60 evstr(Num)+40 Utilizando o Editor 33 Mini-Curso - Introduo ao Scilab @ UFRN Editor Editor Com o editor, o usurio pode realizar edies no programa de maneira mais fcil e pode salv-lo para posterior utilizao. 34 Mini-Curso - Introduo ao Scilab @ UFRN para posterior utilizao. Exemplo: Abra o editor e digite o seguinte: A = 9 B = 10 C = 8 X = (9+10+8)/3 Salve o arquivo. Uso de input e disp Como pode ser feito para pedir ao usurio para informar os valores de A, B e C anterior e mostrar um texto no console: A mdia :? 35 Mini-Curso - Introduo ao Scilab @ UFRN mostrar um texto no console: A mdia :? Uso de input e disp Em vez de disp, pode-se utilizar printf. No caso, seria: 36 Mini-Curso - Introduo ao Scilab @ UFRN printf(A Mdia : %g, X); Executar Se estiver no mesmo diretrio, apertando crtl+L, crtl+E ou F5 (Windows) o arquivo ser executado. Caso o arquivo no esteja no memo 37 Mini-Curso - Introduo ao Scilab @ UFRN executado. Caso o arquivo no esteja no memo diretrio, deve-se executar passando o diretrio o qual est o arquivo: exec(diretorio_do_arquivo) Ex.: exec('C:\Users\Cliente\Documents\Media.sce') Vamos Praticar!! (Faa no Editor) h = 0.25, d = 2, p =3, a = 5, b = -1 38 Mini-Curso - Introduo ao Scilab @ UFRN Vamos Praticar!! A = 11, B = 5, C = -4 e D = 2. 39 Mini-Curso - Introduo ao Scilab @ UFRN Vamos Praticar!! Faa um programa no editor que a partir da temperatura fornecida pelo usurio, o programa converta a temperatura de graus Celcius para Fahrenheit. A frmula : F = 9*C/5 + 32. Na sada, 40 Mini-Curso - Introduo ao Scilab @ UFRN Fahrenheit. A frmula : F = 9*C/5 + 32. Na sada, apresente no console o texto: A temperatura __ F Elabore um programa em Scilab para calcular a resistncia equivalente entre dois resistores R1 e R2 em paralelo. A frmula : Req = (R1*R2)/(R1+R2). Apresente o resultado usando o comando disp. Polinmios Os polinmios so criados atravs da utilizao da funo poly. Pode-se definir o polinmio pelas suas razes ou pelos seus coeficientes. 41 Mini-Curso - Introduo ao Scilab @ UFRN pelas suas razes ou pelos seus coeficientes. Definindo pelas razes: p = poly([1 3],x) Definindo pelos coeficientes: p = poly([1 2 3], x, coeff) Polinmios Como provar que o polinmio definido pelas razes verdadeiro? Outra forma de definir polinmio a seguinte: 42 Mini-Curso - Introduo ao Scilab @ UFRN Outra forma de definir polinmio a seguinte: x = poly(0,x) p = x^2+2*x+5 Operaes com Polinmios p = poly([1 2], s) q = poly([1 2], s, coeff) Multiplicao: p*q 43 Mini-Curso - Introduo ao Scilab @ UFRN Multiplicao: p*q Diviso: p/q Diviso: [r, q] = pdiv(p,q) Adio: p+q Subtrao: p-q Resultado do Polinmio Para sabermos o valor do polinmio no qual a incgnita assume determinado valor. Ex. Qual valor do polinmio x^2-x+10 com x=5? 44 Mini-Curso - Introduo ao Scilab @ UFRN valor do polinmio x^2-x+10 com x=5? Vamos Praticar!! Calcule as razes dos seguintes polinmios 45 Mini-Curso - Introduo ao Scilab @ UFRN Calcule os valores das operaes abaixo Vetores Os vetores so matrizes de uma dimenso. Os vetores so declarados da seguinte forma: A = [1 2 3] 46 Mini-Curso - Introduo ao Scilab @ UFRN A = [1 2 3] B = [1;2;3] O ; separando os valores significa que o prximo elemento ficar abaixo do anterior. Um vetor linha declarado separando os elementos por vrgula ou somente espao. Vetores Para transformar um vetor linha em um vetor coluna, vice-versa, basta somente utilizar o . A 47 Mini-Curso - Introduo ao Scilab @ UFRN A B Para sabermos as dimenses de um vetor ou mesmo uma matriz, basta utilizar a funo size. Ex.: size(A) Operaes Pode-se efetuar as operaes de soma, multiplicao, diviso, subtrao, potenciao. Ex.: A = [1;2;3] 48 Mini-Curso - Introduo ao Scilab @ UFRN Ex.: A = [1;2;3] B = [4;5;6] 3*A A/ A + B B^2 A*B Produto escalar A*B Produto vetorial Operaes Se quisesse multiplicar, dividir e realizar a potenciao elemento a elemento? 49 Mini-Curso - Introduo ao Scilab @ UFRN Operaes A.*B A./B A.^B 50 Mini-Curso - Introduo ao Scilab @ UFRN A.^B Construo de Vetores Pode-se construir vetores usando ndices ou algumas funes internas do scilab. x = 5:-0.5:3 51 Mini-Curso - Introduo ao Scilab @ UFRN x = 5:-0.5:3 m = ones(1,4) n = zeros(1,5) p = linspace(1,10,200) s = rand(1,4) a = [[1 3] [4 5 6]] Z = [[1:3] zeros(1,3)] Acessando elemento do Vetor Da varivel Z declarada anteriormente, como podemos alterar a posio em algum elemento? R. Z(1) = 5 52 Mini-Curso - Introduo ao Scilab @ UFRN R. Z(1) = 5 Z(1:4) = [1:4] Da varivel Z declarada anteriormente, quais as posies que se encontram os valores de zero? Se o vetor fosse maior como poderamos fazer? R. Utilizando a funo find do scilab. find(Z==0) Vamos Praticar!! Construa um vetor com elementos crescentes que comea em 10 e termina em 20, com passo de 5. 53 Mini-Curso - Introduo ao Scilab @ UFRN de 5. Construa um vetor com elementos crescentes que comea em 10 e termina em 70 com 7 elementos. Gere uma sequncia de nmeros pares comeando em 4 e no ultrapassando 15. Vamos Praticar!! Crie um vetor A de 15 elementos aleatrios e a partir deste, crie outros vetores de acordo com os seguintes critrios: B1 = Conter somente os elementos de A maiores que 54 Mini-Curso - Introduo ao Scilab @ UFRN B1 = Conter somente os elementos de A maiores que 0,5. Calcule quantos elementos so. B2 = Conter somente os elementos de A menores que 0.2. Calcule quantos elementos so. B3 = Conter os elementos de A em Ordem Crescente. B4 = Conter os elementos de A em Ordem Decrescente. Obs.: uso o comando apropos para encontrar o comando que ordena o vetor em ordem crescente ou decrescente. Vamos Praticar!! Extraia os quatro ltimos elementos do vetor a e armazene na varivel c: a = [1 30 100 3 10 30 90 12 3 4 5 30 30 0.5] 55 Mini-Curso - Introduo ao Scilab @ UFRN a = [1 30 100 3 10 30 90 12 3 4 5 30 30 0.5] Use o comando length e $. Vamos Praticar!! Crie uma expresso que calcule o valor de y para as equaes abaixo. Defina x variando de 2 a 19 espaados de 5 em 5 unidades. 56 Mini-Curso - Introduo ao Scilab @ UFRN Use o comando disp para mostrar os resultados no formato y (para os valores de x iguais a __) = resultado. Matrizes Operaes com Matrizes: Adio Subtrao 57 Mini-Curso - Introduo ao Scilab @ UFRN Subtrao Multiplicao Diviso pela direita Diviso pela esquerda Exponenciao Transposta Inversa Matrizes A matriz definida com elementos entre colchetes ([...]); Elementos de uma linha so separados por , ou 58 Mini-Curso - Introduo ao Scilab @ UFRN Elementos de uma linha so separados por , ou espao e o final da linha representado por ;. A = [0 2 3;4 5 6;7 8 9] B = [4 6 7; 10 25 12; 4 9 1] Matrizes Adio: A + B Subtrao: A B Multiplicao: A*B 59 Mini-Curso - Introduo ao Scilab @ UFRN Multiplicao: A*B Diviso pela direita: B/A equivalente a X*A = B Diviso pela esquerda: A\B equivalente a A*X = B Exponenciao: A^3 Exponenciao: A.^3 Multiplicao: A.*B Diviso: A./B Matrizes A = [1 2; 3 4]; B = [5 6; 7 8]; C = [9 10; 11 12]; 60 Mini-Curso - Introduo ao Scilab @ UFRN C = [9 10; 11 12]; D = [A B C] E = matrix(D,3,4) Acessando os Elementos da Matriz E(1,1) E(1:2,2) Extrair uma linha: E(1,:) 61 Mini-Curso - Introduo ao Scilab @ UFRN Extrair uma linha: E(1,:) Extrair uma coluna: E(:,1) Extrair 2 linhas e 2 colunas. Como fazer? Comandos para Matrizes E = [1 2 3; 4 5 6; 7 8 9] Determinante det(E) 62 Mini-Curso - Introduo ao Scilab @ UFRN Transposta E Inversa inv(E) Diagonal diag(E) Trao Trace(E) Matrizes com Strings As matrizes quanto os vetores pode-se utilizar strings. Ex.: A = [1 2 Alunos; Materia 7 CN; 6 8 10] 63 Mini-Curso - Introduo ao Scilab @ UFRN CN; 6 8 10] Listas Uma lista uma coleo de objetos no necessariamente do mesmo tipo. Uma lista simples definida pela funo list. 64 Mini-Curso - Introduo ao Scilab @ UFRN simples definida pela funo list. Ex.: L = list(1, w, ones(2,2)) Estruturas Estruturas (structures) um tipo de dado que permite o armazenamento de matrizes de naturezas diferentes (escalares, vetores, matrizes, strings) identificveis por nomes de campos. 65 Mini-Curso - Introduo ao Scilab @ UFRN s = struct('Aluno',{'Joao'},'Matricula',{001},'Nota',{1.0}); s(2).Aluno = 'Maria'; s(2).Matricula = 002; s(2).Nota = 10; s(3).Aluno = 'Jose'; s(3).Matricula = 003; s(3).Nota = 7; Vamos Praticar!! Encontrar o valor de x1, x2 e x3. 66 Mini-Curso - Introduo ao Scilab @ UFRN Vamos Praticar!! Um construtor tem contratos para construir 3 estilos de casa: moderno, mediterrneo e colonial. A quantidade de material empregada em cada tipo de casa dada pela tabela: 67 Mini-Curso - Introduo ao Scilab @ UFRN Faa um programa que armazene os valores da tabela acima em uma matriz chamada material e que seja capaz de: - Perguntar quantas casas e de qual tipo se deseja construir (usar comando input e armazenar no vetor qcasas) - Mostrar a quantidade de material de cada tipo a ser utilizado no projeto total - O preo total do projeto de construo das casas, supondo que os preos por unidade de ferro, madeira, vidro, tinta e tijolo sejam, respectivamente, 15, 8, 5, 1 e 10 (Armazenar esses preos no vetor preo) - Mostre tambm o preo unitrio de cada casa. Obrigado! 68 Mini-Curso - Introduo ao Scilab @ UFRN Obrigado! Bibliografia [1] PIRES, Paulo Srgio da Motta. Introduo ao Scilab Verso 3.0. disponvel em http://www.dca.ufrn.br/~pmotta/sciport-3.0.pdf. 69 Mini-Curso - Introduo ao Scilab @ UFRN http://www.dca.ufrn.br/~pmotta/sciport-3.0.pdf. [2] LACERDA, E. G. M. Programando com Scilab. Departamento de Engenharia de Computao e Automao UFRN. Disponvel em http://www.dca.ufrn.br/~estefane/academica/prog sci.pdf [3] JNIOR, Vicente A. de Souza. Mini-Curso de Matlab. UFRN.