Prévia do material em texto
SCILAB
Introdução:
O SCILAB (iniciais em inglês para: Scientific Laboratory, sua pronúncia
é “sailæb”) é um software para ser empregado em ambientes de cálculos
numéricos.
É uma poderosa ferramenta para cálculos científicos, sendo usado em
diversas áreas, tais como:engenharias, petroquímica, meteorologia,
industria automobilística e outras.
Pode ser manipulado interativamente (“diretamente em seu console”) ou
através de programação (execução de arquivos de scripts).
O SCILAB faz parte de um grupo de softwares que simula um ambiente
de computação numérica, como o Matlab (Matrix Laboratory), Octave,
Maple, Simulink, MuPad, etc. Esses softwares são proprietários,
enquanto o Scilab é “open Source” (uso livre), assim o Scilab é uma
plataforma em constante atualização e aperfeiçoamento.
Histórico:
O desenvolvimento do SCILAB começou em 1989 na França, no Institut
de Recherche em Informatique et en Automatique, INRIA, através do
Projeto METALAU (Methods, algorithmes et logiciels pour l'automatique)
e a Ecole Nationale des Ponts et Chaussees, ENPC.
A partir de 2003, é mantido e desenvolvido atualmente pelo Scilab
Consortium, um consórcio com aproximadamente 20 membros,
recebendo contribuições de programadores de todo o mundo através de
seu site na internet.
Características:
Possui centenas de funções matemáticas para diversas áreas, tais
como: Álgebra Linear, Polinômios e Funções Racionais, Integração:
Equações Diferencias Ordinárias e Equações Algébrico- Diferenciais,
Estatística, etc.
Redes Neurais, Grafos e Redes (Metanet), Arquiteturas Paralelas de
computadores, Lógica Nebulosa (Fuzzy Logic)
Possibilidade de interação (interfaces) com programas em várias
linguagens como o C, C++, Fortran, Java, LabView, Tcl/Tk.
Modelagem e Simulação (Scicos), Automação Industrial, Controle de
Processos, Controle clássico, robusto e otimização LMI (Linear Matrix
Inequalities)
Processamento de Sinais e Imagens
Possui portabilidade para várias plataformas, tais como: windows, linux,
etc.
Instalação do SCILAB:
Para baixar a última versão do Scilab acesse: www. scilab.org
( nesse curso o site foi acessado em jul/2012)
Clique em “Download Scilab” para sistema Windows (32bits) ou em
“Other Systems” para outros sistemas.
No caso de outros sistemas, aparecerá a tela abaixo. Escolha o sistema
instalado em seu computador, clicando sobre ele, fazendo o seu
download.
Após escolher o sistema, aparecerá a tela abaixo. Clique em donwload.
No local onde foi efetuado o download,
clique no ícone do Scilab 5.3.3.
Depois clique em executar.
Selecione o idioma desejado (no caso
aqui: Português(Brasil).
Clique em Avançar e siga os passos conforme o Assistente de Instalação
requisitar. A sequência de instalação é bastante interativa e não necessita
de maiores detalhes.
O Ambiente do SCILAB:
A figura abaixo mostra a janela principal do ambiente scilab, com o menu
principal e a barra de ferramentas.
Menu
Principal Barra de
Ferramentas
Prompt (Pronto!) do Scilab (seta+cursor): significa
que o programa está pronto para receber instruções.
Também chamado de linha de comando.
No menu principal (pronúnica “meni”, aportuguesado menu mesmo) temos as
opções: Arquivo – Editar – Preferências – Controle – Aplicativos - ?(ajuda).
Na figura abaixo temos os sub-menus de Arquivo.
Executar: executa arquivos de scripts e arquivos
com instruções de comando de um modo geral.
Abrir um arquivo: carrega arquivos de texto
criado no ambiente scilab (.sce e .sci) com o
editor.
Carregar ambiente: carrega arquivos binários
(de variáveis) salvos com o comando salvar.
Salvar ambiente: salva em disco um arquivo
binário contendo variáveis.
Alterar diretório atual: muda o diretório atual, redirecionando o ambiente para
um novo local de trabalho.
Exibir diretório atual: exibe o diretório atual de trabalho.
Configuração de página: permite configurar a impressora para impressão
Imprimir: imprime documentos.
Sair: fecha a seção e sai do ambiente do scilab
Teclas
de atalho
Na figura abaixo temos os sub-menus de Editar.
Teclas
de atalho
Recortar: recorta um texto.
Copiar: permite copiar para o clipboard (área
de transferência do Windows) o texto
selecionado no ambiente.
Colar: cola o que foi previamente copiado.
Esvaziar área de transferência: limpa o
clipboard (área de transferência)
Selecionar tudo: seleciona todo o texto atual
do ambiente.
Na figura abaixo temos os sub-menus de Preferências.
Cores: permite alterar as cores utilizadas no
ambiente do scilab (cor do console (texto) ou
a cor de fundo).
Fonte: permite alterar a fonte (tipo, tamanho,
etc.)
Mostrar/esconder a barra de ferramentas:
comuta entre exibir e ocultar a barra de
ferramentas.
Limpar histórico: limpa o histórico das
instruções executadas no ambiente.
Limpar o console: limpa o console, mas não
apaga os dados da memória.
Console: unidade que permite que um operador se comunique com um sistema de computador
Na figura abaixo temos os sub-menus de Controle.
Retomar: continua a execução de uma
instrução depois de uma pausa (pause) ter
sido dada ou um pare (stop).
Abortar: interrompe a execução e retorna ao
prompt normal do ambiente.
Interromper: interrompe a execução e entra
no modo “pause” ( pode ser executada
diretamente no prompt do ambiente
pressionando-se Ctrl+C).
Na figura abaixo temos os sub-menus de Aplicativos.
SciNotes: carrega o editor de textos do scilab onde
podem ser criados scripts de programas e funções.
Xcos: permite criar diagramas de blocos e interfaces
gráficas.
Tradutor de Matlab para Scilab: oferece opções de
conversões do Matlab para o Scilab.
Gerenciador de módulos – ATOMS: O ATOMS (de
AutomaTic mOdules Management for Scilab),
permite que o usuário do Scilab possa baixar,
instalar e atualizar de forma automática, os módulos
externos que o mesmo deseje utilizar com o
programa
Navegador de variáveis: exibe o formato das
variáveis no scilab.
Histórico de comandos: O Scilab grava o histórico
de comandos executados no prompt, inclusive
marcando as sessões utilizadas com comentários
Na figura abaixo temos os sub-menus de ? (ajuda).
Ajuda do Scilab: exibe o diretório-raiz de
ajuda do scilab, com opção de buscas.
Demosntrações do Scilab: exibe uma janela
de demonstrações de comandos do scilab.
Links da Web: exibe várias opções de links.
Sobre o Scilab: mostra uma janela com a
versão da ferramenta, incluindo com
agradecimentos à relação de pessoas que
contribuíram para o seu desenvolvimento.
OBS: A ajuda do scilab é um item muito valioso e deve ser bastante
explorado pelo usuário.
• Execute o Scilab no seu sistema e procure pelo símbolo (prompt): -->
• As operações aritméticas devem ser digitados após este símbolo (->)
que é chamado de prompt do Scilab e em seguida tecla-se [ENTER]
Exemplo:
-->5+6/2
ans =
8.
-->4^2 // 4 elevado a potência de 2
ans =
16.
USANDO O SCILAB COMO UMA SIMPLES CALCULADORA
A variável ans (abreviação da palavra inglesa answer) armazena o valor
corrente de saída do Scilab. Pode-se usar ans para efetuarcálculos porque
ela armazena o valor do último cálculo realizado.
Exemplo:
-->4+5
ans =
9.
-->ans+ 3
ans =
12
USANDO O SCILAB COMO UMA SIMPLES CALCULADORA
variáveis : nome para uma posição na memória do computador.
Para atribuir ou modificar a informação contida na variável é usado o comando
de atribuição. No Scilab, usa-se o símbolo = para atribuição.
OBS: O símbolo de atribuição (=) não significa igualdade matemática, uma
vez que o comando de atribuição i = i+1 é válido, mas não representa
igualdade matemática.
Exemplo:
-->a = 2 // Atribui 2 para variável a
a =
2.
-->b = 4 // Atribui 4 para variável b
a =
4.
-->area = a*b // Atribui o produto de a e b para a variável area
area =
8.
VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO
OBS.(1): Regras para os nomes de variáveis (identificadores) ;
1. Nomes de variáveis começam com uma letra, seguido de letras, algarismos ou sublinhados.
2. Caracteres especiais não são permitidos.
3. Caracteres acentuados não são permitidos;
4. Nomes de variáveis são sensíveis a maiúsculas e minúsculas.
Ex.:
Nomes de variáveis válidos: ALPHA, X, B1, B2, b1, matricula e MEDIA.
Nomes de variáveis inválidos: 5B, 1b, nota[1], A/B e X@Z.
OBS.(2): A ausência ou presença do ponto e vírgula no final de um comando do Scilab visualiza ou
suprime, respectivamente, o resultado do cálculo.
-->A = 4+4^2;
-->
-->A = 4+4^2
A =
20.
-->a=2;
-->b=4;
-->area=a* b// no resultado (area) o ponto e vírgula foi suprimido para se visualizar o resultado.
area =
8.
VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO
A+B*C
(NOTA1+NOTA2)/2
1/(a^2+b^2)
PRIORIDADE: ordem de Avaliação entre Operadores Aritméticos
EXPRESSÕES ARITMÉTICAS
2+10/5 // 10/5 é avaliada primeiro.
A+B/C+D // B/C é avaliada primeiro.
R*3+Bˆ3/2+1 // Bˆ3 é avaliada primeiro.
Associatividade é a regra usada quando os operadores têm a mesma prioridade.
A operação mais a esquerda é avaliada primeiro.
A-B+C+D //A-B é avaliada primeiro, porque está mais a esquerda
ATENÇÃO!! potenciação, operação mais a direita deve ser avaliada primeiro:
A^B^C^D //CˆD é avaliada primeiro, porque está mais a direita
ATENÇÃO!! A ordem de prioridade pode ser alterada pelo uso dos parênteses
(A+4)/3 //A+4 é avaliada primeiro devido aos parênteses
(A-B)/(C+D) //A-B é avaliada primeiro. Depois a adição e depois a divisão
R*3+B^(3/2)+1 //3/2 é avaliada primeiro
EXPRESSÕES ARITMÉTICAS
Além dos operadores aritméticos podemos usar funções matemáticas.
Exemplo:
2+3*cos(x)
X^(2*sin(y))
2+3*tan(x)+K^2
EXPRESSÕES ARITMÉTICAS
Funções de Arredondamento
EXPRESSÕES ARITMÉTICAS
Exemplos:
Constantes Especiais do Scilab
EXPRESSÕES ARITMÉTICAS
Formato de Visualização dos Números com o comando format
Exemplo:
-->sqrt(3)
ans =
1.73
Para aumentar o número de posições para 16, usa-se:
-->format(16)
-->sqrt(3)
ans =
1.7320508075689
O comando format(’e’) mostra os números em notação científica. Exemplo:
-->format(’e’)
-->2*%pi/10
ans =
6.283185307E-01 (6.283185307E-01 significa 6.283185307 × 10−1)
Para retornar ao formato inicial usa-se -->format(’v’) que é chamado de “formato de
variável”.
EXPRESSÕES ARITMÉTICAS
Informação composta de caracteres alfanuméricos e/ou caracteres especiais
(exemplo, #, $, &, %, ?, !, @, <, ~, etc.).
Os strings são envolvidos por aspas duplas ou simples. (é melhor usar as
aspas duplas que não possui duplo sentido e torna seu programa um
pouco mais legível”
Exemplos:
-->a = "abcd"
a =
abcd
-->b = ’efgh’
b =
efgh
-->c = "Maria e Jose"
c =
Maria e Jose
STRINGS
Concatenação:junção de dois ou mais strings
-->n = "Pedro"
n =
Pedro
-->m = "Paulo"
m =
Paulo
-->m + n // Concatena Paulo com Pedro sem
ans =
PauloPedro
-->m + " " + n // Concatena Paulo com Pedro inserindo espaços entre eles
ans =
Paulo Pedro
-->m +“ “+”e”+” “+n
Paulo e Pedro
OBS: armazenar informações que contém as aspas=>repetir as aspas.
-->n = "o teorema é "“ a lados iguais opõe-se ângulos iguais “"
n =
o teorema é “ a lados iguais opõe-se ângulos iguais“
STRINGS
Funções Principais de Manipulação de strings
STRINGS
Exemplos:
-->m = "Pedro";
-->length(m) // Comprimento da string "Pedro"
ans =
5.
-->a = "a camisa " + string(10) // Para concatenar números com strings use a função string()
a =
a camisa 10
-->a = "12" + "34" // Para somar uma string com um número use evstr()
a =
1234
-->evstr(a) + 10
ans =
1244.
NÚMEROS COMPLEXOS
As operações com números complexos são tão fáceis como nos reais.
A unidade imaginária é representado por %i, ou seja, %i = sqrt(-1).
Exemplo:
Sejam os números imaginários x e y, como segue:
x = 3 + 4*%i e y = 1 - %i
As operações abaixo são feitas normalmente:
z1 = x - y
z2 = x * y
z3 = x / y
Uso de funções:
real(x) −Parte real de x
imag(x) −Parte imaginária de x
abs(x) −Valor absoluto do número complexo
atan(imag(x),real(x)) −Argumento do número complexo
conj(x) −Conjugado
sin(x) −Seno de um número complexo
STRINGS
clear apaga todas as variáveis do Espaço de Trabalho
Exemplo:
-->a = 2;
-->b = 3;
-->c = 4;
-->clear b // Apaga somente b deixando as outras variáveis intactas
-->clear // Apaga somente b deixando as outras variáveis intactas.
As variáveis são apagadas quando o usuário termina a execução do Scilab. Para usá-las da próxima vez
que executar o Scilab, você deve salva-las antes com o comando save(“arquivo”).
Por exemplo,
-->a = 2;
-->b = 3;
-->save("dados.dat");
O comando load(“arquivo”) é usado para recuperar variáveis que foram salvas no arquivo. Por exemplo:
-->clear // apaga todas as variáveis
-->a+b // variáveis a e b não existem
!--error 4 // porque foram apagadas
undefined variable : a
-->load("dados.dat"); // recupera as variáveis a, b e c
-->a+b // Ok!
ans =
5
OBS.: O comando who mostra todas as variáveis do Espaço de Trabalho
APAGANDO, ARMAZENANDO E RECUPERANDO VARIÁVEIS NO ESPAÇO DE TRABALHO
CONSEGUINDO AJUDA
help informa sobre comandos e funções do Scilab.
Exemplo:
help cos (Informa sobre a função que calcula o co-seno);
help ceil −Informa sobre a função ceil.
apropos procura comandos e funções utilizando uma palavra-chave.
Exemplo: se não sabemos o nome da função que calcula o seno hiperbólico,
podemos digitar (em inglês) algo como
--> apropos hyperbolic
e o Scilab mostrará todas a funções relacionadas com a palavra-chave
hyperbolic.
help() abre a ajuda do scilab pelo prompt.
Estruturas Seqüênciais no Scilab
ARQUIVOS DE SCRIPT
Comando de Entrada de Dados – input
input que tem duas formas básicas :uma para números e outra
para strings
A primeira forma, usada para solicitar dados numéricos, tem a
seguinte forma:
<variavel> = input(<string>);
Esta função mostra o texto <string> e em seguida solicita que o
usuário digite um número. Por fim, o número digitado é
atribuído a <variavel>. Exemplo:
-->x = input("Digite um número")
Digite um número-->10
x =
10.
A segunda forma do comandoinput é usada para solicitar dados do tipo
string ao usuário. Sua forma é:
<variavel> = input(<string>,"s");
Exemplo:
-->a = input("Digite alguma coisa","s") Digite alguma coisa-->Olá
a = Olá
Comandos de Saída de Dados
A forma mais simples de visualizar dados no Scilab é suprimir o ponto e
vírgula no final do comando
-->x = 3;
-->y = 4;
-->r = sqrt(x*x+y*y) // Com a omissão do ponto e virgula
r = // o resultado é exibido
5.
LOGO, A SUPRESSÃO DO PONTO E VIRGULA NO SCILAB É VISTO
COMO UM COMANDO DE SAÍDA DE DADOS.
Comandos de Saída de Dados - A Função disp
A função disp() é outra maneira de exibir dados. Por exemplo,
-->v0 = 2;
-->a = 4;
-->t = 3;
-->v = v0+a*t;
-->disp(v)
14. // disp não mostra o nome da variável
Exemplo com strings
-->nome = "maria";
-->disp("Seu nome é " + nome)
Seu nome é maria
A função disp é freqüentemente usada em conjunto com a função string que converte um
número em string. Por exemplo, poderíamos ter usado a seguinte sintaxe no final do
primeiro exemplo:
-->disp("A velocidade final é " + string(v))
A velocidade final é 14
Comandos de Saída de Dados - A Função printf
A função printf é a forma mais flexível de exibir dados porque produz
uma saída formatada. Ela é um “clone” da função printf da linguagem C
Por exemplo,
-->printf("Alô mundo\n");
Alô mundo
O caracter \n (chamado de new line) avisa ao comando printf para gerar uma
nova linha. Mais precisamente, \n move o cursor para o começo da linha
seguinte. Colocando \n após o string Alô faz com que printf gere uma nova
linha após Alô:
-->printf("Alô\nmundo"); Alô
mundo
A forma geral do comando printf é: printf(<formato>,<lista de dados>);
<formato> é uma string descrevendo a forma com que a lista de dados será
exibida.
Exemplo:
-->A = 2;
-->printf("A variável A contém o valor %g\n",A);
A variável A contém o valor 2
A símbolo %g (chamado de caractere de formatação) indica como cada
variável da lista de dados será exibido dentro da string de formatação
<formato>. No exemplo, %g é substituído pelo valor da variável A no momento
da impressão.
No seguinte exemplo, as variáveis A e B substituirão os caracteres de
formatação %g nas posições correspondentes:
-->A = 8/4;
-->B = A + 3;
-->printf("Os valores calculados foram %g e %g\n",A,B); Os valores calculados
foram 2 e 5
Observação:
Se a variavel for do tipo string, usa-se o caractere de formatação %s em vez
de %g. Por exemplo:
-->nome = "Joao";
-->altura = 1.65;
-->printf("A altura de %s é %g",nome, altura);
A altura de Joao é 1.65
Criando Arquivos de Scripts
Um arquivo de script é um arquivo que contém um script, isto é, uma
seqüência de comandos para ser executada pelo computador (programa)
Os comandos do arquivo de script são executados automaticamente pelo
Scilab
Arquivos de script são arquivos do tipo texto puro (também chamados
arquivos ASCII) e, por isso, eles podem ser criados em qualquer editor de
texto.
O Scilab já contém um editor de textos (chamado Scipad) que facilita a
criação de arquivos de script, sendo o mais recomendável para programar no
ambiente Scilab
Criando Arquivos de Scripts
Para criar Arquivos de scripts pelo
Editor do Scilab, selecione a opção
APPLICATIONS - EDITOR
Digite seu programa (comandos scilab)
Salve seu programa
Para executar um script, Selecione EXECUTE e em seguida a opção LOAD
INTO SCILAB..
OBS: Se houver erros de digitação do script então poderá ocorrer erros de
execução. Neste caso, retorne ao Editor, corrija o erro e execute novamente.
Uma forma alternativa de executar scripts é através do comando exec. O
comando exec tem a forma: exec(<script>)
AVISO: este comando funciona somente se o arquivo de script estiver no
diretório de trabalho do scilab caso contrário ocorrerá um erro como este:
File .............sce does not exist or read access denied
Resolva este problema alterando o diretório de trabalho: selecione
FILE|CHANGE DIRECTORY e depois escolha o diretório
Alterando o Diretório de Trabalho:
selecione FILE|CHANGE DIRECTORY e depois escolha o diretório de
desejado.
Alternativamente, o diretório de trabalho pode ser alterado com o comando
chdir(ou simplesmente cd) :
-->cd c:\exemplos; // altera o diretório corrente
Use o comando pwd para visualizar o diretório de trabalho do Scilab:
-->pwd
ans =
c:\exemplos
A estruturas de seleção são úteis para implementar situações que
requerem a execução de ações alternativas que dependem de certas
condições. Exemplos:
• Se a nota do aluno for maior que 7 então avise que ele foi "aprovado";
caso contrário informe que ele está em recuperação.
• Se a lâmpada está queimada compre uma nova lâmpada; caso
contrário acenda a lâmpada para ler o livro.
• Compre ou venda ações da bolsa de valores de acordo se índices
econômicos sobem ou descem, respectivamente.
Portanto, a estrutura de seleção é um mecanismo para selecionar entre
caminhos alternativos de execução comandos.
Estruturas de Decisão no SCILAB
A Seleção Simples IF-END
Caracteriza-se por permitir a execução de uma seqüência de comandos
quando certas condições, representadas por expressões booleanas,
forem satisfeitas. A seleção simples tem a seguinte forma:
if <expressão booleana>
<sequência de comandos>
end
A seqüência de comandos só será executada se a expressão booleana
retornar um valor verdadeiro.
A Seleção Bidirecional IF-ELSE-END
Caracteriza-se por selecionar entre duas seqüência de comando
quando certas condições, representadas por expressões booleanas,
forem satisfeitas. A seleção bidireciona tem a seguinte forma:
if <expressão booleana>
<primeira seqüência de comandos>
else
<segunda seqüência de comandos>
end
A primeira seqüência de comandos será executada se a expressão
booleana devolver um valor verdadeiro, caso contrário a segunda
seqüência de comandos será executada..
Exercício:
Elaborar um programa para ler quatro notas, calcular a média e informar
se o aluno passou de ano (aprovado) ou não (reprovado). A média para
passar de ano é 6.
Solução:
ANINHANDO SELETORES
Comandos de seleção podem ser aninhados de diversas formas criando
ampla variedade de construções.
Exercício:
Elaborar um programa para escrever a situação do aluno. O aluno com
média maior ou igual a 7,0 será aprovado. O aluno com média entre 5,0
e 7,0 ficará em recuperação. Com média abaixo de 5,0, o aluno será
reprovado
ESTRUTURAS DE REPETIÇÃO : LAÇOS
Computadores são freqüentemente usados para repetir uma mesma operação
muitas vezes. Para fazer isso, utiliza-se uma estrutura de repetição. Ela faz
com que um conjunto de comandos seja executado zero, uma ou mais vezes. A
estrutura de repetição é, também, chamado de laço (do inglês, loop). O
conjunto de comandos que se repete em um laço é denominado de corpo do
laço.
Há dois tipos de laço no Scilab:
1. Laço controlado logicamente;
2. Laço controlado por contador.
No laço controlado logicamente, os comandos (i.e., o seu corpo)são repetidos
indefinidamente enquanto uma certa expressão booleana for satisfeita. No
laço controlado por contador, os comandos são repetidos um número
predeterminado de vezes.
Denomina-se iteração a repetição de um conjunto de comandos.
Portanto, cada execução do corpo do laço, juntamente com a condição de
terminação do laço, é uma iteração. O termo iteração é também usado como
sinônimo de laço.
Laço Controlado Logicamente
O laço while é um laço controlado logicamente. Ele repete a execução
de um conjunto de comandos (o seu corpo), mas verificando antes de
executar os comandos se é permitido repeti-los ou não. O laço while
tem a seguinte forma:
while <expressão booleana>
<conjunto de comandos>
end
Enquanto a <expressão booleana> for verdadeira o <conjunto de
comandos> é repetido indefinidamente. No momento em que
<expressão booleana> for falsa o <conjunto de comandos> não será
mais repetido.
Vale salientar que se <expressão booleana> for falsa da primeira vez, o <conjunto de
comandos> jamais será executado.
A elaboração de programas com laços envolve, freqüentemente, o uso de duas variáveis
com funções especiais: os contadores e os acumuladores
Laço Controlado por Contador
O comando FOR é o laço controlado por contador do Scilab. Ele repete
a execução de um conjunto de comandos (i.e., o seu corpo) um número
pré-determinado de vezes. Na forma básica, o laço FOR possui o
nome de uma variável (chamada de variável de controle) e
especifica seu valor inicial e final e, opcionalmente, o tamanho do
passo (ou incremento) da variável de controle.
EXEMPLO:
O seguinte programa escreve a palavra disciplina 10 vezes:
for i=1:1:10
printf("disciplina\n");
end
Aqui a variável de controle i assume, inicialmente, o valor um e o
printf("disciplina\n“) é executado.
O tamanho do passo pode ser omitido e quando isto ocorre o passo é
igual a um:
for i=1:10 (daria o mesmo resultado)
Um passo igual a um indica que a variável de controle é
incrementada
de um em cada iteração. O laço for, repete a execução de
printf("disciplina\n“) e a variável de controle i é incrementada para
o valor 2. Da terceira vez que printf("disciplina\n“) é executado, a
variável de controle i é incrementada para o valor 3 e assim por
diante até alcançar o valor 10 que é o valor final.
Vetores
• Declaração de vetores:
X = [ x1 x2 x3 ...] vetor linha
X = [x1;x2;x3;...] vetor coluna
• Transposição de vetores: X’
Vetores
• A = Valor_inicial:incremento:Valor_final
• Exemplos:
• A = 1:10;
• B = 1:2:10;
• C = 1:0.2:10;
• D = 10:-1:1;
• E = 1:%pi:20;
• F = 0:log(%e):20;
• G = 20:-2*%pi:-10
Operações com vetores
• Dimensão: length(x)
• Número de linhas e colunas: [nr,nc] = size(x)
• Elementos iguais a 1: x = ones(N,1)
• Vetores nulos: x = zeros(N,1)
• Vetores com valores aleatórios: x =rand(N,1)
• Exercício:
1. 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
• Apaga elemento: X(i) = []
• 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];
Matrizes
Uma matriz geral consiste em m*n números dispostos em m
linhas e n colunas:
Matrizes
Exemplo
No Scilab:
M = [1 2 3; 4 5 6; 7 8 9]
Matrizes com elementos unitários: A = ones(M,N)
Matrizes com elementos nulos: B = zeros(M,N)
Matriz identidade: A = eye(N,N)
• 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(:,$)
Operações com Matrizes
Operações com Matrizes
• Acesso a um conjunto de linhas: A(:,[i:j])
• Acesso a um conjunto de colunas: A([i:j],:)
• Matriz com número aleatórios: A = rand(N,M)
• Soma: C = A + B
• Multiplicação: C = A*B
• Multiplicação por um escalar: B = aA
• Matriz complexa: C = A + B*%i (A e B reais)
• Matriz transposta: C = A’
• Determinante: d = det(A)
• Diagonal: d = diag(A).
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".
• Definindo polinômios:
• y = poly([1 2 3], ‘x’, ‘coeff’); y = 1 + 2x + 3x2
• ou: x = poly(0,’x’); y = 1+2*x + 3*x^2;
• 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.
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]
• Se A é uma matriz de polinômios:
• A = A(‘num’): retorna apenas os numeradores
• A=A(‘den’): retorna apenas os denominadores
Matrizes simbólicas
• Uma matriz simbólica pode ser construída com elementos
do tipo string:
• M =['a' 'b';'c' 'd'] ;
• Se atribuirmos valores às variáveis podemos visualizar a
forma numérica da matriz com a função evstr()
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:
A resolução deste sistema é x=A-1b, ou seja, basta obter a
matriz inversa de A e multiplicá-la pelo vetor b. No Scilab isto
pode ser feito desta forma:
A=[1 3;3 4];b=[5;2];
x=inv(A)*b
Esta solução pode ser obtida com o operador “divisão à
esquerda” cujo símbolo é \:
x=A\b
1x + 3y = 5
3x + 4y = 2
• Operador . (ponto)
Este operador é usado com outros operadores para realizar
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 =
0.5 0.5 0.5
0.375 0.4 0.5
0.5 0.5 0.5
-->A.*B
ans =
2. 8. 18.
24. 40. 72.
98. 128. 162.
Matrizes esparsas
• Uma matriz é dita esparsa quando possui uma grande
quantidade de elementos iguais a zero.
• A matriz esparsa é implementada através de um conjunto
de listas ligadas que apontam para elementos não zero. De
forma que os elementos que possuem valor zero não são
armazenados.
Em Scilab:
A = [0 0 1; 2 0 0; 0 3 0]
-->sparse(A)
ans =
( 3, 3) sparse matrix
( 1, 3) 1.
( 2, 1) 2.
( 3, 2) 3.
• Exemplo:
• A = [0 0 1; 2 0 0; 0 3 0] ;
• A= sparse(A);
• B = [0 1 0; 2 0 2; 3 0 0];
• B = sparse(B);
• C = A*B;
• Para obter a matriz C na forma completa:
• B = full(B);
• Funções que criam matrizes esparsas:
• sprand(n,m,fill): Matriz esparsa aleatória com n*m*fill elementos
não nulos.
• speye(n,n): Matriz identidade esparsa
• spzeros(n,m): Matriz esparsa nula de dimensões nXm
• spones(A): Coloca valor 1 onde Aij é diferente de zero
Listas
• Uma lista é um agrupamento de objetos não necessariamente
do mesmo tipo.
• Uma lista simples é definida no Scilab pelo comando list, que
possui esta forma geral:
L = list(a1,a2,a3… aN)
onde a1,a2,a3… aN são os elementos da lista
Exemplo:
L = list(23,1+2*%i,'palavra',eye(2,2))
-->L
L =
L(1)
23.
L(2)
1. + 2.iL(3)
palavra
L(4)
1. 0.
0. 1.
[23, 1+2i, ‘palavra’, 1 0
0 1
]L=
• Podemos criar sublistas, ou seja, listas dentro de listas.
• Exemplo:
L = list(23,1+2*%i,'palavra',eye(2,2))
L(4) = list('outra palavra',ones(2,2))
• Acessando 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);
Funções
• Variáveis definidas dentro do escopo da função
(variáveis locais) não permanecem no ambiente após
a execução da função.
• Uma função pode ser definida de três formas:
1. no ambiente Scilab;
2. usando o comando deff ou
3. digitando o texto no Scipad e clicando no menu
Execute, opção load into Scilab
Funções
• Definição:
function [y1,...,yn]= nome_da_funcao(x1,...,xm)
instrucao_1
instrucao_2
...
instrucao_p
endfunction
onde:
• x1,...,xm são os argumentos de entrada;
• y1,...,yn são argumentos de saída e
• instrucão_1,...,instrucao_p são as instruções executa
das pela função.
• Exemplo:
1. Definir uma função que converte um número complexo
da forma cartesiana para a polar.
No arquivo: cart_to_polar.sci, digite:
function [mod,ang] = cart_to_polar(re,im)
mod = sqrt(re^2 + im^2);
ang = atan(im/re) * 180/%pi;
endfunction
No arquivo program.sce (arquivo de execução) digite:
exec(' cart_to_polar.sci');
z = 2 + 2*%i;
[mod,ang] = cart_to_polar(real(z),imag(z));
disp(mod);
disp(ang);
Gráficos no Scilab
• Para gerar gráficos bidimensionais:
• plot2d(x,y,style)
• Onde x e y são vetores.
• Exemplo:
• x = [-2*%pi:0.1:2*%pi];
• y = sin(x);
• plot2d(x,y);
Syle: tipo de linha do gráfico. Valores inteiros positivos definem linhas
contínuas, valores negativos definem linhas tracejadas.
• plot2d(x,y,-1);
• plot2d(x,y,2);
• y pode ser uma matriz, sendo que o número de linhas
de y deve ser igual ao número de elementos de x
• Exemplo:
x = [0:0.1:2*%pi];
y = [sin(x)’ cos(x)’];
plot2d(x,y);
• x e y podem ser matrizes de mesma dimensão
• Exemplo:
t = [-5:0.1:5];
x = [t’ t’];
y = [(t^2)’ (t^3)’];
plot2d(x,y);
• Comandos básicos:
• clf: limpa a tela, evitando que o próximo gráfico se
sobreponha ao anterior:
• Exemplo:
• y = sin(x);
• plot2d(x,y);
• z = cos(x);
• plot2d(x,z);
• Mas:
• clf;plot2d(x,y);
• Comandos básicos:
• xtitle (‘titulo’): apresenta o título do gráfico
• 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(‘Posição’, ‘Velocidade’);
• 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))
• Comandos básicos:
• logflag: define escala linear ou logarítmica
• “nn” – linear x linear
• “nl” – linear x logarítmica
• “ll” – logarítmica x logarítmica
Exemplo:
x =1:100;
subplot(1,2,1);
plot2d(x,y, logflag='nn');
xtitle(‘Escala linear’);
subplot(1,2,2);
plot2d(x,y, logflag='ll');
xtitle(‘Escala log-log’);
• Gráficos tridimensionais
• meshgrid: cria matrizes ou vetores 3D
Exemplo:
-->[x y] = meshgrid(-1:0.5:4,-1:0.5:5)
• Gráficos tridimensionais
• mesh: gera gráficos em 3D
• Exemplo:
[X,Y]=meshgrid(-5:0.1:5,-4:0.1:4);
Z=X.^2-Y.^2;
xtitle('z=x2-y ^2');
mesh(X,Y,Z);
• Campo vetorial
• champ – mostra campos vetoriais
• Exemplo:
Velocidade da água em movimento circular
[x,y] = meshgrid(1:0.5:10,1:0.5:10);
vx = y./(x.*x + y.*y);
vy = -x./(x.*x + y.*y);
champ(x(1,:),y(:,1),vx,vy);
• Curvas paramétricas
• param3d: Gera uma curva paramétrica em 3D
• Exemplo:
t=0:0.1:5*%pi;
param3d(sin(t),cos(t),t/10,35,45,"X@Y@Z",[2,3])
• Matplot: Mostra matrizes em 2D usando cores.
• Exemplo:
-->Matplot([1 2 3;4 5 6])
-->A = round(rand(5,5)*10)
A =
4. 7. 4. 10. 5.
3. 5. 7. 5. 8.
1. 3. 9. 5. 8.
6. 7. 2. 6. 10.
3. 1. 4. 6. 8.
--> Matplot(A)
• Colormap: Define o mapa de cores
• Exemplo:
--> xset("colormap",graycolormap(32))
--> Matplot(A)
-->xset("colormap",hotcolormap(32))
--> Matplot(A)