Download - Cálculo Numérico

Transcript
Page 1: Cálculo Numérico

Notas de Aulas de Análise Numérica

Professor Gesil Amarante

Primeiro semestre de 2006

NNoottaa iinniicciiaall Estas notas de aulas não têm como objetivo substituir a leitura dos livros-texto adotados ou

sugeridos. Professores imensamente mais experientes vieram a escrever seus livros que foram

publicados e tornaram-se sucessos de venda e crítica (uns mais que outros, claro) não por acaso.

Use-os.

Apenas adiciono as estes a particular ênfase que este vosso humilde ministrante tem dado

durante as aulas a tópicos constantes do programa da disciplina. Com a vantagem de os alunos não

precisarem reservar na biblioteca ou pagar pela posse.

Sugestões e observações de vocês, alunos, serão sempre bem-vindas. Fico feliz se essas notas

passarem no julgamento de vocês como úteis durante este tempo em que aprenderemos juntos um pouco

de nossa humana ciência.

Referências: [1] Cálculo Numérico Délcio Sperandio, João Teixeira Mendes e Luiz Henry Monken e Silva Pearson Editora [2] Cálculo Numérico – Aspectos Teóricos e Computacionais Márcia A. Gomes Ruggiero Vera Lúcia da Rocha Lopes 2a Edição Pearson Editora

Page 2: Cálculo Numérico

1

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

0

Introdução (aulas 01 e 02) Problema Real

Modelo Físico

Modelo Matemático

Implementação

Escolha do método Numérico

Análise dos resultados

Problema Numérico Quando os dados de entrada e de saída são conjuntos finitos e discretos. Casos como a equação abaixo 5 4 3 25 10 2 8 5x x x x x+ − + − + =não são um problemas numéricos. Algumas vezes podemos transformar problemas não-numéricos em problemas numéricos. O caso da equação diferencial abaixo é um exemplo (retirado de [2] ) não é um problema numérico:

( )( )

22 2

2 p/

0 05 1

d y x y xdx

yy

⎧= +⎪

⎪⎪ =⎨⎪ =⎪⎪⎩

(0,5) ∈

mas que pode ser transformado num problema numérico:

Por diferenças finitas: ( ) ( ) ( )

( ) ( ) ( ) ( )2

' ;2

2''

f x h f x hf x

h

.f x h f x

f xh

+ − −⎧=⎪⎪

⎨+ −⎪ =⎪⎩

f x+

( )2 2 2

1 -1

0

2 , 1,2,.... 1

0 1

i i i

m

y y y h x y i m

yy

+⎧ − + = + = −⎪⎪ =⎨⎪ =⎪⎩

Método Numérico

Método empregado para a expressão do problema como um problema numérico, como no exemplo acima, mais o conjunto de procedimentos para a solução. Para a escola do método mais apropriado devemos ter em mente a precisão, a capacidade de resolução do problema específico e o custo computacional do método.

Page 3: Cálculo Numérico

2

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Algoritmo

Descrição seqüencial do método. Métodos Iterativos Freqüentemente utilizamos métodos diretos e métodos iterativos. A distinção entre um e outro ficará clara mais adiante, mas, essencialmente, o método iterativo apresenta aspecto de procedimento circular que é interrompido quando satisfeita uma condição (teste de parada). Assim, estes métodos têm três etapas, basicamente, Tentativa Inicial Equação de recorrência Exemplo: mudança de base numérica. Teste da Parada Bases Numéricas

As representações numéricas são, por princípio, equivalentes, sendo que uma ou outra pode ser mais útil em determinado tipo de situação. A escolha do sistema decimal que adotamos (na maior parte das vezes) se deu por alguma conveniência e mais por uma conjunção de fatores históricos que não vale a pena aqui discutir. O fato é que qualquer número pode ser descrito em qualquer base e que essa representação obedece à seguinte regra básica: Seja a base β, nas quais o Número N vai ser representado com os algarismos aj:

1 2 0 11 2 0 1... . ...j j j j

j ja a a aj jN a aβ β β β β β− − − −− − − −+ + + + + +

página de título do livro " Libro Intitulado Arithmetica Practica " por Juan de Yciar, matemático e calígrafo Basco, Saragossa 1549.

= +

Para transformarmos N de uma base para outra, por exemplo, de

decimal para binária e vice versa, precisamos fazer sucessivas multiplicações ou divisões pela base-alvo, dependendo se estamos falando de números inteiros ou reais Vamos trabalhar primeiro com inteiros:

Binários a decimais

Dado um número N, binário, para expressá-lo em decimal, deve-se escrever cada número que o compõe (bit), multiplicado pela base do sistema (base = 2), elevado à posição que ocupa. Exemplo:

1001(binário)

1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 = 9

Portanto, 1001 é 9 em decimal

Page 4: Cálculo Numérico

3

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Decimais a Binários

Dado um número decimal, para convertê-lo em binário, basta dividi-lo sucessivamente por 2, anotando o resto da divisão inteira:

12(decimal) 12 / 2 = 6 + 0; 6 / 2 = 3 + 0; 3 / 2 = 1 + 1; 1 / 2 = 0 + 1.

Observe que é importante que os números sejam lidos de trás para frente, ou seja: 1100 é 12 em binário.

Outro método para conversão de decimal para binário

Considere alguns resultados da potência 2x e exponha-os em tabela por ordem decrescente:

2048 1024 512 256 128 64 32 16 8 4 2 1

Deste modo é possível converter grandes quantidades de números decimais para binários:

Numero decimal 2048 1024 512 256 128 64 32 16 8 4 2 1 Resultado Binario

354 0 0 0 1 0 1 1 0 0 0 1 0 101100010

1634 0 1 1 0 0 1 1 0 0 0 1 0 11001100010

104 0 0 0 0 0 1 1 0 1 0 0 0 1101000

2 0 0 0 0 0 0 0 0 0 0 1 0 10

38 0 0 0 0 0 0 1 0 0 1 1 0 100110

O procedimento é igual a qualquer caso. Vamos acompanhar de perto o caso do 1634, por exemplo: O procedimento se inicia do extremo esquerdo, e consiste na verificação de uma possível subtração não-negativa. 2048>1634. Logo fica "0" (por exemplo, 1634-2048 resultava num número negativo. Logo atribui-se o "0" )

1024<1634. Logo fica "1";

1634-1024=610

512<610. Logo fica "1"

610-512=98

256>98. Logo fica "0"

128>98. Logo fica "0"

64<98. Logo fica "1"

98-64=34

Page 5: Cálculo Numérico

4

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee 32<34. Logo fica "1"

34-32=2

16>2. Logo fica "0"

8>2. Logo fica "0"

4>2. Logo fica "0"

2=2. Logo fica "1"

2-2=0

1>0. Logo fica "0"

Soma de números binários

Recordando as seguintes somas básicas:

1. 0+0=0 2. 0+1=1 3. 1+1=10

Assim, ao se somar 100110101 com 11010101, tem-se:

100110101 11010101 ----------- 1000001010

Opera-se como em decimal: começa-se a somar desde a esquerda, no exemplo, 1+1=10, então escreve-se 0 e "leva-se" 1. Soma-se este 1 à coluna seguinte: 1+0+0=1, e segue-se até terminar todas as colunas (exatamente como em decimal).

Produto de números binários

O produto de números binários é especialmente simples, já que o 0 multiplicado por qualquer coisa resulta 0, e o 1 é o elemento neutro do produto.

Por exemplo, a multiplicação de 10110 por 1001:

10110 1001 --------- 10110 00000 00000 10110 --------- 11000110

Page 6: Cálculo Numérico

5

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Números Reais No caso dos inteiros aplicamos sucessivas divisões por 2, guardando os restos. Aqui faremos o contrário, sucessivas multiplicações por 2, guardando-se os zeros. Por exemplo:

10 1 2 3 4(0.125) . ...a a a a− − − −=

10 2 (0.125) 0.250× = ; Não há parte real, resultado 0;

10 2 (0.250) 0.50× = ; Não há parte real, resultado 0;

10 2 (0.50) 1.0× = ; Há parte real, resultado 1; Resto 0. Assim, ( )10 2

(0.125) 0.001= Representação Finita Nem todos os números que são representados com um número finito de algarismos numa base o são nas outras. Por exemplo, 0.1 tem representação finita na base 10, mas, na base 2, será que também o é? Vejamos

10 2 (0,1) 0,2× = ; Não há parte real, resultado 0;

10 2 (0,2) 0,4× = ; Não há parte real, resultado 0;

10 2 (0,4) 0,8× = ; Não há parte real, resultado 0;

10 2 (0,8) 1,6× = ; Há parte real, resultado 1, sobra 0,6;

10 2 (0,6) 1,2× = ; Há parte real, resultado 1, sobra 0,2;

10 2 (0,2) 0,4× = ; Não há parte real, resultado 0; . . . Assim, ( )10 2

(0.1) 0.0001100110011...= Neste e em outros casos semelhantes, ficamos sujeitos ao limite físico de representação da máquina que usamos para fazer os cálculos. Tal limite é sério candidato à propagação de erros e um exemplo de conseqüência disso é mostrado no texto à página 12. Aritmética de Ponto Flutuante Um computador representa números reais da seguinte forma:

( )1 2 3 4. ... etN a a a a a β= × ,

onde é a representação com t algarismos do número na base β, chamada mantissa, sendo que a

( 1 2 3 4. ...a a a a )1 deve ser o primeiro algarismo significativo (não nulo) e e é um expoente, cujo valor vai de um

limite inferior -m até um limite superior M, que depende da capacidade da máquina. Esta forma de representação foi descoberta por Konrad Zuse (1910-1995) para os seus computadores eletromecânicos Z1 e Z3, no início da década de 40.

Page 7: Cálculo Numérico

6

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Assim:

524543=0,24543 10× , se a máquina pode apresentar 5 algarismos na mantissa, ou 524543=0,245 10× , se a máquina pode apresentar 3 algarismos na mantissa, ou ainda

524543=0,25 10× , se a máquina pode apresentar 2 algarismos na mantissa. Repare que usamos de arredondamento, não truncamento para escolhermos o último algarismo apresentado na mantissa. Um número demasiado grande para ser apresentado por uma máquina provoca o que chamamos de OVERFLOW (um número por demais pequeno causa um UNDERFLOW). Nesses casos, dependendo da máquina e da linguagem em que programamos, os efeitos põem ser os mais variáveis, desde o truncamento involuntário à parada forçada do cálculo, ou a representação simbólica NAN.

Erros e condicionamento Um problema numérico é dito mal-condicionado ou instável quando sua solução é muito suscetível aos dados de entrada. No exemplo abaixo temos uma simples equação do segundo grau

2 100.22 1.2371 0x x− + = , que tem como soluções os valores para x encontrados pelo método de Báscara:

2

14

2b b acx

a+ −

= e 2

24

2b b acx

a− −

= .

Façamos, pois uso desse método para a solução dessa equação, levando-se em conta que o número de algarismos que podemos usar para efetuar os cálculos é sempre finito (no caso, cinco). Nossos passos serão

2

2

2

10044;4 10039;

4 100,19

bb ac

b ac

=

− =

− =

e, finalmente, chegaremos às soluções 1 2100,20 e 0,015x x= = .

Acontece que se substituirmos essas soluções na equação original, não encontraremos a confirmação de sua validade. Se ao invés disso usarmos uma propriedade das soluções,

21

0,012346cxax

= = ,

que, podemos facilmente testar, é muito mais próximo da solução real. Note que neste caso o problema não é matematicamente mal posto. O fato de b ser muito maior que 4ac foi o que induziu a um erro maior já que tivemos no segundo passo acima a subtração de números muito próximos, próximos do limite da representação a nós imposta.

Page 8: Cálculo Numérico

7

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Brindes: Aqui vão algumas informações extra para vocês aumentarem sua cultura:

Sistema octal Origem: Wikipédia, a enciclopédia livre.

Sistema Octal é um sistema de numeração cuja cuja base é 8, ou seja, utiliza 8 símbolos para a representação de quantidade. No ocidente, estes símbolos são os algarismos arábicos: 0 1 2 3 4 5 6 7

O octal foi muito utilizado em informática como uma alternativa mais compacta ao binário na programação em linguagem de máquina. Hoje, o sistema hexadecimal é mais utilizado como alternativa ao binário.

Este sistema também é um sistema posicional e a posição de seus algarismos determinada em relação à vírgula decimal. Caso isso não ocorra, supõe-se implicitamente colocada à direita do número. A aritmética desse sistema é semelhante a dos sistemas decimal e binário, o motivo pelo qual não será apresentada.

Exemplo: - Qual o número decimal representado pelo número octal 4701? Utilizar o TFN. 4 x 8³ + 7 x 8² + 0 x 8¹ + 1 x 8 = = 2048 + 448 + 0 + 1 = 2497

Conversões de um sistema para outro

Conversão Decimal – Octal

Método das divisões sucessivas por 8

É utilizado para converter números decimais inteiros para o sistema octal e consiste em dividir sucessivamente por 8 o número e os quocientes obtidos nessas divisões até que o quociente seja 0. O número octal desejado é formado pelos restos das divisões escritas na ordem inversa à da sua obtenção.

Método de multiplicações sucessivas por 8

É utilizado para converter uma fração decimal para o sistema octal. Multiplica-se a fração decimal por 8, obtendo-se na parte inteira do resultado o primeiro dígito da fração octal resultante. O processo é repetido sucessivamente com a parte fracionária do resultado para obter os dígitos seguintes e termina quando a parte fracionária é nula ou inferior à medida de erro especificada. Exemplo: Converter a fração decimal 0.140625 em octal. 0.140625 x 8 = 1.125

0.125 x 8 = 1.0 Combinamos os dois métodos anteriores podemos converter para octal números decimais com parte inteira e fracionária.

Método de subtrair potências de 8

Page 9: Cálculo Numérico

8

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Outro método de conversão de números decimais para o sistema octal que serve para números com partes inteiras e fracionária é o de subtrair potências de 8. é semelhante ao estudado para a conversão decimal – binário e para a sua aplicação é necessária uma tabela de potências de 8.

Conversão Octal – Decimal

Existem vários métodos, sendo mais comumente utilizado o proveniente do TFN, em que se faz a conversão de forma direta através da fórmula. Exemplo: Converter o número octal 764 para o sistema decimal 764 (10) = 7 x 8² + 6 x 8¹ + 4 x 8° = 448 + 48 + 4 = 500 (8)

Conversão Octal – Binário

Quando existir necessidade de converter números octais em binários, deve-se separar cada dígito do número octal substituí-lo pelo seu valor correspondente de binário. Exemplo: Converter o número octal 1572 em binário.

Logo, 1 5 7 2 = 001 101 111 010

Conversão Binário – Octal

Para converter um número binário em octal, executa-se o processo inverso ao anterior. Agrupam-se os dígitos binários de 3 em 3 do ponto decimal para a esquerda e para a direita, substituindo-se cada trio de dígitos binários pelo equivalente dígito octal.

Por, exemplo, a conversão o número binário 1010111100 em octal:

001 010 111 100 1 2 7 4

Assim, tem-se 1010111100bin = 1274oct

Conversão Octal – Hexadecimal

Para esta conversão é necessário executar um passo intermediário utilizando o sistema binário. Primeiramente converte-se o número octal em binário e depois converte-se o binário para o sistema hexadecimal, agrupando-se os dígitos de 4 em 4 e fazendo cada grupo corresponder a um dígito hexadecimal. Por, exemplo, a conversão o número octal 1057 em hexadecimal:

Passagem ao binário: 1 4 5 7

001 000 101 111 Passagem ao hexadecimal: 0010 0010 1111

2 2 F

Assim, tem-se 1057oct = 22Fhex

Page 10: Cálculo Numérico

9

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Conversão Hexadecimal – Octal

Esta conversão, assim com a anterior, exige um passo intermediário em que se utiliza o sistema binário. Converte-se o número hexadecimal em binário e este em octal. Exemplo: Converter o número hexadecimal 1F4 em octal.

Tabela de valores

N.º Decimal N.º Binário N.º Hexadecimal N.º Octal0 0 0 01 1 1 12 10 2 23 11 3 34 100 4 45 101 5 56 110 6 67 111 7 78 1000 8 109 1001 9 11

10 1010 A 1211 1011 B 1312 1100 C 1413 1101 D 1514 1110 E 1615 1111 F 1716 10000 10 2017 10001 11 21

Sistema hexadecimal O sistema hexadecimal é um sistema de numeração vinculado à informática, já que os computadores interpretam as linguagens de programação em bytes, que são compostos de oito dígitos. À medida que os computadores e os programas aumentam a sua capacidade de processamento, funcionam com múltiplos de oito, como 16 ou 32. Por este motivo, o sistema hexadecimal, de 16 dígitos, é um standard na informática.

Como o nosso sistema de numeração só dispõe de dez dígitos, devemos incluir seis letras para completar o sistema.

Estas letras e o seu valor em decimal são: A = 10, B = 11, C = 12, D = 13, E = 14 e F = 15.

Page 11: Cálculo Numérico

10

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee O sistema hexadecimal é posicional e por ele o valor numérico associado a cada signo depende da sua posição no número, e é proporcional as diferentes potencias da base do sistema que neste caso é 16.

Vejamos um exemplo numérico: 3E0,A (16) = 3×162 + E×161 + 0×160 + A×16-1 = 3×256 + 14×16 + 0×1 + 10×0,0625 = 992,625

A utilização do sistema hexadecimal nos computadores, deve-se a que um dígito hexadecimal representa quatro dígitos binários (4 bits = 1 nibble), por tanto dois dígitos hexadecimais representam oito dígitos binários (8 bits = 1 byte) que como é sabido é a unidade básica de armazenamento de informação.

Tabela de multiplicação

1 2 3 4 5 6 7 8 9 A B C D E F 101 1 2 3 4 5 6 7 8 9 A B C D E F 10 2 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 20 3 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 30 4 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40 5 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50 6 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 60 7 7 E 15 1C 23 2A 31 38 3F 46 4E 54 5D 62 69 70 8 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80 9 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90 A A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0 B B 16 21 2C 37 42 4E 58 63 6E 79 84 8F 9A A5 B0 C C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 C0 D D 1A 27 34 41 4E 5D 68 75 82 8F 9C A9 B6 C3 D0 E E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 E0 F F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 F0 10 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100

Page 12: Cálculo Numérico

11

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Desatres Numéricos: http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html#ariane

Patriot Missile Failure On February 25, 1991, during the Gulf War, an American Patriot Missile battery in Dharan, Saudi Arabia, failed to intercept an incoming Iraqi Scud missile. The Scud struck an American Army barracks and killed 28 soldiers. A report of the General Accounting office, GAO/IMTEC-92-26, entitled Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, Saudi Arabia reported on the cause of the failure. It turns out that the cause was an inaccurate calculation of the time since boot due to computer arithmetic errors. Specifically, the time in tenths of second as measured by the system's internal clock was multiplied by 1/10 to produce the time in seconds. This calculation was performed using a 24 bit fixed point register. In particular, the value 1/10, which has a non-terminating binary expansion, was chopped at 24 bits after the radix point. The small chopping error, when multiplied by the large number giving the time in tenths of a second, lead to a significant error. Indeed, the Patriot battery had been up around 100 hours, and an easy calculation shows that the resulting time error due to the magnified chopping error was about 0.34 seconds. (The number 1/10 equals 1/24+1/25+1/28+1/29+1/212+1/213+.... In other words, the binary expansion of 1/10 is 0.0001100110011001100110011001100.... Now the 24 bit register in the Patriot stored instead 0.00011001100110011001100 introducing an error of 0.0000000000000000000000011001100... binary, or about 0.000000095 decimal. Multiplying by the number of tenths of a second in 100 hours gives 0.000000095×100×60×60×10=0.34.) A Scud travels at about 1,676 meters per second, and so travels more than half a kilometer in this time. This was far enough that the incoming Scud was outside the "range gate" that the Patriot tracked. Ironically, the fact that the bad time calculation had been improved in some parts of the code, but not all, contributed to the problem, since it meant that the inaccuracies did not cancel.

The following paragraph is excerpted from the GAO report.

The range gate's prediction of where the Scud will next appear is a function of the Scud's known velocity and the time of the last radar detection. Velocity is a real number that can be expressed as a whole number and a decimal (e.g., 3750.2563...miles per hour). Time is kept continuously by the system's internal clock in tenths of seconds but is expressed as an integer or whole number (e.g., 32, 33, 34...). The longer the system has been running, the larger the number representing time. To predict where the Scud will next appear, both time and velocity must be expressed as real numbers. Because of the way the Patriot computer performs its calculations and the fact that its registers are only 24 bits long, the conversion of time from an integer to a real number cannot be any more precise than 24 bits. This conversion results in a loss of precision causing a less accurate time calculation. The effect of this inaccuracy on the range gate's calculation is directly proportional to the target's velocity and the length of the the system has been running. Consequently, performing the conversion after the Patriot has been running continuously for extended periods causes the range gate to shift away from the center of the target, making it less likely that the target, in this case a Scud, will be successfully intercepted.

Page 13: Cálculo Numérico

12

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Explosion of the Ariane 5 On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space Agency exploded just forty seconds after lift-off. The rocket was on its first voyage, after a decade of development costing $7 billion. The destroyed rocket and its cargo were valued at $500 million. A board of inquiry investigated the causes of the explosion and in two weeks issued a report. It turned out that the cause of the failure was a software error in the inertial reference system. Specifically a 64 bit floating point number relating to the horizontal velocity of the rocket with respect to the platform was converted to a 16 bit signed integer. The number was larger than 32,768, the largest integer storeable in a 16 bit signed integer, and thus the conversion failed.

The report of the Inquiry Board is available. The following paragraphs are extracted from that report.

On 4 June 1996, the maiden flight of the Ariane 5 launcher ended in a failure. Only about 40 seconds after initiation of the flight sequence, at an altitude of about 3700 m, the launcher veered off its flight path, broke up and exploded.

The failure of the Ariane 501 was caused by the complete loss of guidance and attitude information 37 seconds after start of the main engine ignition sequence (30 seconds after lift-off). This loss of information was due to specification and design errors in the software of the inertial reference system.

The internal SRI* software exception was caused during execution of a data conversion from 64-bit floating point to 16-bit signed integer value. The floating point number which was converted had a value greater than what could be represented by a 16-bit signed integer.

*SRI stands for Système de Référence Inertielle or Inertial Reference System.

The Vancouver Stock Exchange In 1982 the Vancouver Stock Exchange instituted a new index initialized to a value of 1000.000.

The index was updated after each transaction. Twenty two months later it had fallen to 520. The cause was that the updated value was truncated rather than rounded. The rounded calculation gave a value of 1098.892.

Page 14: Cálculo Numérico

13

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Rounding error changes Parliament makeup Debora Weber-Wulff, 7 Apr 1992 We experienced a shattering computer error during a German election this past Sunday (5 April). The elections to the parliament for the state of Schleswig-Holstein were affected. German elections are quite complicated to calculate. First, there is the 5% clause: no party with less than 5% of the vote may be seated in parliament. All the votes for this party are lost. Seats are distributed by direct vote and by list. All persons winning a precinct vote (i.e. having more votes than any other candidate in the precinct) are seated. Then a complicated system (often D'Hondt, now they have newer systems) is invoked that seats persons from the party lists according to the proportion of the votes for each party. Often quite a number of extra seats (and office space and salaries) are necessary so that the seat distribution reflects the vote percentages each party got. On Sunday the votes were being counted, and it looked like the Green party was hanging on by their teeth to a vote percentage of exactly 5%. This meant that the Social Democrats (SPD) could not have anyone from their list seated, which was most unfortunate, as the candidate for minister president was number one on the list, and the SPD won all precincts: no extra seats needed. After midnight (and after the election results were published) someone discovered that the Greens actually only had 4,97% of the vote. The program that prints out the percentages only uses one place after the decimal, and had *rounded the count up* to 5%! This software had been used for *years*, and no one had thought to turn off the rounding at this very critical (and IMHO very undemocratic) region! So 4,97% of the votes were thrown away, the seats were recalculated, the SPD got to seat one person from the list, and now have a one seat majority in the parliament. And the newspapers are clucking about the "computers" making such a mistake. Debora Weber-Wulff, Institut fuer Informatik, Nestorstr. 8-9, D-W-1000 Berlin 31 [email protected] +49 30 89691 124

http://www.iki.rssi.ru/jplmirror/mars/msp98/news/mco991110.html

No comments...

Page 15: Cálculo Numérico

14

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

The sinking of the Sleipner A offshore platform

Nederlands

The Sleipner A platform produces oil and gas in the North Sea and is supported on the seabed at a water depth of 82 m. It is a Condeep type platform

with a concrete gravity base structure consisting of 24 cells and with a total base area of 16 000 m . Four cells are elongated to shafts supporting the platform deck. The first concrete base structure for Sleipner A sprang a leak and sank under a controlled ballasting operation during preparation for deck mating in Gandsfjorden outside Stavanger, Norway on 23 August 1991.

2

Immediately after the accident, the owner of the platform, Statoil, a Norwegian oil company appointed an investigation group, and SINTEF was contracted to be the technical advisor for this group.

The investigation into the accident is described in 16 reports...

The conclusion of the investigation was that the loss was caused by a failure in a cell wall, resulting in a serious crack and a leakage that the pumps were not able to cope with. The wall failed as a result of a combination of a serious error in the finite element analysis and insufficient anchorage of the

reinforcement in a critical zone.

A better idea of what was involved can be obtained from this photo and sketch of the platform. The top deck weighs 57,000 tons, and provides accommodation for about 200 people and support for drilling equipment weighing about 40,000 tons. When the first model sank in August 1991, the crash caused a seismic event registering 3.0 on the Richter scale, and left nothing but a pile of debris at 220m of depth. The

failure involved a total economic loss of about $700 million.

The 24 cells and 4 shafts referred to above are shown to the left while at the sea surface. The cells are 12m in diameter. The cell wall failure was traced to a tricell, a triangular concrete frame placed where the cells meet. At right one is pictured undergoing failure testing.

The post accident investigation traced the error to inaccurate finite element approximation of the linear elastic model of the tricell (using the popular finite element program NASTRAN). The shear stresses

Page 16: Cálculo Numérico

15

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee were underestimated by 47%, leading to insufficient design. In particular, certain concrete walls were not thick enough. More careful finite element analysis, made after the accident, predicted that failure would occur with this design at a depth of 62m, which matches well with the actual occurrence at 65m.

Further information can be found in the series of reports available for purchase from SINTEF and in an article from Concrete International, August 1997. This description is adapted from The sinking of the Sleipner A offshore platform by Douglas N. Arnold.

The Tacoma bridge (erro de projeto)

On November 7, 1940, at approximately 11:00 AM, the first Tacoma Narrows suspension bridge collapsed due to wind-induced vibrations. Situated on the Tacoma Narrows in Puget Sound, near the city of Tacoma, Washington, the bridge had only been open for traffic a few months. There is a short video of the bridge just before break-down (copyright owner The Camera Shop). There are also photo's available.

Te twisting motion of the center span just prior to failure.

Page 17: Cálculo Numérico

16

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

The nature and severity of the torsional movement is revealed in this picture taken from the Tacoma end of the suspension span. When the twisting motion was at the maximum, elevation of the sidewalk at the

right was 28 feet (8.5m) higher than the sidewalk at the left.

This photograph actually caught the first failure shortly before 11 o'clock, as the first concrete dropped out of the roadway.

Page 18: Cálculo Numérico

17

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

A few minutes after the first piece of concrete fell, this 600 foot section broke out of the suspension span, turning upside down as it crashed in Puget Sound. Notice the car in the top right corner.

This photograph shows the sag in the east span after the failure. With the centre span gone there was nothing to counter balance the weight of the side spans. The sag was 45 feet (13.7m). Also the immense

size of the anchorages is illustrated.

Page 19: Cálculo Numérico

18

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

This picture was taken shortly after the failure.

Page 20: Cálculo Numérico

19

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Capítulo 1 (aulas 03 a 05) Zeros de Funções Reais

Freqüentemente, um problema de Física, Engenharia (entre outros) é resolvido encontrando-se o(s) valor(es) para o(s) qual(is) uma determinada função se anula:

( ) 0=xf . (1.1) Muitas vezes o problema a ser resolvido não é linear e as funções são do tipo polinomial de ordem alta ou transcendental (seno, co-seno, exponencial, etc...) e não há receitas diretas simples para

resolvê-lo, como seria no caso de um polinômio de segundo grau, ou mesmo do quarto, para os quais existe solução algébrica. Às vezes poderemos usar os métodos que veremos nesse capítulo para encontrar valores para os quais não há uma representação finita, como por exemplo 2 , fazendo ( ) 02 2 =−= xxf .

Para encontrar os valores da variável x em que a função se anula nessas funções, podemos lançar mão de uma variedade de métodos, a maioria deles do tipo iterativo, isto é, que consistem de procedimentos que se

repetem até que uma determinada condição (chamada critério de parada) seja satisfeita.

Figura 1.1

O gráfico ao lado mostra um exemplo de função que tem mais de uma raiz. Graficamente, é simples identificar a condição de nulidade da função quando sua curva corta o eixo das abscissas e o estudo das funções (domínio, pontos de máximo e mínimo, pontos de inflexão, etc...) é valioso para se encontrar o valor dessas raízes. Podemos, todavia, evitar a maior parte desse trabalho e concentrarmo-nos na busca do valor das raízes apenas.

Não raro, a solução do problema (1.1) só é possível no plano complexo e teríamos que utilizar métodos um tanto mais complicados para encontrá-las. Aqui trataremos apenas de raízes reais.

Basicamente são dois os passos necessários para a determinação das raízes das funções: I) Isolamento das raízes. II) Refinamento.

No primeiro passo, encontramos um

intervalo [a,b], dentro do qual a raiz se encontra. A forma mais direta de fazê-lo é ir substituindo valores para a função até percebermos que ela muda de sinal,

0)()( <⋅ bfaf . (1.2) Note que o fato esta condição não ser

confirmada não exclui necessariamente a presença de raízes no intervalo, como no caso da figura 1.2

-2 -1 1 2

0.25

0.5

0.75

1

1.25

1.5

1.75

a b

Figura 1.2

Page 21: Cálculo Numérico

20

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee No segundo passo, precisamos utilizar algum método que aproxime cada vez mais um valor ou

uma faixa de valores iniciais do valor real da raiz. O método precisa ser eficaz (precisa convergir para a solução) e ser eficiente (convergir num número de iterações não muito grande) para ser útil, e a cada situação o método mais indicado pode variar. Cada um desses métodos é iterativo (recorrente) e segue um fluxograma básico de funcionamento da seguinte forma:

A partir de agora descreveremos sucintamente cada um dos métodos básicos para se encontrar raízes de funções não-lineares:

Dados Iniciais

Cálculos iniciais

k=1

Calcular Aproximação

Critério de Parada

Cálculos Intermediários

Cálculos Finais

k=k+1

Fim

S

N

Figura 1.1 Fluxograma geral dos métodos iterativos

1) Método da Bissecção: 2) Método do Ponto Falso: 3) Método do Ponto Fixo; 4) Método de Newton-

Raphson; 5) Método da Secante.

A seguir compararemos a

convergência dos métodos. Antes disso porém, discutiremos um pouco os critérios que temos que satisfazer para definir s nossos cálculos já produziram resultados satisfatórios ou não, os chamados Critérios de Parada.

Basicamente, podemos elencar dois critérios de parada bastante simples e intuitivos. O primeiro

é o da proximidade da solução, ou seja, o quão longe da solução final (ξ) está o valor de x com que estamos trabalhando. Claro que, por definição, não sabemos de antemão o valor de ξ, mas podemos trabalhar com intervalos gradualmente reduzidos dentro dos quais sabemos que a raiz se encontra (como veremos mais adiante no método da bissecção).

Assim, se 1εξ <−kx , onde xk é a k-ésimo valor de x que tentamos e ε1 é o nosso erro tolerável, damo-nos por satisfeitos e encerramos o cálculo.

Um segundo critério é o do valor da função f(xk) no ponto em que estamos trabalhando. Se ( ) 2ε<kxf , encerraremos o processo iterativo.

Cada um desses critérios tem suas vantagens e desvantagens, e devamos escolher o método baseado no problema específico que estamos resolvendo. O primeiro critério, por exemplo, pode não ser suficiente na medida em que temos uma derivada alta da função e, mesmo estando próximos de ξ, podemos ter um valor excessivamente grande de f(xk). O segundo critério pode falhar exatamente na situação oposta. Podemos ter a função variando pouco próximo à solução, ou mesmo de outra forma alcançarmos um valor pequeno para f(xk) mesmo estando longe da solução ξ.

Podemos também usar ambos os critérios, para assegurar que estamos realmente próximos de ξ e com valor pequeno de f, mas isso pode implicar num tempo de cálculo excessivamente grande. A cada caso devemos julgar nossas necessidades e recursos (sempre escassos) para obtermos o melhor resultado possível.

Page 22: Cálculo Numérico

21

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

I Método da Bissecção: Consiste em, depois de isolado o intervalo [a,b], dividir esse intervalo ao meio sucessivas vezes,

sempre mantendo a raiz dentro do intervalo de cada iteração. Exemplo: A função cujo gráfico é mostrado abaixo tem uma raiz claramente no intervalo [1, 2].

Se dividirmos esse intervalo em dois, teremos dois intervalos: [1, 1,5] e [1,5 , 2]. Pelo mesmo teste (1.2) vemos que a raiz continua no segundo sub-intervalo, que será novamente dividido ao meio, assim,

podemos seguir os intervalos a cada iteração (k) através da tabela abaixo e esse intervalo sempre converge para a raiz.

O problema do método da bissecção é que ele converge de forma extremamente lenta. Podemos ver que os intervalos seguem uma progressão da forma

kkk

kkabab

ab22

0011 −=

−=− −− .

Como o critério de parada naturalmente indicado é o de que ε<−

k

ab2

00 , temos que

kab200 <

−ε

,

( ) ( ) ( )εloglog2log 00 −−> abk e, obtemos a convergência necessária após um número de iterações

( ) ( )( )2log

loglog 00 ε−−>

abk

II Método da Posição Falsa Para resolver, em parte esse problema, criou-se o método derivado do método da Bissecção que

tenta acelerar a convergência fazendo não uma média aritmética do intervalo, mas uma média ponderada, em que o peso das aproximações para cada extremo do intervalo [a,b] é o valor da função no outro extremo, assim, o ponto de bissecção passa a pender mais para o lado em que os valores da função se aproximam mais de zero. Tal método é chamado de Método da Posição Falsa. Neste, a k-ésima posição é dada por

( ) ( )( ) ( )11

111

−−

−−−−

−−

=kk

kkkakk afbf

afbbfax .

k x f(x) bk-ak1 1,5 -0.0252505 0,5 2 1,75 0.0358986 0,25 3 1,625 0.00610313 0,125 4 1,5625 -0.00937844 0,0625 5 1,59375 -0.00158884 0,03125 6 1,60938 0.00226934 0,015625 7 1,61719 0.00418929 0.0078125 8 1.61328 0.00323008 0.000339674 9 1.61133 0.0027499 0.000169837 10 1.61035 0.00250967 0.0000849185

0.2

-1 1 2 3

-0.8

-0.6

-0.4

-0.2

a0 b0 a1

Figura 1.2 f(x) =0,25(x-2) + 0.1 sen[x]

Page 23: Cálculo Numérico

22

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee

Assim, para a função , podemos observar no gráfico da Figura 1.3 que x é bem mais próximo de ξ do que se utilizássemos o método da Bissecção.

39)( 3 +−= xxxf

Observe que, da mesma forma que o método da Bissecção, o método da posição falsa converge sempre que a função é contínua no intervalo [a,b]. Se a derivada segunda da função não muda no intervalo, essa convergência é ainda mais visível. Tente iniciar este processo no mesmo gráfico ao lado usando como a0 o ponto x=1 e verás que a convergência fica um tanto retardada por conta da proximidade com outra raiz externa ao intervalo. -1 1 2 3 4 5

10

20

30

a0 b0

x1

ξ

Figura 1.3

III Método do Ponto Fixo

Este método consiste em transformar a equação de forma a se obter o valor de x a partir de uma função de iteração ϕ(x) que é fruto da própria função original. Fazendo x=ϕ(x), podemos entender esse processo como a interseção do gráfico da função ϕ(x) com a função identidade. Por exemplo: Seja a função

( ) 062 =−+= xxxf . Podemos imaginar várias funções de iteração:

( )( )

( )

( ) .1

6

e 16;6

;6

4

3

22

1

+=

−=

−=

−=

xx

xx

xx

xx

ϕ

ϕ

ϕ

ϕ

A forma geral das funções é do tipo

( ) ( ) ( )xfxAxx +=ϕ , com a condição de que A(ξ)≠0. Vemos no gráfico da Figura 1.4 um exemplo em que a função de iteração que leva o procedimento a uma convergência á raocorre.

iz da função. Infelizmente, nem sempre a convergência

No caso da função mostrada acima, tomemos a função de convergência ϕ2(x) com x0=1,5. Teremos x1=6-1,52=3,75;

x2=6-3,752=-8.0625; x3=6-(-8.0625)2=-59.003906;

... e o resultado diverge.

Page 24: Cálculo Numérico

23

NNoottaass ddee AAuullaa ddee AAnnáálliissee NNuumméérriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Se tomarmos a ϕ1(x), com o mesmo valor inicial, teremos:

...;99809,196944,16

;96944,112132,26

;12132,2516

3

2

1

==

==

==

-x

-x

,-x

que converge rapidamente para a solução ξ=2. O que precisamos agora é de um critério para escolhermos entre as várias possíveis funções de iteração que podem ser apresentadas para a solução de um dado problema. O critério que usaremos é baseado no seguinte teorema: Se i) ϕ(x) e ϕ’(x)são contínuas num intervalo I centrado em ξ , ii) ,1)(' <≤ Mxϕ para qualquer x pertencente ao intervalo I e iii) x0 pertence a I. Então a seqüência de iterações {xk}convergirá para ξ.


Top Related