Apostila Octave, o básico

Documentos relacionados
Aula 7. Noções Básicas de Octave

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Murilo F. Tomé ICMC-USP

Introdução à Ciência da Computação

Programação de Computadores III

TP062-Métodos Numéricos para Engenharia de Produção Erros-Ponto Flutuante

Programação de Computadores III

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Programação de Computadores:

Linguagem C: Introdução

Iteração e Pontos Fixos

Métodos Numéricos Erros Ponto Flutuante. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Introdução à Computação MAC0110

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Aula 02 - Introdução ao Scilab (p1)

Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária

Erros, Precisão Numérica e Ponto Flutuante

Material Didático Unificado.

Cálculo Numérico Noções básicas sobre erros

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

Aula 03 - Introdução ao Scilab (p2)

Princípios de Desenvolvimento de Algoritmos MAC122

Home Programa Exercícios Provas Professor Links. 2.1 Representação de um número na base dois. O número binário 101,101 significa, na base dois:

Arquitetura e Organização de Computadores

Material Didático Unificado. Variáveis correspondem a nomes para endereços de memória que são gerenciados pelo Scilab.

02 - Introdução ao Scilab

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1

Introdução à Computação

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Unidade 3: Linguagem de programação

CCO 016 / COM 110 Fundamentos de Programação

MATLAB EM VIBRAÇÕES MECÂNICAS

Introdução à Programação

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Introdução ao MATLAB. Afonso Paiva ICMC-USP

ALGORITMOS E LÓGICA DE PROGRAMAÇÃO

Introdução à Linguagem C Variáveis e Expressões

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer ÍNDICE. Aula 1- Introdução. Representação de números. Conversão de números

Minicurso MATLAB BÁSICO MÓDULO 1

Introdução a Programação

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

ALGORITMOS AULA 2. Profª Amanda Gondim

Algoritmos e Programação

Aproximações e Erros

1. Converta para a base binária, usando o método das divisões sucessivas, os seguintes números inteiros: a) 13 b) 35.

Formulas em Planilhas Eletrônicas. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Aula 4: Introdução à Linguagem C++

Cálculo Numérico - Mat 215. Prof. Dirceu Melo. Prof. Dirceu Melo - MAT215

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Binários: Operações matemáticas

Introdução. à Ciência da. Representação de Números em Ponto Flutuante. Aula 21. Números Fracionários

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Erros numéricos por Mílton Procópio de Borba

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Aula 3 - Representação de Dados

PARTE I I: ARITMÉTICA COMPUTACIONAL ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Folha Prática - Representação de Números e Erros. 1. Representar os seguintes números decimais em binário com ponto fixo:

Introdução ao Scilab. Comandos de entrada e saída de dados.

MAT115 Introdução ao Processamento de Dados Professor: Ibirisol Fontes Ferreira DCC: Departamento de Ciência da Computação

1. Converta para a base binária, usando o método das divisões sucessivas, os seguintes números inteiros: a) 13 b) 35. e) 347 f) 513.

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

SCS Sistemas de Controle / Servomecanismos. Aula 01 Introdução ao software MATLAB

ITENS FUNDAMENTAIS Programando em C++

Introdução à Programação Estruturada Parte 3. Material da Prof. Ana Eliza

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Aula 12- Variáveis e valores reais

Transcrição:

Apostila Octave, o básico CAPÍTULO 1 - INTRODUÇÃO Sejam bem vindos à disciplina de Cálculo Numérico!! Nessa primeira aula, veremos conceitos básicos para o entendimento do programa Octave. Para começarmos, primeiro iniciaremos o Octave (a versão GUI que significa Graphical User Interface). Uma janela como na figura 1 abrirá. Figura 1: Tela inicial do Octave Como podemos ver, na janela de comandos, temos o símbolo >>, isso significa que o Octave aguarda comandos, caso ele não esteja aparecendo, significa que há algum programa em andamento. Agora iremos nos familiarizar com o programa. Na parte Janela de comandos o cursor aguarda os comandos, vamos começar com algo simples, que tal uma expressão matemática? Vamos tentar! Digite na linha de comandos algumas expressões matemáticas, como por exemplo: 2+3 (e a tecla <enter>) ou 4-1 ou 2*2. Teremos resultados iguais aos apresentados abaixo (o que está em VERMELHO é a linha de comando a ser digitada, e o AZUL é o resultado, as cores são ilustrativas).

>> 2+3 ans = 5 >> 4-1 ans = 3 >> 2*2 ans = 4 Como podem ver, o Octave realiza essas operações sem problemas, e mostra a resposta na variável ans (para aqueles que já fizeram computação ou tem alguma noção não tem problemas para entender isso, mas não se preocupem, isso será abordado adiante). Sabemos agora que, podemos usar o Octave como uma calculadora, mas que operações ele faz? Veremos agora! Operadores Aritméticos do Octave: Operação Simbolo Exemplo Resultado Adição + 2+2 ans = 4 Subtração - 2-2 ans = 0 Multiplicação * 3*2 ans = 6 Divisão / 2/2 ans = 1 Potenciação ^ 3^2 ans = 9 Vamos fazer agora a seguinte operação: 1/7. Teremos a resposta: 0.14286 (IMPORTANTE, números que são representados com casas decimais são representados com ponto no lugar de vírgula, por isso é 0.14286 e não 0,14286, vírgulas são utilizadas para outros fins). No Cálculo Numérico, vemos a importância que a precisão nas casas decimais tem no cotidiano, e esse resultado que obtivemos é um número aproximado para representar a divisão 1/7; uma representação que utiliza 5 algarismos significativos, essa representação é o format short, que é a representação padrão do Octave. Tente digitar format long na linha de comandos e <enter>, ok, temos nosso cursor >> esperando um comando. Realize a operação 1/7 novamente. >> format long >> 1/7 ans = 1.42857142857143e-001 Observe que agora, o número foi representado com 16 algarismos significativos, que é o número máximo de algarismos significativos que é possível representar no Octave. Existem outras formas de se representar um número, como format short e; format long e; format short g; format long g. Sinta-se a vontade para testar! Para voltar ao padrão, simplesmente digite format short e <enter>.

Existe um limite de representação para o Octave, tanto um limite superior quanto inferior, passando desses limites temos overflow ou underflow. O limite de representação do Octave depende do sistema, então, rode os seguintes códigos: >> realmax >> realmin Para expressões mais complexas, como 5+2/7^2, há uma ordem de precedência no que será feito primeiro. Então, LEMBRE-SE, a ordem que o Octave trabalha é a seguinte: ORDEM OPERAÇÃO MATEMÁTICA 1º Parênteses. O que estiver entre parênteses será realizado primeiro, e para parênteses múltiplos, o mais interno será realizado primeiro, ex: (2+(5*2)) =12 2º Exponenciação 3º Multiplicação/Divisão (ambas na mesma ordem) 4º Adição/Subtração Sua Janela de Comandos está uma bagunça, cheia de comandos?? Um comando útil para limpar a Janela de Comandos: pressione <ctrl+l> ou digite clc e <enter>. Não se preocupe, as operações que você realizou não serão perdidas. Para limpar a memória (ou seja, todas as operações realizadas), digite clear e <enter>. ATRIBUIÇÕES No Octave, podemos atribuir resultados para variáveis. Como pode ter notado até o momento, as respostas das operações realizadas são mostradas no ans, isso significa que sua resposta foi armazenada na variável ans. Realize uma operação qualquer, e depois que realizá-la, escreva ans na tela e veja o que aparece. Ele mostra o resultado da última operação realizada, pois ele foi armazenado em uma variável, esta é a variável padrão ans de answer. Podemos criar nossas próprias variáveis e armazenar valores nelas. Para declarar uma variável, basta darmos um nome para ela e atribuir um valor, da seguinte forma: >> a=2 a = 2 >> b=3 b = 3 >> c=a+b c = 5 No exemplo acima, temos 3 váriaveis (a, b e c). Agora cada uma dessas variáveis tem seu valor armazenado (para aqueles que já programaram em C, não é necessário se preocupar com o

TIPO da váriavel, como declarar um número INT ou FLOAT. O Octave trata isso de forma automática). Para mostrar o conteúdo das variáveis é só digitar o nome delas na Janela de Comandos e apertar <enter>. Variáveis que começam em maiúsculo são diferentes das que começam com minúsculo. Vamos pegar o exemplo anterior (a, b e c tem seus valores definidos), e vamos tentar mostrar a variável A (não a a, mas a A, observe o que acontece): >> a a = 2 >> b b = 3 >> c c = 5 >> A error: A undefined near line 1 column 1 Como podemos ver, se tentarmos mostrar o que contém na variável A, é apresentado um erro, pois o Octave é case-sensitive, ou seja, a e A são diferentes devido ao fato de uma ser maiúscula e outra não, então, faz diferença letras maiúsculas e minúsculas, não esqueça disso. OBSERVAÇÕES: Uma variável NÃO pode começar com símbolos numéricos ou especiais (ex: *,%,$,.). Deve sempre começar com letras (sejam elas maiúsculas ou minúsculas). Podemos atribuir valores às váriaveis e não mostrar elas. Para isto, usa-se o símbolo ;, observando a figura 2, vemos que, quando atribuímos um valor a uma variável, logo abaixo essa variável é apresentada, para isso não acontecer deve-se terminar a linha com ;, como no exemplo abaixo: Figura 2: Exemplo de uso do símbolo ;. Ele será importante quando formos programar nossos códigos INTRODUÇÃO ÀS FUNÇÕES Agora que sabemos o que são atribuições e sabemos que o Octave realiza operações matemáticas, podemos entrar na parte de funções. O que seriam as funções? Vamos supor que nós temos nossa variável a, que contém o número 2 (a = 2). Poxa...eu gostaria de ver a raiz quadrada desse número, é possível? Sim, é possível, o Octave tem suas funções padrão. A seguir temos algumas delas:

FUNÇÃO OPERAÇÃO exp(x) x e abs(x) Valor Absoluto (módulo) log(x) Logaritmo natural (base e ) log10(x) Logaritmo na base 10 sqrt(x) Raiz quadrada nthroot(x,n) N-ésima raiz real factorial(x) Fatorial de x sin(x) Seno de x sind(x) Seno de x (em graus) cos(x) Cosseno de x cosd(x) Cosseno de x (em graus) tan(x) Tangente de x tand(x) Tangente de x (em graus) cot(x) Cotangente de x cotd(x) Cotangente de x (em graus) Essas são algumas funções básicas do Octave. O que temos que entender daqui é que, cada função tem seus PARÂMETROS DE ENTRADA, no caso desses exemplos a maioria é x, esse x é uma variável qualquer, não precisa ser necessariamente uma variável com o nome x. Esse x significa que a função tem como parâmetro de entrada uma variável. Notem na função nthroot, ela possui dois parâmetros de entrada, x e n, n sendo a n-ésima raiz que você deseja encontrar do número. Um exemplo pode ser visto na figura 3: Figura 3: Exemplo de utilização da função nthroot. Como pode ser observado, foram atribuídos o valor 8 para a variável x e 3 para a n, e em seguida foi chamada a função com x e n de entrada, o retorno foi 2, pois a raiz n-ésima (no caso cúbica, pois n = 3) de 8 é 2. Como exemplo, foi demonstrado que a entrada não necessita ser exatamente uma variável, pode ser até mesmo expressões matemáticas. O propósito de uma função é receber uma ENTRADA e retornar uma SAÍDA, os resultados que a função nos dá, é o que chamamos de SAÍDA. Uma função pode ter várias entradas, que são separadas por vírgulas, e podemos ter também várias saídas. Podemos pegar o resultado de uma função e atribuir a uma variável, da seguinte forma: >> a=factorial(3) a = 6 O que está em VERMELHO é o parâmetro de entrada, e AZUL é a saída.

Vamos fazer uma pausa e entender como funciona o armazenamento de números no computador? O computador utiliza o sistema binário (base 2). Cada algarismo binário (um ou zero) é chamado de bit (termo que vem de binary digit), com 1 se referindo à chave na posição ligada, e o 0 se referindo à posição desligada. Um vez que um número é colocado na representação binária em ponto flutuante, ele é armazenado no computador, sendo que o expoente é armazenado separado da mantissa. Lembra que falamos sobre precisão dupla na aula teórica? Então, vamos entender melhor como isso funciona no computador? A memória do computador é organizada em bytes. Cada byte corresponde à 8 bits. Na precisão simples, os números são armazenados em uma cadeia de 32 bits (4 bytes). Já na precisão dupla, em uma cadeia de 64 bits (8 bytes). O primeiro bit armazena o sinal do número (0 corresponde a + e 1 corresponde a -). Os próximos 8 bits (precisão simples) e 11 bits (precisão dupla) armazenam o expoente. Os bits restantes (23 na precisão simples e 52 na precisão dupla) armazenam a mantissa. Mais detalhes podem ser encontrados em REFERÊNCIA. Vamos voltar para o Octave. Como há um limite para a representação dos números em um computador, números reais que têm uma mantissa mais longa do que o número de bits disponível precisam ser truncados ou arredondados, o que leva a erros nos cálculos numéricos, principalmente quando são realizadas muitas operações. Estes erros ocorrem, normalmente quando, os números envolvidos nos cálculos diferem significativamente em magnitude e quando dois números que são quase idênticos, são subtraídos um do outro. Veja o exemplo a seguir: x! 100,0001x + 0,01 = 0 Com soluções exatas dadas por: x 1 = 100 e x 2 = 0,0001. Estas soluções podem ser calculadas utilizando a fórmula de Bhaskara: No Octave, teremos: x! =!!!!!!!!"!! e x! =!!!!!!!!"!! >> format long >> a = 1; b = -100.0001; c=0.01; >> raiz=sqrt(b^2-4*a*c);

raiz=99.9999000000000 >> x1 = (-b+raiz)/(2*a) x1=100 >> x2=(-b-raiz)/(2*a) x2 = -1.00000000003320e-004 O valor para x 2 calculado no Octave não é exato devido a erros de arredondamento, pois o numerador envolve a subtração de dois números quase iguais. O que podemos fazer para melhorar este resultado? Quando temos a subtração de duas grandezas quase iguais, podemos mudar a expressão fazendo a seguinte multiplicação (pelo conjugado): x! = b + b! 4ac ( b + b! 4ac) 2a ( b + b! 4ac) = 2c b + b! 4ac Calculando no Octave: >> x2mod=(2*c)/(-b+raiz) x2mod=1.000000000000000e-004 E assim, o valor de x 2 não contém erros. A partir de agora, iremos criar nossas próprias funções. Esse Capítulo foi uma introdução para o básico do básico do Octave. Conforme vamos avançando, iremos aprimorar nossos conhecimentos. REFERÊNCIAS https://octave.org/doc/v4.0.0/mathematical-constants.html http://www.rodrigofernandez.com.br/ecomp/ref/octave-final.pdf https://octave.org/doc/interpreter/ Gilat, Amos; Subramaniam, Vish. Métodos Numéricos para Engenheiros e Cientistas: Uma introdução com aplicações usando o MATLAB. Tradução Alberto Resende de Conti. ISBN 978-85- 7780-297-5. Porto Alegre: Bookman, 2008.