Laboratório Nacional de Computação Científica

Documentos relacionados
Informática Aplicada à Engenharia Florestal

Formação de Administradores de Redes Linux LPI level 1. Aula 2 SENAC TI Fernando Costa

INTRODUÇÃO À LINGUAGEM C++

JavaScript (ou JScript)

Minicurso de MATLAB. Programa de Educação Tutorial de Engenharia Elétrica 28/03/15. lmax Rodrigues. lcaroline Pereira.

Composição de Layout no Spring

9 Comandos condicionais

Tutorial de Matlab Francesco Franco

Portal do Projeto Tempo de Ser

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Usando o do-file editor Automatizando o Stata

Manual do usuário Sistema de Ordem de Serviço HMV/OS 5.0

Compositor de Impressão do QGIS

Informática no Ensino de Matemática Prof. José Carlos de Souza Junior

Introdução sobre Scilab

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

LINX POSTOS AUTOSYSTEM

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Testando e Comparando Valores

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Manual do Sistema. Página 1/14

Trabalho Computacional 2. Aplicativo para Gestão Financeira. Grupos: Os trabalhos devem ser feitos individualmente ou em duplas.

GNUPLOT Uma breve introdução

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Estruturas de Repetição

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Tutorial do Interpretador de Linguagem Algorítmica (ILA)

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

Aula 01 Conceitos Iniciais sobre Excel 2010

Amostra OpenOffice.org 2.0 Writer SUMÁRIO

Computação II Orientação a Objetos

OFICINA DE POWER POINT

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Linguagem de Programação I

UTILIZANDO RECURSOS E ATIVIDADES NO MOODLE

Convertendo Algoritmos para a Linguagem C

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Aoentrar na sua cx de vc terá uma tela como a abaixo :

GNU Image Manipulation Program, mais conhecido pelo acrônimo GIMP.

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO CAPÍTULO 2 INSTALANDO O DELPHI... 10

Programação em MATLAB

OpenOffice Calc Aula 4

Algoritmos e Programação

REGISTRO DE PROJETOS

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

Manual do Instar Mail v2.0

Sistema topograph 98. Tutorial Módulo Fundiário

Manual do Usuário. Solução de Informações Gerenciais - BI

Computação Gráfica (Draw) Aula 01

2 echo "PHP e outros.";

RESPOSTAS DAS QUESTÕES ANULADAS OU COM MUDANÇA DE GABARITO

SUMÁRIO. 1. Instalação Operações Comunicação Modo Ethernet Serial... 6

O QUE É A CENTRAL DE JOGOS?

CURSO BÁSICO DE PROGRAMAÇÃO AULA 8. Introdução ao Linux Introdução a linguagem C

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML

Programação WEB II. Conhecendo o PHP. Prof: Kelly E. Medeiros Bacharel em Sistema de Informação. Módulo III

1.2 Uma linguagem de programação muito simples

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

MANUAL DO PROFESSOR. Suporte: SISTEMA DE GESTÃO EDUCACIONAL VIRTUALCLASS. Skype: suportetisoebras

UNIPAMPA Universidade Federal do Pampa. Núcleo de Tecnologia da Informação (NTI)

Manual do Skanlite. Kåre Särs Anne-Marie Mahfouf Tradução: Marcus Gama

Representação de Algoritmos - Linguagens de Programação

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Relatórios Protheus

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Programa. Linguagem MATLAB Métodos Computacionais para EDO Métodos Computacionais para EDP. Critérios

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Manual do KGeography. Anne-Marie Mahfouf Kushal Das Tradução: Luiz Fernando Ranghetti

Comandos de repetição while

EDITORES DE TEXTO CAPÍTULO 5. Definição

Conceitos básicos da linguagem C

INSTITUTO TECNOLÓGICO

Tecnologia da Informação Prof. Mário Henrique de Souza Pardo Resumo Aula 4

Sumário INTRODUÇÃO 3 TELA DE APRESENTAÇÃO 3 DESENHANDO E TRANSFORMANDO 29 FERRAMENTA FORMA 29 PREENCHIMENTOS E CONTORNOS 36

Noções de Informática

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Estruturas de Controle em PHP

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

Primeiros passos das Planilhas de Obra v2.6

Oficina de MATLAB Nível Básico Aula 1

DATAGEOSIS EDUCACIONAL 2005

MANUAL DA SECRETARIA

TUTORIAL PARA PREPARAÇÃO E IMPORTAÇÃO DE DADOS PARA. Os dados de suas coletas devem ser organizados em uma planilha eletrônica, de modo

Estrutura de Dados Básica

Manual do Usuário CMS WordPress Versão atual: 3.0

Manual de uso do Borderô Credix

Verifique se o Plugin do Flash Player está instalado no seu computador para a navegação adequada no portal.

MATLAB Avançado. Melissa Weber Mendonça Universidade Federal de Santa Catarina. M. Weber Mendonça (UFSC) MATLAB Avançado 2011.

Transcrição:

Laboratório Nacional de Computação Científica Minicurso: Introdução ao Octave Luiz Aquino Março de 2010 aquino.luizclaudio@gmail.com.br

Introdução O que é Octave? É um programa para efetuar cálculos numéricos. Ele possui um extensivo conjunto de ferramentas para o cálculo de problemas comuns como: cálculo de autovalores e autovetores, solução de sistema de equações, manipulação de polinômios, determinar raiz de equações não lineares, integração numérica, solução de equações diferenciais ordinárias, etc. Quando surgiu? Em 1988, para auxiliar no desenho de reações químicas. Foi criado por James B. Rawlings da Universidade de Wisconsin-Madison e John G. Ekerdt da Universidade do Texas. Em 1993, foi liberada a versão 1.0 e passou a ser uma ferramenta mais abrangente. Atualmante, está na versão 3.2.4. Por que aprer? Devido a sua linguagem simples e intuitiva, torna mais rápida a implementação da solução de um problema. Além disso, possui um grande conjunto de ferramentas numéricas nativamente. Principais características. É distribuido sobre licença GPL (General Public License). Multiplataforma: Linux, Unix, Mac, Windows. Permite carregar módulos escritos em outras linguagens (Ex.: C++, Fortran). Compatível com outros programas da categoria (Ex.: MatLab). Onde Obter? http://www.gnu.org/software/octave/

Janela do Octave O Octave originalmente não dispõe de interface gráfica. Ele deve ser executado no terminal (Linux) ou no MS-Dos (Windows) como ilustrado abaixo.

QtOctave: Interface gráfica para o Octave. Barra de Ferramentas Navegador de Arquivos Lista de Variáveis e Funções Histórico de Comandos Disponível em: http://qtoctave.wordpress.com/

QtOctave: Interface gráfica para o Octave. Saída do Terminal Entrada do Terminal Disponível em: http://qtoctave.wordpress.com/

Comandos Básicos cd : Muda o diretório atual. pwd : Exibe diretório atual. ls : Lista o conteúdo do diretório atual. mkdir : Cria uma diretório. rmdir : Remove um diretório. delete : Remove um arquivo.

Números, Matrizes e Textos Números Reais: Notação simples: x = 1.981 Notação científica: me± p m 10 ± p x = 1981e-3 Números Complexos: Notação: a + bi z = 10 + 1.981i Matrizes: Textos: Notação: A=[linha_1; linha_2; linha_n] Exemplo: A=[1 2 3; 4 5 6; 7 8 9] txt='meu texto.' ou txt= Meu texto. A=[ 1 2 3 4 5 6 7 8 9]

Operações Aritméticas Operadores Básicos : Soma: + Subtração: - Multiplicação: * Divisão: / Potenciação: ^ ou ** Transposto Complexo: ' Operadores termo à termo (matriz) :.<Operador Básico> Exemplo: A.* B : produto termo à termo. [ 1 2 4] 3. [ 5 6 8] 7 = [ 5 12 21 32]

Operações básicas com matrizes Acessar elemento: Notação: A(Linha, Coluna). Exemplo: Se A=[1 2 3; 4 5 6; 7 8 9], então A(2, 3)=6 Obs: O primeiro índice da linha ou da coluna é 1. Acessar bloco: Notação: A(InícioLinha:FimLinha, InícioColuna:FimColuna) A=[ 1 2 3 4 5 6 7 8 9] Exemplo: Se A=[1 2 3; 4 5 6; 7 8 9], então A(2:3, 1:2)=[4 5; 7 8] Obs: Caso Ínicio e Fim não sejam especificados, será considerado o índice 1 para Ínicio e a dimensão da matriz (linha ou coluna, conforme o caso) para Fim. Exemplo: A(:, 1:2)=[1 2; 4 5; 7 8] Funções básicas: size(a) : retorna as dimensões (Linha x Coluna) da matriz A. inv(a) : calcula a inversa da matriz A. eye(n) : cria uma matriz identidade de ordem n. zeros(n, m) : cria uma matriz nula de ordem n x m. ones(n, m) : cria uma matriz de ordem n x m com elementos iguais a 1.

Exemplo: Solução de um Sistema Linear Considere o sistema abaixo: { ab=5 a b=1 Na forma matricial, temos a equação Ax=y, so: A=[ 1 1 1 1] x=[ a b] y=[ 5 1],, Para derterminar a solução desse sistema no Octave, podemos fazer: x=a\y Conceitualmente, isso é equivalente à x=a -1 y, porém na implementação computacional não há o cálculo da matriz inversa.

Plotar Gráficos 2D A função básica para plotar gráficos bidimensionais é plot. plot(y) : plotar os valores y sobre o eixo y considerando os índices dos elementos como so a coordenada x. plot(x, y) : plotar os pontos com coordenadas (x, y) plot(x, y, 'formato') : plotar os pontos com coordenadas (x, y) com o estilo 'formato' 'formato' pode conter: '<EstiloDoPonto><CorDoPonto>;<RótuloDoGráfico>;'. <EstiloDoPonto>: -, +, *, o, x, ^,. <CorDoPonto>: k (preto), r (vermelho), g (verde), b (azul), m (magenta), c (ciano), w (branco). <RótuloDoGráfico>: texto indicativo do gráfico. plot(x, y, 'formato', u, v, 'formato', ) : plotar múltiplos gráficos sobre a mesma janela. Observação: entre cada execução da função plot é necessário executar a função figure caso você queira gerar duas janelas gráficas separadas. Se for necessário 'segurar' a janela gráfica atual para plotar gráficos sobrepostos, deve-se usar o comando hold <on/off>.

Exemplo Simples de Gráfico 2D Considere que x está no intervalo [-π, π]. Desse modo, a função plota o gráfico abaixo. plot(x, sin(x), '^m;seno;')

Exemplo de Múltiplos Gráficos 2D Considere que x está no intervalo [-π, π]. Desse modo, a função plota o gráfico abaixo. plot(x, sin(x), '^m;seno;', x, cos(x), 'og;cosseno;')

Formatação da Janela Gráfica Podemos formatar a janela gráfica adicionando título, rótulos, grade, alterando os limites e o aspecto dos eixos. title('titulo do grafico') : altera o título do gráfico para 'Titulo do grafico'. grid <on/off> : exibe ou não a grade. xlabel('rotulo do eixo x') : altera o rótulo do eixo x para 'Rotulo do eixo x'. ylabel('rotulo do eixo y') : altera o rótulo do eixo x para 'Rotulo do eixo y'. axis([xmin, xmax, ymin, ymax, zmin, zmax], <propriedades>) : fixa os limites para os eixos e altera algumas propriedades do gráfico. O campo <propriedades> pode ser: 'square', 'equal', 'normal', 'auto', 'manual', 'on', 'off', 'tic[xyz]', 'label[xyz]', 'nolabel', 'ij', 'xy'

Formatação da Janela Gráfica Considere que x está no intervalo [-π, π]. Desse modo, a sequência de funções plot(x, sin(x), 'm;seno;') title('grafico do Seno') xlabel('eixo x') ylabel('eixo y') grid on axis([-2*pi, 2*pi, -2, 2], 'normal') plota o gráfico ao lado.

Salvar Janela Gráfica Podemos salvar a janela gráfica atual através da função print. print(<nome_do_arquivo>, <propriedades>) : salva a janela gráfica atual no arquivo <nome_do_arquivo> com as propriedades <propriedades>. <propriedades>: '-P<impressora>': definir saída para <impressora>. '-color', '-mono', '-solid', '-dashed', '-portrait', '-landscape' : propriedades gerais. '-d<tipo_do_arquivo>' : Tipo do arquivo, onde <tipo_do_arquivo> pode ser 'ps', 'ps2', 'psc', 'psc2', 'eps', 'eps2', 'epsc', 'epsc2', 'tex', 'epslatex', 'epslatexstandalone', 'pstex', 'pslatex', 'ill', 'aifm', 'cdr', 'dxf', 'emf', 'fig', 'hpgl', 'mf', 'png', 'jpg', jpeg', 'gif', 'pbm', 'svg', 'pdf'. '-S<TamanhoX>,<TamanhoY>' : tamanho do arquivo (em pixels) '-F<NomeDaFonte>:<Tamanho>' : nome e tamanho da fonte (disponível para os formatos postscript, aifm, corel e fig). Exemplo: print('meu_grafico.png', '-dpng', '-S800,600'). Observação: Caso o tipo do arquivo não seja especificado, o Octave tenta descobrir pela extensão dada. Caso o tamanho não seja especificado, o padrão é 640x480.

Arquivo de Função Um Arquivo de Função contém uma função principal e opicionalmente funções secundárias ou subfunções. A primeira linha útil do arquivo deve conter obrigatoriamente a declaração da função principal. Essa será a função executada inicialmente quando o arquivo for chamado. O arquivo deve ter a extensão.m e seu nome deve ser igual ao nome da função principal. O Octave é sensível à maiúsculas ou minúsculas, portanto lembre-se que Função.m e função.m são arquivos diferentes. As subfunções são disponíveis apenas dentro do arquivo onde elas estão declaradas, portanto não podem ser executadas externamente. A declaração de uma função é feita da seguinte maneira: function [retorno1, retorno2,, retornoj] = nome_da_funcao(arg1, arg2,, argn) % Corpo da função % Os caracteres % ou # marcam comentários. Note que o Octave permite múltiplos retornos. No exemplo acima, temos j retornos e n argumentos. O nome do arquivo criado nesse exemplo deverá ser nome_da_funcao.m Para executar a função, basta entrar com seu nome no terminal do Octave. Vale lembrar que a função deve estar salva no diretório atual (ou nos diretórios de busca do sistema).

Exemplo de Aquivo de Função Vamos criar uma função que receba o nome do usuário e dê boas-vindas (um clássico! ;-)) Crie um arquivo com o nome 'boasvindas.m'. Edite esse arquivo como descrito abaixo: function boasvindas(usuario) %Descrição: Função de boas vindas ao usuário. printf( Seja bem-vindo(a) usuario(a): %s\n, usuario); Note que o Octave não utiliza identificadores de tipo de variável! Isto é, não foi necessário declarar que 'usuario' é do tipo string. Após editar o arquivo, basta entrar com o nome da função juntamente com seu argumento no terminal do Octave: octave:1> boasvindas('francislene Aquino') octave:2> Seja bem-vinda(a) usuario(a): Francislene Aquino Vale lembrar que a pasta atual deve ser a mesma onde você salvou o arquivo. Por exemplo, vamos supor que você salvou o arquivo na pasta '/minicurso_octave/exemplos'. Então, se essa ainda não é a pasta atual, execute o comando 'cd /minicurso_octave/exemplos'. Em seguida, basta executar a função.

Estrutura Condicional: if Estrutura condicional segue a sintaxe: if Condição % Caso Condição seja verdadeira else % Caso Condição seja falsa Vamos fazer uma função que recebe dois números e retorna o maior deles: function maior = maximo(num1, num2) %Descrição: Retorna o maior dentre dois números. if num1 > num2 maior = num1; else maior = num2;

Operadores de Comparação e Operadores Lógicos Os operadores de comparação são os seguintes: == : igualdade.!= ou ~= : diferença. >, >= : maior e maior igual. <, <= : menor e menor igual. Os operadores lógicos são os seguintes: && : conjunção (e). : disjunção (ou).! ou ~ : negação.

Estrutura Condicional: switch Uma estrutura condicional switch segue a sintaxe: switch (x) case Opção1 % Instruções caso seja a Opção1 case Opçãon % Instruções caso seja a Opçãon otherwise % Instruções caso não seja nenhuma das anteriores As opções também podem ser uma lista de valores. Por exemplo: case {1, 2, 3} As opções podem ser strings. Diferente da linguagem C/C++, os casos são exclusivos, portanto não há necessidade do comando break em cada bloco.

Exemplo de Estrutura Condicional switch function x=minicalc(op1, operador, op2) %Descrição: Calcula o resultado de: (op1 operador op2) %Se ocorrer algum erro, a função retorna o valor x="erro". x="erro"; switch (operador) case "+" x=op1+op2; case "-" x=op1-op2; case "*" x=op1*op2; case "/" if op2!= 0.0 x=op1/op2; else disp("erro: Divisão por zero!"); case {"^", "**"} disp("operação não implementada."); otherwise disp("operação inválida! Use: \"+\", \"-\", \"*\" ou \"/\"");

Estrutura de repetição: for Uma estrutura de repetição for segue a sintaxe: for i = <Início>:<Incremento>:<Fim> %Instruções a serem repetidas Observação: se <Incremento> não é especificado, então ele é considerado igual a 1. Vamos criar uma função que recebe um vetor de números e calcula a média entre seus elementos. function m=media(v) %Descrição: recebe um vetor v e calcula a média entre seus elementos. n=length(v); %Retorna o número de elementos do vetor v. m=0.0; for i = 1:n m=m+v(i); %Poderiamos usar m+=v(i), como na linguagem C/C++ m=m/n; %Poderiamos usar m/=n, como na linguagem C/C++

Estrutura de repetição: while Uma estrutura de repetição while segue a sintaxe: while Condição %Instruções a serem repetidas Vamos criar uma função que calcula os n primeiros elementos da sequência de Fibonacci. function fib = fibonacci(n) %Descrição: Cálcula os n termos da sequência de Fibonacci. fib=ones(1, n); i = 3; while (i <= n) fib(i) = fib(i-1) + fib(i-2); i=i+1;%poderiamos usar i++, como na linguagem C/C++

Estrutura de repetição: do-until Uma estrutura de repetição do-until segue a sintaxe: do %Instruções a serem repetidas until Condição Vamos criar uma função que calcula os n primeiros elementos da sequência de Fibonacci. function fib = fibonacci(n) %Descrição: Cálcula os n termos da sequência de Fibonacci. fib=ones(1, n); if n>2 i = 2; do i++; fib(i) = fib(i-1) + fib(i-2); until (i == n)

Dicas e truques Concatenar string: [ texto1, texto2 ] : produz o texto texto 1 texto 2. Criar variáveis com valores em um intervalo: <Início>:<Incremento>:<Fim> : x=[1:0.25:2] cria o vetor x=[1.0 1.25 1.5 1.75 2.0] Variáveis globais: Para declarar uma variável global use o identificador global. Por exemplo, na função principal escreva global minha_variavel e atribua o valor desejado à minha_variavel. Em seguida, para usar essa variável nas subfunções, você deve exportá-la usando a mesma sintaxe anterior. Funções úteis: close all : fecha todas as janelas abertas. clear all : limpa as variáveis do ambiente. min(v) : retorna o menor valor em v e a posição onde ele ocorre. max(v) : retorna o maior valor em v e a posição onde ele ocorre. sum(v) : retorna o somatório dos valores contidos em v. prod(v) : retorna o produtório dos valores contidos em v. spy(m) : plota uma representação gráfica da esparsidade da matriz M. eval( expressão ) : avalia a expressão definida por expressão.

Obto ajuda Há um vasto material sobre o Octave na Internet! Com uma rápida pesquisa em um site de busca você encontrará milhares de páginas. Um manual on-line do Octave pode ser encontrado na página: http://www.gnu.org/software/octave/doc/interpreter/ Um comando muito útil no Octave é o help. Com ele você pode encontrar a referência de todas as funções disponíveis no Octave, bem como informações sobre palavras reservadas e constantes. Nas funções criadas pelo usuário, as primeiras linhas comentadas logo após a declaração da mesma, servem como referência para o comando help. Isto é, o comando help nome_de_sua_função retorna tudo que está escrito nos comentários iniciais de sua função.

Agradecimento Obrigado pela atenção! Espero que o Octave seja muito útil para todos vocês! Luiz Aquino aquino.luizclaudio@gmail.com.br