Iteração e Pontos Fixos

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

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

Programação de Computadores III

Programação de Computadores III

Programação de Computadores:

Material Didático Unificado.

Capítulo 3 Estrutura Sequencial

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

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

Introdução à Computação

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

SSC 0301 IC para Engenharia Ambiental

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

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

Introdução a Programação de Jogos

Modelo Matemático simples

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

Capítulo 2 Operadores. A função scanf()

É um interpretador,, ou seja, um programa que executa programas; ao contrário de um compilador, não traduz um programa para instruções de máquina.

Fundamentos de Programação

Algoritmo e Programação Matemática

Apostila Octave, o básico

Introdução a Programação

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

Unidade 5: Introdução à Programação com Python Prof. Daniel Caetano

Algoritmos e Programação

Noções de algoritmos - Aula 1

Ocorrem em três tipos:

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

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

Algoritmos. Conceitos e Comandos

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

02 - Introdução ao Scilab

Material Didático Unificado.

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

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

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

Exercícios Repetição

Fundamentos IV. Introdução a OCTAVE. Clarimar Coelho. Departamento de Computação. August 11, 2014

Lógica de Programação I. Gilson de Souza Carvalho

Ambiente de desenvolvimento

AEDI Fundamentos Revisão 1

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Introdução ao software MatLab

INTRODUÇÃO AO SCILAB

Puca Huachi Vaz Penna

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Linguagem C: Introdução

Software Graphmática \. (Graphmática não é um programa gratuito, mas seus responsáveis disponibilizam uma versão

Variáveis e instruções de repetição

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

Fluxogramas e variáveis

Algoritmos - 2. Alexandre Diehl. Departamento de Física - UFPel

Programação de Computadores III

PROGRAMAÇÃO COMPUTACIONAL I

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

Novas Tecnologias no Ensino da Matemática

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

Programação de Computadores

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Informática Fundamentos em C++ Revisão 1

LP2 Laboratório de Programação 2 Ciência da Computação. Problema proposto

1ª LISTA DE EXERCÍCIOS

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Vetores, Matrizes e Gráficos

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

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

3. Linguagem de Programação C

Programação Básica. Estrutura de um algoritmo

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Desenvolvido por: Juarez A. Muylaert Filho - Andréa T. Medeiros - Adriana S. Spallanzani -

Introdução à Computação

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

CAI Fluxograma Revisão 7

Waldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012

Programação Introdução

Murilo F. Tomé ICMC-USP

Esta prática tem como objetivo apresentar o uso de Matlab para encontrar a resposta de um sistema dinâmico.

Linguagens de Programação

Noções de algoritmos - Aula 1

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Repetição Controlada por Contador. Nono Exemplo utilizando Classes em C++

Instruções, dados e expressões

Tipos de Dados Simples (Continuação)

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

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

INTRODUÇÃO AO MATLAB - PARTE 2

Introdução à Programação uma Abordagem Funcional

Computação eletrônica: Operadores, expressões e funções

Algoritmos: Conceitos Fundamentais. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35

Programação Orientada a Objetos

INFORMÁTICA APLICADA AULA 03 LINGUAGEM DE PROGRAMAÇÃO C++

Portugol. Tiago Alves de Oliveira

Disciplina: Introdução a Programação. IPRJ/UERJ Professora: Sílvia Mara da Costa Campos Victer. Índice: Aula1 - Introdução Programa Algoritmo

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C

Programação Procedimental

Transcrição:

Iteração e Pontos Fixos Iteração é um dos pontos chave da programação numérica. Iterar consiste em repetir uma mesma operação diversas vezes levando a uma aproximação cada vez melhor da solução exata. Vamos começar escolho um número qualquer. Insira o número no MATLAB digitando: seu_numero Essa é a forma de atribuir um valor a uma variável no MATLAB. O número escolhido é armazenado na variável x para ser utilizada depois. Se você, por exemplo, começar com: 3 O MATLAB respode com: 3 Podemos agora entrar com o comando: sqrt(x + 1) No MATLAB, sqrt é o nome da função raiz quadrada (square root). A quantidade à direita do igual é calculada e o resultado é armazenado na variável x, sobrescrevo o valor anterior. No teclado do seu computador, provavelmente, contém um conjunto de quatro teclas em formato de seta. A tecla seta para cima permite chamar novamente o comando anterior. Use a tecla seta para cima, seguida da tecla enter para executar repetidas vezes o seguinte comando: sqrt(x + 1) Considerando que você começou com 3, temos:

16 experimentos com matlab 3 2 1.7321 1.6529 1.6288 1.6213 1.6191 1.6184 1.6181 1.6181 1.6180 1.6180 Após 10 passos, o valor permanece constante em 1, 6180. Tente fazer o mesmo para outros valores iniciais, você obterá o mesmo resultado. O MATLAB realiza suas computações utilizando cerca de 16 casas decimais, mas mostra apenas cinco casas. Para ver mais casas decimais, é necessário utilizar o comando: format long O número que você encontrou é um dos número mais famosos da matemática, φ, a Razão Áurea. Em MATLAB, o sinal de igual é um operador de atribuição. Ele indica: compute o valor à direita e armazene na variável à esquerda, então a atribuição sqrt(x + 1) usa o valor atual de x para computar sqrt(x + 1) e armazena o novo resultado em x. Na matemática, o sinal de igual tem um significado diferente. A expressão 1 + x é uma equação. Uma locução para essa equação é conhecida como ponto fixo 2. A função f (x) = 1 + x tem apenas um ponto fixo e a forma mais simples de encontrá-lo é resolvo a equação quadrática. A raiz positiva da equação quadrática é dada por: 2 A expressão ponto fixo apresenta significados diferentes em diversas áreas. Na área de computação numérica, se utiliza quando o número de casas decimais após a virgua é fixo, em oposição ao ponto flutuante (float)

iteração e pontos fixos 17 φ = 1 + 5 2 Podemos computar o valor de φ no MATLAB com o comando: phi = (1 + sqrt(5))/2 Que gera, como resultado: phi = 1.618033988749895 Outra forma de enter o ponto fixo é enter que é o ponto de interseção entre os gráficos de y = x e y = 1 + x. O comando 1:0.02:4; gera um vetor x conto os número de 1 a 4 em passos de 0, 02. O comando y1 = x; y2 = sqrt(1+x); plot(x,y1,' ',x,y2,' ',phi,phi,'o') produz uma figura com três componentes. Os primeiros dois componentes são gráficos de x e x + 1. O argumento - diz à função plot para desenhar linhas sólidas. O último componente do gráfico é um ponto onde ambas as coordenadas são iguais à φ. O argumento o diz à função plot para desenhar um círculo. Figure 1: Ponto fixo em φ = 1, 6180. A Razão Áurea aparece em diversos lugares na matemática e

18 experimentos com matlab um dos casos mais comuns é o Retângulo de Ouro, que tem a propriedade de removo um quadrado do retângulo, sobra um retângulo menor, tal quer a proporção entre os lados permanece a mesma. Considerando que um dos lados é unitário e chamando o outro lado de φ, temos: 1 φ = φ 1 1 Multiplicando ambos os lados por φ, obtemos a mesma equação quadrática utilizada para calcular o ponto fixo: φ 2 φ 1 = 0 Utilizar a tecla seta para cima pra executar um comando muitos vezes é uma solução simples, mas existem construções especiais para executarmos comandos múltiplas vezes, so os principais os laços while e for. Um laço for executa um bloco de código um número determinado de vezes 3 for k = 1:31 sqrt(1 + x) Esse código gera 32 linhas de saída, uma para a primeira atribuição e uma para cada execução do laço. Um laço while executa um bloco de código um número desconhecido de vezes. O término do laço é controlado por uma expressão lógica, que gera valores true (verdadeiro) ou false (falso). Abaixo está o código para o cálculo do ponto fixo utilizando o while: 3 while x ~= sqrt(1+x) sqrt(1+x) Esse código gera as mesmas 32 linhas do código utilizando o for, mas ele apresenta dois problemas. O primeiro possível problema é a condição de parada. A expressão sqrt(1+x) é a forma de escrever x = 1 + x. Utilizando aritmética exata, os dois lados da equação nunca iriam se igualar e o laço continuaria executando indefinidamente, porém, para economizar processamento e memória, o MATLAB utiliza aritmética de ponto flutuante e eventualmente o programa encontra valores para x e sqrt(1+x) iguais. A segunda crítica que pode ser aplicada a esse programa é que ele é ineficiente, visto que calcula sqrt(1+x) duas vezes para cada iteração do laço. Uma versão mais complicada, utilizando o while, que resolve os problemas citados seria:

iteração e pontos fixos 19 3 y = 0; while abs(x y) > eps(x) y = x; sqrt(1+x) O ponto e vírgula (;) no fim da atribuição à variável y indica que o resultado da operação não deve ser mostrado na tela. A quantidade eps(x) é o espaço de números de ponto flutuantes próximos de x. Números Números são formados dos algarismos de 0 a 9, um ponto decimal (opcional), um sinal + ou, a letra e seguida de um valor inteiro para representar uma potência de 10 e opcionalmente, as letras i ou j para representar a parte imaginária de um número complexo. O MATLAB também conhece o valor de π. A seguir estão alguns números: 42 9.6397238 6.0221415e23 3+4i pi Atribuições e Nomes de Variáveis Um comando de atribuição consiste de um nome, um sinal = e um número. O nome de uma variável, função ou comando é composto por uma letra seguida de um número qualquer de letras (maiúsculas ou minúsculas) algarismos e traços baixos. 42 phi = (1+sqrt(5))/2 Avogadros_constant = 6.0221415e23 camelcasecomplexnumber = 3+4i Expressões A potência é denotada por ˆ e tem precedência sobre todas as operações aritméticas. Multiplicação e divisão são representados por e / e tem precedência sobre adição e subtração. As operações de adição e subtração são denotadas por + e. Operações com a mesma precedência são avaliadas da esquerda para a direita. Expressões entre parêntesis são avaliada primeiro.

20 experimentos com matlab 3*4 + 5*6 3 * 4+5 * 6 2*(3 + 4)*3 2^4 + 10*29/5 3\126 52 8 2 Todas essas expressões geram um número muito importante. Porque esse número é importante? Exercícios Os exercícios devem ser enviados por e-mail em um documento pdf com o código utilizado em cada exercício e uma análise escrita de cada solução 1. Use o MATLAB para calcular cada uma das seguintes expressões matemáticas: (a) 43 2 (b) 4 (32 ) (c) (4 3 ) 2 (d) sen(1) (e) 2 4/3 (f) 4 32 (g) cos( π 3 ) 2. Escreva um comando no MATLAB que converta temperatura em Fahrenheit, f, para Celsius, c. c = alguma coisa envolvo c 3. O que é maior, π φ ou φ π? 4. Verifique que a razão áurea é um ponto fixo para cada uma das seguintes equações: (a) φ = 1 φ 1 (b) φ = 1 φ + 1 5. Escreva uma expressão matemática para a quantidade aproximada pelo seguinte programa (dica: é um somatório): s = 0; t = Inf; n = 0; while s ~= t n = n+1;

iteração e pontos fixos 21 s t = s; s = s + 1/n^4; 6. Podemos plotar funções no MATLAB. Para plotarmos o gráfico da função f = @(x) tan(sin(x)) sin(tan(x)) Onde o símbolo @ indica a criação de um função. O gráfico dessa função pode ser obtido utilizando: ezplot(f,[ pi,pi]) Varie n no código abaixo para ou valores 10, 100, 1000 e 10000 e indique a diferença observada. pi*( 2:1/n:2); comet(x,f(x))