1 Introducao ao Scilab Apresentar comandos bsicos necessrios introduo programao e desenvolvimento de programas simples. Ambiente Elementos bsicos Nmeros, Vetores e Matrizes Variveis Operadores Funes elementares Carga e gravao
Introduo ao Scilab 2 2 Introduo ao Scilab 3 Linguagens de Programao (LP) As linguagens de programao permitem ao usurio especificar um programa de uma forma semelhante ao algoritmo. Um compilador/interpretador da linguagem dever fazer a traduo das instrues de alto nvel para as de nvel mquina (por exemplo, manter os endereos de memria onde esto guardadas as variveis). C = A + B LDA 11A810A0 LDB 22345A91 ADD A,B STA 1234FE88 3 Exemplo 1: Asembly Trecho de cdigo em C a=5; b=10; c=a+b;
Cdigo 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 Cdigo em C A=5; B=10; media=(a+b)/2;
Cdigo 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 Traduo Cdigo Fonte Cdigo Objeto 6 Introduo ao Scilab 7 Linguagens de Programao (LP) Existem vrios tipos de LP baseadas em diferentes paradigmas (estilos) de programao. Linguagens imperativas: Fortran, Pascal, C, MATLAB, SCILAB Controle explcito da execuo Linguagens Orientadas a Objetos: Smalltalk, C ++ , Java Controle implcito na manipulao dos dados Linguagens Funcionais: LISP, Scheme Baseadas na especificao de funes Linguagens Lgicas: Prolog Implementando a Lgica de Predicados 7 Introduo ao Scilab 8 Linguagens de Programao (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
8 Scilab Software livre para clculo numrico e simu- lao de sistemas fsicos. Usado nas reas: Fsica Sistemas complexos Processamento de imagens Controle e processamento de sinais Automao industrial Controle de processos Computao grfica Matemtica Modelagem biolgica ... 9 Scilab Criado em 1989 por um grupo de pesquisadores da INRIA e da ENPC. Disponvel como software livre desde 1994 pelo site http://www.scilab.org
Consrcio Scilab desde 2003 mantido por diversas empre- sas. Objetivos do consrcio: organizar cooperao entre os desenvolvedores obter recursos para manuteno da equipe garantir suporte aos usurios
Sistemas Operacionais: Linux Windows Solaris Unix 10 Introduo ao Scilab 11 Scilab Ambiente utilizado no desenvolvimento de software para resoluo de problemas numricos Gratuito, software free A ltima verso est sempre disponvel, geralmente via Internet O software pode ser legalmente utilizado, copiado, distribudo, modificado Distribudo com cdigo fonte Sintaxe semelhante ao Matlab Permite interface com rotinas escritas em outras linguagens como C Suporta o desenvolvimento de conjuntos de funes voltadas para aplicaes especificas (toolboxes).
11 Prompt de comando Help Editor Ambiente Scilab 12 Ambiente Scilab Introduo ao Scilab 13 Mude o diretrio 13 Introduo ao Scilab 14 Ambiente de programao Um conjunto de comandos digitado em um arquivo texto e este arquivo executado no ambiente Scilab
14 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 printf ( "\n A mdia entre %1.2f e %1.2f %1.2f e o aluno est %s \n\n", nota1, nota2, media, resultado) Introduo ao Scilab 15 Salve com o nome Media.sce 15 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 * 2 + nota2 * 3)/ 5; if media >= 5 resultado = ' aprovado.'; else resultado = ' reprovado. '; end printf ( "\n A mdia entre %1.2f e %1.2f %1.2f e o aluno est %s \n\n", nota1, nota2, media, resultado) Introduo ao Scilab 16 Salve com o nome Media.sce 16 Introduo ao Scilab 17 Teste!!!!!!!!!!
execute Media 17 Introduo ao Scilab 18 Janela de grficos
-->plot (a, sin(a)) Veja a barra Scilab Graphic 19 Introduo ao Scilab 20 Utilizao bsica Variveis especiais pr-definidas. So protegidas e no podem ser apagadas. who: lista as variveis whos (): lista e dimensiona as variveis clear: remove todas as variveis do espao de trabalho help: informa sobre os comandos e funes Ex.: help, help inv, help help pwd: Mostra o diretrio atual. sci: Mostra o diretrio onde o Scilab foi instalado. ls: Lista os arquivos do diretrio. chdir(dir): Muda de diretrio. mkdir(dir): Cria um diretrio. rmdir(dir, s): Remove um diretrio. quit ou exit sai do Scilab
20 Introduo ao Scilab 21
Utilizao bsica
Outras variveis podem ser criadas -- > a=1 -- > A = 2 -- > a
Algumas constantes especiais so precedidas pelo caractere %: %e: constante neperiana %i: raiz quadrada de -1, nmero imaginrio %pi: constante pi %eps: mximo valor tal que 1+%eps=1 %inf: infinito %nan: no um nmero %t: verdadeiro %f: falso 21 Introduo ao Scilab 22 Utilizao bsica ... continua uma expresso 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
22 Introduo ao Scilab 23 Utilizao bsica
; ao final de uma expresso o clculo feito mas o resultado no apresentado
-- > A=1 // Atribui o valor 1 a A -- > b=2; // Atribui o valor 2 a b -- > A + b; // soma de A e b
capaz de executar matemtica elementar como uma calculadora: -- > 4 * 1 + 6 * 0.5 + 5 * 2
Podem-se armazenar em variveis: -- > macas = 2 24 Introduo ao Scilab 25 Variveis Nomes legais de variveis consistem numa combinao qualquer de letras, dgitos e sublinha, comeando com uma letra. Ali22B, Cost, X3_f22 and s2Sc6 case-sensitive (diferencia letras maiscula de minscula) Mat1 diferente de mat1 Variveis ilegais Ali-22, 5x, 3Cost, &r5, %67 and @xyt56 Caracteres x= a ou x= a Strings mg1='Ali'; ou mg2=SCILAB DEMOS' 25 Introduo ao Scilab 26 Elementos bsicos Nmeros, Vetores e Matrizes Uma matriz pode ser Um escalar (nmero): matriz com dimenso 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 dimenso n 1 x n 2 x n 3 x ... n m
ltimo valor calculado Casa decimal No ambiente do Scilab digite: --> 10 ans = 10 --> --> p=%pi p = 3.1415927 --> 26 Introduo ao Scilab 27 Nmeros, Vetores e Matrizes O Scilab reconhece vrios tipos de nmeros:
27 Introduo ao Scilab 28 Exemplo Calcular a equao do segundo grau: ax 2 + bx + c. As razes da equao so dadas por: a ac b b x x 2 4 , 2 2 1 r
Resolvendo a seguinte equao:
x 2 + 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 soluo: x1 = -2.00 + 3.000i x2 = -2.000 3.000i 28 Z = a + %i*b
Exerccio: Dados os seguintes nmeros complexos, Z1 = 3 + 5i; Z2 = 7 + 3i execute as seguintes operaes: a) Z1 + Z2; b) Z1 * Z2; c) Z1 + sqrt(-20); d) Calcule os mdulos de Z1 e Z2 e compare com abs(z);
Lembre-se
2 2 | | b a z Nmeros complexos 29 Vetores e matrizes As grandezas vetoriais podem ser criadas colocando-se seus componentes entre colchetes [ ]
Os componentes de um vetor podem ser separados por vrgula, espao ou por ponto-e-vrgula.
30
Vetores Declarao de vetores: X = [ x1 x2 x3 ...] vetor linha X = [x1;x2;x3;...] vetor coluna
Transposio de vetores: X
Exerccios: Verifique a diferena entre: x = [1 2 3], z = [1,2,3] e y = [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. 31 Introduo ao Scilab 32 Exemplo de funo com vetor --> x=0:0.1:10; --> plot (x,sin(x))
-->g*g !--error 10 inconsistent multiplication 33 Algumas funes elementares imag(x): Mostra a parte imaginria de um complexo real(x): Mostra a parte real de um complexo log(x), log10(x), log2(x): Logaritmos natural, base 10 e base 2 modulo(x,y): Mostra o resto da diviso de x por y abs(x): Retorna o valor absoluto (se x real) e o mdulo se x complexo) round(x): Arredonda o valor de x para o inteiro mais prximo 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) 34 Algumas funes elementares abs(x): Retorna o valor absoluto (se x real) e o mdulo 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 imaginria de um complexo log(x), log10(x), log2(x): Logaritmos natural, base 10 e base 2 modulo(x,y): Mostra o resto da diviso de x por y real(x): Mostra a parte real de um complexo round(x): Arredonda o valor de x para o inteiro mais prximo sqrt(x): Calcula a raiz quadrada de x 35 Programando com o Scilab Caractersticas do Scilab Interpretador de comandos e por isso o cdigo gerado no precisa ser compilado. Facilidade e simplicidade da linguagem estruturada. No h necessidade de declarao prvia das variveis.
36 scripts Scripts so arquivos de texto que contm comandos que seriam usados em um prompt do Scilab. Por conveno estes arquivos possuem extenso .sce ou .sci Os arquivos so criados no editor de texto do Scilab, o Scipad (ou em qualquer outro editor de texto). Os arquivos so executados no Scilab com o comando exec,
37 Exerccio Faa um programa em Scilab que encontre a mdia de duas notas de vrios alunos. O script deve ser digitado em um editor de textos e salvo com a extenso .sce, por exemplo media.sce. Para executar no Scilab, digite: exec (media.sce). Note que voc deve estar no diretrio em que o arquivo media.sce se encontra.
38 Introduo ao Scilab 39 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 Mdia: 1.2f . Aluno: %s \n\n, media, resultado) cont = cont + 1; fim = input('Para continuar, digite s: ', "s"); end disp (cont) 39 Introduo ao Scilab 40 Exemplo Media 40 Introduo ao Scilab 41 Exemplo Exec... Media 41 Introduo ao Scilab 42 Operadores Relacionais Operador Resultado == igual a ~= , <> diferente de > maior do que < menor do que >= maior ou igual a <= menor ou igual a = usado para atribuio e no para comparao 42 Introduo ao Scilab 43 Operadores Lgicos Operador Descrio & e | ou ~ no 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 ~ 43 Introduo ao Scilab 44 Comandos de controle de fluxo - if Formatos:
if condio comandos1; else comandos end
if condio1 comandos1; elseif condio2 comandos2; else comandos3 end
if condio comandos; end if condio1 comandos1; else if condio2 comandos2; else comandos3; end end 44 Introduo ao Scilab 45 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); 45 Introduo ao Scilab 46 Comandos de controle de fluxo select Formato: select var case expr-1, comandos1 case expr-2, comandos2 ... else comandos end
O valor da varivel var comparado s expresses, se os valores so iguais, a seqncia correspondente executada. 46 Introduo ao Scilab 47 Exemplo do comando select // Exemplo de case A=input('Digite um nmero') select A case 1, disp('A vale 1') case 2, disp('A vale 2') else disp('A nao nem 1 nem 2') end
47 Comandos de controle de fluxo - for Formato: for var = inicio : incremento : fim comandos; end
Exemplo: a = 0 for i=1:3 a = a+1 end Introduo ao Scilab 48 L = list (2, [1 2; 3 4], 'elemento'); for k=L disp(k); end 48 Introduo ao Scilab 49 Exemplo do comando for // Gera e mostra uma matriz n=3;m=2; 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);
49 Introduo ao Scilab 50 Comandos de controle de fluxo - while Formato: while condio comandos; end
// Exemplo while 1 n=1; x=input (); while n<=x n=n+1; end disp( final); disp (n)
50 Introduo ao Scilab 51 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); 51 Introduo ao Scilab 52 Funes de entrada - input input( ) possibilita a interao entre o usurio e o programa
Exemplo: Receber um dado numrico nu = input( Digite um numero qualquer: )
Receber um dado texto tx = input( Digite a resposta: ,s ) varivel string comando de atribuio solicita ao usurio que fornea algum dado de entrada 52 Introduo ao Scilab 53 Funes de Sada - disp disp(varivel) ou disp(texto) exibe na tela o valor da varivel 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 varivel 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 53 Introduo ao Scilab 54 Funes de Sada - printf
printf (formato, dado) exibe valores e texto e permite a formatao
Exemplo: printf ( "\n O valor de pi = %.f \n\n",%pi )
printf ( \n O valor de pi = %6.2f \n ",%pi )
Caractere de formatao Resultado %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 espao 54 Introduo ao Scilab 55 Exemplo // Programa para calcular a media de vrios 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 teve mdia %.2f e sua situao %s", cont, media, resultado) // exibe a palavra Aluno, o nmero, a mdia e o resultado end 55 Introduo ao Scilab 56 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 invlida') end end
while nota2 < 0 | nota1 > 10 nota2 = input('Digite a segunda nota: '); if nota2 < 0 | nota1 > 10 disp ('Nota invlida') end end
56 Introduo ao Scilab 57 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 Mdia %.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)
57 Funes Variveis definidas dentro do escopo da funo (variveis locais) no permanecem no ambiente aps a execuo da funo.
Uma funo pode ser definida de trs formas: no ambiente Scilab; usando o comando deff ou digitando o texto no Scipad e clicando no menu Execute, opo load into Scilab
onde: x1,...,xm so os argumentos de entrada y1,...,yn so argumentos de sada instruco_1,...,instrucao_p so as instrues ex ecutadas pela funo. 59 Funes - Exemplo Definir uma funo que converte um nmero 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); 60 Funes - Exerccios 1. Crie uma funo que calcule as razes de uma equao do segundo grau usando a frmula de Bskara. Desenvolva um programa para a funo e um para a execuo da funo.
2. Crie uma funo que calcule o fatorial de um nmero usando o comando de iterao for. Faa o mesmo usando o comando while.
61
Vetores Declarao de vetores: X = [ x1 x2 x3 ...] vetor linha X = [x1;x2;x3;...] vetor coluna
Transposio de vetores: X
Exerccios: a) Verifique a diferena entre: a = [1 2 3] e b = [1;2;3] b) Dados os vetores: x = [1,2,3,4,5] , y = [2 4 6 8 10], w = [2;4;6;8;10] Calcule: a) z = x + y b) z1 = x*y c) z2 = x*w d) z3 = x.* y e) z4 = x*y f) z5 = x*y g) verifique se z4 = z5. 62 Introduo ao Scilab Exemplo -->g !--error 4 undefined variable : g
-->g = 1:5 g = 1. 2. 3. 4. 5.
-->g*g !--error 10 inconsistent multiplication 63
Vetores V = Valor_inicial : incremento : Valor_final
65 Operaes com vetores Dimenso: length(x) Nmero de linhas e colunas: [nr,nc] = size(x) Elementos iguais a 1: x = ones(m,n) Matriz identidade: x = eye(m,m) Vetores nulos: x = zeros(m.n) Vetores com valores aleatrios: x =rand(m,n) Apaga elemento: x(i,j) = [] 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] 66 Operaes e estruturas bsicas As grandezas vetoriais podem ser criadas colocando-se seus componentes entre colchetes [ ]
Os componentes de um vetor podem ser separados por vrgula, espao ou por ponto-e-vrgula.
67 Operaes com vetores Valor mnimo: min(x) Valor mnimo e posio relativa: [V,P] = min(x) Valor mximo: max(x) Valor mximo e posio relativa: [V,P] = max(x) Encontra um elemento: find(x operador elemento) Soma dos elementos: sum(x) Multiplicao dos elementos: prod(x) Ordenao dos elementos: gsort(x) 68 Operaes com vetores 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(:,$)
69 Operaes com vetores Soma: C = A + B Multiplicao: C = A*B Multiplicao elemento: C = A.*B Multiplicao por um escalar: B = a*A Matriz complexa: C = A + B*%i (A e B reais) Matriz transposta: C = A Determinante: d = det(A) Diagonal: d = diag(A).
70 Operaes com vetores Exerccio: 1. Crie: a) Um vetor unitrio com 10 elementos b) Um vetor nulo com 5 elementos c) Um vetor com 10 elementos aleatrios d) Verifique suas dimenses
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 unio de X e Y. X = [ e sin( ) log(10)] Y = [10,3 1,1 -2,2] S S 71 Introduo ao Scilab 72 Exerccio 1. Desenhe a funo f(x) = 2e -0,2x para o intervalo 0x10.
2. Suponha que u = 1 e v = 3. Avalie as seguintes expresses. a) 4u b) _2v -2 ___ c) v 3 ___ d) 4_ v 3v (u + v) 2 v 3 u 3 3
3. Digite essas declaraes. Que resultado obtm?
--> // 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); 72 Matriz Uma matriz geral consiste em m*n nmeros dispostos em m linhas e n colunas:
73 Matriz
No Scilab:
-->M = [1 2 3; 4 5 6; 7 8 9] M =
1. 2. 3. 4. 5. 6. 7. 8. 9.
74 Operaes com matrizes Exerccio 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)
2. 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
75 Operaes com matrizes Exerccio: 1. Crie uma matriz 5X5 de nmeros aleatrios. 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.
76 Operaes com matrizes Exerccios: 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 77 Matrizes simblicas Uma matriz simblica pode ser construda com elementos do tipo string: --> M =['a' 'b';'c' 'd'] ; Se atribudos valores s variveis pode-se visualizar a forma numrica da matriz com a funo evstr():
Exemplo: --> a = 1; --> b = 4; --> c = 3; --> d = 5; --> evstr(M);
78 Matrizes: operadores especiais Operador \: diviso esquerda. Seja Ax=b um sistema de equaes lineares escrito na forma matricial, sendo A a matriz de coeficientes, x o vetor da incgnitas e b o vetor dos termos independetes:
79 Matrizes: operadores especiais Soluo do sistema: x=A -1 b (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
Exerccio: Resolva o sistema linear.
Substitua as solues na equao para confirmao a soluo. 2X + 3y + 3z = 2 4x + 3y+ 2z = 1 3x + 7y + 9z = 5 1x + 3y = 5 3x + 4y = 2 80 Matrizes: operadores especiais Operador . (usado com outros operadores para operaes elemento a elemento)
-->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 81 Introduo ao Scilab 82 Sistemas lineares x 1 + 2x 2 + x 3 = 5 1 2 0 x 1 5 -x 1 +5x 2 - 3x 3 = 0 -1 5 -3 x 2 = 0 4x 1 - 2x 2 + x 3 =3 4 -2 1 x 3 3
A * X = B
Soluo : 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 82 Introduo ao Scilab 83 Expresses Exemplo: resolver o sistema linear -x 1 + x 2 + 2x 3 = 2
3x 1 + x 3 = 6 -x 1 + 3x 2 + 4x 3 = 4
83 Introduo ao Scilab 84 Expresses Exemplo: resolver o sistema linear -x 1 + x 2 + 2x 3 = 2
3x 1 - x 2 + x 3 = 6 -x 1 + 3x 2 + 4x 3 = 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. 84 Introduo ao Scilab 85 Expresses Resolva o sistema linear
85 Introduo ao Scilab 86 Polinmios Funo poly(a, x, flag) a: matriz de nmero reais x: smbolo da varivel flag: string ("roots", "coeff"), por default seu valor "roots".
-- > r = roots(p1) // obtendo as razes do polinmio r = 0.0824886 - 0.1743828 - 2.5747724
-->p2 = poly (r, "x", "roots") // definindo pelas razes p2 = 2 3 - 0.0370370 + 0.2222222x + 2.6666667x + x 87 Introduo ao Scilab 88 Polinmios Polinmio definido pelas suas razes -->p = poly([1 2], "s, roots) p = 2 2 - 3s + s --> Com a funo roots, comprova-se que as razes de p so, realmente, 1 e 2, -->roots(p) ans = 1. 2. 88 Introduo ao Scilab 89 Polinmios Polinmio criado a partir dos seus coeficientes. Ex.: criar o polinmio q = 2s + 1
-->q = poly([1 2], "s", "coeff") q = 1 + 2s
-->roots(q) ans = - 0.5
89 Polinmios Soma, Subtrao, Multiplicao, Diviso -->p + q // Adio ans = 2 3 - s + s
-->p - q // Subtrao ans = 2 1 - 5s + s
-->p * q // Multiplicao ans = 2 3 2 + s - 5s + 2s 90 -->p / q // Diviso ans = 2 2 - 3s + s ----------- 1 + 2s
-->[r, c] = pdiv(p,q) // Diviso: c=quociente, r=resto c = - 1.75 + 0.5s r = 3.75 Polinmios Soma, Subtrao, Multiplicao, Diviso 91 Polinmios -->h = poly ([5, -3, 1], x, coeff) // definindo o polinmio h = 2 5 - 3x + x
-->horner(h, 2) // avaliando o polinmio em x = 2 ans = 3. 92 Polinmios Exemplo --> y = poly([1 2 3], x, coeff) ou: --> x = poly(0,x) z = 1+2*x + 3*x^2
Exerccio: Dados os polinmios: y = 6x 3 + 5x 2 + 4x + 1
z =7x 4 + 5x 3 +3x
Calcule: a) y + z b) y*z c) y 2 + 3z d) z/y e) z*y/(z 3 ) 93 Polinmios roots(z): calcula as razes de um polinmio [r,q] = pdiv(y,z): efetua a diviso e calcula quociente e resto coeff(y): retorna os coeficientes do polinmio.
Exerccio: Dados os polinmios: y = 6 x 5 + 10x 4 + 8x 3 + 10x 2 + 3x + 5
z = 5x 5 + 4x 4 + 3x 3 + 2x
Calcule: a) suas razes b) os coeficientes c) o resto e o quociente das divises: y/z e z/y 94 Matrizes de polinmios Os elementos da matriz podem ser polinmios: Exemplo: --> s = poly(0, s); --> A = [1-2*s+s^3 3*s+4*s^2; s 2*s]
Exerccio: Dadas as matrizes de polinmios: 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
95 Matrizes de polinmios Se A uma matriz de polinmios: 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) 96 Introduo ao Scilab 97 Exerccios 1. Desenvolva uma soluo em SCILAB para encontrar as razes da equao y= 2x 2 - 3x + 1
2. Apresente o grfico da equao com 30 pontos entre 0 e 5 97 Introduo ao Scilab 98 Exerccios 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 raz quadrada e a raz cbica de x/2. 3. Calcule o logaritmo e a raz quadrada de -1. 4. Calcule o valor da funo e x em 100 pontos do intervalo [-1 . . . 1] e apresente o grfico da funo 5. Calcule o valor da funo sin(x+pi/10) . cos(x) entre -pi e pi, considerando um incremento de 0.1 entre os pontos e apresente o grfico da funo 6. Calcule o produto dos polinmios x 6 + 10 e x 2 - 2x + 3. 7. Obtenha o polinmio cujas razes so os nmeros 1, 2 e 3. 8. Calcule os zeros do polinmio p(x) = x 6 + 4x 2 - 3x + 1. 98 Derivadas Derivada o coeficiente angular da reta tangente ao grfico de uma funo f(x), no ponto x 0
Clculo da derivada: derivat(p) onde p o polinmio.
Avaliao da derivada em um ponto: horner(d,x) onde d a derivada do polinmio p e x o valor da varivel.
Exemplo: Dada a funo 0.5x 5 + 3x 2 + 2x + 10, determine: a) o valor da funo para x = 2.5 b) a derivada de f(x) c) o valor da derivada para x = 2.5.
99 Derivadas - Exemplo Dada a funo 0.5x 5 + 3x 2 + 2x + 10, determine: a) o valor da funo 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 100 Introduo ao Scilab 101 Exerccios 6. Calcule a derivada de x 6 + 10 ------------- x 2 - 2x + 3. 101 102 103 http://www.decom.ufop.br/bob/com400/livr os/livroSci_LSB.pdf 2.11 Limites Nesta seco, apresentarei uma breve incurso sobre o tpico limites de funes. A funo x seno x f x ( ) ( ) = uma indeterminao no ponto x=0. Recorrendo regra de lHopital, mostra-se que o seu 104 Integrais A integral de uma funo f(x) outra funo, I(x), tal que a sua derivada, I(x), igual funo f(x)
Integral definida aquela restrita a um determinado intervalo de x, x 0 x x 1
Clculo da integral: integrate(expr, v, x0 ,x1 ) onde x 0 o limite inferior e x 1 o limite superior.
Ex.: Dada a funo f(x) = sin(x), determine I(x), onde:
--> v = integrate('sin(x)','x',0,1) v = 0.4596977 105 Listas agrupamento de objetos no 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= 106 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), acelerao); L = list(L1,L2); 107 Grficos Grficos bidimensionais:
Exemplo: x = [-2*%pi:0.1:2*%pi]; y = sin(x); plot2d(x,y); plot2d(x,y,-1);
Exerccio Detalhe cada elemento opcional do comando plot2d 108 Grficos Comandos bsicos clf: limpa a tela, evitando que o prximo grfico se sobreponha ao anterior xbasc ou xbasc( ): limpa o ambiente grfico e apaga os grficos a ele associados xtitle (titulo): apresenta o ttulo do grfico 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(Posio, Velocidade); 109 Grficos Grficos tridimensionais:
plot3d (x,y, z, theta, alpha, leg, flag, ebox) opcionais Exemplo: Construa o grfico, considerando as varivies: x = 2 : 0.1 : 2, y = 2 : 0.1 : 2, z = (x 2 ) y 3 .
Exerccio Detalhe cada elemento opcional do comando plot3d -->x = -2 : 0.1 : 2; -->y = -2 : 0.1 : 2; -->z=(x^2)' * y^3; -->plot3d(x,y,z) 110 Grficos Outros grficos: 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])