Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao Scilab Profª Gilka Rocha Barbosa 1 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 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 3 Exemplo 1: Asembly Trecho de código em C a=5; b=10; c=a+b; Código em Assembly (MIPS) ADDi $t0,$zero,5 //Adiciona-se ao registrador t0 o valor 5 ADDi $t1,$zero,10 //Adiciona-se ao registrador t1 o valor 10 ADD $t2,$t0,$t1 //Soma-se os valores contidos nos registradores t0 (5) e t1 (10) e atribui o resultado ao registrador t2 4 Exemplo 2: Asembly Código em C A=5; B=10; media=(a+b)/2; Código Assembly (MIPS) ADDi $t0,$zero,5 //Adiciona-se ao registrador t0 o valor 5 ADDi $t1,$zero,10 //Adiciona-se ao registrador t1 o valor 10 ADD $t2,$t0,$t1 //Somam-se os valores contidos nos registradores t0 (5) e t1 (10) e atribui-se o resultado ao registrador t2 ADDi $t3,$zero,2 //Adiciona-se ao registrador t2 o valor 2 (divisor) DIV $t2,$t3 //Divide-se o valor contido no registrador t2(50) pelo valor contido em t3 (2) 5 Introdução ao Scilab 6 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 6 Introdução ao Scilab 7 Linguagens de Programação (LP) Java C C♯ C++ Objective-C PHP Visual Basic Python Perl JavaScript Delphi / Object Pascal Ruby Lisp Transact-SQL Pascal Visual Basic .NET PL/SQL Logo Ada R 7 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 ... 8 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 9 Introdução ao Scilab 10 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). 10 Acilab Ambiente interpreta comandos oferece um editor para a construção de programas (SciPad / Scinotes) emite mensagens de erros relativos à aderência à sintaxe da linguagem e a problemas na execução de um programa � Linguagem une riqueza de expressão a detalhes sintáticos exige uma postura paciente em seu aprendizado envolve uma taxa inicial de memorização a fluência vem com a prática 11 Prompt de comando Barra de menus Barra de Ferramentas Ambiente Scilab 12 Scilab Mude a pasta para seus arquivos 13 Teste!!!!!!!! // Programa para calcular a media de duas notas clear clc 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 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 14 Salve com o nome Media 14 Introdução ao Scilab 15 Teste!!!!!!!!!! execute Media 15 Introdução ao Scilab 16 Utilização básica -->help // ou f1 16 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) cos(x), sin(x), tan(x), Retorna cosseno, seno ou tangente de x (x deve estar em radianos) ceil(x): Arredonda para o maior inteiro exp(x): Exponencial (e) de um valor x factorial(x): 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): Log 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 x para o inteiro mais próximo 17 Introdução ao Scilab 18 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 18 Introdução ao Scilab 19 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 (imaginário) %pi: constante pi %t: verdadeiro %f: falso 19 Introdução ao Scilab 20 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 ; 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 20 Introdução ao Scilab 21 Utilização básica Adição: + Subtração: - Multiplicação: * Divisão à direita: / Divisão à esquerda: \ Potenciação: ^ ou ** Raiz quadrada: sqrt Raiz enésima: ^(1/n) É capaz de executar matemática elementar como uma calculadora: -- > 4 * 1 + 6 * 0.5 + 5 * 2 21 Introdução ao Scilab 22 Utilização básica Expressões podem sercomplicadas. Qual é o valor de x e y após os comandos x = 8^1*3 y = 2*x*3 * Parênteses podem alterar prioridades 22 Prioridade* Operação Associatividade 1 Potenciação da direita para a esquerda 2 Multiplicação Divisão da esquerda para a direita 3 Adição Subtração da esquerda para a direita Introdução ao Scilab 23 Utilização básica -->a = 2^3*4 a = 32. -->b = 2^(3*4) b = 4096. -->c = 2^3^4 c = 2.418D+24 -->d = (2^3)^4 d = 4096 23 Notação Scilab (Java, C, ...) para 2.418 x 10 24 Introdução ao Scilab 24 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' 24 Introdução ao Scilab 25 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 --> 25 Introdução ao Scilab 26 Números, Vetores e Matrizes O Scilab reconhece vários tipos de números: Real: 4.607, - 199.34, Complexo: 2 + 3i (i = sqrt(-1)) Literal: “nome” Lógico: T/F 26 Introdução ao Scilab 27 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 27 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 28 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. 29 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 Programas em Scilab são arquivos ASCII (caracteres sem formatação) Um programa é construído usando o editor SciNotes / SciPad Os arquivos são executados com o comando exec 30 scripts 31 Abre o programa editor de textos SciNotes Abre um programa preexistente Introdução ao Scilab 32 Programa da média 32 // indica que o restante da linha é um comentário Diálogo com o usuário Diálogo com o usuário clear – limpa a memória C lc – l im p a a t e la Gravando (salvando) o programa 33 Gravando (salvando) o programa 34 Introdução ao Scilab 35 Executando o programa 35 Executar. . media Introdução ao Scilab 36 Execução do programa 36 Média... Quem está aprovado? 37 Introdução ao Scilab 38 Comandos de controle de fluxo - if if condição comandos1; else comandos end if condição comandos; end if condição1 comandos1; else if condição2 comandos2; else comandos3; end end 38 Introdução ao Scilab 39 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 39 Introdução ao Scilab 40 Operadores Lógicos Operador Descrição & e | ou ~ não 40 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 ~ Operações lógicas -->v = %t, f = %f v = T f = F -->~v ans = F 41 -->v | f ans = T -->v & f ans = F -->a = 7; b = 8; x = a > b x = F Introdução ao Scilab 42 Exemplo do comando if 42 Introdução ao Scilab 43 Execução do programa 43 Média... E se a nota estiver errada? .....15, por exemplo 44 Introdução ao Scilab 45 Comandos de controle de fluxo - while Formato: while condição comandos; end 45 Introdução ao Scilab 46 Exemplo do comando while 46 Introdução ao Scilab 47 Execução do programa 47 // Programa para calcular a media de duas notas clear clc nota1 = input ('Digite a primeira nota: '); while nota1 < 0 | nota1 > 10 printf ("\n %.2f - nota inválida", nota1) nota1 = input ('Digite a primeira nota: '); end nota2 = input ('Digite a segunda nota: '); while nota2 < 0 | nota2 > 10 printf ("\n %.2f - nota inválida", nota2) nota2 = input ('Digite a segunda nota: '); end media = (nota1 + nota2)/ 2; if media >= 7 then result = "Aprovado"; else if media < 3 then result = "Reprovado"; else result = "em Final"; end end printf ("\n Média = %.2f - Aluno %s \n", media, result) 48 Média... E se houver mis de um aluno? 49 Médias.... 50 Médias.... 51 Introdução ao Scilab 52 Execução do programa 52 Calculando a média geral... 53 // Programa para calcular a media de duas notas clear clc qa = 0; tm = 0; cont = input ('Para iniciar, digite 0: '); while cont == 0 nota1 = input ('Digite a primeira nota: '); while nota1 < 0 | nota1 > 10 printf ("\n %.2f - nota inválida", nota1) nota1 = input ('Digite a primeira nota: '); end Calculando a média geral... 54 nota2 = input ('Digite a segunda nota: '); while nota2 < 0 | nota2 > 10 printf ("\n %.2f - nota inválida", nota2) nota2 = input ('Digite a segunda nota: '); end media = (nota1 + nota2)/ 2; qa = qa + 1; tm = tm + media; Calculando a média geral... 55 if media >= 7 then result = "Aprovado"; else if media < 3 then result = "Reprovado"; else result = "em Final"; end end Calculando a média geral... 56 printf ("\n Média = %.2f - Aluno %s \n", media, result) cont = input ('Para continuar, Digite 0: '); end tg = tm/ qa; printf ("\n Média Geral = %.2f ", tg) Introdução ao Scilab 57 Execução do programa 57 Introdução ao Scilab 58 Para pensar... Quando terminam esses comandos? 1) n = 4; while n <= 4 printf ("\n x = %g", n); n = n – 1; end 2) n = 1; while n <= 4 printf ("\n x = %g", n); end 58 Comandos de controle de fluxo - for Formato: for var = inicio : fim comandos; end for var = inicio : passo : fim comandos; end Introdução ao Scilab 60 Exemplo do comando for for i = 1:4 printf ("\n x = %g", n); end for i = 4: -1 :1 printf ("\n x = %g", n); end 60 Introdução ao Scilab 61 Exemplo do comando for n = input (“Informe um número”); f = 1; for n = 1 : n f = f * i; printf(“\n %g “, i) end printf("\n Fatorial de %g = %g “, n, f); 61 Introdução ao Scilab 62 Exemplo do comando for n=3; m=2; printf("\n Matriz A:a(i,j)=i+j\n"); for i=1:m for j=1:n a(i,j)=i+j; end end disp(a) 62 Introdução ao Scilab 63 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 string comando de atribuição solicita ao usuário que forneça algum dado de entrada 63 Introdução ao Scilab 64 Funções de Saída - disp disp(variável) ou disp(“texto”) exibe na tela o valor da variável 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 64 Introdução ao Scilab 65 Funções de Saída - printf printf (formato, dado) exibe valores e texto e permite a formatação Exemplo: printf ( "\n O valor de pi = %.f \n\n",%pi ) printf ( “\n O valor de pi = %6.2f \n ",%pi ) Caractere de formatação Resultado %d , %i ou %g 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 65 Introdução à Computação 66 Exercícios – faça programas para: 1. Dado o raio de uma circunferência, calcular sua área e seu perímetro 2. Dado um número real x, calcular e exibir as imagens de f(x)=5x4-x3 e de g(x)=5senx-2cosx 3. Ler dois números inteiros e positivos X e Y e efetuar as operações de adição, subtração, multiplicação, divisão de X por Y e a raiz quadrada do produto de X por Y. 4. Dada a temperatura de um corpo, em graus Fahrenheit, calcular e exibir o valor da referida temperatura em graus Celsius e em Kelvin. Introdução à Computação 67 Exercícios 5. Um aluno comprou três itens em uma papelaria. Para cada item são conhecidos: nome, preço e percentual de desconto. Mostrar o nome do item, o preço do item, o preço do item com desconto e o total a pagar 6. Ler três valores inteiros e distintos (A, B e C) e apresentar o maior valor. 7. Dados dois valores reais, apresentar a diferença do maior pelo menor. 8. Dado um número inteiro positivo, informar se o número lido é par ou ímpar. Introdução à Computação 68 Exercícios 9. Calcular as raízes reais de uma função quadrática, dados os valores de a, b e c. 10. Receba 2 números e, se o primeiro número for maior que zero e menor que 10, mostre a soma destes números; caso contrário, mostre a multiplicação deles. 11. Receba cinco grupos de 2 números e mostre a soma destes números; 12. Receba dois números e mostre o maior deles; 13. Receba três números e mostre-os em ordem crescente. cbxaxxf 2 Introdução à Computação 69 Exercícios 14. Escrever um programa que lê dois números inteiros: inicial e final, e mostra os números inteiros existentes entre o número inicial e o final (inclusive). Crítica: o número final deve ser maior do que o inicial. 15. Implemente um programa que calcula a soma dos números pares entre dois números lidos (inclusive). 16. Escrever programa para calcular, para N (inteiro) lido, o valor de S, dado por 12 1 ... 2 3 1 21 NN NNN S Introdução à Computação 70 Exercícios 17. Receba um valor N inteiro e positivo, calcule e mostre o fatorial de N (N!). 18. Leia dez conjuntos de dois valores, o primeiro valor corresponde ao número do aluno, o segundo valor corresponde à sua altura em centímetros. Encontre e mostre o número e a altura do aluno mais baixo e do aluno mais alto. 19.Leia cinco pares de valores (a,b), todos inteiros, positivos, um de cada vez. Mostre os números inteiros pares de a até b (inclusive). 20.Leia o número de termos e um valor positivo para x, calcule e mostre o valor da série: ... !6!5!4!3!2!1 765432 xxxxxx s 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. 71 Vetores Declaração de vetores: X = [ x1 x2 x3 ...] vetor linha X = [x1;x2;x3;...] vetor coluna Transposição de vetores: X ’ 72 Vetores Exercícios: 1. Verifique a diferença entre: a) x = [1 2 3] d) xt = x’ b) y = [1,2,3] e) yt = y’ c) z = [1;2;3] f) zt = z’ 2. Dados os vetores k = [1,2,3,4,5] e w = [2,4,6,8,10], calcule: a) i = k + w d) m = x*y’ b) J = k*w e) n = x’*y c) Transpostas de i e j f) Verifique se m = n 73 Introdução ao Scilab 74 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 74 • 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 75 • 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) 76 Matriz Uma matriz geral consiste em m*n números dispostos em m linhas e n colunas: 77 Matriz No Scilab: -->M = [1 2 3; 4 5 6; 7 8 9] M = 1. 2. 3. 4. 5. 6. 7. 8. 9. 78 Operações com vetores Acessa elementos entre n e m: A(n:m) Acessa último elemento: A($) Acesso à coluna j: A(:,j) Acesso à linha i: A(i,:) Acesso à última coluna: A(:,$) Acesso à ultima linha: A($,:) Agrupa dois vetores: c = [x y] Apaga elemento: A(i,j) = [] Determinante: d = det(A) Diagonal: d = diag(A) 79 Operações com vetores Dimensão:length(A) Elementos iguais a 1: U = ones(m,n) Encontra um elemento: find(A operador elemento) Insere coluna no final: A = [A coluna] Insere elemento i no final: A = [A i] Insere linha no final: A = [A;linha] Matriz identidade: A = eye(m,m) Matriz transposta: C = A’ Multiplicação dos elementos: prod(x) Multiplicação elemento: C = A.*B 80 Operações com vetores Multiplicação por um escalar: B = a*A Número de linhas e colunas: [nr,nc] = size(A) Ordenação dos elementos: gsort(A) Soma dos elementos: sum(A) Soma: C = A + B Valor máximo e posição relativa: [V,P] = max(A) 81 Exercícios 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 X = [ e sin() log(10)] Y = [10.3 1 1-2 2] crie um vetor Z que seja dado pela união de X e Y. 82 Introdução ao Scilab 83 Exercícios 4. Desenhe a função f(x) = 2e-0,2x para o intervalo 0≤x≤10. 5. Suponha que u = 1 e v = 3. Avalie as expressões a) 4u b) _2v-2___ c) v3___ d) 4_v 3v (u + v)2 v3 – u3 3 6. 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); 83 Exercícios 7. 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) 8. 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 84 Exercícios 9. 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. 85 Exercícios 10. 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 8 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); 87 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: 88 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 --> w = A\b --> y = A^(-1)*b --> bc = A*x 1x + 3y = 5 3x + 4y = 2 89 Exercício 1. Resolva o sistema linear. Substitua as soluções na equação para confirmar a solução. 90 2X + 3y + 3z = 2 4x + 3y+ 2z = 1 3x + 7y + 9z = 5 2X Introdução ao Scilab 91 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= A*X 91 Introdução ao Scilab 92 Exercício Resolver o sistema linear -x1 + x2 + 2x3 = 2 3x1+ x3 = 6 -x1 + 3x2 + 4x3 = 4 92 Introdução ao Scilab 93 Exercício Resolver o sistema linear -x1 + x2 + 2x3 = 2 3x1+ x3 = 6 -x1 + 3x2 + 4x3 = 4 93 --> 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 94 Exercício Resolva o sistema linear 94 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 95 Introdução ao Scilab 96 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". 96 Introdução ao Scilab 97 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 97 Introdução ao Scilab 98 Polinômios Polinômio definido pelas suas raízes -->p = poly([1 2], "s“, “roots”) p = 2 2 - 3s + s --> Com a função roots, comprova-se que as raízes de p são, realmente, 1 e 2, -->r = roots(p) r = 1. 2. 98 Introdução ao Scilab 99 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 -->r = roots(q) r = - 0.5 99 Polinômios – Soma, Subtração, Multiplicação, Divisão -->s = p + q // Adição s = 2 3 - s + s -->sb = p - q // Subtração sb = 2 1 - 5s + s -->m = p * q // Multiplicação m = 2 3 2 + s - 5s + 2s 100 -->d = p / q // Divisão d = 2 2 - 3s + s ----------- 1 + 2s -->[r, c] = pdiv(p,q) // c=quociente, r=resto c = - 1.75 + 0.5s r = 3.75 Polinômios – Soma, Subtração, Multiplicação, Divisão 101 Polinômios -->p = poly ([5, -3, 1], “x”, “c”) // definindo o polinômio p = 2 5 - 3x + x -->h = horner(h, 2) // polinômio em x = 2 h = 3. 102 Polinômios Exemplo --> y = poly([1 2 3], ‘x’, ‘c’) ou --> x = poly(0,’x’) --> z = 1+2*x + 3*x^2 Exercício: Dados os polinômios: y = 6x3 + 5x2 + 4x + 1 z =7x4 + 5x3 +3x Calcule: a) y + z b) y2 + 3z c) z*y/(z3) d) y*z e) z/y 103 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 = 6 x5 + 10x4+ 8x3 + 10x2 + 3x + 5 z = 5x5+ 4x4 + 3x3 + 2x Calcule: a) suas raízes b) os coeficientes c) o resto e o quociente das divisões: y/z e z/y 104 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 105 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’) 106 Introdução ao Scilab 107 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 107 Introdução ao Scilab 108 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 108 Introdução ao Scilab 109 Exercícios 5. Calcule o valor da função sin(x+pi/10) . cos(x) entre -pi e pi, considerando um incremento de 0.1 entre os pontos e apresente o gráfico da função 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) = x6 + 4x2 - 3x + 1. 109 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. 110 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 111 Introdução ao Scilab 112 Exercício 1. Calcule a derivada de x6 + 10 ------------- x2 - 2x + 3. 112 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: integrate(expr, v, x0 ,x1 ) onde x0 é o limite inferior e x1 é o limite superior. 113 Integrais Cálculo da integral: integrate(expr, v, x0 ,x1 ) onde x0 é o limite inferior e x1 é o limite superior. Ex.: Dada a função f(x) = sin(x), determine I(x), entre 0 e 1, onde : --> v = integrate('sin(x)','x',0,1) v = 0.4596977 114 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 0 0 1 ]L= 115 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); 116 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 117 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’,…) 118 Gráficos – Comandos básicos 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’); 119 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 120 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 121 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)) 122
Compartilhar