Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Introdução ao Scilab * Introdução ao Scilab Profª Gilka Rocha Barbosa * Introdução ao Scilab * 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 * * Introdução ao Scilab * Introdução ao Scilab * 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). * Introdução ao Scilab * 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 * Introdução ao Scilab * 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) * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * 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 * Introdução ao Scilab * 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 * 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 * Introdução ao Scilab * Prompt de comando Barra de menus Barra de Ferramentas Ambiente Scilab * Introdução ao Scilab * Scilab Mude a pasta para seus arquivos * Introdução ao Scilab * 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 * Salve com o nome Media * Introdução ao Scilab * Introdução ao Scilab * Teste!!!!!!!!!! execute Media * Introdução ao Scilab * Introdução ao Scilab * Utilização básica -->help // ou f1 * 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) 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 * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * Utilização básica Expressões podem ser complicadas. Qual é o valor de x e y após os comandos x = 8^1*3 y = 2*x*3 * Parênteses podem alterar prioridades * Introdução ao Scilab * Introdução ao Scilab * 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 * Notação Scilab (Java, C, ...) para 2.418 x 1024 Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * Exemplo Calcular a equação do segundo grau: ax2 + bx + c. As raízes da equação são dadas por: 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 * Introdução ao Scilab * 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 * 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 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 * Introdução ao Scilab * scripts * Abre o programa editor de textos SciNotes Abre um programa preexistente Introdução ao Scilab * Introdução ao Scilab * Programa da média * // 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 Clc – limpa a tela Introdução ao Scilab * Gravando (salvando) o programa * Introdução ao Scilab * Gravando (salvando) o programa * Introdução ao Scilab * Introdução ao Scilab * Executando o programa * Executar.. media Introdução ao Scilab * Introdução ao Scilab * Execução do programa * Introdução ao Scilab * Média... Quem está aprovado? * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * Operadores Relacionais = é usado para atribuição e não para comparação * Introdução ao Scilab * Introdução ao Scilab * Operadores Lógicos * 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 * Operações lógicas -->v = %t, f = %f v = T f = F -->~v ans = F * -->v | f ans = T -->v & f ans = F -->a = 7; b = 8; x = a > b x = F Introdução ao Scilab * Introdução ao Scilab * Exemplo do comando if * Introdução ao Scilab * Introdução ao Scilab * Execução do programa * Introdução ao Scilab * Média... E se a nota estiver errada? .....15, por exemplo * Introdução ao Scilab * Introdução ao Scilab * Comandos de controle de fluxo - while Formato: while condição comandos; end * Introdução ao Scilab * Introdução ao Scilab * Exemplo do comando while * Introdução ao Scilab * Introdução ao Scilab * Execução do programa * Introdução ao Scilab * // 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) * Introdução ao Scilab * Média... E se houver mis de um aluno? * Introdução ao Scilab * Médias.... * Introdução ao Scilab * Médias.... * Introdução ao Scilab * Introdução ao Scilab * Execução do programa * Introdução ao Scilab * Calculando a média geral... * // 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 Introdução ao Scilab * Calculando a média geral... * 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; Introdução ao Scilab * Calculando a média geral... * if media >= 7 then result = "Aprovado"; else if media < 3 then result = "Reprovado"; else result = "em Final"; end end Introdução ao Scilab * Calculando a média geral... * 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 * Introdução ao Scilab * Execução do programa * Introdução ao Scilab * Introdução ao Scilab * 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 * Cuidado com os loops infinitos! Como você consertaria? Introdução ao Scilab * Comandos de controle de fluxo - for Formato: for var = inicio : fim comandos; end for var = inicio : passo : fim comandos; end Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * 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); * Introdução ao Scilab * Introdução ao Scilab * 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) * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * 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 ) * Introdução ao Scilab * Introdução à Computação * Exercícios – faça programas para: Dado o raio de uma circunferência, calcular sua área e seu perímetro Dado um número real x, calcular e exibir as imagens de f(x)=5x4-x3 e de g(x)=5senx-2cosx 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. 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 ao Scilab * Introdução à Computação * Exercícios 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 Ler três valores inteiros e distintos (A, B e C) e apresentar o maior valor. Dados dois valores reais, apresentar a diferença do maior pelo menor. Dado um número inteiro positivo, informar se o número lido é par ou ímpar. Introdução ao Scilab * Introdução à Computação * Exercícios Calcular as raízes reais de uma função quadrática, dados os valores de a, b e c. 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. Receba cinco grupos de 2 números e mostre a soma destes números; Receba dois números e mostre o maior deles; Receba três números e mostre-os em ordem crescente. Introdução ao Scilab * Introdução à Computação * 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 Introdução ao Scilab * Introdução à Computação * 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: Introdução ao Scilab * 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 ’ * Introdução ao Scilab * Vetores Exercícios: 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’ Dados os vetores k = [1,2,3,4,5] e w = [2,4,6,8,10], calcule: i = k + w d) m = x*y’ J = k*w e) n = x’*y c) Transpostas de i e j f) Verifique se m = n * Introdução ao Scilab * Introdução ao Scilab * Exemplo de função com vetor --> x=0:0.1:10; --> plot (x,sin(x)) --> z=cos(x); --> plot (x,z) * 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 * 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 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) * Introdução ao Scilab * 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 * Introdução ao Scilab * 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) * Introdução ao Scilab * Exercícios Crie: Um vetor unitário com 10 elementos Um vetor nulo com 5 elementos Um vetor com 10 elementos aleatórios Verifique suas dimensões Dado o vetor X = [1 2 3 4 5]; Insira o valor 10 no final Apague o quinto elemento do vetor Atribua valor zero aos elementos entre 2 e 4 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. * Introdução ao Scilab * Introdução ao Scilab * Exercícios Desenhe a função f(x) = 2e-0,2x para o intervalo 0≤x≤10. 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 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 * Exercícios 7. Dadas as matrizes A = [1 2 3;4 5 6] e B = [7;8;9] Determine: A*B B*A A*identidade(A) A*ones(A) A*ones(A)’ + identidade(A) 8. Dada a matriz A = [2 4 6;8 10 12; 1 2 3] Atribua valor zero à linha 3; Multiplique a linha 2 por 10; Remova a última linha Insira o vetor B = [1 2 3] na última linha de A * Introdução ao Scilab * Exercícios 9. Crie uma matriz 5X5 de números aleatórios. Atribua valor 0 à coluna 2. Multiplique os elementos de 2 a 4 da coluna 3 por 10. Divida os elementos de 1 a 3 da coluna 5 por 5. Remova a coluna 3. Remova a linha 2. * Introdução ao Scilab * Exercícios 10. Dadas as matrizes Calcule: C = A + B C = A*B C = 10*A + 5*B C = A + B*%i C = A’ + rand(B) Determinante de A Determinante de B 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 --> w = A\b --> y = A^(-1)*b --> bc = A*x * Introdução ao Scilab * Exercício 1. Resolva o sistema linear. Substitua as soluções na equação para confirmar a solução. * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * Exercício Resolver o sistema linear -x1 + x2 + 2x3 = 2 3x1+ x3 = 6 -x1 + 3x2 + 4x3 = 4 * Introdução ao Scilab * Introdução ao Scilab * Exercício Resolver o sistema linear -x1 + x2 + 2x3 = 2 3x1+ 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 * Introdução ao Scilab * Exercício Resolva o sistema linear * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * 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. * Introdução ao Scilab * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * -->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 * Introdução ao Scilab * 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. * Introdução ao Scilab * 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: y + z b) y2 + 3z c) z*y/(z3) d) y*z e) z/y * 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 = 6 x5 + 10x4 + 8x3 + 10x2 + 3x + 5 z = 5x5+ 4x4 + 3x3 + 2x Calcule: suas raízes os coeficientes 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * 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 * Introdução ao Scilab * Introdução ao Scilab * 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. * 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: o valor da função para x = 2.5 a derivada de f(x) o valor da derivada para x = 2.5. * Introdução ao Scilab * Derivadas - Exemplo Dada a função − 0.5x5 + 3x2 + 2x + 10, determine: o valor da função para x = 2.5 a derivada de f(x) 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 * Introdução ao Scilab * Exercício 1. Calcule a derivada de x6 + 10 ------------- x2 - 2x + 3. * 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: integrate(expr, v, x0 ,x1 ) onde x0 é o limite inferior e x1 é o limite superior. * Introdução ao Scilab * 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 * 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. * 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’,…) * Introdução ao Scilab * 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’); * 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 * 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)) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Compartilhar