Your SlideShare is downloading. ×
Cálculo Numérico - Aula 02: Introdução ao SCILAB
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cálculo Numérico - Aula 02: Introdução ao SCILAB

1,448
views

Published on

Published in: Education

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,448
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cálculo NuméricoRodolfo Maduro Almeida
  • 2. Cálculo Numérico Introdução ao SciLabRodolfo Maduro Almeida
  • 3. Visão GeralScientific Laboratory é um ambiente computacionalpara a resolução de problemas numéricos evisualização.
  • 4. Histórico• Criado em 1990 por pesquisadores do INRIA (Institut National de Recherche en Informatique et en Automatique) da França.• Atualmente é mantido e desenvolvido pelo consórcio SciLab, composto por instituições de ensino/pesquisa e empresas, criado em maio de 2003.• Distribuído gratuitamente com código-fonte aberto desde 1994. Atualmente na versão 5.3.3.
  • 5. Onde obter?http://www.scilab.org/
  • 6. Características Possui ambiente interativo com uma linguagem de programação simples e de alto nível cujos recursos permitem desenvolver aplicações para soluções específicas.
  • 7. CaracterísticasSeu ambiente de desenvolvimento permite: – Desenvolvimento de toolboxes: extensões de sua linguagem para solução de problemas específicos. – O uso de seus recursos por meio de outras linguagens de programação como C/C++, Java, Fortran. Ajuste de curvas Equações diferenciais Simulação de sistemas mecânicos
  • 8. Inicializando o SciLab• Ambiente padrão: Iniciar > Programas > scilab-5.3.3 > scilab-5.3.3• Ambiente modo console: Iniciar > Programas > scilab-5.3.3 > Scilab Console
  • 9. Ambiente gráfico do SciLab
  • 10. Ambiente gráfico do SciLab Prompt de comandos: onde as instruções são inseridas.
  • 11. Ambiente gráfico do SciLab Comando clc (ou F2): limpa a janela de comandos
  • 12. Ambiente gráfico do SciLab Comando pwd: mostra o diretório de trabalho atual
  • 13. Ambiente gráfico do SciLab Menu File > Change current directory...
  • 14. Ambiente gráfico do SciLab• Os comandos do SciLab são definidos em uma linguagem própria.• Suas instruções podem ser interpretadas: • via janela de comandos • via arquivos com um conjunto de instruções (script) editado com o SciPad Editor e salvo em um arquivo de extensão “.sce”.• O bom uso do SciLab exige um certo domínio da sintaxe de sua linguagem.
  • 15. Primeiros passos...1. Inicie o SciLab2. Escolha um diretório de trabalho de sua preferência para guardar as atividades desenvolvidas durante o mini-curso. – Sugestão: C:Meus DocumentosSciLabObservações: – Utilizar o mesmo computador no decorrer do mini- curso, pois algumas vezes poderemos recorrer ao conteúdo desenvolvido nas aulas anteriores. – Guardar o conteúdo desenvolvido nas aulas em alguma mídia de armazenamento.
  • 16. Declaração de variáveis• Variável: Elemento de um programa que é declarado e armazenado na memória, cujo valor pode ser modificado ao longo de sua execução.• Declaração de uma variável: usa-se o operador atribuição “=”. – --> variavel = valor;• Tipos de valores: Podem ser numérico (real, inteiro ou complexo) e string de caracteres.• Obs.: Pela sintaxe da linguagem do SciLab, o ponto-e- vírgula significa o final da instrução.
  • 17. Declaração de variáveisRegras para nomes das Comentário e exemplosvariáveis declaradasCase sensitive Custo, CustO, CuStO e CUSTO são variáveis diferentesDevem conter no máximo 24 CustoTotalAnoAnterior = 10caracteresNão deve começar com Valor_Estimado = 3número e nem conter Valor1 = 9.2pontuações ou espaços X123 = 2.5Nome diferente das variáveis Podem ser acessadas com o comando who noreservadas do ambiente prompt.
  • 18. Comando who Comando who: exibe as variáveis definidas no ambiente
  • 19. Variáveis do ambiente %i: unidade imaginária de números complexos %pi: valor de =3.1415... %e: valor do número de Euler e = 2.7182... SCI: caminho onde o SciLab foi instalado home: caminho do diretório padrão do usuário
  • 20. Declaração de variáveis• Declarando matrizes: – Os elementos devem ser declarados entre [ ] – Os elementos de uma mesma linha numa matriz são separados por espaço(s) ou vírgula – ponto-e-vírgula(;) indica o final de uma linha de uma matriz ou final de uma expressão 1 4 8 A 6 0 9 A = [1 4 8; 6 0 9; 2 4 5] 2 5 4
  • 21. Operadores aritméticos Operação Símbolo Adição + Subtração - Multiplicação * Divisão / Potenciação ^ Matriz transposta ‘
  • 22. Operadores aritméticosOperador ponto-a-ponto: atuam sobre os elementos dasmatrizes Operação Símbolo Multiplicação .* Divisão ./ Potenciação .^
  • 23. Exercícios--> A = 1; a variável A recebe o valor 1--> b = 2; a variável b recebe o valor 1--> A + b Adição entre A e b ans = Obs.: Note que se o “;” for 3. omitido, o resultado da instrução é mostrado no prompt--> A * b ans = Produto de A por b 2.-->c = b^5 A variável c recebe o valor b elevado a 5ª potência c = 32. a variável nome recebe o valor--> nome = “scilab”; “scilab” (variável tipo string)
  • 24. Exercícios-->u = 2 - 3 * %i as variáveis u e v são declaradas u = como números complexos 2. - 3.i Obs.: %i representa unidade-->v = 5 + 4 * %i imaginária v = 5. + 4.i-->u + v Soma entre u e v ans = 7. + i-->u * v Produto de u por v ans = 22. - 7.i-->u/v Divisão de u por v ans = - 0.0487805 - 0.5609756i
  • 25. Exercícios--> A = [1 2; 3 4] --> C2 = A^(-1)A = C2 = 1 2 -2.0000 1.0000 3 4 1.5000 -0.5000--> B = [5 6; 7 8] --> C3 = A/BB = C3 = 5 6 3.0000 -2.0000 7 8 2.0000 -1.0000--> C = A + B --> C4 = A^2 + B^2C = C4 = 6 8 74 88 10 12 106 128--> C1 = A – B --> C5 = A’C1 = C5 = -4 -4 1 3 -4 -4 2 4
  • 26. Exercícios--> A = [1 2; 3 4] --> D1 = A/BA = C3 = 1 2 3.0000 -2.0000 3 4 2.0000 -1.0000--> B = [5 6; 7 8] --> D2 = A./BB = D1 = 5 6 0.2000 0.3333 7 8 0.4286 0.5000--> C1 = A * B --> E1 = A^3C = E1 = 19 22 37 54 43 50 81 118--> C1 = A .* B --> E2 = A.^3C2 = E2 = 5 12 1 8 21 32 27 64
  • 27. Operador dois-pontos (:)• É um dos operadores mais úteis do SciLab.• Cria vetores e serve para manipular índices de matrizes.• Criando vetores com o operador colon (:):--> vetor = valor_inicial:incremento:valor_final--> vetor = valor_inicial:valor_final (incremento=1)
  • 28. Exercícios--> C = 1:2:11C = 1 3 5 7 9 11--> E = [1:1:3;4:1:6;7:1:9]E = 1 2 3 4 5 6 7 8 9--> D = 0 : 0.5 : 3D = 0 0.5 1.0 1.5 2.0 2.5 3.0
  • 29. Exercícios--> A = [1 : 2 : 15] --> B(1,3)A = ans = 1 3 5 7 9 11 13 15 9--> B = [1:1:3;2:2:6;5:2:9] --> B(1:3,2)B = ans = 1 2 3 2 2 4 6 4 5 7 9 7--> b = [10 20 30] --> B(3,:)b = ans = 10 20 30 5 7 9--> B = [B;b] --> B([2 3],[1 2])B = ans = 1 2 3 2 4 2 4 6 5 7 5 7 9 --> B($,:) 10 20 30 ans = 10 20 30
  • 30. Exercícios--> A = ones(3,3) --> C = rand(3,3)A = C = 1 1 1 0.0683740 0.7263507 0.2320748 1 1 1 0.5608486 0.1985144 0.2312237 1 1 1 0.6623569 0.5442573 0.2164633--> B = zeros(4,3) --> rand(seed,0)B = -->D = rand(3,3) 0 0 0 D = 0 0 0 0.4812332 0.6187285 0.2372657 0 0 0 0.9481247 0.3414719 0.6183197 0 0 0 0.4177657 0.1770553 0.8246736--> I = eye(4,4) -->E = diag(D)I = E = 1 0 0 0 0.4812332 0 1 0 0 0.3414719 0 0 1 0 0.8246736 0 0 0 1
  • 31. Exercícios--> A = ones(3,3) -->rand(seed,0)A = --> B = rand(3,3) 1 1 1 B = 1 1 1 0.2113249 0.3303271 0.8497452 1 1 1 0.7560439 0.6653811 0.6857310--> dimA = size(A) 0.0002211 0.6283918 0.8782165dimA = -->C1 = triu(B) 3 3 C1 =--> A1 = diag(A) 0.2113249 0.3303271 0.8497452A1 = 0.0000000 0.6653811 0.6857310 1 0.0000000 0.0000000 0.8782165 1 -->C2 = tril(B) 1 C2 =--> maxdimA = length(A1) 0.2113249 0.0000000 0.0000000maxdimA = 0.7560439 0.6653811 0.0000000 3 0.0002211 0.6283918 0.8782165
  • 32. Exercícios• Defina as matrizes e efetue as operações: 6, para i par e j ímpar A (aij ) 9 9 2, para i ímpar e j par 3, para os demais índices 1, para i e j pares B (bij ) 9 9 2, para i e j ímpares 3, para os demais índices a) A * A’ d) A * B b) B^2 e) A .^B c) B.^2 f) A./B
  • 33. Exercícios--> A = 3 * ones(9,9)--> A(2:2:$,1:2:$)=6--> A(1:2:$,2:2:$)=2--> disp(A) 3 2 3 2 3 2 3 2 3 6 3 6 3 6 3 6 3 6 3 2 3 2 3 2 3 2 3 6 3 6 3 6 3 6 3 6 3 2 3 2 3 2 3 2 3 6 3 6 3 6 3 6 3 6 3 2 3 2 3 2 3 2 3 6 3 6 3 6 3 6 3 6 3 2 3 2 3 2 3 2 3
  • 34. Exercícios--> B = 3 * ones(9,9)--> B(2:2:$,2:2:$)=1--> B(1:2:$,1:2:$)=2--> disp(B) 2 3 2 3 2 3 2 3 2 3 1 3 1 3 1 3 1 3 2 3 2 3 2 3 2 3 2 3 1 3 1 3 1 3 1 3 2 3 2 3 2 3 2 3 2 3 1 3 1 3 1 3 1 3 2 3 2 3 2 3 2 3 2 3 1 3 1 3 1 3 1 3 2 3 2 3 2 3 2 3 2
  • 35. Funções elementares Função Descrição abs(x) módulo de x sin(x) seno de x cos(x) cosseno de x tan(x) tangente de x asin(x) inversa da função seno acos(x) inversa da função seno atan(x) inversa da função tangente log2(x) logaritmo de x na base 2 log10(x) logaritmo de x na base 10 log(x) logaritmo natural de x sqrt(x) raiz quadrada de x exp(x) exponencial de x
  • 36. Exercícios-->x = -5:1:5 x = - 5. - 4. - 3. - 2. - 1. 0. 1. 2. 3. 4. 5.-->y = abs(x) y = 5. 4. 3. 2. 1. 0. 1. 2. 3. 4. 5.-->theta = -%pi: %pi/3 : %pi theta = -3.1415927 -2.0943951 -1.0471976 0.0 1.0471976 2.0943951 3.1415927-->z1 = sin(theta) z1 = -1.225D-16 -0.8660254 -0.8660254 0. 0.8660254 0.8660254 1.225D-16 -->z2 = cos(theta) z2 = - 1. - 0.5 0.5 1. 0.5 - 0.5 - 1.-->w = sqrt(x) w =2.236068i 2.i 1.7320508i 1.4142136i i 0 1. 1.4142136 1.7320508 2. 2.236068
  • 37. Programando em SciLab• O que é um script? – Conjunto de instruções do SciLab que podem ser executadas sistematicamente. – Os scripts são salvos em arquivos de extensão “.sce”. – São executados pelo comando: exec(nome_do_script). – Evite acentos, espaços e pontuações no nome do script.• Para que serve? – Sintetiza os comandos freqüentemente digitados em um único arquivo. – Aplicável a problemas mais extensos onde é exigido mais comandos.
  • 38. Editando scripts Menu Applications > Editor comando scinotes
  • 39. Entrada e Saída (prompt)• Comando de entrada: input Sintaxe: variavel = input(“mensagem”) -->R = input(“Forneca o valor de entrada: ") Forneca o valor de entrada: 1 R = 1.• Comando de saida: disp Sintaxe: disp(“mensagem”) ou disp(variavel) -->disp(" Hello World! ") Hello World!
  • 40. Exercício
  • 41. Exercício Para executar o script: Executar > Salvar e executar ou pressione a tecla F5
  • 42. Operadores lógicos erelacionais p q p|q p&q T T T T T F T F F T T F F F F F p ~p T F F T
  • 43. Operadores lógicos erelacionais Operador lógico Símbolo Operador relacional Símbolo E & Igual == Ou | Diferente ~= Não ~ Maior > Menor < Maior ou igual >= Menor ou igual <=1 ou T (true) – Verdadeiro0 ou F (false) – Falso
  • 44. Exercícios--> 2 == 3ans = F--> 2 <= 3ans = T--> (2 == 3) & (2 <= 3)ans = F--> ~(2 == 3) & (2 <= 3)ans = T--> (2 ~= 3) & (2 <= 3)ans = T
  • 45. Controladores de fluxoif: cria caminhos alternativos na execução de um script.if expressao_1 if expressao_1 instrucoes_1 instrucoes_1else elseif expressao_2 instrucoes_2 instrucoes_2end else instrucoes_3 end
  • 46. Exercícios
  • 47. Exercícios
  • 48. Controladores de fluxo for: permite que um grupo de instruções se repitam por um número especificado de vezes. for variavel = valor_inicial:passo:valor_final instrucoes; end
  • 49. Exercícios• Script que cria a matriz: A (aij ) N N 2i 3 j
  • 50. Controladores de fluxo 6, para i par e j ímpar A (aij ) 9 9 2, para i ímpar e j par 3, para os demais índices
  • 51. Controladores de fluxo while: permite que um grupo de instruções se repitam enquanto uma determinada expressão de controle for verdadeira.while (expressao de controle) instrucoes;end
  • 52. ExercíciosAnalisando o código acima, o while é executado enquanto que 1+EPS > 1. Conformepodemos observar, EPS começa com o valor 2, e a cada laço de repetição do while, seuvalor é dividido por dois. Teoricamente, o valor de EPS tende a zero com infinitos laçosde repetição. Logo, a execução do SCRIPT nunca terminaria. Porém, após certaquantidade de laços de repetição, o while encerra e o seu valor é mostrado no console.Isso acontece porque o computador utiliza um utiliza número FINITO de dígitos pararepresentar os números. O SciLab usa 16 dígitos de precisão, nesse caso o valor de EPS éda ordem de 10-16 (1.110D-16 ). Se formos no console e executarmos a operação lógica:--> 1 + EPS == 1ans = TVeremos que EPS é entendido como ZERO para o SCILAB.
  • 53. Controladores de fluxo break: encerra a execução de um laço de repetição (for ou while).EPS = 1; EPS = 1;for num = 1 : 1000 while (1+EPS) > 1 EPS = EPS / 2; EPS = EPS/2; if ~((1+EPS) > 1) end break disp(EPS) endenddisp(EPS) Podemos representar um while por um for ou vice-versa. for: o laço de repetição é executado enquanto uma variável é incrementada até um valor máximo while: o laço de repetição é executado enquanto uma condição é verdadeira O comando break tem o poder de encerrar qualquer um desses dois tipos de laços.
  • 54. Funções• Scripts podem ser transformados em funções.• Funções são um conjunto de instruções que executam determinada tarefa.• Uma função pode receber parâmetros de entrada e retorna valores.• Sintaxe:function var_retorno = nome_da_funcao(pars_entrada) instrucoes para obter variavel_retorno;endfunction
  • 55. Exercícios
  • 56. Exercícios
  • 57. Como aprender mais?• Acessando sua documentação – Comando help: help comando_do_scilab – Exemplo: --> help plot2d• Acessando a documentação: – ? > Ajuda do Scilab – Ou aperte a tecla F1• Acessando scripts demonstrativos – Comando scilab_demos: --> scilab_demos