Introdução ao Scilab Prof. Santos Alberto Enriquez Remigio Faculdade de Matemática-Universidade Federal de Uberlândia 12 de setembro de 2015
Tópicos Scilab Operações básicas de calculadora no Scilab Definição de polinômios no Scilab Definição de vetores e matrizes no Scilab Editor SciNotes do Scilab Comandos de programação Funções Esboço de gráficos no Scilab
Scilab 1. Scilab é um ambiente de programação numérica bastante flexível Gratuito É um ambiente poderoso para geração de gráficos bi-dimensionais e tri-dimensionais, inclusive com animação Implementa diversas funções para manipulação de matrizes. Permite trabalhar com polinômios, sistemas linares e grafos Permite o acesso a rotinas escritas nas linguagens Fortran e C 2. Como obter o Scilab? http://www.scilab.org/
Consola do Scilab
Parte superior esquerda da janela principal do Scilab
Ajuda do Scilab
Demo do Scilab
Operações básicas com Scilab 1. Declarando variávies reais ou complexas (=): a = 2; b = -1. 2. Operadores com números: Soma (+), subtração (-) Mutiplicação (*) Divisão: / (slash). b/a = b (a 1 ) Divisão: \ (backslash). b\a= (b 1 )a Radiciação (sqrt()) Potenciação (^) 3. Variáveis especiais: π (%pi), e (%e), i (%i) True (%T), False (%F), etc
Exemplos práticos. Faça os seguintes cálculos na consola do Scilab 1. Calcule 10π 2. e 2 3. O resíduo de 48/11 4. 3 10 + 3 5 5. 2 + 3 2 4.023 4.023 6. Dados a = 2, b = 3 e c = 5. Calcule as expressões: 7. Calcule o valor de: 2πe 1) c + c ab a b c 2) a b3 a c ac b
Polinômios no Scilab Definição dos polinômios. Duas maneiras: Exemplos: 1. Passando os coeficientes do polinômio: NomeVarPolin= poly([a 0 a 1 a 2 a n ], NomeVarIndepend, coef ); 2. Passando as raízes do polinômio: NomeVarPolin = poly([r 1 r 2 r n ], NomeVarIndepend )
Operações: Soma e diferença: + e - Multiplicação e divisão comum: * e / Divisão à esquerda: \ Entenda-se por p\q a operação p 1 q Potenciação: ^ Valor numérico de um polinômio: horner(nomevarpolin, valorvarindepen)
Exemplos práticos 1) Defina o seguinte polinômio no Scilab: P(s) = s 3 + s 2 s + 2 2) Defina o seguinte polinômio no Scilab, sabendo que possui unicamente as seguintes raízes: x 1 = 1, x 2 = 2 e x 3 = 3. Exercícios. Criar exemplos do uso de polinômio no Scilab.
Vetores Para definir um vetor criamos um nome e lhe asignamos entre colchetes os elementos do vetor. NomeVetor = [ elementos] Para vetor linha os elementos do vetor são separados pelo símbolo, ou por um espaço vazio e, para vetor coluna os elementos do vetor são separados pelo símbolo ; Exemplos: Vetor coluna de 3 elementos: v = [ 1; 3; -1]; Vetor linha de 5 elementos: u = [1 5-1 6 90];
Vetores 1. Operadores: Operações básicas com vetores Soma e subtração: + e - Multiplicação por escalar: * 2. Produto escalar de dois vetores coluna u e v: *. Aplica-se assim: u v
Geração de vetores Vamos usar o operador : e a função predefinida linspace para gerar vetores: v=a:b v=a:h:b v=linspace(a,b) v=linspace(a,b,n) retorna uma sequência de números começando em a e terminando em b com espaçamento 1 (a e b inteiros) retorna uma sequência de números começando em a e terminando em b com tamanho de passo h retorna uma sequência de números com 100 pontos igualmente espaçados entre a e b retorna uma sequência com n pontos igualmente espaçados entre a e b
Exemplos práticos. Defina os seguintes vetores no Scilab: u = (2, 3, 4) v = ( 1, 0, 1 w = ( 1, 0, 1)
Exercício prático Veja o que acontece com os seguintes comandos no Scilab: 1) z= linspace(0,1,11) 2) v = -6:3:9 3) w = 5:12 4) x = 0 : π/10 : π
Matrizes Para definir uma matriz criamos um nome e lhe asignamos entre colchetes os elementos. NomeMatriz = [ elementos] Usamos o símbolo, ou espaço vazio para separar os elementos de uma linha e o símbolo ; para separar as linhas da matriz. Exemplo matriz 3x4: a = [ 1 4-1 0; 2 3 4 5; 1, 2, 8, 9] Operações soma e subtração: + e - Multiplicação por um escalar: * Transposta:
Definição de matrizes especiais de tamanho nxm Matriz com elementos igual a um: em que todos os elementos são iguais a um: a = ones(n,m) Matriz nula: a = zeros(n,m) Matriz diagonal 1: a = eye(n,m)
1. Operações Operações básicas com matrizes quadradas soma e subtração: + e - Multiplicação por um escalar: * Potenciação: ^ Transposta: Determinante: det(nomematriz) Inversa: inv(nomematriz) 2. Definição de matrizes especiais Matriz identidade de tamanho n: a = eye(n,n) Matriz nula de tamanho n: a = zeros(n,n)
Multiplicação de matrizes quadradas Operadores Multiplicação própria de matrizes: * Aplicação: A*B, onde A M(n, m) e B M(m, p) Multiplicação e divisão elemento a elemento:.* e./ Aplicação: A.*B (ou A./B), sendo A e B M(n, m) Potenciação de cada elemento da matriz:.^ Aplicação: A.^p, onde A M(n.m) e p N Divisão à esquerda: Usa-se para expressar o produto A 1 b. Nesse caso, usa-se o operador \ A\B significa inv(a) * B Divisão a esquerda elemento a elemento A.\ B inv(a).* B (Verificar!)
Exemplos práticos 1. Defina uma matriz identidade de 5x5 no Scilab. 2. Inicializar todos os elementos de uma matriz A igual a zero. 3. Calcular a potência A n, onde: para n = 1, 2, 3, 4, 5, 6. A = 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0
Tamanho de variáveis size(a) length(x) Retorna o número de linhas e colunas da matriz A Retorna o número de elementos do vetor x
Editor SciNotes do Scilab Objetivos do editor 1. Escrever comandos a serem executados no Scilab 2. Depurar algoritmos Extensão para os arquivos editados no Scipad. Alguns destes, são: 1..sce (Arquivo geral de comandos) 2..sci (Arquivo contendo a definição de uma função)
SciNotes
Comandos de leitura e impressão de dados numéricos input: Prompt para entrada de dados. Exemplo Exemplo. n = input( ingresse o valor do número de iterações ); printf: Emulador da função da linguagem C printf Exemplo. printf( Valor de n = %d \n, n); //: Marca o início de um comentário. As barras, tanto quanto o restante dos caracteres até o fim das linhas não são interpretados. Exemplo. // Duas barras em Scilab me permitiu colocar este texto clear: Cancela variáveis declaradas. clc: Limpa janela de comandos clf: Limpa ou reajusta a (janela da) figura gráfica corrente para valores padrões; scf(n): Abre janela de apresentação de figura gráfica com identificador de valor n.
Exemplos práticos Abrir um arquivo no editor de comandos e escrever: // Meu primeiro programa // ************************ // Autor: // Data: // Objetivo: Mostrar o uso de alguns comandos do Scilab no editor de comandos x=1, y=2 print(alor de x = %lf e de y = %lf \n, x, y)
Funções predefinidas no Scilab: básicas abs(x) retorna o valor absoluto de x: x sign(x) retorna o sinal de x, 1 se x>0, -1 se x<0, e 0 se x=0 sqrt(x) retorna a raiz quadrada de x exp(x) retorna a função exponencial de x: e x log(x) retorna o logaritmo natural de x: ln(x) log10(x) retorna o logaritmo de x na base 10: log 10 x
Funções predefinidas no Scilab: trigonométricas sin(x) sind(x) asin(x) cos(x) cosd(x) acos(x) tan(x) retorna o sen(x), para x em radianos retorna o sen(x), para x em graus sexagesimais retorna o arcoseno(x) em radianos retorna o cos(x), para x em radianes retorna o cos(x), para x em graus sexagesimais retorna o arcocos(x) em radianos retorna a tan(x), para x em radianos
Funções predefinidas no Scilab: arredondamento round(x) fix(x) floor(x) ceil(x) retorna o inteiro mais perto de x retorna o inteiro mais perto de x em direção a zero: arredonda acima para números negativos arredonda abaixo para números positivos retorna o maior inteiro abaixo de x retorn o menor inteiro acima de x
Definição de função usando o comando deff deff ( [y1,y2,...,yn] = nome_funcao(x1,x2,...,xm), y1=regra1(x1,x2,...,xm), y2=regra2(x1,x2,...,xm),...,yn=regran(x1,x2,...xm) ) Example Definir a função y = x 2 no Scilab e calcular o valor numérico dessa função para x=2. > deff( vary=funcaoquadraticasimples(varx),vary=varx^2 ); > y = funcaoquadraticasimples(2) \\ y = 4.
Definição de função usando o comando function function [y1, y2,...,yn] = nome_funcao(x1, x2,...,xn) instrucao_1 instrucao_2 endfunction. instrucao_n Example Definir a função y = x 2 no Scilab e calcular o valor númerico dessa função para x=2.
Comandos de programação para iterações Comandos para iterações 1. O loop for for end variavel = vetor_linha instrucao_1 instrucao_2. instrucao_n 2. O loop while while end condicao instrucao_1 instrucao_2. instrucao_n
Exemplos práticos Exemplo. Calcular o valor de x =2 * i onde i =2, 3,4,5,6
Comandos de programação para condicionais Comandos condicionais 1. Comando if-then-else if condicao then sequencia_de_instrucoes_1 else sequencia_de_instrucoes_2 end 2. Comando select-case select variavel_de_teste case expressao_1 case. case else end expressao_2. expressao_n sequencia_de_instrucoes_1 sequencia_de_instrucoes_2. sequencia_de_instrucoes_n sequencia_de_instrucoes_n+1
Operadores de comparação Maior que Maior e igual que Menor que Menor ou igual que Igual que E ou Não igual a>b a>=b a<b a<=b a==b a & b a b a~=b
Exemplo
Lembrando o conceito do gráfico de uma função 1. Seja f : A R R uma função de uma variável, seu gráfico é: Graf (f ) = {(x, y)/x Domf = A y = f (x)} R 2 2. E g : A R 2 R uma função de duas variáveis, seu gráfico é: Graf (g) = {(x, y, z)/(x, y) Domf = B e z = g(x, y)} R 3 3. Se o domínio da função é finito, então o gráfico da função é um conjunto finito.
Observação 1. Se o domínio de uma função f de R em R é um intervalo, isto é, f : [a, b] R, então o domínio da função f é um conjunto infinito. 2. O computador não pode representar todos os números (conjunto infinito) do intervalo [a, b]. Portanto, o esboço do gráfico da função f no computador exige a escolha de um subconjunto de pontos do conjunto Graf (f ),isto é, conjunto da forma: {(x 1, y 1 ), (x 2, y 2 ), (x 3, y 3 ), (x 4, y 4 ), (x 5, y 5 ),..., (x n, y n )}
Um exemplo de escolha de pontos do Graf (f ) Problema. Esboçar o gráfico da função f : [a, b] R. 1. Escolha de pontos xi. Supondo-se que se deseja escolher pontos igualmente espaçados em [a,b], pode-se seguir o seguinte roteiro: 1.1 Defina dx = (b a)/n, com n sendo o número de subintervalos 1.2 Defina o vetor de abscisas x no Scilab por: x = [a : dx : b] 1.3 Calcule o vetor y associado ao vetor x por: y = f (x) 2. Aplique o comando plot2d do scilab aos vetores x e y, como se segue: plot2d(x,y)
Figura: y = x 2, x [ 2, 2] e n=80.
Exemplo prático 1: Colocando grid 6 4 2 0-2 -4-6 -8-3 -2-1 0 1 2 3 Figura:
Exemplo prático 2: Colocando grid e eixos 6 4 2-3 -2-1 0 1 2 3 0-2 -4-6 -8
Exemplo prático 3: Acrescentando legenda y= 2x-1 6 4 2-3 -2-1 0 1 2 3 0-2 -4-6 -8