Primeiro roteiro de exercícios no Scilab Cálculo Numérico



Documentos relacionados
CCI-22 CCI-22. 2) Erros de arredondamento. Matemática Computacional

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Unidade 5: Sistemas de Representação

Universidade Federal de São João Del Rei - UFSJ

Métodos Numéricos. Turma CI-202-X. Josiney de Souza.

fx-82ms fx-83ms fx-85ms fx-270ms fx-300ms fx-350ms

Eduardo Camponogara. DAS-5103: Cálculo Numérico para Controle e Automação. Departamento de Automação e Sistemas Universidade Federal de Santa Catarina

Conceitos básicos da linguagem C

Aritmética de Ponto Flutuante e Noções de Erro. Ana Paula

JavaScript (ou JScript)

Comandos de repetição while

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

AMBIENTE DE PROGRAMAÇÃO PYTHON

Variáveis e Comandos de Atribuição

Estrutura de Dados Básica

Análise de Arredondamento em Ponto Flutuante

Usando o do-file editor Automatizando o Stata

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

CURSO de CIÊNCIA DA COMPUTAÇÃO - Gabarito

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

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

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

Universidade Federal do Paraná. Setor de Ciências Exatas. Departamento de Matemática

JSP - ORIENTADO A OBJETOS

Aula 4 Estatística Conceitos básicos

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

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

Sistemas de Numeração (Aula Extra)

07/03/07 1ª aula de Matlab 10:30 12:00

Notas de Cálculo Numérico

Linguagem de Programação I

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

Criar as tabelas para um banco de dados

SIE - SISTEMA DE INFORMAÇÕES PARA O ENSINO CADASTRO DE FUNCIONÁRIOS

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Trabalhando com menus e caixas de diálogos

Representação de números em máquinas

Aula Teórica 16: Estruturas de Dados Heterogêneas

Com Pedido de Compra Sem Pedido de Compra ou Entrada Manual Importando XML enviado do Fornecedor

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Variáveis, Expressões, Atribuição, Matrizes, Comandos de Desvio

Especificação do Trabalho Prático

Aula 2 - Cálculo Numérico

Capítulo 1 - Erros e Aritmética Computacional

INF 1005 Programação I lista 12

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

2 Não possuo o institucional. Como devo proceder? Resposta: Dirija-se ao RH do câmpus e solicite a criação do seu institucional.

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

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

MANUAL DA SECRETARIA

Programação para web JavaScript

Integração de livros fiscais com o Microsoft Dynamics AX 2009

Introdução sobre Scilab

Representando Instruções no Computador

Curso destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET INFORMÁTICA AULA 11

Noções Várias em Visual Basic

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

Relatórios Protheus

Neste tópico, você aprenderá a criar facilmente um banco de dados para uma nova empresa e a definir configurações comuns de uma empresa no SAP

Validação e Proteção de dados no Excel

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Faculdade de Computação

2 Pesquisa de valores em uma lista de dados

Aula 2 Sistemas de Numeração (Revisão)

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA)

Algoritmos DCC 119. Introdução e Conceitos Básicos

Cálculo Numérico / Métodos Numéricos. Representação de números em computadores Mudança de base 14:05

AJUDA - FORMULÁRIO DE PROPOSTA ON-LINE - AVG

Sistema topograph 98. Tutorial Módulo Fundiário

Manual de Orientação para Acesso e Uso do SARA Versão ERA s

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

Energia Eólica. Atividade de Aprendizagem 3. Eixo(s) temático(s) Ciência e tecnologia / vida e ambiente

Estruturas de Repetição

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Aula 1: Conhecendo a Calculadora

INTRODUÇÃO À LINGUAGEM C++

MANUAL DO SOFTWARE. EPmfd II. Standard. Rev. Nro. Notas. Data da cópia 03/10/2008 Copiado por EGS EPSON PAULISTA LTDA. SEIKO EPSON CORPORATION

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

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Universidade Federal de São Carlos Departamento de Matemática Curso de Cálculo Numérico - Turma E Resolução da Primeira Prova - 16/04/2008

Sistemas de Computação

SIMULADOS & TUTORIAIS

Álgebra. SeM MiSTéRio

OpenOffice Calc Aula 4

Unidade 4: Planilhas eletrônicas

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Bem-vindo ao tópico sobre consultas no SAP Business One.

Conectar diferentes pesquisas na internet por um menu

Resolução de sistemas lineares

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org

Trabalho de laboratório Avaliação semestral Exame final MÉDIA PONDERADA CONCEITO

Primeiros passos das Planilhas de Obra v2.6

Sistemas supervisórios

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

CAPÍTULO 1 REVISÃO DE LÓGICA COMBINACIONAL

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

Transcrição:

Primeiro roteiro de exercícios no Scilab Cálculo Numérico Rodrigo Fresneda 13 de fevereiro de 2012 Guia para respostas: Responda a todas as questões que estão em negrito ao longo do roteiro. Inclua sempre que possível todos os comandos relevantes dados ao console do Scilab. Entregue todos os programas pedidos como arquivos separados do Scilab (*.sce). Data limite para entrega: 27/02/2012 1 Números de ponto flutuante no Scilab 1.1 grandezas básicas O Scilab trabalha com a representação de ponto flutuante de precisão dupla (64bits) de acordo com o padrão IEE754. Isto quer dizer, entre outras coisas, que: base β 2 precisão p 52 + 1 menor expoente 1022 maior expoente 1023 maior núm. normalizado menor núm. normalizado epsilon da máquina eps Tabela 1: alguns parâmetros iee754-64bits Questão 1: preencha os valores omissos da tabela com os resultados obtidos da primeira lista de exercícios. (na folha de respostas, inclua a sequência de input no Scilab que foi necessária para obter cada um dos resultados). Verifique seus resultados comparando com os valores obtidos a partir da função number_properties : >xmin=number_properties( tiny ) 1

xmin = 2.22D-308 >xmax=number_properties( huge ) xmax = 1.79D+308 O épsilon da máquina é uma constante no Scilab: >%eps %eps = 2.220D-16 1.2 Controlando a precisão no display: o comando format Por padrão, o Scilab mostra números reais como sequências de 10 caracteres, incluindo sinal, ponto decimal, e expoente. No console, armazene a constante π (no Scilab, %pi) na variável pi: >pi=%pi 3.1415927 Verifique que o Scilab mostra 10 caracteres, incluindo o ponto decimal e o sinal de + (subentido). Em seguida, conte quantos caracteres aparecem em pi: >-pi - 3.1415927 Se quisermos aumentar o número de casas decimais do resultado, podemos usar o comando format. Por exemplo, para obter mais 6 casas decimais, fazemos: >format(16);pi 3.1415926535898 Para retornar ao padrão, basta fazer >format(10) >pi 3.1415927 O maior número de caracteres que o Scilab pode mostrar é 25. Utilize o comando format para obter >pi 3.1415926535897931159980 O valor de pi correto até a vigésima-segunda casa é π = 3.1415926535897932384626 Repare que o valor de π mostrado pelo Scilab só é correto até a décima-quinta casa. Em geral, o Scilab representa números na base 10 com 15 a 17 casas corretas, aproximadamente. Isto ocorre por que esta é aproximadamente a precisão obtida na representação de ponto flutuante de precisão dupla dada por %eps. 2

Verifique que o erro relativo entre o valor exato (com 22 casas) e o valor produzido pelo Scilab é nulo: >pi22=3.1415926535897932384626 pi22 = 3.1415926535897931159980 >abs(pi-pi22)/abs(pi22) 0. Isto aconteceu por que a representação de ponto flutuante do valor exato, pi22, é igual à representação de ponto flutuante de %pi. Os dígitos errados ao final, 1159980, aparecem devido à erros na conversão da base dois à base 10 na saída. 1.3 Arredondando 0.1 1 Considere a representação decimal de 0.1 no Scilab com 25 caracteres: >format(25) >x=0.1 x = 0.1000000000000000055511 Este resultado está correto até a décima-sétima casa decimal. Questão 2:Obtenha a representação de ponto flutuante da questão 13 da lista 1, x = M 2 e 52, para o número 0.1 no Scilab. Dica: no Scilab, a função floor faz o papel do operador : log 2 x floor(log2(abs(x))) Após determinar o significante inteiro M e o expoente e, compare seus resultados com aquele obtido no exercício 2b da lista 1. Questão 3:Para fazer isto, converta M para a representação binária utilizando a função dec2bin. Por exemplo, >x=dec2bin(75) x = 1001011 Leia o help do Scilab para esta função, e note que a variável de entrada deve necessariamente ser um inteiro ou uma matriz de inteiros, e a saída é uma variável tipo string. Questão 4:Verifique que 0.1 está contido entre os números (M 1) 2 e 52 e M 2 e 52. 1.4 Operações aritméticas de ponto flutuante No Scilab, == é o operador booleano que compara dois números ou duas matrizes de números para determinar se são distintos. Por exemplo, como 1 2, então >1==2 1 Faça os exercícios 11, 12 e 13 da lista 1 antes de prosseguir. 3

F Isto é, a saída é o booleano F (false), como esperado, ao passo que >1==1 T e a saída é o booleano T (true). Utilize o operador == para comparar as seguintes operações aritméticas de ponto flutuante: >0.9 / 3 * 3 == 0.9 >(0.1 + 0.2) + 0.3 == 0.1 + (0.2 + 0.3) >(0.1 * 0.2) * 0.3 == 0.1 * (0.2 * 0.3) >0.3 * (0.1 + 0.2) == (0.3 * 0.1) + (0.3 * 0.2) Questão 5: qual o valor de cada uma das sentenças acima? explique os resultados obtidos. 1.5 números extremos Vimos que number_properties( huge ) é o maior número normalizado representável: >number_properties("huge") 1.79769313486231570D+308 Verifique o que acontece se somarmos à décima-quinta casa desse número uma unidade: >number_properties("huge")+10^(-15+308) No Scilab, existem números menores que o menor número normalizado, chamados de denormalizados. O menor deles pode ser obtido usando a função >number_properties( tiniest ) 4.94065645841246544D-324 Verifique o resultado de dividir esse número por dois. Questão 6: o que ocorreu em cada uma das situações acima? 1.6 o épsilon da máquina Na seção 1.1 você determinou qual o valor de eps para para representação de ponto flutuante utilizada pelo Scilab. Esse número em geral está relacionado com a distância relativa entre números normalizados vizinhos: >1+%eps==1 F O resultado acima nos diz que 1+%eps é um número diferente de 1, mas >1+%eps/2==1 T 4

nos diz que 1+%eps/2 corresponde ao mesmo número de ponto flutuante que 1. A função nearfloat permite encontrar os números representáveis mais próximos de um dado número real. Por exemplo, o número representável que sucede x = 1 é >x1=nearfloat( succ,1) x1 = 1.0000000000000002220446 Questão 7: calcule a distância relativa entre x1 e 1, e interprete o resultado à luz das comparações feitas no início da subseção. 1.7 o editor de scripts do Scilab Até aqui só utilizamos o console interativo do Scilab para executar comandos individuais. Agora vamos utilizar o editor de scripts do Scilab 5.3.3, o SciNotes. No menu do console, escolha Aplicativos>SciNotes. Uma nova janela irá se abrir. Nessa janela, copie a sequência de comandos abaixo, e em seguida salve o arquivo no seu disco rígido. Algoritmo 1 sistema simples de ponto flutuante emin= 2 emax=3 Mmin=4 Mmax=7 base=2 t=2 f = [ ] ; for e = emax : 1 : emin for M = Mmax : Mmin f ( $ +1) = M base ^( e t ) ; f ( $ +1) = 0 ; for e = emin : emax for M = Mmin : Mmax f ( $ +1) = M base ^( e t ) ; Este algoritmo calcula todos os números representáveis no sistema F (base, t, emin, emax) de acordo com a notação do exercício 12 da lista 1, i.e., os números representáveis são da forma x = M 2 e t, em que M e e são inteiros que satisfazem 2 t M 2 t+1 e emin e emax. Estude o algoritmo com atenção e enta seu funcionamento. Agora execute-o (no menu do SciNotes, escolha Executar> file with no echo ). No console, se não houve erro, você deve ler algo semelhante a >exec( /caminho para arquivo/ep1.sce, -1) 5

> Todos os números representáveis foram guardados no vetor f, em ordem crescente. Para ver o conteúdo de f, basta executar f no console: >f f = - 14. - 12. - 10. - 8. etc. No console, digite a sequência de comandos: >y=zeros(1,49);plot(f,y, * ) Uma nova janela deve se abrir, com um gráfico que representa os números do sistema acima com o símbolo *. Repare como a densidade de pontos é maior próximo à origem. Leia o help do Scilab para os comandos dados, e enta seu funcionamento. 1.8 algoritmo para conversão de decimal para binário Abaixo há o esqueleto de um algoritmo que converte um número inteiro positivo na base 10 para a base 2 de acordo com o algoritmo visto em sala de aula. Complete o algoritmo, e verique se funciona corretamente utilizando números conhecidos por você e/ou compare com a função dec2bin do Scilab. Algoritmo 2 algoritmo para converter decimal inteiro para binário function s t r = decbin (N) // decbin é função de uma v a r i á v e l Ni=N s t r="" // essa v a r i a v e l é uma s t r i n g while Ni>=1 s t r=string (?????)+ s t r // concatenação de s t r i n g s Ni=????? function 6