Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao Scilab Profª Gilka Rocha Barbosa Introducao ao Scilab Apresentar comandos básicos necessários à introdução à programação e desenvolvimento de programas simples. Ambiente Elementos básicos Números, Vetores e Matrizes Variáveis Operadores Funções elementares Carga e gravação Introdução ao Scilab 2 Introdução ao Scilab 3 Linguagens de Programação (LP) As linguagens de programação permitem ao usuário especificar um programa de uma forma semelhante ao algoritmo. Um compilador/interpretador da linguagem deverá fazer a tradução das instruções de alto nível para as de nível máquina (por exemplo, manter os endereços de memória onde estão guardadas as variáveis). C = A + B LDA 11A810A0 LDB 22345A91 ADD A,B STA 1234FE88 Introdução ao Scilab 4 Linguagens de Programação (LP) Existem vários tipos de LP baseadas em diferentes paradigmas (estilos) de programação. Linguagens imperativas: Fortran, Pascal, C, MATLAB, SCILAB Controle explícito da execução Linguagens Orientadas a Objetos: Smalltalk, C++, Java Controle implícito na manipulação dos dados Linguagens Funcionais: LISP, Scheme Baseadas na especificação de funções Linguagens Lógicas: Prolog Implementando a Lógica de Predicados Introdução ao Scilab Scilab � Software livre para cálculo numérico e simu- lação de sistemas físicos. Usado nas áreas: � Física � Sistemas complexos � Processamento de imagens � Controle e processamento de sinais � Automação industrial � Controle de processos � Computação gráfica � Matemática � Modelagem biológica � ... Introdução ao Scilab Scilab � Criado em 1989 por um grupo de pesquisadores da INRIA e da ENPC. � Disponível como software livre desde 1994 pelo site http://www.scilab.org � Consórcio Scilab desde 2003 mantido por diversas empre- sas. Objetivos do consórcio: � organizar cooperação entre os desenvolvedores � obter recursos para manutenção da equipe � garantir suporte aos usuários � Sistemas Operacionais: Linux Windows Solaris Unix Introdução ao Scilab 7 Scilab Ambiente utilizado no desenvolvimento de software para resolução de problemas numéricos Gratuito, software free A última versão está sempre disponível, geralmente via Internet O software pode ser legalmente utilizado, copiado, distribuído, modificado Distribuído com código fonte Sintaxe semelhante ao Matlab Permite interface com rotinas escritas em outras linguagens como C Suporta o desenvolvimento de conjuntos de funções voltadas para aplicações especificas (toolboxes). Introdução ao Scilab Prompt de comando Help Editor Ambiente Scilab Ambiente Scilab Introdução ao Scilab 9 Mude o diretório Introdução ao Scilab 10 Ambiente de programação Um conjunto de comandos é digitado em um arquivo texto e este arquivo é executado no ambiente Scilab Teste!!!!!!!! // Programa para calcular a media de duas notas clear nota1 = input ('Digite a primeira nota: '); nota2 = input ('Digite a segunda nota: '); media = (nota1 + nota2)/ 2; if media >= 7 resultado = ' aprovado.'; else resultado = ' reprovado. '; end disp (resultado) disp (media) printf ( "\n A média entre %1.2f e %1.2f é %1.2f e o aluno está %s \n\n", nota1, nota2, media, resultado) Introdução ao Scilab 11 Salve com o nome Media.sce Introdução ao Scilab 12 Teste!!!!!!!!!! execute Media Introdução ao Scilab 13 Janela de gráficos Teste!!!!!!!! Introdução ao Scilab 14 -->a= 1 : 0.1 : 10; -->plot (a, sin(a)) Veja a barra Scilab Graphic Introdução ao Scilab 15 Utilização básica Variáveis especiais – pré-definidas. São protegidas e não podem ser apagadas. � Who: lista as variáveis � whos (): lista e dimensiona as variáveis � Clear: remove todas as variáveis do espaço de trabalho � Help: informa sobre os comandos e funções Ex.: help, help inv, help help � pwd: Mostra o diretório atual. � SCI: Mostra o diretório onde o Scilab foi instalado. � ls: Lista os arquivos do diretório. � chdir(“dir”): Muda de diretório. � mkdir(“dir”): Cria um diretório. � rmdir(“dir”, ‘s’): Remove um diretório. � quit ou exit – sai do Scilab Introdução ao Scilab 16 Utilização básica � Outras variáveis podem ser criadas -- > a=1 -- > A = 2 -- > a � Algumas constantes especiais são precedidas pelo caractere %: %e: constante neperiana %i: raiz quadrada de -1, número imaginário %pi: constante pi %eps: máximo valor tal que 1+%eps=1 %inf: infinito %nan: não é um número %t: verdadeiro %f: falso Introdução ao Scilab 17 Utilização básica ... continua uma expressão em outra linha -->s = 1-1/2+1/3-1/4+1/5-1/6+1/7... -->-1/8+1/9-1/10; s = 0.6456349 Introdução ao Scilab 18 Utilização básica ; ao final de uma expressão o cálculo é feito mas o resultado não é apresentado -- > A=1 // Atribui o valor 1 a A -- > b=2; // Atribui o valor 2 a b -- > A + b; // soma de A e b Introdução ao Scilab 19 Utilização básica Adição + Subtração - Multiplicação * Divisão à direita / Divisão à esquerda \ Potenciação ^ É capaz de executar matemática elementar como uma calculadora: -- > 4 * 1 + 6 * 0.5 + 5 * 2 Podem-se armazenar em variáveis: -- > macas = 2 Introdução ao Scilab 20 Variáveis Nomes legais de variáveis consistem numa combinação qualquer de letras, dígitos e sublinha, começando com uma letra. Ali22B, Cost, X3_f22 and s2Sc6 É case-sensitive (diferencia letras maiúscula de minúscula) Mat1 é diferente de mat1 Variáveis ilegais Ali-22, 5x, 3Cost, &r5, %67 and @xyt56 Caracteres x= ‘a’ ou x= “a” Strings mg1='Ali'; ou mg2=‘SCILAB DEMOS' Introdução ao Scilab 21 Elementos básicos Números, Vetores e Matrizes Uma matriz pode ser Um escalar (número): matriz com dimensão 1 x 1 Um vetor linha: matriz 1 x n Um vetor coluna: matriz n x1 Uma matriz bidimensional: matriz n x m Uma matriz multidimensional: matriz com dimensão n1 x n2 x n3 x ... nm Último valor calculado Casa decimal No ambiente do Scilab digite: --> 10 ans = 10 --> --> p=%pi p = 3.1415927 --> Introdução ao Scilab 22 Números, Vetores e Matrizes O Scilab reconhece vários tipos de números: Real: 4.607, - 199.34, Complexo: 2 + 3i , i=j=sqrt(-1)), Literal: “nome” Lógico: V/F Introdução ao Scilab 23 Exemplo Calcular a equação do segundo grau: ax2 + bx + c. As raízes da equação são dadas por: a acbb xx 2 4 , 2 21 −±− = Resolvendo a seguinte equação: x2 + 4 x + 13 = 0 -- > a = 1, b = 4 , c = 13 -- > x1 = (-b + sqrt (b^2 – 4 * a * c)) / (2 * a) -- > x2 = (-b - sqrt (b^2 – 4 * a * c)) / (2 * a) O Scilab apresenta como solução: x1 = -2.00 + 3.000i x2 = -2.000 – 3.000i Introdução ao Scilab Z = a + %i*b � Exercício: Dados os seguintes números complexos, Z1 = 3 + 5i; Z2 = 7 + 3i execute as seguintes operações: a) Z1 + Z2; b) Z1 * Z2; c) Z1 + sqrt(-20); d) Calcule os módulos de Z1 e Z2 e compare com abs(z); Lembre-se 22|| baz += Números complexos Vetores e matrizes • As grandezas vetoriais podem ser criadas colocando-se seus componentes entre colchetes [ ] • Os componentes de um vetor podem ser separados por vírgula, espaço ou por ponto-e-vírgula. Introdução ao Scilab • Vetores Declaração de vetores: X = [ x1 x2 x3 ...] vetor linha X = [x1;x2;x3;...] vetor coluna Transposição de vetores: X’ Exercícios: Verifique a diferença entre: x = [1 2 3] e x = [1;2;3] Dados os vetores: x = [1,2,3,4,5] e y = [2,4,6,8,10] Calcule: a) z = x + y; b) z = x*y; c) Formas transpostas de x e y; d) Dados z1 = x*y’; e z2 = x’*y; Verifique se z1 = z2. Introdução ao Scilab 27 Exemplo de função com vetor --> x=0:0.1:10; --> plot (x,sin(x)) --> z=cos(x); --> plot (x,z) 0 1 2 3 4 5 6 7 8 9 10 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 0 1 2 3 4 5 6 7 8 9 10 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 Introdução ao Scilab 28 Exemplo -->g !--error 4 undefined variable : g -->g = 1:5 g = 1. 2. 3. 4. 5. -->g*g !--error 10 inconsistent multiplication Introdução ao Scilab Algumas funções elementares imag(x): Mostra a parte imaginária de um complexo real(x): Mostra a parte real de um complexolog(x), log10(x), log2(x): Logaritmos natural, base 10 e base 2 modulo(x,y): Mostra o resto da divisão de x por y abs(x): Retorna o valor absoluto (se x é real) e o módulo se x é complexo) round(x): Arredonda o valor de x para o inteiro mais próximo floor(x): Arredonda para o menor inteiro ceil(x): Arredonda para o maior inteiro sqrt(x): Calcula a raiz quadrada de x cos(x), sin(x), tan(x), cotg(x): Retorna cosseno, seno, tangente ou cotangente de x (x deve estar em radianos) acos(x), asin(x), atan(x): Retorna o ângulo (em radianos) Introdução ao Scilab Algumas funções elementares abs(x): Retorna o valor absoluto (se x é real) e o módulo se x é complexo) acos(x), asin(x), atan(x): Retorna o ângulo (em radianos) ceil(x): Arredonda para o maior inteiro cos(x), sin(x), tan(x), cotg(x): Retorna cosseno, seno, tangente ou cotangente de x (x deve estar em radianos) exp(x): Exponencial (e) de um valor x. factorial(x): I Fatorial (e) de um valor x. floor(x): Arredonda para o menor inteiro imag(x): Mostra a parte imaginária de um complexo log(x), log10(x), log2(x): Logaritmos natural, base 10 e base 2 modulo(x,y): Mostra o resto da divisão de x por y real(x): Mostra a parte real de um complexo round(x): Arredonda o valor de x para o inteiro mais próximo sqrt(x): Calcula a raiz quadrada de x Introdução ao Scilab Programando com o Scilab � Características do Scilab Interpretador de comandos e por isso o código gerado não precisa ser compilado. Facilidade e simplicidade da linguagem estruturada. Não há necessidade de declaração prévia das variáveis. Introdução ao Scilab scripts � Scripts são arquivos de texto que contém comandos que seriam usados em um prompt do Scilab. � Por convenção estes arquivos possuem extensão .sce ou .sci � Os arquivos são criados no editor de texto do Scilab, o Scipad (ou em qualquer outro editor de texto). � Os arquivos são executados no Scilab com o comando exec, Introdução ao Scilab Exercício � Faça um programa em Scilab que encontre a média de duas notas de vários alunos. � O script deve ser digitado em um editor de textos e salvo com a extensão .sce, por exemplo media.sce. � Para executar no Scilab, digite: exec (‘media.sce’). � Note que você deve estar no diretório em que o arquivo media.sce se encontra. Introdução ao Scilab 34 Exemplo // Programa para calcular a media de duas notas clear cont = 0; fim = "s" while fim == "s" | fim == "S" nota1 = input('Digite a primeira nota: '); nota2 = input('Digite a segunda nota: '); media = (nota1 + nota2)/ 2; if media >= 7 resultado = ' aprovado.'; else resultado = ' reprovado. '; end printf ( "\n Média: 1.2f . Aluno: %s \n\n“, media, resultado) cont = cont + 1; fim = input('Para continuar, digite s: ', "s"); end disp (cont) Introdução ao Scilab 35 Exemplo Media Introdução ao Scilab 36 Exemplo Exec... Media Introdução ao Scilab 37 Operadores Relacionais Operador Resultado == igual a ~= , <> diferente de > maior do que < menor do que >= maior ou igual a <= menor ou igual a = é usado para atribuição e não para comparação Introdução ao Scilab 38 Operadores Lógicos Operador Descrição & e | ou ~ não A F F V V B F V F V A & B F F F V A | B F V V V ~A V V F F ~B V F V F Tabela Verdade dos operadores &, | e ~ Introdução ao Scilab 39 Comandos de controle de fluxo - if Formatos: if condição comandos1; else comandos end if condição1 comandos1; elseif condição2 comandos2; else comandos3 end if condição comandos; end Introdução ao Scilab 40 Exemplo do comando if Exemplo: x = -1; if x < 0 then y = 2*x; else y = x; end disp(y); x = 10; if x < 0 then y = -x; elseif x == 1 y = x; elseif x == 2 y = 2*x; else y = 5*x; end disp(y); Introdução ao Scilab 41 Comandos de controle de fluxo – select Formato: select var case expr-1, comandos1 case expr-2, comandos2 ... else comandos end O valor da variável var é comparado às expressões, se os valores são iguais, a seqüência correspondente é executada. Introdução ao Scilab 42 Exemplo do comando select // Exemplo de case A=input('Digite um número') select A case 1, disp('A vale 1') case 2, disp('A vale 2') else disp('A nao é nem 1 nem 2') end Comandos de controle de fluxo - for Formato: for inicio : incremento : fim comandos; end Exemplo: a = 0; for i=1:3 a = a+1; end Introdução ao Scilab 43 L = list(2,[1 2; 3 4],'elemento'); for k=L disp(k); end Introdução ao Scilab 44 Exemplo do comando for // Gera e mostra uma matriz n=3;m=3; for i=1:m for j=1:n a(i,j)=i+j; end end s=sprintf( '\n Matriz A:a(i,j)=i+j\n‘ ); disp(s); disp(a); Introdução ao Scilab 45 Comandos de controle de fluxo - while Formato: while condição comandos; end // Exemplo while 1 n=1; x=input (); while n<=x n=n+1; end disp(“ final”); disp (n) Introdução ao Scilab 46 Exemplo do comando while // Exemplo while 3 x =1, v = [] while x <= 16 v = [v x]; x = x*2; end // Exemplo while 2 n=1; while n<=23 n=n+1; end printf(‘\n final: %d’,n); Introdução ao Scilab 47 Funções de entrada - input input( ) possibilita a interação entre o usuário e o programa Exemplo: Receber um dado numérico nu = input( ‘Digite um numero qualquer: ’ ) Receber um dado texto tx = input( ‘Digite a resposta: ’,’s’ ) variável stringcomando de atribuição solicita ao usuário que forneça algum dado de entrada Introdução ao Scilab 48 Funções de Saída - disp disp(variável) ou disp(“texto”) exibe na tela o valor da variável sem mostrar seu nome ou exibe o texto ou string colocado entre aspas. Exemplo: disp(‘Media Geral ’) // exibe a frase Media Geral i = 4 disp(i) // exibe o valor armazenado na variável i (4) nome = "maria"; disp ("Seu nome é " + nome) // concatena os strings v=10 disp ("A velocidade final é " + string(v)) // converte numero em string e concatena Introdução ao Scilab 49 Funções de Saída - printf printf (formato, dado) exibe valores e texto e permite a formatação dos valores formatação = cadeia de caracteres descrevendo como os dados devem ser exibidos. Exemplo: printf ( "\n O valor de pi = %f \n\n",%pi ) printf ( "O valor de pi = %6.2f \n ",%pi ) Caractere de formatação Resultado %s indica como cada variável da lista de dados será exibido dentro da string de formatação %d ou %i Exibe o valor como inteiro %f ou %x.yf Exibe o valor em formato de ponto flutuante %s Exibe o valor de um literal \n Muda de linha \t Insere espaço Introdução ao Scilab 50 Exemplo // Programa para calcular a media de vários alunos clear totalAlunos = input('Digite o numero de alunos: '); for cont = 1:totalAlunos nota1 = input('Digite a primeira nota: '); nota2 = input('Digite a segunda nota: '); media = (nota1 + nota2)/ 2; if media >= 7 resultado = ' aprovado.'; else resultado = ' reprovado. '; end printf ("\n O aluno %d \t teve média %.2f \t e sua situação é %s", cont, media, resultado) // exibe a palavra Aluno, o número, a média e o resultado end Introdução ao Scilab 51 Exemplo // Programa para calcular a media de duas notas clear cont = 0; fim = "s" nota1= -1; nota2 = -1; while fim == "s" | fim == "S" while nota1 < 0 | nota1 > 10 nota1 = input('Digite a primeira nota: '); if nota1 < 0 | nota1 > 10 disp ('Nota inválida') end end while nota2 < 0 | nota1 > 10 nota2 = input('Digite a segunda nota: '); if nota2 < 0 | nota1 > 10 disp ('Nota inválida') end end Introdução ao Scilab 52 Exemplo // Programa para calcular a media de duas notas - continua media = (nota1 + nota2)/ 2; if media >= 7 resultado = ' aprovado.'; else resultado = ' reprovado. '; end printf "\n Média %.2f \t %s”, media, resultado) cont = cont + 1; fim = input('Para continuar, digite s: ', "s"); End printf "\n Total de aluno(s) processados %.d \n”, cont) Introdução ao Scilab Funções � Variáveis definidas dentro do escopoda função (variáveis locais) não permanecem no ambiente após a execução da função. � Uma função pode ser definida de três formas: no ambiente Scilab; usando o comando deff ou digitando o texto no Scipad e clicando no menu Execute, opção load into Scilab Introdução ao Scilab Funções � Definição function [y1,...,yn]= nome_da_funcao(x1,...,xm) instrucao_1 instrucao_2 ... instrucao_p endfunction onde: x1,...,xm são os argumentos de entrada y1,...,yn são argumentos de saída instrucão_1,...,instrucao_p são as instruções ex ecutadas pela função. Introdução ao Scilab Funções - Exemplo Definir uma função que converte um número complexo da forma cartesiana para a polar. 1 (Salve em: cart_to_polar.sci) function [mod,ang] = cart_to_polar(re,im) mod = sqrt(re^2 + im^2); ang = atan(im/re) * 180/%pi; endfunction 2. (Salve em program_chama_funcao.sce) exec(' cart_to_polar.sci'); z = 2 + 2*%i; [mod,ang] = cart_to_polar(real(z),imag(z)); disp(mod); disp(ang); Introdução ao Scilab Funções - Exercícios 1. Crie uma função que calcule as raízes de uma equação do segundo grau usando a fórmula de Báskara. Desenvolva um programa para a função e um para a execução da função. 2. Crie uma função que calcule o fatorial de um número usando o comando de iteração for. Faça o mesmo usando o comando while. Operações e estruturas básicas • As grandezas vetoriais podem ser criadas colocando-se seus componentes entre colchetes [ ] • Os componentes de um vetor podem ser separados por vírgula, espaço ou por ponto-e-vírgula. Introdução ao Scilab • Vetores Declaração de vetores: X = [ x1 x2 x3 ...] vetor linha X = [x1;x2;x3;...] vetor coluna Transposição de vetores: X’ Exercícios: Verifique a diferença entre: x = [1 2 3] e x = [1;2;3] Dados os vetores: x = [1,2,3,4,5] e y = [2,4,6,8,10] Calcule: a) z = x + y; b) z = x*y; c) Formas transpostas de x e y; d) Dados z1 = x*y’; e z2 = x’*y; Verifique se z1 = z2. Introdução ao Scilab 59 Exemplo -->g !--error 4 undefined variable : g -->g = 1:5 g = 1. 2. 3. 4. 5. -->g*g !--error 10 inconsistent multiplication Introdução ao Scilab • Vetores V = Valor_inicial : incremento : Valor_final Exemplos: A1 = 1:10 B1 = 1:2:10 C1 = 1:0.2:10 D1 = 10:-1:1 E1 = 1:%pi:20 F1 = 0:log(%e):20 G1 = 20:-2*%pi:-10 Introdução ao Scilab • Vetores V2 = linspace (Valor_inicial, Valor_final, quantidade de elementos): Exemplos: A2 = linspace (1 ,10,15) B2 = linspace ( 1,2,10) C2 = linspace ( 1,0.2,10) D2 = linspace ( 10,-1,1) E2 = linspace ( 1,%pi,20) F2 = linspace ( 0,log(%e),20) G2 = linspace ( 20,-2*%pi,10) Introdução ao Scilab Operações com vetores � Dimensão: length(x) � Número de linhas e colunas: [nr,nc] = size(x) � Elementos iguais a 1: x = ones(N,1) � Vetores nulos: x = zeros(N,1) � Vetores com valores aleatórios: x =rand(N,1) � Apaga elemento: X(i) = [] � Insere elemento i no final: X = [X i] � Acessa último elemento: X($) � Acessa elementos entre n e m: X(n:m) � Agrupa dois vetores: c = [x y] Introdução ao Scilab Operações com vetores � Valor mínimo: min(x) � Valor mínimo e posição relativa: [V,P] = min(x) � Valor máximo: max(x) � Valor máximo e posição relativa: [V,P] = max(x) � Mediana: median(x) � Soma dos elementos: sum(x) � Multiplicação dos elementos: prod(x) � Ordenação dos elementos: sort(x) Introdução ao Scilab Operações com vetores Exercício: 1. Crie: a) Um vetor unitário com 10 elementos b) Um vetor nulo com 5 elementos c) Um vetor com 10 elementos aleatórios d) Verifique suas dimensões 2. Dado o vetor X = [1 2 3 4 5]; a) Insira o valor 10 no final b) Apague o quinto elemento do vetor c) Atribua valor zero aos elementos entre 2 e 4 3. Dados os vetores crie um vetor Z que seja dado pela união de X e Y. X = [ e sin( ) log(10)] Y = [10,3 1,1 -2,2] pi pi Introdução ao Scilab 65 Exercício 1. Desenhe a função f(x) = 2e-0,2x para o intervalo 0≤x≤10. 2. Suponha que u = 1 e v = 3. Avalie as seguintes expressões. a) 4u b) _2v-2___ c) v3___ d) 4_ Πv 3v (u + v)2 v3 – u3 3 3. Digite essas declarações. Que resultado obtém? --> // criar um array de entrada entre -2*pi e 2*pi --> t = -2*%pi : %pi/10 : 2*%pi; --> // calcular |sin(t)| --> x = abs(sin(t)); --> // plot resultado --> plot (t,x); Introdução ao Scilab Matriz � Uma matriz geral consiste em m*n números dispostos em m linhas e n colunas: Introdução ao Scilab Matriz No Scilab: -->M = [1 2 3; 4 5 6; 7 8 9] M = 1. 2. 3. 4. 5. 6. 7. 8. 9. Introdução ao Scilab Operações com matrizes � Matrizes com elementos unitários: A = ones(M,N) � Matrizes com elementos nulos: B = zeros(M,N) � Matriz identidade: A = eye(N,N) Exercício 1. Dadas as matrizes A = [1 2 3;4 5 6]; e B = [7;8;9] Determine: a) A*B b) B*A c) A*identidade(A) d) A*ones(A) e) A*ones(A)’ + identidade(A) Introdução ao Scilab Operações com matrizes � Acesso à linha i: A(i,:) � Acesso à coluna j: A(:,j) � Insere linha no final: A = [A;linha] � Insere coluna no final: A = [A coluna] � Acesso à ultima linha: A($,:) � Acesso à última coluna: A(:,$) Exercício: 1. Dada a matriz A = [2 4 6;8 10 12; 1 2 3] a) Atribua valor zero à linha 3; b) Multiplique a linha 2 por 10; c) Remova a última linha d) Insira o vetor B = [1 2 3] na última linha de A Introdução ao Scilab Operações com matrizes � Acesso a um conjunto de linhas: A(:,[i:j]) � Acesso a um conjunto de colunas: A([i:j],:) � Matriz com número aleatórios: A = rand(N,M) Exercício: 1. Crie uma matriz 5X5 de números aleatórios. a) Atribua valor 0 à coluna 2. b) Multiplique os elementos de 2 a 4 da coluna 3 por 10. c) Divida os elementos de 1 a 3 da coluna 5 por 5. d) Remova a coluna 3. e) Remova a linha 2. Introdução ao Scilab Operações com matrizes � Matrizes com elementos unitários: A = ones(M,N) � Soma: C = A + B � Multiplicação: C = A*B � Multiplicação por um escalar: B = aA � Matriz complexa: C = A + B*%i (A e B reais) � Matriz transposta: C = A’ � Determinante: d = det(A) � Diagonal: d = diag(A). Exercícios: Dadas as matrizes 1 3 4 6 8 9 2 3 4 9 1 3 3 3 3 6 5 3 8 8 7 9 9 2 9 8 2 3 4 1 1 1 3 8 7 9 A= 2 2 2 3 4 5 9 0 0 1 2 3 0 1 2 3 7 8 1 9 2 3 5 6 8 9 0 1 2 3 4 2 3 4 5 5 B= Calcule: a) C = A + B b) C = A*B c) C = 10*A + 5*B d) C = A + B*%i e) C = A’ + rand(B) f) Determinante de A g) Determinante de B h) Diagonal de A Introdução ao Scilab Matrizes simbólicas Uma matriz simbólica pode ser construída com elementos do tipo string: --> M =['a' 'b';'c' 'd'] ; Se atribuídos valores às variáveis pode-se visualizar a forma numérica da matriz com a função evstr(): Exemplo: --> a = 1; --> b = 4; --> c = 3; --> d = 5; --> evstr(M); Introdução ao Scilab Matrizes: operadores especiais Operador \: divisão à esquerda. Seja Ax=b um sistema de equações lineares escrito na forma matricial, sendo A a matriz de coeficientes, x o vetor da incógnitas e b o vetor dos termos independetes: Introdução ao Scilab Matrizes: operadores especiais Solução do sistema: x=A-1b (inversa de A multiplicada pelo vetor b) --> A=[1 3;3 4];b=[5;2]; --> x=inv(A)*b ou --> x=A\b Exercício: Resolva o sistema linear. Substitua as soluções na equação para confirmação a solução. 2X + 3y + 3z = 2 4x + 3y+ 2z = 1 3x + 7y + 9z = 5 1x + 3y = 5 3x + 4y = 2 Introdução ao Scilab Matrizes: operadores especiais Operador . (usado com outros operadores para operações elemento a elemento) Exemplo: A = [1 2 3; 3 4 6; 7 8 9] B = [2 4 6;8 10 12; 14 16 18] -->A.*B ans = 2. 8. 18. 24. 40. 72. 98. 128. 162. -->A./B ans = 0.5 0.5 0.5 0.375 0.4 0.5 0.5 0.5 0.5 Introdução ao Scilab 76 Sistemas lineares x1 + 2x2 + x3 = 5 1 2 0 x1 5 -x1 +5x2 - 3x3 = 0 -1 5 -3 x2 = 0 4x1 - 2x2 + x3 =3 4 -2 1 x3 3 A * X = B Solução : X = A-1. B --> A=[1 2 0;-1 5 -3;4 -2 1] --> B=[5; 0; 3] --> X=A\B --> Y=inv(A)*B Introdução ao Scilab 77 Expressões Exemplo: resolver o sistema linear-x1 + x2 + 2x3 = 2 3x1 - x2 + x3 = 6 -x1 + 3x2 + 4x3 = 4 Introdução ao Scilab 78 Expressões Exemplo: resolver o sistema linear -x1 + x2 + 2x3 = 2 3x1 - x2 + x3 = 6 -x1 + 3x2 + 4x3 = 4 --> A = [-1 1 2; 3 –1 1; -1 3 4] A = -1 1 2 3 -1 1 -1 3 4 --> b = [2; 6; 4] b = 2 6 4 --> x = A\b x = 1. -1. 2. Introdução ao Scilab 79 Expressões Resolva o sistema linear Introdução ao Scilab 80 Polinômios � Função poly(a, x, ‘flag’) a: matriz de número reais x: símbolo da variável flag: string ("roots", "coeff"), por default seu valor é "roots". Introdução ao Scilab 81 Polinômios Dado p1 = -- > p1 = poly([1, -6, -72, -27], "x", "coeff") p1 = 2 3 1 - 6x - 72x - 27x -- > r = roots(p1) // obtendo as raízes do polinômio r = 0.0824886 - 0.1743828 - 2.5747724 -->p2 = poly (r, "x", "roots") // definindo pelas raízes p2 = 2 3 - 0.0370370 + 0.2222222x + 2.6666667x + x Introdução ao Scilab 82 Polinômios Polinômio definido pelas suas raízes -->p = poly([1 2], "s") p = 2 2 - 3s + s --> Com a função roots, comprova-se que as raízes de p são, realmente, 1 e 2, -->roots(p) ans = 1. 2. Introdução ao Scilab 83 Polinômios Polinômio criado a partir dos seus coeficientes. Ex.: criar o polinômio q = 2s + 1 -->q = poly([1 2], "s", "coeff") q = 1 + 2s -->roots(q) ans = - 0.5 Introdução ao Scilab Polinômios Exemplo --> y = poly([1 2 3], ‘x’, ‘coeff’) ou: --> x = poly(0,’x’); y = 1+2*x + 3*x^2; Exercício: Dados os polinômios: y = 1 + 4x + 5x2 + 6x3 z = 3x + 5x3 + 7x4 Calcule: a) y + z b) y*z c) y2 + 3z d) z/y e) z*y/(z3) Introdução ao Scilab Polinômios roots(z): calcula as raízes de um polinômio [r,q] = pdiv(y,z): efetua a divisão e calcula quociente e resto coeff(y): retorna os coeficientes do polinômio. Exercício: Dados os polinômios: y = 5 + 3x + 10x2 + 8x3 + 10x4 + 6 x5 z = 2x + 3x3 + 4x4 + 5x5 Calcule: a) suas raízes b) os coeficientes c) o resto e o quociente das divisões: y/z e z/y Introdução ao Scilab Matrizes de polinômios Os elementos da matriz podem ser polinômios: Exemplo: --> s = poly(0, ‘s’); --> A = [1-2*s+s^3 3*s+4*s^2; s 2*s] Exercício: Dadas as matrizes de polinômios: A = [2*x^2 + 3*x x;1 x^3+2]; B = [3*x^4 + x^2 x^5;8*x + 1 5]; Calcule: A*B A/B Determinantes de A e B Introdução ao Scilab Matrizes de polinômios Se A é uma matriz de polinômios: A = A(‘num’): retorna apenas os numeradores A = A(‘den’): retorna apenas os denominadores Exemplo: s = poly(0, ‘s’); A = [(1+2*s+3*s^3)/(s+2) 3*s+1/(2*s+1); s^4/(s^2+2) 3*s^2+4*s^3] N = A(‘num’); D = A(‘den’); Introdução ao Scilab 88 Polinômios -->p = poly ([5, -3, 1], “x”, “coeff”); // x^2 - 3*x + 5 definindo o polinômio p = 2 5 - 3x + x -->horner(p, 2) // avaliando o polinômio em x = 2 ans = 3. --> Introdução ao Scilab 89 Exercícios 1. Desenvolva uma solução em SCILAB para encontrar as raízes da equação y= 2x2 - 3x + 1 2. Apresente o gráfico da equação com 30 pontos entre 0 e 5 Introdução ao Scilab 90 Exercícios 1. Resolva o sistema linear 2x + 2y + 2z = 20 2x – 2y + 2z = 8 2x – 2y – 2z = 0 2. Calcule o seno, o coseno, a tangente, a raíz quadrada e a raíz cúbica de x/2. 3. Calcule o logaritmo e a raíz quadrada de -1. 4. Calcule o valor da função ex em 100 pontos do intervalo [-1 . . . 1] e apresente o gráfico da função 5. Calcule o valor da função sin(x+pi/10) . cos(x) no entre -pi e pi, considerando um incremento de 0.1 entre os pontos. 6. Calcule o produto dos polinômios x6 + 10 e x2 - 2x + 3. 7. Obtenha o polinômio cujas raízes são os números 1, 2 e 3. 8. Calcule os zeros do polinômio p(x) = x3 + 4x2 - 3x + 1. Introdução ao Scilab Derivadas Derivada é o coeficiente angular da reta tangente ao gráfico de uma função f(x), no ponto x0 Cálculo da derivada: derivat(p) onde p é o polinômio. Avaliação da derivada em um ponto: horner(d,x) onde d é a derivada do polinômio p e x é o valor da variável. Exemplo: Dada a função − 0.5x5 + 3x2 + 2x + 10, determine: a) o valor da função para x = 2.5 b) a derivada de f(x) c) o valor da derivada para x = 2.5. Introdução ao Scilab Derivadas - Exemplo Dada a função − 0.5x5 + 3x2 + 2x + 10, determine: a) o valor da função para x = 2.5 b) a derivada de f(x) c) o valor da derivada para x = 2.5. -->p = poly ([10 2 3 0 0 -0.5], "x", "coef") p = 2 5 10 + 2x + 3x - 0.5x -->pt = horner (p, 2.5) pt = - 15.078125 -->d = derivat(p) d = 4 2 + 6x - 2.5x -->ptd = horner (d, 2.5) ptd = - 80.65625 Introdução ao Scilab Integrais A integral de uma função f(x) é outra função, I(x), tal que a sua derivada, I’(x), é igual à função f(x) Integral definida é aquela restrita a um determinado intervalo de x, x0 ≤x ≤ x1 Cálculo da integral: intg(x0 ,x1,f) onde x0 é o limite inferior e x1 é o limite superior da integral. Exemplo Dada a função f(x) = sin(x), determine I(x), onde: -->function fx=f(x), fx=sin(x),endfunction -->intg(0,1,f) ans = 0.4596977 Introdução ao Scilab Derivadas - Exemplo Dada a função − 0.5x5 + 3x2 + 2x + 10, determine: a) o valor da função para x = 2.5 b) a derivada de f(x) c) o valor da derivada para x = 2.5. -->p = poly ([10 2 3 0 0 -0.5], "x", "coef") p = 2 5 10 + 2x + 3x - 0.5x -->pt = horner (p, 2.5) pt = - 15.078125 -->d = derivat(p) d = 4 2 + 6x - 2.5x -->ptd = horner (d, 2.5) ptd = - 80.65625 Introdução ao Scilab Listas agrupamento de objetos não necessariamente do mesmo tipo. L = list(elemento1, elemento2, elemento3, …elementoaN) Exemplo: L = list(23,1+2*%i,'palavra',eye(2,2)) -->L L = L(1) 23. L(2) 1. + 2.i L(3) palavra L(4) 1. 0. 0. 1. [23, 1+2i, ‘palavra’, 1 00 1 ]L= Introdução ao Scilab Listas Pode se criar listas dentro de listas (sublistas). Exemplo: L = list(23,1+2*%i,'palavra',eye(2,2)) L(4) = list('outra palavra',ones(2,2)) Elementos dentro da lista da lista: L(4)(1) L(4)(2) Agrupando duas listas: L1 = list(5,%pi, ‘velocidade’, rand(2,2)); L2 = list(1+2*%i,ones(3,3), ‘aceleração’); L = list(L1,L2); Introdução ao Scilab Gráficos Gráficos bidimensionais: plot2d (x,y,style,xtitle,rect,frameflag,nax,axesflag,logflag,leg) opcionais Exemplo: x = [-2*%pi:0.1:2*%pi]; y = sin(x); plot2d(x,y); plot2d(x,y,-1); Exercício Detalhe cada elemento opcional do comando plot2d Introdução ao Scilab Gráficos – Comandos básicos clf: limpa a tela, evitando que o próximo gráfico se sobreponha ao anterior xbasc ou xbasc( ): limpa o ambiente gráfico e apaga os gráficos a ele associados xtitle (‘titulo’): apresenta o título do gráfico legend(‘legenda1’, ‘legenda2’,…) Exemplo: t = 0:0.1:10; S = 5 + 10*t + 0.5*2*t.*t; V = 10 + 2*t; plot2d(t,S,-2); plot2d(t,V,-4); xtitle(‘Cinematica’); legend(‘Posição’, ‘Velocidade’); Introdução ao Scilab Gráficos Gráficos tridimensionais: plot3d (x,y, z, theta, alpha, leg, flag, ebox) opcionais Exemplo: Construa o gráfico, considerando as variávies: x = −2 : 0.1 : 2, y = −2 : 0.1 : 2, z = (x2)’ y3. Exercício Detalhe cada elemento opcional do comando plot3d -->x = -2 : 0.1 : 2; -->y = -2 : 0.1 : 2; -->z=(x^2)' * x^3; -->plot3d(x,y,z) Introdução ao Scilab Gráficos Outros gráficos: bar (x,width,color,style) ou bar (x,y,width,color,style) barh (x,width,color,style) ou barh (x,y,width,color,style) pie (x,[sp],[txt]) Exemplo: -->x = [1, 2, 3, 4, 5]; y = [5, 3, 1,-1, 1]; -->bar(x); -->barh(x,y,'red') -->pie(x) -->pie(x,[0,1,0,0,1], ['um','dois','tres','quatro','cinco']) Exercício Detalhe cada elemento opcional dos comandos bar, bar e pie Introdução ao Scilab Gráficos – Comandos básicos subplot: divide um janela de um gráfico em sub-graficos Exemplo: subplot(221) plot2d(x,sin(x)) subplot(222) plot2d(x,cos(x)) subplot(223) plot2d(x,tan(x)) subplot(224) plot2d(x,sin(x).*cos(x)) Funções Matemáticas Comuns Funções de Arredondamento Funções de Manipulação de String Constantes Especiais Introdução ao Scilab Operadores matriciais Introdução ao Scilab Operações com polinômios
Compartilhar