Introdu˘c~ao b asica ao Scilab - dcc.ufrj.brdgalfaro/Calculo_Numerico/Slides/aula_scilab... ·...
Transcript of Introdu˘c~ao b asica ao Scilab - dcc.ufrj.brdgalfaro/Calculo_Numerico/Slides/aula_scilab... ·...
Introducao basica ao Scilab
Prof. Daniel G. Alfaro [email protected]
Departamento de Ciencia da ComputacaoIM – UFRJ
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Introducao
O Scilab e um software gratuito e aberto (open sourcesoftware), orientado fundamentalmente a computacaonumerica!
Criado por pesquisadores do Institut National de Recherche enInformatique et en Automatique (INRIA), Franca. Atualmentee mantido pelo Consorcio Scilab que esta integrado porempresas e instituicoes francesas.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Instalacao
Pode ser baixado no site oficial http://www.scilab.org/
Existem versoes para os seguintes sistemas operacionais:
GNU/Linux
Windows XP/Vista/7/8
Mac OS X
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Caracterısticas basicas
Oferece uma linguagem de programacao de alto nıvel queinclui estruturas de dados avancadas, um grande numero defuncoes matematicas e funcoes para a visualizacao de graficosem 2d e 3d.
Na interface grafica para o usuario e possıvel executar scripts,escritos nessa linguagem.
Os scripts podem ser criados com o editor de arquivosSciNotes, acessıvel na interface grafica.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Interface grafica para o usuario e suas componentes
Menu de comandos e barra de ferramentas.
Janelas: navegador de pastas e arquivos, janela de comandos(consola), navegador de variaveis e historico de comandos.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos
File (Arquivo)As principais opcoes sao
Execute ...Carrega e executa um arquivo script (.sce, .sci).
Open a file ...Abre um arquivo script no SciNotes (nova janela).
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Edit (Edicao)As principais opcoes sao
Cut / Copy / PasteCortar / Copiar / Colar.
Clear historyLimpar historico de comandos.
Clear consoleLimpar a janela de comandos (consola).
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Control (Controle)As principais opcoes sao
ResumeRecomeca a execucao de um script apos a sua interrupcao.
AbortAborta a execucao de um script.
InterruptInterrompe a execucao de um script.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Applications (Aplicativos)As principais opcoes sao
SciNotesAbre o editor de scripts.
Matlab to Scilab translatorAbre o aplicativo de traducao de arquivos de Matlab parascripts do Scilab.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
? / Help (Ajuda)As principais opcoes sao
Scilab HelpAbre a janela de ajuda do Scilab.
Scilab DemonstrationsAbre a janela de demos do Scilab.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Editor SciNotes: janela principal
Menu de comandos e barra de ferramentas.
Janela de pastas e arquivos, janela de comandos (consola),navegador de variaveis e historico de comandos.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos
File (Arquivo)As principais opcoes sao
New / Open / Open recentCria um novo arquivo / Abre um arquivo / Para abrir umarquivo usado recentemente.
Save / Save asSalvar o arquivo em edicao / Abre dialogo para salvar oarquivo em edicao.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Edit (Edicao)As principais opcoes sao
Undo / RedoDesfazer / Refazer.
Cut / Copy / PasteCortar / Copiar / Colar.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Format (Formatacao)As principais opcoes sao
Shift Right / Shift LeftDeslocar a linha para a direita / Deslocar a linha para aesquerda.
Comment Selection / Uncomment SelectionMarcar o texto seleccionado como um comentario / Retirar amarca de comentario do texto seleccionado.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Options (Opcoes)As principais opcoes sao
PreferencesPermite controlar algumas caracterısticas do SciNotes comoas fontes, as cores etc..
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
Execute (Executar)As principais opcoes sao
... file with no echoExecuta diretamente o arquivo em edicao.
Save and executeSalva e depois executa o arquivo em edicao.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Menu de comandos (cont.)
? / Help (Ajuda)A opcao principal e
Scinotes helpAbre a janela de ajuda do Scilab no topico do SciNotes.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Execucao de comando basicos
Na consola podemos usar o Scilab como uma calculadora paraexecutar operacoes aritmeticas basicas:
+ adicao- substracao* multiplicacao/ divisao^ potenciacao
Escrevendo diretamente na linha de entrada indicada por: -->
E depois apertando a tecla ‘return’. Por exemplo
-->12.5 + 3.4 * (3.6^0.4 - 1.2)
ans =
14.095445
Automaticamente foi criada a variavel ans para armazenar oresultado.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Execucao de comando basicos (cont.)
Tambem podemos criar a variavel var e armazenar diretamente oresultado nela.
-->var = 12.5 + 3.4 * (3.6^0.4 - 1.2)
var =
14.095445
Existem algumas variaveis predefinidas, por exemplo:
%e Numero de Euler%eps epsilon da maquina
(precisao relativa na aritmetica de ponto flutuante)%f ou %F variavel booliana para falso%i Unidade imaginaria nos numeros complexos%pi Numero π%t ou %T variavel booliana para verdadeiro
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Execucao de comando basicos (cont.)
Podemos fazer operacoes mais complicadas usando as funcoesmatematicas definidas no sistema. Por exemplo:
exp() exponenciallog() logarıtmo naturallog10() logarıtmo base 10log2() logarıtmo base 2sqrt() raız quadradacos() cossenocosh() cosseno hiperbolicocotg() cotangentecoth() cotangente hiperbolicasin() senosinh() seno hiperbolicotan() tangentetanh() tangente hiperbolica
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Matrizes e vetores
Podemos trabalhar com estruturas de dados mais avancadas,definindo matrizes/vetores.Isso pode ser feito da seguinte forma:
var = zeros(n,m) – cria uma matriz de dimensao n ×mcom todos os elementos nulos.
var = ones(n,m) – cria uma matriz de dimensao n ×m comtodos os elementos iguais a 1.
Quando m = 1 sera criado um vetor coluna e no caso n = 1um vetor linha.
Para acessar os elementos da matriz/vetor usamos o comandovar(i,j).
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Matrizes e vetores (cont.)
Por exemplo:
-->m= zeros(3,2)
m =
0. 0.
0. 0.
0. 0.
-->v=2*ones(2,1)
v =
2.
2.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Matrizes e vetores (cont.)
-->m(1,1)=1, m(2,2)=0.5, m(3,1)=-1
m =
1. 0.
0. 0.
0. 0.
m =
1. 0.
0. 0.5
0. 0.
m =
1. 0.
0. 0.5
- 1. 0.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Matrizes e vetores (cont.)
-->b=m*v
b =
2.
1.
- 2.
-->b.^2
ans =
4.
1.
4.
-->cos(%pi*m)
ans =
- 1. 1.
1. 6.123D-17
- 1. 1.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: comandos condicionais
Comando ifif expr 1 then
instrucoeselseif expr i theninstrucoeselse
instrucoesend
expr 1, ..., expr i — expressoes logicas.
Operadores logicos e de comparacao:
& E logico| OU logico
> maior que< menor que>= maior ou igual que<= menor ou igual que== igual que
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: comandos condicionais (cont.)
Exemplo:
if a > b then
a = a - b;
elseif a==b then
mcd = a;
else
c = a;
a = b;
c = a;
end
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: comandos de repeticao
Comando forfor var = expr,
instrucoesend
expr – representa um vetor (matriz com apenas uma linha ou umacoluna)var – percorre todas as entradas desse vetor.
A expressao: s1:ds:s2,gera um vetor contendo todos os numeros da forma
vi = s1 + j ∗ ds, j = 0, 1, . . . ,
que se encontram entre s1 e s2, inclusive. A ordem e crescente seds > 0 e decrescente se ds < 0.Quando ds = 1 escrevemos s1:s2.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: comandos de repeticao (cont.)
Exemplo:
for i=1:5
if i > 2
disp(i);
else
disp(2*i);
end
end
O comando disp(var) imprime o valor de var na consola.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: comandos de repeticao (cont.)
Comando whilewhile expr,
instrucoesend
expr – representa uma expressao logica.
Exemplo:
a = 123;
b = 3;
while a > b,
a = a - b;
disp(a);
end
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: definicao de funcoes em linha
Usada para definir funcoes simples.
Comando deffdeff(’[s1, s2, ...] = nome func(e1, e2, ...)’, ’expr’ )
s1, s2, ... – variaveis de saıda,e1, e2, ... – variaveis de entrada,nome func – nome da funcao,expr – expressao que define a funcao.
Exemplo:
deff( ’[r]=soma e prod(x,y,z)’ , ’r = x + y*z’ );
a = soma e prod(1, 2, 3)
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: definicao de funcoes
Usada para definir funcoes que realizam tarefas complexas.
Comando functionfunction [s1, s2, ...] = nome func(e1, e2, ...)instrucoesendfunction
s1, s2, ... – variaveis de saıda,e1, e2, ... – variaveis de entrada,nome func – nome da funcao.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Programacao e scripts: definicao de funcoes (cont.)
Exemplo:
function [s] = prod escalar( v1, v2, N )
s=0;
for i=1:N
s = s + v1(i)*v2(i);
end
endfunction
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Exemplo de script: Metodo da bisseccao
Esse script esta disponıvel em https:
//www.dropbox.com/s/tmca8tq29zpkudd/exemplo_bis3.sce.Esse codigo calcula aproximacoes para o numero
√2 pelo metodo
da bisseccao, para isso usamos que√
2 e um zero da funcaof (x) = x2 − 2.
O script esta organizado da seguinte forma.
Definimos a funcao met bis que usa o metodo da bisseccao.(Essa implementacao segue o algoritmo apresentado na aula.)
Definimos a funcao em linha f 1 correspondente af (x) = x2 − 2.
Chamamos a funcao met bis, usando f 1 como um dosparametros de entrada.
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Exemplo de script: Metodo da bisseccao (cont.)
Segue o codigo do script. Observe que as linhas que comecam com// sao linhas de comentarios, e o comando return termina aexecucao da funcao.
Script: exemplo bis3.sce
// Calculo aproximado da raiz da funcao f(x) usando o
// metodo da bisseccao
// f: funcao
// [a,b]: intervalo inicial
// tol: tolerancia na aproximacao da raiz
// Nmax: numero maximo de iteracoes
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Exemplo de script: Metodo da bisseccao (cont.)
function p = met_bis(f, a, b, tol, Nmax)
k = 1; fa = f(a);
while k <= Nmax
p = a + (b-a)/2; fp = f(p);
if ( (b-a)/2 < tol )|( fp == 0 ) then
disp( ’Raiz aproximada =’ ); disp(p); return;
end
if ( fp*fa > 0 ) then
a = p; fa = fp;
else
b = p;
end
k = k+1;
end
disp(’Numero maximo de iteracoes atingido’);
endfunction
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Exemplo de script: Metodo da bisseccao (cont.)
// codigos para determinar a raiz quadrada de 2
deff( ’[y]=f1(x)’, ’y=x^2-2’ );
r= met_bis( f1, 1, 2, 1e-10, 100)
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab
Referencias
Scilab Enterprises,Ajuda do Scilab em portugues. (http://help.scilab.org/docs/5.5.2/pt_BR/index.html)
Public wiki,Scilab wiki pages. (http://wiki.scilab.org/)
D.G. Alfaro Vigo – www.dcc.ufrj.br/~dgalfaro Introducao basica ao Scilab