Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* CURSO DE SCILAB Prof. Cosme E. Rubio Mercedes Curso de Engenharia Física, Universidade Estadual de Mato Grosso do Sul - UEMS, cosme@uems.br Dourados, Abril de 2013 * INTRODUÇÃO O que é o SCILAB? “Software" livre e interativo de alta performance voltado para o cálculo numérico em Engenharia. Integra análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos. Os problemas e soluções são expressos em forma matemática, ao contrário da programação tradicional. * O que é o SCILAB? Sistema interativo cujo elemento básico de informação é uma matriz que não requer dimensionamento. Permite a resolução de muitos problemas numéricos em apenas uma fração do tempo que se gastaria para escrever um programa semelhante em Fortran ou C. Os problemas são expressos ou escritos quase exatamente em forma matemática. INTRODUÇÃO * Carregando o SCILAB No Gerenciador de Programas do Microsoft Windows deve-se abrir o grupo de programas do SCILAB para Windows, que contém seu ícone. Um duplo clique carrega o aplicativo. Quando é carregado, a interface gráfica para o usuário é mostrada. Na Janela de Comando é exibido o "prompt" -->, usado para escrever comandos e visualização de resultados de operações. INTRODUÇÃO * Menu Principal Barra de Ferramentas Prompt (Pronto!) do Scilab (seta+cursor): significa que o programa está pronto para receber instruções. Também chamado de linha de comando. AMBIENTE OU JANELA PRINCIPAL DO SCILAB * Prof. Dr. Dalton P. de Queiroz No menu principal temos as opções: Arquivo – Editar – Preferências – Controle – Aplicativos - ?(ajuda). Na figura abaixo temos os sub-menus de Arquivo. INTRODUÇÃO * Prof. Dr. Dalton P. de Queiroz Executar: executa arquivos de scripts e arquivos com instruções de comando de um modo geral. Abrir um arquivo: carrega arquivos de texto criado no ambiente scilab (.sce e .sci) com o editor. Carregar ambiente: carrega arquivos binários (de variáveis) salvos com o comando salvar. Salvar ambiente: salva em disco um arquivo binário contendo variáveis. Alterar diretório atual: muda o diretório atual, redirecionando o ambiente para um novo local de trabalho. Exibir diretório atual: exibe o diretório atual de trabalho. Configuração de página: permite configurar a impressora Imprimir: imprime documentos. Sair: fecha a seção e sai do ambiente do scilab Teclas de atalho * Prof. Dr. Dalton P. de Queiroz Na figura abaixo temos os sub-menus de Editar. * Teclas de atalho Recortar: recorta um texto. Copiar: permite copiar para o clipboard (área de transferência do Windows) o texto selecionado no ambiente. Colar: cola o que foi previamente copiado. Esvaziar área de transferência: limpa o clipboard (área de transferência) Selecionar tudo: seleciona todo o texto atual do ambiente. INTRODUÇÃO * Na figura abaixo temos os sub-menus de Preferências. * Prof. Dr. Dalton P. de Queiroz Cores: permite alterar as cores utilizadas no ambiente do scilab (cor do console (texto) ou a cor de fundo). Fonte: permite alterar a fonte (tipo, tamanho, etc.) Mostrar/esconder a barra de ferramentas: comuta entre exibir e ocultar a barra de ferramentas. Limpar histórico: limpa o histórico das instruções executadas no ambiente. Limpar o console: limpa o console, mas não apaga os dados da memória. Console: unidade que permite que um operador se comunique com um sistema de computador INTRODUÇÃO * Prof. Dr. Dalton P. de Queiroz Na figura abaixo temos os sub-menus de Controle. * Retomar: continua a execução de uma instrução depois de uma pausa (pause) ter sido dada ou um pare (stop). Abortar: interrompe a execução e retorna ao prompt normal do ambiente. Interromper: interrompe a execução e entra no modo “pause” ( pode ser executada diretamente no prompt do ambiente pressionando-se Ctrl+C). INTRODUÇÃO * Na figura abaixo temos os sub-menus de Aplicativos. * SciNotes: carrega o editor de textos do scilab onde podem ser criados scripts de programas e funções. Xcos: permite criar diagramas de blocos e interfaces gráficas. Tradutor de Matlab para Scilab: oferece opções de conversões do Matlab para o Scilab. Gerenciador de módulos – ATOMS: (de AutomaTic mOdules Management for Scilab), permite que o usuário possa baixar, instalar e atualizar de forma automática, os módulos externos que o mesmo deseje utilizar com o programa Navegador de variáveis: exibe o formato das variáveis no scilab. Histórico de comandos: grava o histórico de comandos executados no prompt, inclusive marcando as sessões utilizadas com comentários * Na figura abaixo temos os sub-menus de ? (ajuda). * Prof. Dr. Dalton P. de Queiroz Ajuda do Scilab: exibe o diretório-raiz de ajuda do scilab, com opção de buscas. Demonstrações do Scilab: exibe uma janela de demonstrações de comandos do scilab. Links da Web: exibe várias opções de links. Sobre o Scilab: mostra uma janela com a versão da ferramenta, incluindo com agradecimentos à relação de pessoas que contribuíram para o seu desenvolvimento. OBS: A ajuda do scilab é um item muito valioso e deve ser bastante explorado pelo usuário. INTRODUÇÃO * Execute o Scilab no seu sistema e procure pelo símbolo (prompt): --> As operações aritméticas devem ser digitados após o prompt e em seguida tecla-se [ENTER] Exemplo: -->5+6/2 ans = 8. -->4^2 // 4 elevado a potência de 2 ans = 16. USANDO O SCILAB COMO UMA SUPER CALCULADORA NOÇÕES FUNDAMENTAIS * A variável ans (abreviação da palavra inglesa answer) armazena o valor corrente de saída do Scilab. Pode-se usar ans para efetuar cálculos pois armazena o valor do último cálculo realizado. Exemplo: -->4+5 ans = 9. -->ans+ 3 ans = 12 USANDO O SCILAB COMO UMA SUPER CALCULADORA NOÇÕES FUNDAMENTAIS NOÇÕES FUNDAMENTAIS * variáveis : nome para uma posição na memória do computador. Para atribuir ou modificar a informação contida na variável é usado o comando de atribuição. Usa-se o símbolo = para atribuição. OBS: O símbolo de atribuição (=) não significa igualdade matemática, uma vez que o comando de atribuição i = i+1 é válido, mas não representa igualdade matemática. Exemplo: -->a = 2 // Atribui 2 para variável a a = 2. -->b = 4 // Atribui 4 para variável b a = 4. -->area = a*b // Atribui o produto de a e b para a variável area area = 8. VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO NOÇÕES FUNDAMENTAIS * OBS.(1): Regras para os nomes de variáveis (identificadores) ; 1. Nomes de variáveis começam com uma letra, seguido de letras, algarismos ou sublinhados. 2. Caracteres especiais não são permitidos. 3. Caracteres acentuados não são permitidos; 4. Nomes de variáveis são sensíveis a maiúsculas e minúsculas. Ex.: Nomes de variáveis válidos: ALPHA, X, B1, B2, b1, matricula e MEDIA. Nomes de variáveis inválidos: 5B, 1b, nota[1], A/B e X@Z. OBS.(2): A ausência ou presença do ponto e vírgula no final de um comando do Scilab visualiza ou suprime, respectivamente, o resultado do cálculo. -->A = 4+4^2; -->A = 4+4^2 A = 20. -->a=2; -->b=4; -->area=a*b// no resultado (area) o ponto e vírgula foi suprimido para se visualizar o resultado. area = 8. VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO NOÇÕES FUNDAMENTAIS * A+B*C (NOTA1+NOTA2)/2 1/(a^2+b^2) PRIORIDADE: ordem de Avaliação entre Operadores Aritméticos EXPRESSÕES ARITMÉTICAS 2+10/5 // 10/5 é avaliada primeiro. A+B/C+D // B/C é avaliada primeiro. R*3+Bˆ3/2+1 // Bˆ3 é avaliada primeiro. NOÇÕES FUNDAMENTAIS * Associatividade é a regra usada quando os operadores têm a mesma prioridade. A operação mais a esquerda é avaliada primeiro. A-B+C+D //A-B é avaliada primeiro, porque está mais a esquerda ATENÇÃO!! potenciação, operação mais a direita deve ser avaliada primeiro: A^B^C^D //CˆD é avaliada primeiro, porque está mais a direita ATENÇÃO!! A ordem de prioridade pode ser alterada pelo uso dos parênteses (A+4)/3 //A+4 é avaliada primeiro devido aos parênteses (A-B)/(C+D) //A-B é avaliada primeiro. Depois a adição e depois a divisão R*3+B^(3/2)+1 //3/2 é avaliada primeiro EXPRESSÕES ARITMÉTICAS NOÇÕES FUNDAMENTAIS * Além dos operadores aritméticos podemos usar funções matemáticas. Exemplo: 2+3*cos(x) X^(2*sin(y)) 2+3*tan(x)+K^2 EXPRESSÕES ARITMÉTICAS NOÇÕES FUNDAMENTAIS * Funções de Arredondamento EXPRESSÕES ARITMÉTICAS Exemplos: NOÇÕES FUNDAMENTAIS * Constantes Especiais do Scilab EXPRESSÕES ARITMÉTICAS NOÇÕES FUNDAMENTAIS * Formato de Visualização dos Números com o comando format Exemplo: -->sqrt(3) ans = 1.73 Para aumentar o número de posições para 16, usa-se: -->format(16) -->sqrt(3) ans = 1.7320508075689 O comando format(’e’) mostra os números em notação científica. Exemplo: -->format(’e’) -->2*%pi/10 ans = 6.283185307E-01 (6.283185307E-01 significa 6.283185307 × 10−1) Para retornar ao formato inicial usa-se -->format(’v’) que é chamado de “formato de variável”. EXPRESSÕES ARITMÉTICAS NOÇÕES FUNDAMENTAIS * Informação composta de caracteres alfanuméricos e/ou caracteres especiais (exemplo, #, $, &, %, ?, !, @, <, ~, etc.). Os strings são envolvidos por aspas duplas ou simples. (é melhor usar as aspas duplas que não possui duplo sentido e torna seu programa um pouco mais legível” Exemplos: -->a = "abcd" a = abcd -->b = ’efgh’ b = efgh -->c = "Maria e Jose" c = Maria e Jose STRINGS NOÇÕES FUNDAMENTAIS * Concatenação:junção de dois ou mais strings -->n = "Pedro" n = Pedro -->m = "Paulo" m = Paulo -->m + n // Concatena Paulo com Pedro sem ans = PauloPedro -->m + " " + n // Concatena Paulo com Pedro inserindo espaços entre eles ans = Paulo Pedro -->m +“ “+”e”+” “+n Paulo e Pedro OBS: armazenar informações que contém as aspas=>repetir as aspas. -->n = "o teorema é "“ a lados iguais opõe-se ângulos iguais “" n = o teorema é “ a lados iguais opõe-se ângulos iguais“ STRINGS NOÇÕES FUNDAMENTAIS * Funções Principais de Manipulação de strings STRINGS Exemplos: -->m = "Pedro"; -->length(m) // Comprimento da string "Pedro" ans = 5. -->a = "a camisa " + string(10) // Para concatenar números com strings use a função string() a = a camisa 10 -->a = "12" + "34" // Para somar uma string com um número use evstr() a = 1234 -->evstr(a) + 10 ans = 1244. NOÇÕES FUNDAMENTAIS * NÚMEROS COMPLEXOS As operações com números complexos são tão fáceis como nos reais. A unidade imaginária é representado por %i, ou seja, %i = sqrt(-1). Exemplo: Sejam os números imaginários x e y, como segue: x = 3 + 4*%i e y = 1 - %i As operações abaixo são feitas normalmente: z1 = x - y z2 = x * y z3 = x / y Uso de funções: real(x) −Parte real de x imag(x) −Parte imaginária de x abs(x) −Valor absoluto do número complexo atan(imag(x),real(x)) −Argumento do número complexo conj(x) −Conjugado sin(x) −Seno de um número complexo STRINGS NOÇÕES FUNDAMENTAIS * clear apaga todas as variáveis do Espaço de Trabalho Exemplo: -->a = 2; -->b = 3; -->c = 4; -->clear b // Apaga somente b deixando as outras variáveis intactas -->clear // Apaga somente b deixando as outras variáveis intactas. As variáveis são apagadas quando o usuário termina a execução do Scilab. Para usá-las da próxima vez que executar o Scilab, você deve salva-las antes com o comando save(“arquivo”). Por exemplo, -->a = 2; -->b = 3; -->save("dados.dat"); O comando load(“arquivo”) é usado para recuperar variáveis que foram salvas no arquivo. Por exemplo: -->clear // apaga todas as variáveis -->a+b // variáveis a e b não existem !--error 4 // porque foram apagadas undefined variable : a -->load("dados.dat"); // recupera as variáveis a, b e c -->a+b // Ok! ans = 5 OBS.: O comando who mostra todas as variáveis do Espaço de Trabalho APAGANDO, ARMAZENANDO E RECUPERANDO VARIÁVEIS * CONSEGUINDO AJUDA help informa sobre comandos e funções do Scilab. Exemplo: help cos (Informa sobre a função que calcula o co-seno); help ceil −Informa sobre a função ceil. apropos procura comandos e funções utilizando uma palavra-chave. Exemplo: se não sabemos o nome da função que calcula o seno hiperbólico, podemos digitar (em inglês) algo como --> apropos hyperbolic e o Scilab mostrará todas a funções relacionadas com a palavra-chave hyperbolic. help() abre a ajuda do scilab pelo prompt. NOÇÕES FUNDAMENTAIS * NOÇÕES FUNDAMENTAIS Escrevendo o comando no prompt -->sin(%pi/2) + sqrt(4)*%i ans = 1. + 2.i Também podemos escrever -->a=7; b=3 b = 3. -->c=a*b c = 21. * -->A=[1,2,3;4,5,6] A = 1. 2. 3. 4. 5. 6. -->v=1:0.5:2 v = 1. 1.5 2. NOÇÕES FUNDAMENTAIS * -->A*v !--error 10 Multiplicação incoerente. -->A*v' ans = 10. 23.5 NOÇÕES FUNDAMENTAIS * Existem varias maneiras de criar matrizes no Scilab: -->B=rand(3,3) B = 0.2113249 0.3303271 0.8497452 0.7560439 0.6653811 0.6857310 0.0002211 0.6283918 0.8782165 -->size(B) ans = 3. 3. NOÇÕES FUNDAMENTAIS * -->B*inv(B) ans = 1. 0. 0. 0. 1. 0. 0. 0. 1. outro importante fato do Scilab é sua facilidade para concatenar matrizes como também extrair parte delas: -->C = [ones(3,3), zeros(3,2); rand(2,3), eye(2,2)] NOÇÕES FUNDAMENTAIS * C = 1. 1. 1. 0. 0. 1. 1. 1. 0. 0. 1. 1. 1. 0. 0. 0.2320748 0.2164633 0.6525135 1. 0. 0.2312237 0.8833888 0.3076091 0. 1. -->C(1:2:5,[1,5]) ans = 1. 0. 1. 0. 0.2312237 1. NOÇÕES FUNDAMENTAIS * Manipula e opera seqüência de caracteres: -->D=['Esta','é'; 'a','matriz'] D = !Esta é ! ! ! !a matriz ! Manipula polinômios e funções racionais: NOÇÕES FUNDAMENTAIS * -->p=poly([-1,2,3],'s',‘roots') p = 2 3 6 + s - 4s + s q=poly(1:4,'s',‘roots') q = 2 3 4 24 - 50s + 35s - 10s + s NOÇÕES FUNDAMENTAIS * -->p=poly([-1,2,3],'s','coeff') p = 2 - 1 + 2s + 3s q=poly(1:4,'s','coeff') q = 2 3 1 + 2s + 3s + 4s NOÇÕES FUNDAMENTAIS * -->roots(p) ans = - 1. 0.3333333 -->p/q ans = 2 - 1 + 2s + 3s ---------------------- 2 3 1 + 2s + 3s + 4s NOÇÕES FUNDAMENTAIS * Listas no Scilab são ilustradas pelo exemplo: -->L=list('Scilab', [1,2;3,4], poly([1,2,3],'w','c')) L = L(1) Scilab L(2) 1. 2. 3. 4. L(3) 1 + 2w +3w^2 NOÇÕES FUNDAMENTAIS * -->L(2)(2,2) ans = 4. A divisão polinomial também é uma lista r=p/q r = 2 - 1 + 2s + 3s ----------------------- 2 3 1 + 2s + 3s + 4s NOÇÕES FUNDAMENTAIS * -->length(r) ans = 4. Mostra que a variável (lista) r tem 4 elementos. -->r(1) ans = !r num den dt ! O primeiro elemento da lista é uma matriz de caracteres que identifica o mesmo como função racional com numerador e denominador e um intervalo de amostragem associado (importante quando a função representa um sistema linear invariante no tempo). NOÇÕES FUNDAMENTAIS * -->r(2) ans = 2 - 1 + 2s + 3s -->r(3) ans = 2 3 1 + 2s + 3s + 4s O segundo e elemento é o numerador, o terceiro um denominador e o quarto elemento é uma matriz vazia indicando que a função não tem o intervalo de amostragem. NOÇÕES FUNDAMENTAIS * -->r(4) ans = [] Uma forma de criar programas em Scilab é através do editor de textos. Porém, também é possível criar um programa com o comando deff. -->deff('[y]=foo(x)','y=x^2;') -->foo(2) ans = 4. NOÇÕES FUNDAMENTAIS * Cria a função chamada foo como o quadrado de sua entrada. deff tem dois argumentos de entrada, ambos são caracteres. A primeira seqüência a sintaxe do nome da função e a segundo argumento é um vetor de caracteres que dá a seqüencia da afirmação do Scilab necessária para criar saída a partir da entrada. O Scilab tem outra série de comandos que podem ser acessados a partir de demonstrações do Scilab. NOÇÕES FUNDAMENTAIS * * * A Linguagem Scilab O Scilab é uma linguagem de alto performance com sentenças de controle de fluxo. Isto, combinado com funções, tipos de dados de alto nível, e fatos de programação orientada a objetos, permitem uma rápida criação de programas experimentais bem como uma completa aplicação do pacote. Reconhece apenas dois tipos de constantes: Números reais e seqüência de caracteres. * Segue a notação decimal convencional, com representação de números tendo ponto decimal, signo, e fator de potencia de 10. Alguns exemplos: 5, 732., -78, 0.00128, -6.0356, 1.345e3, -190e5, 1.976e-10, 785.e-2, 3.976e-102. Note que não se faz distinção entre números reais e inteiros. A Linguagem Scilab * Os números complexos: 5+3*%i, -0.367*%i. Seqüecia de caracteres: ‘This is a Scilab string’ “and this is another one” Constantes especiais %pi: valor aproximado do %e: base do logaritmo natural %inf: represtan A Linguagem Scilab * %t ou %T: Valor lógico que representa verdade %f ou %F: Valor lógico que representa falso Matrizes de números: ->[0.1 -0.1 %e ; 1 2 3 ] ans = 0.1 - 0.1 2.7182818 1. 2. 3. Matrizes esparsa: A Linguagem Scilab * -->sparse([1 10;3 5],[8.4,-9.1],[10,10]) ans = ( 10, 10) sparse matrix ( 1, 10) 8.4 ( 3, 5) - 9.1 Cria uma matriz esparsa de tamanho (10,10) e com duas entradas diferentes de zero localizadas nas posições (1,10) e (3,5). A Linguagem Scilab * Matrizes de caracteres: -->['speed' '10m/s' ; 'position' '12.5m'] ans = !speed 10m/s ! ! ! !position 12.5m ! Listas: A Linguagem Scilab * -->x=list('tax',['bread'; 'car';'book'],[3;20.8;5]) x = x(1) tax x(2) !bread ! ! ! !car ! ! ! !book ! A Linguagem Scilab * x(3) 3. 20.8 5. Lista Typed: Permite objetos heterogêneos. -->x=tlist('tax',['bread';'car';'book'],[3;20.8;5]) x = x(1) tax A Linguagem Scilab * x(2) !bread ! ! ! !car ! ! ! !book ! x(3) 3. 20.8 5. A Linguagem Scilab * Define x como uma estrutura de classe tax. >x=tlist(['Char'; 'Names'; 'Ages';'Sizes'],.. -->['Peter';'John';'Franck'],.. -->[25;;40;18],[1.85;1.76;1.70]) x = x(1) !Char ! ! ! !Names ! ! ! !Ages ! ! ! !Sizes ! A Linguagem Scilab * x(2) !Peter ! ! ! !John ! ! ! !Franck ! x(3) 25. 40. 18. A Linguagem Scilab * x(4) 1.85 1.76 1.7 Define x como uma estrutura de classe Chars com nomes de componentes Names, Ages, e Sizes. X(‘Names’)(1) : Retorna o nome do primeiro carater. X(‘Ages’)(find(x(‘Names’)==‘Peter’)): Retorna a idade de Peter. A Linguagem Scilab * Funções Racionais de Matrizes -->[1 %s]/(%s+1) ans = 1 s ----- ----- 1 + s 1 + s Define uma matriz linha de duas colunas. A Linguagem Scilab * Sintaxe do Scilab Consiste de variáveis, atribuições, expressões, listas e operações, controle fluxo, funções e roteiros, e comandos. Um nome de variável consiste de uma letra ou o símbolo % seguido por qualquer número ou letra, dígitos, e caracteres especiais em (#_$!). Apenas os primeiros 24 caracteres são levados em conta. Maiúsculas e minúsculas são diferenciadas. Car_speed, a, A, %pi, x$, my_first_function são nomes da variáveis válidos. A Linguagem Scilab * A Linguagem Scilab Não é necessário declarar tipo nem dimensão das variáveis devido a que assume o tipo dos valores definidos. -->a=1 a = 1. -->a=['simple','string'] a = !simple string ! Manipulação de Variáveis * Atribuições tem a seguinte sintaxe: var=expr, onde var é o nome da variável e expr é uma expressão válida do Scilab. [v1,v2,...,vn]=expr, onde v1,...vn são nomes de variáveis e expr é uma expressão de vários valores. expr dá origem um nome de variável padrão ans que é o valor avaliado de expr. A Linguagem Scilab Atribuições * Os operadores aritméticos +, -, *, /, ^, ‘ são estendidos para matrizes. Também existem operadores específicos de matrizes: ./, .^, .*,. A interpretação desse operadores depende do tipo e dimensão do operando. A+B soma as matrizes A e B A*B multiplica as matrizes A e B, o número de colunas de A deve ser igual ao número de linhas de B. A Linguagem Scilab Expressões: Operadores aritméticos * .* é uma multiplicação de matrizes entrada por entrada, A.*B. As matrizes A e B devem ter as mesmas dimensões, a menos que uma das matrizes seja escalar. / divisão direita de matrizes. Se B é uma matriz quadrada, então A/B é a solução (caso exista) do sistema X*B=A para a incógnita X. Se B é uma matriz retangular, então A/B é a solução do erro dos mínimos quadrados do sistema X*B=A. A Linguagem Scilab Operadores aritméticos * \ divisão esquerda de matrizes, equivalente a A’/B’. ./ é divisão A./B com entradas A(i,j)/B(i,j). .\ é divisão A.\B com entradas B(i,j)/A(i,j). Potência ^ ou **: Se p é um escalar e x uma matriz quadrada, então x^p é a matriz x à potência p. Se x é um vetor então x^p é equivalente a x.^p. Se x é um escalar e p é uma matriz x^p é uma matriz de x às potências de p. Quando ambas são matrizes, a operação não existe. A Linguagem Scilab Operadores aritméticos * A.^B é a matriz formado pelos valores A(i,j)^B(i,j). A e B devem ter a mesma dimensão, a menos que uma delas seja escalar. .’ Matriz transposta: A.’ é a transposta de A. ’ Matriz conjugada transposta: A’ é a conjugada complexa transposta de A. .*. Matriz produto de Kronecker: A.*.B é a matriz formada pelos blocos A(i,j)*B. A Linguagem Scilab Operadores aritméticos * A.*.B =[A(1,1)*B,…A(1,n)*B;….;A(m,1)*B,…A(m,n)*B] ./. Divisão direita de Kronecker: A./.B é a matriz com blocos A(i,j)./B .\. Divisão esquerda de Kronecker: A.\.B é a matriz com blocos A(i,j).\B Esses operadores aritméticos operam com o maior tipo de matrizes numéricas: números escalares ou complexos, matrizes polinomiais, matrizes de funções racionais. A Linguagem Scilab Operadores aritméticos * Os operadores relacionais são: <, <=, >, >=, ==, ~=, e <>. As operações relacionais A<B, A<=B, A>B, A>=B, operam entrada por entrada entre as duas matrizes de números reais. As matrizes devem ter a mesmas dimensão a menos que uma delas seja escalar. Essa operação retorna uma matriz Booleana do mesmo tamanho, com entradas de valores %t quando é verdadeira e %f se é falso. A Linguagem Scilab Operadores relacionais * Os operadores lógicos são: &, |, e ~. As operações lógicas A&B e A|B, executa respectivamente as operações AND e OR. As matrizes A e B devem ser do mesmo tamanho, a menos que uma delas seja escalar. O resultado é uma matriz Booleana do mesmo tamanho. A operação ~A complementa as entradas da matriz Booleana A. Essas operações são definidas apenas para matrizes com entradas de tipo lógicos e matrizes de números. A Linguagem Scilab Operadores lógicos * Colchetes [] são usados para formar vetores e matrizes a partir de expressões escalares ou matriciais. Dentro os colchetes, comas (,) ou espaços em branco separa colunas dentro de uma linha. Novas linhas ou ponto e vírgula (;) separa linhas dentro uma coluna. Colchetes pode ser aninhados, mas dentro de um par de colchetes as matrizes devem ser inseridas linha por linha: [1;2,3;4] não é valida e [a,b; c] é a mesma de [[a,b];c] ( e serve apenas se [a,b] tem a mesma dimensão de c). A Linguagem Scilab Operações especiais de matrizes * Colchetes vazios [] define a matriz vazia (zero colunas e zero linhas). Exemplo: [1 %s+1 %i] é uma matriz linha com três entradas [11 12; 21 22; 31 32] é uma matriz 3x2 [[11;12;31],[21;22;32]] é uma matriz 3x2 a=[]; for k=1:10, a=[a,k^2];end cria um vetor linha. Dentro os colchetes, as operações aritméticas tem maior prioridade que os espaços vazios. Assim, [1 -2] e [1- 2] correspondem a duas matrizes diferentes. A Linguagem Scilab Operações especiais de matrizes * A primeira produz [1,-2] e a segunda [1-2]=[-1] ou simplesmente -1. Dois pontos (:) : é usado para definir vetores com espaços regularmente espaçados: 1:3 produz [1 2 3] 6.5:-2:1 produz [6.5 4.5 2.5] A sintaxe para o operador : é v1:v2 ou v1:Passo:v2, onde v1, v2 e Passo são escalares reais. Para o primeiro caso entende-se que o passo é 1. A Linguagem Scilab Operações especiais de matrizes * Parênteses ( ) usados para delimitar subscritos em operação de inserção ou extração de matrizes. Extração é para selecionar subconjuntos de elementos de uma matriz, e a inserção é para definir o substituir um conjunto de elementos de uma matriz. Sintaxe de extração: variável(subscritos). Subscritos não deve exceder a dimensão das variáveis. Sintaxe de inserção: variável(subscritos)=expressão. O tamanho da submatriz determinado pelo subscritos deve corresponder ao tamanho da expressão. A Linguagem Scilab Operações especiais de matrizes * Como exemplo, a(1:2)=[5,5] é uma sintaxe válida, mas a(1:3)=[5,5] não é. Esta regra continua válida a menos que a expressão seja escalar (a(1:2)=5) ou a matriz vazia (a(1:2)=[]). Subscritos é uma sequência de escalares, vetores separados por vírgulas com valores reais positivos. Se V e I são vetores, então V(I) é um subvetor formado pelas entradas de V selecionado pelos índices contidos em I. Exemplo: A Linguagem Scilab Operações especiais de matrizes * V(1:2) matriz formada pelas primeiras duas entradas de V. V(:) remodela V como um vetor coluna. V(5:-1:1) obtém as primeiras cinco entradas de V na ordem inversa. Se M é uma matriz e I e J são vetores, então M(I,J) é a sub-matriz de M formada com as linhas selecionadas por I e colunas selecionadas por J. M(1:2,1) é a sub-matriz formada pelas duas primeiras colunas de M. A Linguagem Scilab Operações especiais de matrizes * O vetor implícito (:) seleciona todos os índices relativos à dimensão. Exemplo: M(:,1:2) é a sub-matriz formada pelas primeiras duas colunas de M. M(:) é o vetor coluna formado com todas as colunas de M. Um dispositivo muito usado para inserção e extração é o símbolo de índice final $. O símbolo pode ser usado para designar o índice final em uma matriz que não é conhecida as dimensões. A Linguagem Scilab Operações especiais de matrizes * M(1,$) é a ultima entrada da primeira linha de M V(1:2:$) é equivalente a V(1:2: size(V,’*’)) M(5:$,$/2) é equivalente a M(5: size(M,1), size(M,2)/2) V(i)=[] apaga as entradas i do vetor V M(i,:) = [] apaga as linhas i da matriz M M(:,j)=[] apaga as colunas j da matriz M M(k)=[] remodela a matriz em um vetor coluna e apaga as entradas indicadas por k (note que k pode ser um vetor de índices). A Linguagem Scilab Operações especiais de matrizes .