157
CÁLCULO NUMÉRICO USANDO O MATLAB 1 Profa. Waléria A. G. Cecílio, Profa. Mônica D. S. Damaris e Prof. Wadilson K. F. Pereira CÁLCULO NUMÉRICO USANDO O MATLAB

Apostila CN 2013

Embed Size (px)

Citation preview

Page 1: Apostila CN 2013

CÁLCULO NUMÉRICO USANDO O MATLAB

1

Profa. Waléria A. G. Cecílio,

Profa. Mônica D. S. Damaris e

Prof. Wadilson K. F. Pereira

CÁLCULO NUMÉRICO USANDO O MATLAB

Page 2: Apostila CN 2013

Cálculo Numérico usando MatLab

2

SUMÁRIO

1. O MATLAB ............................................................................................................ 4

1.1 O AMBIENTE DE TRABALHO ................................................................................................................4

1.2 NÚMEROS E EXPRESSÕES ARITMÉTICAS ...............................................................................5

1.3 RESOLUÇÕES DE EXPRESSÕES ...............................................................................................7

1.4 OBTENDO INFORMAÇÕES DA ÁREA DE TRABALHO ..............................................................................8

1.5 FORMATO DE SAÍDA .......................................................................................................................8

1.6 ALGUNS COMANDOS E OBSERVAÇÕES: ..............................................................................................9

1.7 FUNÇÕES MATEMÁTICAS ELEMENTARES .......................................................................................... 11

2. MATRIZES E VETORES....................................................................................... 13

2.1 ALGUMAS MATRIZES ESPECIAIS ...................................................................................................... 14

2.2 CONCATENAÇÃO DE MATRIZES ....................................................................................................... 16

2.3 OPERAÇÕES COM MATRIZES ................................................................................................. 19

3. SOLUÇÃO E REPRESENTAÇÃO DE SISTEMAS DE EQUAÇÕES LINEARES 23

4. MATEMÁTICA SIMBÓLICA ................................................................................. 29

4.1 SUBSTITUIÇÃO DE VARIÁVEIS ......................................................................................................... 30

4.2 DERIVAÇÃO E INTEGRAÇÃO ............................................................................................................ 31

4.3 EXERCÍCIOS PROPOSTOS .............................................................................................. 33

5. AMBIENTE GRÁFICO .......................................................................................... 38

5.1 ALGUNS COMANDOS E FUNÇÕES ..................................................................................................... 41

6. LÓGICA E ALGORITMO ...................................................................................... 48

6.1 PROGRAMAS ................................................................................................................................. 50

6.2 CONSTRUÇÃO DE ALGORITMOS ...................................................................................................... 50

6.3 REGRAS PARA CONSTRUÇÃO DO ALGORITMO .................................................................................. 51

6.3.1 Fases ................................................................................................................................... 51

6.3.2 Teste de Mesa ..................................................................................................................... 52

6.3.3 Diagrama de Bloco .............................................................................................................. 53

6.4 CONSTANTES E VARIÁVEIS ............................................................................................................. 55

6.4.1 Variáveis .............................................................................................................................. 55

6.4.2 Constantes ........................................................................................................................... 56

6.5 OPERADORES ............................................................................................................................... 56

6.5.1 Operadores Aritméticos ....................................................................................................... 56

6.5.2 Operadores Relacionais ...................................................................................................... 56

7. ROTINAS (M-FILES OU SCRIPTS) ...................................................................... 59

7.1 CONSTRUINDO UM PROGRAMA ............................................................................................. 59

7.2 ENTRADA DE DADOS EM UMA ROTINA .................................................................................. 62

7.3 O COMANDO DE SAÍDA DISP() .................................................................................................. 65

Page 3: Apostila CN 2013

Cálculo Numérico usando MatLab

3

8. OPERADORES LÓGICOS ................................................................................... 67

8.1 SENTENÇAS CONDICIONAIS ................................................................................................... 68

8.1.1 ESTRUTURAS DE DECISÃO ............................................................................................. 68

8.2 ESTRUTURAS DE REPETIÇÃO ................................................................................................ 73

8.2.1 A estrutura for - end ............................................................................................................. 74

8.2.2 A estrutura while - end ......................................................................................................... 76

8.3 OBSERVAÇÕES IMPORTANTES .............................................................................................. 79

9. FUNÇÕES ............................................................................................................. 85

9.1 ESTRUTURAS DE UMA FUNÇÃO ................................................................................................... 85

9.1.1 Declaração da função .......................................................................................................... 85

9.1.2 Corpo da função .................................................................................................................. 86

9.2 SALVANDO E EXECUTANDO UMA FUNÇÃO ....................................................................................... 86

10. ZEROS DE FUNÇÕES ALGEBRICAS OU TRANSCENDENTES ..................... 92

“UM NÚMERO REAL X* É UM ZERO DA FUNÇÃO F(X) OU UMA RAIZ DA

EQUAÇÃO ................................................................................................................ 92

F(X) = 0 SE F(X*)=0.” ............................................................................................... 92

10.1 INTERPRETAÇÃO GEOMETRICA E TEOREMA DE BOLZANO. ............................................ 93

10.1.1 MÉTODO GRÁFICO.......................................................................................................... 93

10.1.2 MÉTODO ANALÍTICO ....................................................................................................... 95

10.1.3 Exercícios: ......................................................................................................................... 96

10.2 PROCESSO ITERATIVO DE REFINAMENTO ......................................................................... 97

10.2.1 CRITÉRIOS DE PARADA ................................................................................................. 98

10.3 MÉTODO DA BISSECÇÃO ....................................................................................................... 98

10.4 MÉTODO DE NEWTON-RAPHSON ................................................................................................ 103

11. RESOLUÇÃO DE SISTEMAS LINEARES ....................................................... 111

11.1 MÉTODO DE ELIMINAÇÃO DE GAUSS ................................................................................ 112

11.2 MÉTODO DE ELIMINAÇÃO DE GAUSS COM PIVOTEAMENTO PARCIAL ......................... 117

11.3. FATORAÇÃO LU COM ESTRATÉGIA DE PIVOTEAMENTO PARCIAL ............................... 119

11.4 MÉTODO DE GAUSS-JACOBI ............................................................................................... 124

12. INTERPOLAÇÃO POLINOMIAL ...................................................................... 131

12.1 FORMA DE NEWTON................................................................................................................... 134

13. AJUSTE DE FUNÇÕES .................................................................................... 143

13.1 MÉTODO DOS MÍNIMOS QUADRADOS .......................................................................................... 143

13.2 AJUSTE POLINOMIAL .................................................................................................................. 144

14. INTEGRAÇÃO NUMÉRICA .............................................................................. 149

14. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS .................................................... 153

Page 4: Apostila CN 2013

Cálculo Numérico usando MatLab

4

1. O MATLAB

O MATLAB é um sistema interativo cujo elemento básico de informação é

uma matriz que não requer dimensionamento. Esse sistema permite a resolução de

muitos problemas numéricos em apenas uma fração de tempo que se gastaria para

escrever um programa semelhante em linguagem Fortran, Basic ou C. Além disso,

as soluções dos problemas são expressas no MATLAB quase exatamente como

elas são escritas matematicamente.

1.1 O AMBIENTE DE TRABALHO

Quando iniciamos o MATLAB, o Comando Window é criado e se torna ativo.

É através deste que nos comunicamos com o interpretador MATLAB, isto é, é a área

na qual são digitados dados e instruções para o MATLAB. Desta forma, após digitar

o comando, basta acionar a tecla enter e os resultados são exibidos na tela.

Sinal de prompt ‘>>’ Indica estado de espera de entrada de dados.

Page 5: Apostila CN 2013

Cálculo Numérico usando MatLab

5

Outras janelas:

[Command Directory]: Área na qual é exibida a lista dos arquivos contidos no

diretório corrente.

[Workspace]: Área de memória de trabalho do MATLAB, na qual ficam armazenadas

todas as variáveis criadas na janela de comando.

[Launch Pad]: Área na qual são exibidas informações, textos explicativos (online

help) e exemplos de utilização dos produtos instalados.

[Help]

1.2 NÚMEROS E EXPRESSÕES ARITMÉTICAS

Declarações e Variáveis

As declarações no MATLAB são frequentemente da forma

>> variável = expressão

Ou simplesmente

>> expressão

Page 6: Apostila CN 2013

Cálculo Numérico usando MatLab

6

As expressões são compostas de operadores e outros caracteres especiais,

de funções e dos nomes das variáveis. A avaliação das expressões produzem

matrizes, que são então mostradas na tela e atribuídas às variáveis para uso futuro.

Se o nome da variável e o sinal de igualdade “=” são omitidos, a variável com o

nome ans, que representa a palavra “answer” (resposta), é automaticamente criada.

Por exemplo:

>> 1245/123

ans =

10.1220

>> 53-4

ans =

49

>> 53-4;

Se o último caractere da declaração é um ponto e vírgula, a impressão na tela

é suprimida, mas a tarefa é realizada. Esse procedimento, em geral, é usado em

arquivos do tipo script (<nome>.m) e em situações onde o resultado é uma matriz de

grandes dimensões e temos interesse em apenas alguns dos seus elementos.

Se a expressão é tão grande que não cabe em apenas uma linha, pode-se continuar

a expressão na próxima linha usando um espaço em branco e três pontos ”...”, ao

final das linhas incompletas.

Por exemplo:

>> k=1/2 +3 -4/5 -3 +1 + 4 - 9 ...

+ 4 + 5/6 +7/4

k =

2.2833

Observe que o espaço em branco entre “-9” e “...” é obrigatório.

A notação decimal convencional, com ponto decimal opcional e o sinal de

menos, são usados para números. A potência de dez pode ser incluída como um

sufixo. A seguir são mostrados alguns exemplos de números aceitos:

Page 7: Apostila CN 2013

Cálculo Numérico usando MatLab

7

3 -99 0.00003

3.147458638 1.512E-20 6.097885e21

As expressões podem ser construídas usando os operadores aritméticos

usuais e as regras de precedência:

^ exponenciação

/ divisão a direita

\ divisão a esquerda

* multiplicação

+ adição

- subtração

Deve-se notar que existem dois símbolos para divisão: as expressões 1/4 e

4\1 possuem o mesmo valor numérico, isto é, 0.25.

1.3 RESOLUÇÕES DE EXPRESSÕES

Toda expressão é calculada da esquerda para a direita utilizando as

definições da Matemática, isto é:

Potenciação � Multiplicação ou divisão �Adição e subtração

Sempre obedecendo a ordem de procedência. Para definir ou alterar a ordem

de procedência utiliza-se do sinal de parênteses.

Page 8: Apostila CN 2013

Cálculo Numérico usando MatLab

8

Exemplo:

>> a=(7+3^3)/(5^5-2)

a =

0.0109

>> b=(3^5)/34.5

b =

7.0435

>> sol=a-b

sol =

-7.0326

1.4 OBTENDO INFORMAÇÕES DA ÁREA DE TRABALHO

Os exemplos de declarações mostrados nos itens acima criaram variáveis que

são armazenadas na Área de Trabalho do MATLAB. Executando

>> who

obtêm-se uma lista das variáveis armazenadas na Área de Trabalho:

Your variables are:

a ans b k sol

Que mostra as cinco variáveis geradas em nossos exemplos, incluindo ans. Uma

informação mais detalhada mostrando a dimensão de cada uma das variáveis

correntes é obtida com o comando whos.

Cada elemento de uma matriz real requer 8 bytes de memória, assim nossa

matriz sol de dimensão 1x1 usa 8 bytes. Seguindo o mesmo raciocínio, uma matriz

A de dimensão 3x3 usa 72 bytes.

1.5 FORMATO DE SAÍDA

O formato numérico exibido na tela pode ser modificado utilizando-se o

comando format, que afeta somente o modo como as matrizes são mostradas, e

não como elas são computadas ou salvas. O MATLAB efetua todas as operações

Page 9: Apostila CN 2013

Cálculo Numérico usando MatLab

9

em dupla precisão. A precisão dupla fornece uma relativa precisão de cerca de 16

dígitos decimais e intervalo de magnitude de 10-308 a 10+308.

Se pelo menos um dos valores de entrada não é inteiro, existem várias

possibilidades de formatar a saída. O formato “default”, chamado de formato short,

mostra aproximadamente 5 dígitos significativos ou usam notação científica.

Podemos verificar os tipos de formatos existentes no MATLAB, seguindo o caminho:

File � Preferences � Numeric format.

1.6 ALGUNS COMANDOS E OBSERVAÇÕES:

As teclas seta para cima e seta para baixo repetem os comandos digitados

anteriormente. Além das teclas com setas, podem-se usadas outras teclas para

reeditar a linha de comando.

Retorna a linha anterior

Retorna a linha posterior

Move um espaço para a esquerda

Move um espaço para a direita

Ctrl Move uma palavra para a esquerda

Ctrl Move uma palavra para a direita

Home Move para o começo da linha

End Move para o final da linha

Del Apaga um caractere a direita

Backspace Apaga um caractere a esquerda

Page 10: Apostila CN 2013

Cálculo Numérico usando MatLab

10

O símbolo % indica textos de comentário

Cores (classes sintáticas)

Palavras reservadas (for, end, if, ...). (azul)

Textos de comentários. (verde)

Mensagem de erro. (vermelho)

Funções e variáveis. (preto)

Cores e fonte de textos da janela de comandos e cor de fundo, podem ser

alterados pelo comando preferences.

Sinal ‘ - ’ para indicar número negativo.

‘ . ’ para indicar casa decimal.

ans é uma variável reservada, que armazena o último valor calculado pelo

MATLAB.

pi: 3.141592...;

‘i’ e ‘j’: raiz imaginária (raiz quadrada de -1);

eps: Precisão numérica relativa;

realmin: menor número real;

realmax: maior número real;

Inf: infinito. Ex: 1/0;

Nan: not a number. Exemplo: 0/0.

Nome de Variáveis

Deve ser alfanumérico, iniciando com letra.

Diferencia letras maiúsculas e minúsculas (case-sensitive)

Aceita caractere ‘_’ no meio do nome

Pode ter no máximo 32 caracteres

Todas as funções do MATLAB devem ser escritas em letras minúsculas:

inv(A) calcula a inversa de A, mas INV(A) é uma função indefinida.

clear all – apaga todos os dados da memória

clc – limpa a janela de comandos

close - fecha todas as Janelas Gráficas

Page 11: Apostila CN 2013

Cálculo Numérico usando MatLab

11

A execução do MATLAB poderá ser interrompida a qualquer momento

pressionando as teclas Ctrl e C simultaneamente.

1.7 FUNÇÕES MATEMÁTICAS ELEMENTARES

|x| abs(x)

sen(x) sin(x)

cos(x) cos(x)

tg(x) tan(x)

cossec(x) csc(x)

sec(x) sec(x)

cotg(x) cot(x)

arcsen(x) asin(x)

arccos(x) acos(x)

arctg(x) atan(x)

arccossec(x) acsc(x)

arcsec(x) asec(x)

arccotg(x) acot(x)

ex exp(x)

ln(x)=loge(x) log(x)

log10(x) log10(x)

Log2(x) log2(x)

sqrt(x)

x^(b/a)

pi

n! factorial(n) para n<21

Page 12: Apostila CN 2013

Cálculo Numérico usando MatLab

12

IMPORTANTE: O MATLAB operara com arcos trigonométricos somente em

radianos.

Page 13: Apostila CN 2013

Cálculo Numérico usando MatLab

13

2. MATRIZES E VETORES

O método mais fácil de entrar com pequenas matrizes no MATLAB é usando

uma lista explícita. Os elementos de cada linha da matriz são separados por

espaços em branco ou vírgulas e as colunas separadas por ponto e vírgula,

colocando-se colchetes em volta do grupo de elementos que formam a matriz. Por

exemplo, entre com a expressão:

>> A=[ 12 3; 45 6; 78 9 ]

Pressionando <enter> o MATLAB mostra o resultado

A=

12 3

45 6

78 9

A matriz A é salva na memória RAM do computador, ficando armazenada

para uso posterior.

A expressão A ( : ) equivale a uma matriz coluna que contém a primeira

coluna de A, seguida pelas coluna subsequentes.

>> A(:)

12

45

78

3

6

9

Em algumas situações é importante definir as dimensões e o número de

elementos de uma matriz. Desta forma, temos:

size(matriz) – todas as dimensões da matriz

length(matriz) – maior dimensão da matriz

Page 14: Apostila CN 2013

Cálculo Numérico usando MatLab

14

numel(matriz) – numero de elementos na matriz

>> size(A)

ans =

3 2

>> length(A)

ans =

3

>> numel(A)

ans =

6

2.1 ALGUMAS MATRIZES ESPECIAIS

• Matriz Nula

>> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

• Matriz com 1 em todas as posições

>> ones(2,3)

ans =

1 1 1

1 1 1

Page 15: Apostila CN 2013

Cálculo Numérico usando MatLab

15

• Matriz com elementos randômicos uniformente distribuidos

>> rand(2)

ans =

0.8687 0.3998

0.0844 0.2599

• Matriz identidade

>> eye(3)

ans =

1 0 0

0 1 0

0 0 1

Há várias maneiras de gerar uma matriz coluna ou linha. Como exemplo, temos:

>> a1=[1 2 3 4 5 6 7 8 9 10]

a1 =

1 2 3 4 5 6 7 8 9 10

>> a1=1:10

a1 =

1 2 3 4 5 6 7 8 9 10

A declaração 1:10 gera um vetor linha contendo os números de 1 a 10 com

incremento unitário. Outros incrementos, diferentes de um, podem ser usados.

>> a2=1:2:10

a2 =

1 3 5 7 9

Page 16: Apostila CN 2013

Cálculo Numérico usando MatLab

16

Incrementos negativos também são possíveis:

>> a3=10:-1:1

a3 =

10 9 8 7 6 5 4 3 2 1

Pode-se, também, gerar vetores usando a função linspace. Por exemplo,

>> x=linspace(2,10,5)

x =

2 4 6 8 10

gera um vetor linearmente espaçado de 2 até 10, contendo 5 elementos.

2.2 CONCATENAÇÃO DE MATRIZES

O MATLAB permite a manipulação de linhas, colunas, elementos individuais e

partes de matrizes. Um elemento individual da matriz pode ser chamado com índice

entre parênteses. Observe o exemplo:

>> A=[2 -2 3;4 5 -5;7 -4 9]

A =

2 -2 3

4 5 -5

7 -4 9

>> A(2,1) produz:

ans =

4

Page 17: Apostila CN 2013

Cálculo Numérico usando MatLab

17

Uma entrada da matriz (elemento individual) pode ser modificada.

>> A(2,1) = A(2,2) + A(3,2)

Resulta em

A =

2 -2 3

1 5 -5

7 -4 9

Também podemos tomar uma parte de uma matriz. Por exemplo, suponha

que D é uma matriz de ordem 6x6 criada randomicamente.

>> D=rand(6)

D =

0.4087 0.1174 0.2625 0.5785 0.2316 0.9880

0.5949 0.2967 0.8010 0.2373 0.4889 0.0377

0.2622 0.3188 0.0292 0.4588 0.6241 0.8852

0.6028 0.4242 0.9289 0.9631 0.6791 0.9133

0.7112 0.5079 0.7303 0.5468 0.3955 0.7962

0.2217 0.0855 0.4886 0.5211 0.3674 0.0987

então

>> D(1:5,3)

ans =

0.2625

0.8010

0.0292

0.9289

0.7303

Especifica uma submatriz 5x1, ou vetor coluna, que consiste dos cinco primeiros

elementos da terceira coluna da matriz D. Analogamente,

Page 18: Apostila CN 2013

Cálculo Numérico usando MatLab

18

>> D(1:5,2:4)

ans =

0.1174 0.2625 0.5785

0.2967 0.8010 0.2373

0.3188 0.0292 0.4588

0.4242 0.9289 0.9631

0.5079 0.7303 0.5468

É uma submatriz 5x3, consiste das primeiras cinco linhas e as colunas dois, três e

quatro. Também podemos tomar uma parte da matriz D, tal que a nova matriz é

definida através dos elementos da linha dois e três e colunas quatro e cinco, desta

forma, definimos:

>> D([2, 3],[4,5])

ans =

0.2373 0.4889 0.6241

É possível definir uma matriz de dimensão zero por zero a D, isto é: D=[ ].

Subsequente uso desta matriz não conduz a uma condição de erro; ele propaga

matriz vazia. Isto é diferente de declaração

Clear D

que remove D da lista das variáveis corrente.

O comando a seguir, atribui vazio a linha três da matriz D.

>> D(3,:)=[ ]

D =

0.4087 0.1174 0.2625 0.5785 0.9880

0.5949 0.2967 0.8010 0.2373 0.0377

0.6028 0.4242 0.9289 0.9631 0.9133

0.7112 0.5079 0.7303 0.5468 0.7962

0.2217 0.0855 0.4886 0.5211 0.0987

Page 19: Apostila CN 2013

Cálculo Numérico usando MatLab

19

2.3 OPERAÇÕES COM MATRIZES

O caractere apóstrofo, “ “ , indica a transposta de uma matriz. Seja a matriz A

definida abaixo:

>> A =[1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

A declaração A’ define a transposta da matriz A:

>> A'

ans =

1 4 7

2 5 8

3 6 9

A adição e subtração de matrizes são indicadas, respectivamente, por “+” e

“-“. As operações são definidas somente se as matrizes são de mesmas dimensões.

>> A-A'

ans =

0 -2 -4

2 0 -2

4 2 0

>> A+A'

ans =

2 6 10

6 10 14

10 14 18

Page 20: Apostila CN 2013

Cálculo Numérico usando MatLab

20

A adição e subtração também são definidas se um dos operadores é um

escalar, ou seja, uma matriz 1 x 1. Neste caso, o escalar é adicionado ou subtraído

de todos os elementos do outro operador.

Por exemplo:

>> A+2

ans =

3 4 5

6 7 8

9 10 11

A multiplicação de matrizes é indicada por “*”. A multiplicação A*S é definida

somente se o número de colunas da matriz A é igual ao número de linhas da matriz

S.

Exemplo:

>> S=[1 2 ; 3 4; 7 2]

S =

1 2

3 4

7 2

>> A*S

ans =

28 16

61 40

94 64

Page 21: Apostila CN 2013

Cálculo Numérico usando MatLab

21

Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.

>> A*2

ans =

2 4 6

8 10 12

14 16 18

A expressão A^p eleva A à p-ésima potência e é definida se A é matriz

quadrada e p um escalar. Se p é um inteiro maior do que um, a exponenciação é

computada como múltiplas multiplicações. Por exemplo,

>> A^3

ans =

468 576 684

1062 1305 1548

1656 2034 2412

Suponha que M e N sejam vetores linha com quatro elementos. Para gerar

um novo vetor F com valores que sejam produtos dos valores correspondentes em

M e N, temos:

>> M=[1 3 5 7]

M =

1 3 5 7

>> N=[-2 3 4 1]

N =

-2 3 4 1

Page 22: Apostila CN 2013

Cálculo Numérico usando MatLab

22

>> F=M.*N

F =

-2 9 20 7

Se o ponto for omitido, a operação executada será uma operação matricial.

Neste caso, a operação não seria possível. Da mesma forma, temos:

>> A =[1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

>> A^2

ans =

30 36 42

66 81 96

102 126 150

>> A.^2

ans =

1 4 9

16 25 36

49 64 81

Page 23: Apostila CN 2013

Cálculo Numérico usando MatLab

23

3. SOLUÇÃO E REPRESENTAÇÃO DE SISTEMAS DE EQUAÇÕES

LINEARES

Um Sistema de equações lineares consiste em um conjunto de m equações

polinomiais com n variáveis xj de grau 1, que podem ser representadas na forma:

=

⇔=

mnmnmmm

n

n

n

b

b

b

b

x

x

x

x

aaaa

aaaa

aaaa

aaaa

bAx

MM

L

MOMMM

L

L

L

3

2

1

3

2

1

321

3333231

2232221

1131211

Em muitos problemas de engenharia estamos interessados em determinar se

existe uma solução para o sistema de equações lineares que descreve uma parte do

problema real.

Matriz dos coeficientes Vetor Solução

Vetor dos termos independentes

=++++

=++++

=++++

=++++

mnmnmmm

nn

nn

nn

bxaxaxaxa

bxaxaxaxa

bxaxaxaxa

bxaxaxaxa

K

M

K

K

K

332211

33333232131

22323222121

11313212111

Page 24: Apostila CN 2013

Cálculo Numérico usando MatLab

24

Na construção civil: TRELIÇAS

Problema: Determinar as componentes horizontal e vertical das forças que

atuam nas junções da treliça:

Para isso é necessário determinar as 17 forças desconhecidas que atuam

nesta treliça.

Page 25: Apostila CN 2013

Cálculo Numérico usando MatLab

25

Um sistema de equações lineares poderá ser resolvido no MATLAB de

diversas formas:

Assumindo o sistema de equações apresentado abaixo, temos:

=−−+

−=−++

=+++

=+−−

3223

1242

6

0

wzyx

wzyx

wzyx

wzy

onde

−−

−−

=

2213

2142

1111

1110

A ,

−=

3

1

6

0

b e

=

w

z

y

x

X

Definindo a matriz dos coeficientes e o vetor dos termos independentes no

MATLAB, temos:

>> A=[0 -1 -1 1; 1 1 1 1 ;2 4 1 -2;3 1 -2 -2]

A =

0 -1 -1 1

1 1 1 1

2 4 1 -2

3 1 -2 -2

Page 26: Apostila CN 2013

Cálculo Numérico usando MatLab

26

>> b=[0; 6;-1;3]

b =

0

6

-1

3

A inversa da matriz A poderá ser calculada usando o comando inv:

>> inv(A)

ans =

-3/5 3/5 -2/5 2/5

1 -1/3 2/3 -1/3

-6/5 8/15 -7/15 2/15

4/5 1/5 1/5 -1/5

Se existe a inversa da matriz A, o vetor solução é definido por:

>> X=inv(A)*b

X =

26/5

-11/3

61/15

2/5

Ou ainda, independente de existir ou não a inversa da matriz A, podemos

obter a solução do problema escalonando a matriz aumentada do sistema [A,b]. No

MATLAB podemos usar o comando rref:

Page 27: Apostila CN 2013

Cálculo Numérico usando MatLab

27

>> [A,b]

ans =

0 -1 -1 1 0

1 1 1 1 6

2 4 1 -2 -1

3 1 -2 -2 3

>> rref([A,b])

ans =

1 0 0 0 26/5

0 1 0 0 -11/3

0 0 1 0 61/15

0 0 0 1 2/5

>> X=ans(:,5)

X =

26/5

-11/3

61/15

2/5

Page 28: Apostila CN 2013

Cálculo Numérico usando MatLab

28

A solução também poderá ser obtida aplicando o comando solve nas

equações do sistema:

>> [x,y,z,w]=solve( '-y-z+w=0','x+y+z+w=6','2*x+4*y+z-2*w=-1','3*x+y-2*z-2*w=3' )

x =

2/5

y =

26/5

z =

-11/3

w =

61/15

Page 29: Apostila CN 2013

Cálculo Numérico usando MatLab

29

4. MATEMÁTICA SIMBÓLICA

É possível instruir o MATLAB a manipular expressões matemáticas, que lhe

permitam calcular com símbolos matemáticos, além de números. Esse processo é

frequentemente chamado de matemática simbólica. Na sequencia são apresentados

alguns exemplos de expressões simbólicas.

Para exemplificar, declaramos:

>> syms x a b c d n

Observe que, o comando syms foi usado para, explicitamente, dizer ao

MATLAB que x a b c d e n definem uma expressão simbólica.

Entrando com a expressão: x

x

−1

>> z=x/sqrt(1-x)

z =

x/(1 - x)^(1/2)

Para visualizar a expressão simbólica na forma x

x

−1 devemos usar o comando:

>> pretty(z)

Entrando com matrizes:

Seja

=

dc

baM

>> M=[a b; c d]

M =

[ a, b]

[ c, d]

Page 30: Apostila CN 2013

Cálculo Numérico usando MatLab

30

O determinante da matriz simbólica M é definido por:

>> det(M)

ans =

a*d - b*c

Entrando com polinômios: e calculando suas raízes:

>> syms x

>> 2*x^3-3*x^2+x

ans =

2*x^3 - 3*x^2 + x

>> raizes_x=solve('2*x^3-3*x^2+x')

raizes_x =

0

1/2

1

4.1 SUBSTITUIÇÃO DE VARIÁVEIS

Quando se tem uma expressão simbólica em x, e que queira mudar a variável

para s, usa-se a função subs.

>> syms a b c d x

>> f= a*x^2+b*x+c

f =

a*x^2 + b*x + c

>> subs(f,x,'s')

ans =

a*s^2 + b*s + c

Page 31: Apostila CN 2013

Cálculo Numérico usando MatLab

31

Quando queremos avaliar a função em um determinado ponto x=k, onde k é

uma constante, usamos o comando eval(f).

>> x=2;

>> eval(f)

ans =

4*a + 2*b + c

4.2 DERIVAÇÃO E INTEGRAÇÃO

A derivação de uma expressão simbólica usa a função diff em uma dentre as

quatro formas:

Expressão Resultado

syms a b c x ;

f=a*x^3+x^2-b*x+c;

Define uma expressão simbólica.

diff(f) Deriva em relação a x (padrão).

diff(f,a) Deriva f em relação a ‘a’.

diff(f,2) Deriva f 2 vezes em relação a x.

diff(f,a,2) Deriva f 2 vezes em relação a ‘a’.

A função diff também opera sobre conjuntos. Se f for um vetor simbólico ou

matriz, diff(f) deriva cada elemento do conjunto.

Exemplo:

>> syms a b c d x s

>> T=[a*x, b*x^2; c*x^3, d*s]

T =

[a*x, b*x^2]

[c*x^3, d*s]

Page 32: Apostila CN 2013

Cálculo Numérico usando MatLab

32

>> diff(T)

ans =

[a, 2*b*x]

[3*c*x^2, 0]

A função de integração int(f), onde f é uma expressão simbólica, tenta

encontrar outra expressão simbólica F tal que diff(F)=f.

Expressão Resultado

syms s m n x;

f=sin(s+2*x);

Define uma expressão simbólica.

int(f) Integra em relação a x (padrão).

int(f,pi/2,pi) Integra f em relação a x de pi/2 a pi.

int(f,s,pi/2,pi) Integra f em relação a s de pi/2 a pi.

int(f,m,n) Integra f em relação a x de m a n.

A função int também opera sobre conjuntos. Se f for um vetor simbólico ou

matriz, int(f) integra cada elemento do conjunto. Exemplo:

>> T=[a*x, b*x^2; c*x^3, d*s]

T =

[a*x, b*x^2]

[c*x^3, d*s]

>> int(T,0,2)

ans =

[ 2*a, (8*b)/3]

[ 4*c, 2*d*s]

Page 33: Apostila CN 2013

Cálculo Numérico usando MatLab

33

4.3 EXERCÍCIOS PROPOSTOS

1) Sendo x=345,6, y= 3,5 e z=23,7, calcule o valor de A.

zyxA

53

5

−+=

yx

xyA

+

−=

2

1222 +++−= yxyxA

xxeAy ln+=

( ) 2

2 53+−

+=

xeyx

yxA

)43(

)2(.

64

2

+−

+

−=

yx

yxy

yx

xyxA

( )164

21

2

2

e

y

yxx

x

−+

A=

53

24

01.

y

x .

RESPOSTAS:

0.0210 =A

0.9900i + 0 =A

005+1.1978e=A

004+1.1451e =A

148-1.1465e=A

2) Seja a matriz A=

263

174

952 ,calcular A+A T =S e verificar se S é simétrica.

Resp: A é simétrica

Page 34: Apostila CN 2013

Cálculo Numérico usando MatLab

34

3)Dadas as matrizes A,B e C determine:

A=

− 46

51 B=

210

63 C=

01

87

A.C e (A.C).B

B.( A.C)

Resp:

−−=

4838

812AC

, ( )

−−=

324594

886.11BAC

e ( )

−−=

1644

264192ACB

4) Dadas as matrizes A e B calcule a A.B:

A=

287

612/1

412

035 B=

21

35

40

Resp:

−−

=

4838

1311

131

1115

AB

5) Resolva as equações:

a)

x

x

x

−−

−−−

−−

311

151

113 =0 b)

123

312

132 −+− xxx =0

Resp: a) {x=2, x=3, x=6} e b) {x=-10}

6) Dadas as matrizes A=

− 53/22

05/32/1 e B=

3/1

3/4

3, calcule se for possível:

A T B T AB � não é possível

A T B � não é possível

7) Dadas as matrizes A e B calcule as seguintes colunas de AB:

A=

512

324

423

211 B=

1524

4333

2101

A segunda coluna.

A quarta coluna.

Page 35: Apostila CN 2013

Cálculo Numérico usando MatLab

35

Resp: a)

13

0

14

1 e b)

13

3

18

0

8) Seja A=

30

21 determine g(A), onde g(x)=x 2 . Resp:

=

90

812A

9) Determine x, y e z, se

3

wz

yx =

− w

x

21

6 +

+

+

3

4

wz

yx .

Resp: {x=2, y=4, z=1, w=3}

10) Escreva os sistemas de equações lineares na forma matricial, em seguida

encontre o vetor solução.

a)

−=−−

−=−−

=−+

432

4242

8523

zyx

zyx

zyx � SCD x=3, y=2 e z=1

b)

=−

=−

=+

02212

0816

042

1

21

21

xx

xx

xx� Somente a Sol. Trivial

c)

=−−

−=−

−=+

26523

442

83

zyx

yx

zx� SCD: x=4, y=3 e z=-4

d)

=−−−

=++

0639

0426

zyx

zyx � SCI:

−−

=

z

y

zy

X3

2

3

1

e)

=++

−=−+

=+−

5366

2363

132

cba

cba

cb

� SI

f)

=+−

=+−

=+−

14223

1742

72

zyx

zyx

zyx � SCD: x=2,y=-1 e z=3

h)

=++

=++

=−+

17483

53

32

zyx

zyx

zyx � SCD

=

3

43

23

17

X

Page 36: Apostila CN 2013

Cálculo Numérico usando MatLab

36

i)

−=−

=+

=−

=+

754

93

425

1642

21

21

21

21

xx

xx

xx

xx � SCD

=

3

2X

11) Determine o conteúdo das matrizes definidas abaixo. Use a matriz A como

referência.

−=

2211

3510

1521

2751

A

12) Verifique suas respostas usando o MATLAB.

A ( : , 2 )

A ( 4 , : )

A ( 4:5 , 1:3 )

A ( 1:2:5 , 2 )

3 * A ( : )

13) Calcule a integral indefinida de y=f(x) para:

Page 37: Apostila CN 2013

Cálculo Numérico usando MatLab

37

14) Sabendo que e , isto é

. (Verifique se as respostas encontradas no exercício 12) estão

corretas.

Page 38: Apostila CN 2013

Cálculo Numérico usando MatLab

38

5. AMBIENTE GRÁFICO

A construção de gráficos no MATLAB é mais uma das facilidades do sistema.

Através de comandos simples podem-se obter gráficos bidimensionais ou

tridimensionais com qualquer tipo de escala e coordenadas. Existe no MATLAB uma

vasta biblioteca de comandos gráficos.

Se y é um vetor, plot(y) produz um gráfico linear dos elementos de y versos o

índice dos elementos de y. Por exemplo, para plotar os números [0,1 0,3 1 0,3 0,1],

entre com o vetor e execute o comando plot:

>> y=[.1 .3 1 .3 .1]

>> plot(y)

e o resultado é apresentado na Janela Gráfica:

Se A é uma matriz, plot(A) produz um gráfico linear dos elementos de A

versos o índice da linha ao qual elemento pertence. Por exemplo:

>> A=[1 2 -3; 4 5 10];

>> plot(A),grid

1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2-4

-2

0

2

4

6

8

10

Page 39: Apostila CN 2013

Cálculo Numérico usando MatLab

39

ou ainda, se A é uma matriz 3x3, temos como exemplo:

>> A=[1 2 -3; 4 5 10;1 2 5];

>> plot(A),grid

1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3-4

-2

0

2

4

6

8

10

Dados dois vectores de mesma dimensão, o comando plot(x,y) permite

desenhar o gráfico definido pelos pares ordenado (x,y).

>> x=linspace(1,5,20);

>> y=linspace(2,26,20);

>> plot(x,y)

1 1.5 2 2.5 3 3.5 4 4.5 50

5

10

15

20

25

30

Page 40: Apostila CN 2013

Cálculo Numérico usando MatLab

40

Para obter o gráfico de uma função y = f(x), Introduza na linha de comandos

do MATLAB o vetor x (parte do domínio de f) e o vetor y (imagem referente as

componentes do vetor x):

>> x=1:6;

>> y=1./x;

>> plot(x,y),grid

O comando grid insere uma grade na janela gráfica:

1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Observe que o gráfico acima não apresenta com precisão o comportamento

da função no intervalo . Desta forma, é importante notar que o

número de pontos definidos no vetor x, define a qualidade com relação ao aspecto

de continuidade e diferenciabilidade da função.

>>x=1:0.01:6;

>>y=1./x;

>>plot(x,y)

1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Page 41: Apostila CN 2013

Cálculo Numérico usando MatLab

41

5.1 ALGUNS COMANDOS E FUNÇÕES

O MATLAB possui comandos de fácil utilização para adicionar informações

em um gráfico:

title Título do gráfico.

xlabel Título do eixo-X.

ylabel Título do eixo-Y.

zlabel Título do eixo-Z.

text Inserir anotação no gráfico.

gtext Inserir anotação com o “mouse”.

grid Linhas de grade.

Além da formatação default para gráficos, outros tipos de linhas, pontos e

cores também podem ser usados:

TIPO DE LINHA

- ----

- - -----------------

-. -⋅-⋅-⋅-⋅-⋅-⋅-⋅-⋅-⋅

: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅

TIPO DE PONTO

⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅ ⋅⋅⋅⋅

∗ ∗∗∗∗∗∗∗∗∗∗∗

° °°°°°°°°°°°°°

+ +++++++++

X x x x x x x x

Page 42: Apostila CN 2013

Cálculo Numérico usando MatLab

42

CORES

y Amarelo

m Lilás

c azul claro

r Vermelho

g Verde

b azul escuro

w Branco

k Preto

Observe a sequencia de comandos e o respectivo gráfico:

>>x=1:.01:10;

>>y=1./x;

>>plot(x,y,'y*')

>>title('FUNÇÃO Y=1/X')

>>xlabel( 'EIXO DAS ABSCISSAS')

>>ylabel('EIXO DAS ORDENADAS')

1 2 3 4 5 6 7 8 9 100.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1FUNÇÃO Y=1/X

EIXO DAS ABSCISSAS

EIX

O D

AS

OR

DE

NA

DA

S

Page 43: Apostila CN 2013

Cálculo Numérico usando MatLab

43

>>x=-6:.01:6;

>>y=1./x;

>>plot(x,y,'y*')

>>title('FUNÇÃO Y=1/X')

>>xlabel( 'EIXO DAS ABSCISSAS')

>>ylabel('EIXO DAS ORDENADAS')

>>legend('f(x)=1/x')

-6 -4 -2 0 2 4 6-150

-100

-50

0

50

100

150FUNÇÃO Y=1/X

EIXO DAS ABSCISSAS

EIX

O D

AS

OR

DE

NA

DA

S

f(x)=1/x

O MATLAB plota múltiplas ‘linhas’ em apenas um gráfico, usando o comando

plot com múltiplos argumentos. Por exemplo: Os comandos definidos abaixo cria o

gráfico da função seno e da função cosseno, com x variando de 0 até 2*pi, com 30

pontos:

>> x=linspace(0,2*pi,30);

>> y1=sin(x);

>> y2=cos(x);

>> plot(x,y1,x,y2),grid

Para inserir mensagens sobre o texto, usando o mouse, temos:

>> gtext('sin(x)')

>> gtext('cos(x)')

Para inserir uma legenda, fazemos uso do comando legend:

>> legend('sin(x)','cos(x)')

Page 44: Apostila CN 2013

Cálculo Numérico usando MatLab

44

Para inserir título e nomes nos eixos, usamos os comandos: title, xlabel e

ylabel.

>> title('Gráfico das funçoes: f(x)=sen(x) e f(x)=cos(x), 0<x<2*pi')

>> xlabel('x')

>> ylabel('f(x)')

Caso seja necessário redefinir os valores dos eixos coordenados, usamos o

comando axis([xmin xmax ymin ymax])

>> axis([ 0 3*pi/2 -pi pi])

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

-3

-2

-1

0

1

2

3

sin(x)

cos(x)

x

f(x)

Gráfico das funçoes: f(x)=sen(x) e f(x)=cos(x), 0<x<2*pi

sin(x)

cos(x)

Para que os valores dos eixos voltem ao normal usamos

>> axis xy normal

Page 45: Apostila CN 2013

Cálculo Numérico usando MatLab

45

Outro exemplo: Gráfico da função seno e da função cos(x)+1 de 0 até 2pi,

com 30 pontos:

>>x=linspace(0,2*pi,30);

>>f=sin(x);

>>g=cos(x)+1;

>>plot(x,f,x,g),grid

>> gtext('f(x)=cos(x)+1')

>>gtext('g(x)=sin(x)')

0 1 2 3 4 5 6 7-1

-0.5

0

0.5

1

1.5

2

f(x)=cos(x)+1

g(x)=sin(x)

Os tipos de linhas, símbolos e cores usados para plotar gráficos podem ser

controlados se os padrões não são satisfatórios. Veja os exemplos, que seguem na

mesma janela usando o comando subplot.

Sintaxe do subplot:

>>subplot(m,n,p)

Parâmetros de entrada:

m: número de eixo na horizontal

n: número de eixos na vertical

p: índice da figura corrente.

Page 46: Apostila CN 2013

Cálculo Numérico usando MatLab

46

No exemplo definido abaixo, uma janela gráfica (2x3) foi criada evidenciando

o gráfico de seis funções.

>>x = -15:0.1:15;

>>y1=x.^2-6*x+8;

>>y2=x.^2-2*x+2;

>>y3=x.^2-6*x+9;

>>y4=abs(x);

>>y5=2*x+1;

>>y6=-2*x+1;

>>subplot(2,3,1), plot(x,y1,'k*')

>>subplot(2,3,2), plot(x,y2,'r.')

>>subplot(2,3,3), plot(x,y3,'yo')

>>subplot(2,3,4), plot(x,y4,'b>')

>>subplot(2,3,5), plot(x,y5,'m.-')

>>subplot(2,3,6), plot(x,y6,'g')

-20 0 20-100

0

100

200

300

400

-20 0 200

100

200

300

-20 0 200

100

200

300

400

-20 0 200

5

10

15

-20 0 20-40

-20

0

20

40

-20 0 20-40

-20

0

20

40

Page 47: Apostila CN 2013

Cálculo Numérico usando MatLab

47

Na sequencia, uma única linha apresenta três gráficos (matriz 1x3).

>>x = -5:0.01:5;

>>g1=x.^2+6*x-2;

>>g2=abs(x)+1;

>>g3=-2*x+1;

>>subplot(1,3,1), plot(x,g1,'k*')

>>title('g1(x)=x^2+6*x-2')

>>subplot(1,3,2), plot(x,g2,'r.')

>>title('g2(x)=abs(x)+1')

>>subplot(1,3,3), plot(x,g3,'yo')

>>title('g3(x)=-2*x+1')

-5 0 5-20

-10

0

10

20

30

40

50

60g1(x)=x2+6*x-2

-5 0 51

1.5

2

2.5

3

3.5

4

4.5

5

5.5

6g2(x)=abs(x)+1

-5 0 5-10

-5

0

5

10

15g3(x)=-2*x+1

INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO

Page 48: Apostila CN 2013

Cálculo Numérico usando MatLab

48

6. LÓGICA E ALGORITMO

A lógica na programação é muito útil quando se deseja desenvolver sistemas

e programas, ela permite definir a sequência lógica de procedimentos para cumprir o

desejado. São passos que devem ser executados em uma sequência tal que o

objetivo ou solução de um problema são alcançados.

Em computação, uma instrução é a informação que indica ao computador

uma ação elementar que deve ser executada.

Uma instrução isolada, em geral, não resolve um processo completo. Nesses

casos é necessário um conjunto de instruções, colocadas em uma ordem sequencial

lógica.

Um algoritmo é formalmente uma sequência finita de passos, não

redundantes nem subjetivos na sua definição, logicamente encadeados que levam a

execução de uma tarefa.

Um exemplo, no dia-a-dia, seria um manual de instalação e uso de um

aparelho eletrônico, que explica passo-a-passo como proceder a sua instalação e

como realizar cada uma das suas funções.

Outro exemplo seria o de efetuar a soma de dois números reais.

Nada seria feito se a instrução fosse: efetue a soma desses números. Mesmo

que essa operação fosse efetuada, qual seria o resultado? Ter-se-ia conhecimento

dele se nenhuma instrução foi dada para que isso ocorresse?

Em termos computacionais, seria necessário estabelecer uma sequência finita

de passos, de forma clara e precisa, que possibilitasse que o computador realizasse

a tarefa.

Seria algo como:

Leia o primeiro número.

Leia o segundo número.

Efetue a soma desses números.

Informe o resultado.

Lógica é o encadeamento de pensamentos para atingir determinado objetivo.

Page 49: Apostila CN 2013

Cálculo Numérico usando MatLab

49

Suponha agora que seja desejável, além de efetuar a soma, calcular a

multiplicação da soma pelo segundo número.

Então, além da elaboração da sequência acima, seria necessário proceder à

multiplicação pelo segundo número lido.

Isto seria descrito por:

Leia o primeiro número.

Leia o segundo número.

Efetue a soma desses números e o produto dessa soma pelo segundo número

lido.

Informe o resultado.

Algumas vezes, não é possível realizar todas as operações de uma só vez,

conforme a linguagem utilizada e/ou a conveniência do desenvolvimento do

raciocínio.

Neste caso, os procedimentos que não puderem ser realizados de uma só vez

podem e devem ser realizados por partes:

Leia o primeiro número.

Leia o segundo número.

Efetue a soma desses números.

Efetue o produto dessa soma pelo segundo número.

Informe o resultado.

Conforme o problema torna-se necessário estabelecer outro tipo de

raciocínio. É o caso, por exemplo, se a multiplicação, no problema acima, fosse

efetuada com o maior dos dois números fornecidos, em lugar de pelo segundo. Isso

levaria a necessidade de se estabelecer:

Page 50: Apostila CN 2013

Cálculo Numérico usando MatLab

50

Leia o primeiro número.

Leia o segundo número.

Se o primeiro número é maior do que o segundo;

Efetue a soma dos dois números e multiplica a soma pelo primeiro número.

Senão (se o primeiro não é maior do que o segundo)

Efetue a soma dos dois números e multiplica a soma pelo segundo número.

Informe o resultado.

Poder-se-ia elaborar vários outros problemas com especificações mais

trabalhosas. Mas é bom estabelecer aqui que em todos os casos é possível

encontrar uma sequência de passos finita, clara e não redundantes que, ao final,

apresentaria um resultado.

6.1 PROGRAMAS

Os programas de computadores são, simplesmente, algoritmos escritos numa

linguagem de computador (Pascal, C, Cobol, Fortran, MatLab entre outras) e que

são interpretados e executados por uma máquina, no caso um computador.

É bom que se saiba que um programa é muito específico e rígido em relação

aos algoritmos da vida real. Qualquer falha no raciocínio, erro de sintaxe na

linguagem ou erro na sequência estabelecida para o computador, o resultado pode

ser muito diferente daquele que seria o correto.

6.2 CONSTRUÇÃO DE ALGORITMOS

Pseudocódigo

Ao se criar um algoritmo ele é em uma linguagem chamada pseudocódigo.

Assim chamada por ser conveniente elaborá-lo aproximando-se da posterior

implementação em uma linguagem de programação. Isto significa que quando da

programação, o código será gerado de acordo com o estabelecido no algoritmo.

Por esta razão, os algoritmos são independentes das linguagens de

programação e, por isto, não existe um formalismo rígido de como deve ser escrito o

Page 51: Apostila CN 2013

Cálculo Numérico usando MatLab

51

algoritmo. Um algoritmo deve ser fácil de interpretar e ao mesmo tempo fácil de

codificar.

O algoritmo deve ser intermediário entre a linguagem falada e a linguagem de

programação.

6.3 REGRAS PARA CONSTRUÇÃO DO ALGORITMO

Um algoritmo deve descrever a sequência de instruções, de maneira simples e

objetiva e, por isso é aconselhável a obediência à algumas regras:

• Levar em consideração que o algoritmo será visto por pessoas que não estão

familiarizadas com computação.

• Usar frases curtas e simples.

• Preferencialmente, usar apenas um verbo por frase.

• Objetividade.

• Não usar palavras que possam oferecer duplo sentido.

6.3.1 Fases

Na elaboração de um algoritmo é necessário:

• Conhecimento completo do problema que se pretende resolver (Análise do

Problema). Isto inclui em estabelecer quais são os dados que devem ser

conhecidos, quais cálculos devem ser realizados e em quais condições, entre

outros.

• Elaborar uma sequência de passos, finita, clara e objetiva.

• Observar se o algoritmo cumpre todas as etapas na ordem desejada.

Exemplo: Deseja-se calcular a média anual de um aluno do curso, ao final do ano.

Solução:

• Os alunos se submeterão a uma prova por bimestre, totalizando, ao final do

ano, 4 provas que correspondem a 4 notas (digamos, N1 , N2, N3 e N4 ).

• A média anual é dada pela soma das quatro notas divididas pelo número de

notas (4). O que se deseja é o resultado da média assim calculada.

Page 52: Apostila CN 2013

Cálculo Numérico usando MatLab

52

Para se elaborar o algoritmo deve-se levar em conta:

• Quais são os dados de entrada?

• Quais são os procedimentos que serão executados para os cálculos?

• Qual é o resultado que será apresentado?

As respostas podem ser extraídas do conhecimento do problema:

• Dados de entrada: as notas bimestrais (N1 , N2 , N3 e N4)

• Procedimentos: Efetuar a soma das notas e dividir por 4.

• Saída: fornecer a média anual (resultado obtido nos procedimentos).

Algoritmo:

Ler nota da prova 1. (N1)

Ler nota da prova 2. (N2)

Ler nota da prova 3. (N3)

Ler nota da prova 4. (N4)

Somar as notas e dividir por 4.

Informar o resultado.

6.3.2 Teste de Mesa

Elaborado o algoritmo ele deverá passar por um teste, chamado teste de

mesa, para verificar a sua exatidão. Este teste consiste em realizar com exatidão a

sequência estabelecida no algoritmo para certificar se o algoritmo realiza o desejado

de forma correta.

EXERCÍCIO: Elabore um algoritmo para calcular a média anual de um aluno do

curso, sabendo que ele recebe quatro notas no ano e que a média é ponderada,

tendo, cada nota seu peso específico.

Page 53: Apostila CN 2013

Cálculo Numérico usando MatLab

53

6.3.3 Diagrama de Bloco

O diagrama de blocos é uma forma eficaz para representar os passos lógicos

de um determinado processamento. Ele é construído através de símbolos (em geral

figuras geométricas) específicos para cada atividade e tem por objetivo facilitar a

visualização e o entendimento dos passos de um processamento.

Dentro de cada um deles é escrito o que será realizado.

Na sequência são descritos alguns símbolos mais utilizados. No decorrer do

curso poderão ser apresentados outros, se for necessário.

SÍMBOLO DESCRIÇÃO

TERMINAL

Início ou fim do processamento.

ENTRADA DE DADOS

Exemplo: ler N

PROCESSAMENTO

Indica qualquer processamento

Exemplo: soma de dois números

DECISÃO

Será exemplificado no futuro

EXIBIR

Apresenta o resultado do

desenvolvimento

Page 54: Apostila CN 2013

Cálculo Numérico usando MatLab

54

SENTIDO DO FLUXO

CONECTOR

Exemplo: Para o exemplo anterior, onde foi calculada a média das notas de um

aluno, tem-se:

Algoritmo e diagrama de bloco:

início

Ler nota da prova 1. (N1)

Ler nota da prova 2. (N2)

Ler nota da prova 3. (N3)

Ler nota da prova 4. (N4)

Somar as notas e dividir por 4.

Informar o resultado

fim

Fim

Ler N2

Ler N1

Ler N3

Ler N4

Media = (N1+N2+N3+N4)/4

Início

Imprimir Média

Page 55: Apostila CN 2013

Cálculo Numérico usando MatLab

55

OBSERVAÇÃO:

Alguns preferem usar, e de fato usam quando possível, um só símbolo de

entrada de dados, constando, explicitamente, que será dada entrada de quais

dados.

Ler

N1 , N2 , N3 , N4

Nada impede este procedimento, desde que não seja prejudicada a clareza e

a não ambiguidade do diagrama.

Exercício: Elabore um diagrama de blocos para o caso de cálculo da média

ponderada, conforme enunciado anteriormente.

6.4 CONSTANTES E VARIÁVEIS

Variáveis e constantes são os elementos básicos que todo programa

manipula.

6.4.1 Variáveis

Uma variável é um espaço reservado na memória do computador para

armazenar um determinado tipo de dado.

Variáveis devem receber nomes através dos quais podem ser referenciadas e

modificadas quando necessário, na execução do programa.

Uma variável a ser utilizada muitas vezes recebe um valor inicial que pode ser

alterado no decorrer do programa. Esses valores podem ser reais, inteiros,

caracteres, etc.

Em programação, o sinal de igual (=), significa atribuição, como já se viu.

Neste caso, quando se escreve a = 10 o que se pretende é reservar um espaço de

memória, designado por a e será armazenado o valor atribuído (10).

Page 56: Apostila CN 2013

Cálculo Numérico usando MatLab

56

6.4.2 Constantes

Constante é um valor fixo que não se modifica ao longo do tempo, durante a

execução de um programa. Conforme o seu tipo, a constante é classificada como

sendo numérica lógica ou literal.

Exemplo de constantes:

PI = 3.141516, K = 4, nome = “Maria”.

6.5 OPERADORES

Os operadores são os meios pelos quais o computador incrementa, decrementa,

compara e avalia os dados. São classificados em três tipos:

• Operadores Aritméticos

• Operadores Relacionais

• Operadores Lógicos

6.5.1 Operadores Aritméticos

Os operadores aritméticos são aqueles utilizados para obter resultados

numéricos. Além da adição, subtração, multiplicação e divisão, utiliza-se também o

operador para exponenciação.

OPERAÇÃO SÍMBOLO

Adição +

Subtração -

Multiplicação *

Divisão /

Exponenciação ^

6.5.2 Operadores Relacionais

Os operadores relacionais são aqueles utilizados para efetuar comparações.

Os valores a serem comparados podem ser caracteres ou variáveis.

Page 57: Apostila CN 2013

Cálculo Numérico usando MatLab

57

Estes operadores retornam valores lógicos (verdadeiro ou falso/ True ou

False)

Para estabelecer prioridades no que diz respeito a qual operação executar

primeiro é utilizados parênteses.

Descrição Símbolo

Igual a ==

Diferente de ~=

Maior que >

Menor que <

Maior ou igual a >=

Menor ou igual a <=

Exemplo: Considere duas variáveis e seus respectivos valores: L = 5 e P = 10

Utilizando os operadores obtêm-se os resultados:

L == P retorna Falso

L ~= P retorna Verdadeiro

L > P retorna Falso

L < P retorna Verdadeiro

L >= P retorna Falso

L <= P retorna Verdadeiro

Os operadores relacionais são muito úteis quando se deseja realizar cálculos

quando uma determinada condição for satisfeita. Na elaboração de um algoritmo, no

diagrama de bloco o símbolo que representa esses operadores tem a forma:

Por um dos vértices deve seguir o fluxo que realiza as operações no caso de

a comparação descrita no interior da figura resultar em Verdadeiro ( V ) e por outro

vértice o fluxo que realiza as operações no caso de a comparação resultar em falso

( F )

Page 58: Apostila CN 2013

Cálculo Numérico usando MatLab

58

Exemplo: Elaborar um algoritmo que, dados dois números A e B, imprime a soma

deles se A for maior do que B e a diferença A – B, se A não for maior do que B.

Inicio

Ler A

Ler B

Se A > B

Efetuar a soma dos números

Senão

Efetuar a subtração A – B

Imprimir o resultado

Fim

O fluxograma ficaria da forma:

F V

Início

Ler A e B

R = A + B

A > B

R = A - B

Imprimir R

Fim

Page 59: Apostila CN 2013

Cálculo Numérico usando MatLab

59

7. ROTINAS (M-FILES OU SCRIPTS)

A janela do command Windows não é interativa. Toda vez que é acionada a

tecla enter somente o último comando digitado é executado e os anteriores ficam

inalterados. Se alguma alteração ou correção for necessária, todos os comandos

deverão ser digitados e executados novamente.

Uma forma de tornar isto menos trabalhoso e mais eficiente é criar um arquivo

com a lista de comandos desejados, salvar esse arquivo e depois executá-lo. Se

alguma correção ou alteração for necessária, abre-se o arquivo, procedem-se as

correções necessárias e salva o arquivo. Ele fica disponível, com todos os

comandos para nova execução.

Esses arquivos são chamados rotinas (programas), M-files ou scripts.

No uso de programas (rotinas) convém observar:

• Um programa é uma sequência de comandos do MATLAB.

• Toda comunicação com o usuário e feita através da janela command

Windows, quer seja solicitando dados, quer seja fornecendo resultados.

• Podem ser executados e editados quantas vezes forem necessárias.

7.1 CONSTRUINDO UM PROGRAMA

As rotinas devem ser criadas e editadas em um editor. A janela do editor se

abrirá através do caminho: File → New → Script. Será apresentada a janela:

Os comandos deverão ser digitados aqui, linha por linha. As linhas serão numeradas automaticamente e para passar de uma linha para outra tecle enter. O editor possui propriedades semelhantes ao word.

Número da linha.

Page 60: Apostila CN 2013

Cálculo Numérico usando MatLab

60

Os comandos serão digitados linha a linha e as linhas serão numeradas

automaticamente. Após a digitação a rotina deve ser salva. Para salvar, escolha, no

menu, o caminho File → save as... Escolha a unidade e atribua um nome para a

rotina.

Se não for explicitado um caminho para o salvamento, ele será realizado na

pasta default do MATLAB: c:\matlab7\work. É neste diretório que a rotina é

procurada quando solicitada a sua execução, a menos que tenha sido realizada uma

configuração personalizada.

Na escolha do nome da rotina não pode ser usado o nome de comandos ou

funções nativas do MATLAB e nem o nome de variáveis declaradas pelo usuário.

Observe, finalmente, que as linhas iniciadas pelo símbolo % não são consideradas

na execução. Por esta razão geralmente o símbolo é usado para incluir descrição e

comentários na rotina.

Exemplo: Calcular a média das notas obtidas por um aluno, na disciplina, no final do

ano.

Solução:

A análise e o respectivo algoritmo já foram apresentados anteriormente.

A digitação, na janela do editor, obedeceu à sequência apresentada no

algoritmo.

Foi escolhido o caminho default para salvar e atribuímos o nome “media” para

o arquivo.

Veja a janela após a digitação:

Page 61: Apostila CN 2013

Cálculo Numérico usando MatLab

61

Para executar o programa digitamos o nome do arquivo no command Windows.

Page 62: Apostila CN 2013

Cálculo Numérico usando MatLab

62

7.2 ENTRADA DE DADOS EM UMA ROTINA

Para executar uma rotina as variáveis usadas dentro do arquivo devem ser

inicializadas. Essa inicialização (atribuição de um valor) pode ser feita de três

modos:

a) Dentro da própria rotina - A variável é declarada e inicializada dentro da própria

rotina. Foi o caso no exemplo acima. O inconveniente é que se for desejado rodar a

rotina com valores diferentes, o arquivo deve ser editado e os novos valores

fornecidos para as variáveis ali constantes.

b) Na janela do Command Windows - Neste caso, as variáveis são inicializadas

antes de chamar a rotina para execução.

No exemplo anterior o problema seria elaborado: no editor

Variáveis não inicializadas no arquivo.

Page 63: Apostila CN 2013

Cálculo Numérico usando MatLab

63

No Command Windows, inicializa-se cada variável e só após é solicitada a execução

da rotina.

c) O usuário é solicitado a fornecer os dados quando inicia-se a execução. Neste

caso, usa-se a função input() para solicitar ao usuário a entrada do dado. Essa

função ocasiona uma interrupção temporária da execução da rotina para que possa

ser fornecido o dado e a execução é continuada após teclar enter.

O novo arquivo para o problema anterior ficaria assim

Inicializando as variáveis que serão usadas na rotina.

Solicitando a execução da rotina

Page 64: Apostila CN 2013

Cálculo Numérico usando MatLab

64

No command Windows, quando solicitada a rotina, imediatamente haveria

uma parada e a janela se apresentaria da seguinte forma:

A função input usada para receber dados.

Page 65: Apostila CN 2013

Cálculo Numérico usando MatLab

65

Após a entrada de todos os valores solicitados, a janela estaria da forma seguinte:

No exemplo, os valores dos dados foram atribuídos um a um. Existem formas

de se proceder a entrada dos dados na forma de matriz, como se verá mais adiante.

Também é possível dar entrada de strings usando input.

7.3 O COMANDO DE SAÍDA DISP()

O comando disp() é utilizado para apresentar texto (mensagens) na tela ou

para apresentar o conteúdo de uma variável.

Forma geral:

No caso do exemplo que tem sido o modelo até aqui, poder-se-ia emitir uma

mensagem informando do que se tratava o resultado apresentado.

disp(‘texto’) ou disp(nome da variável)

Page 66: Apostila CN 2013

Cálculo Numérico usando MatLab

66

Outras funcionalidades do disp podem ser vistas na bibliografia.

A mensagem que apareceria na janela de execução

Page 67: Apostila CN 2013

Cálculo Numérico usando MatLab

67

8. OPERADORES LÓGICOS

Um operador lógico é utilizado para combinar resultados de expressões

lógicas cujo resultado sempre será V (verdadeiro) ou F (falso).

Os operadores lógicos são:

OPERADOR SINAL NO

MATLAB DESCRIÇÃO

AND (E) & Retorna V se todos os operandos forem

verdadeiros. Caso contrário retorna F

OR (OU) | Retorna V se pelo menos um dos operandos for

verdadeiro. Caso contrário retorna F

NOT (NÃO) ~

É um operador unário. Ele inverte o resultado do

operando. Se o operando é verdadeiro, o

operador retorna F. Se o operando é falso, o

operador retorna V.

Analise o resultado em cada linha:

Operando 1 Operador Operando 2 Resultado

V AND V V

V AND F F

F AND F F

F AND V F

V OR V V

V OR F V

F OR F F

NOT V F

NOT F V

Page 68: Apostila CN 2013

Cálculo Numérico usando MatLab

68

EXEMPLO: Considere três variáveis inicializadas com os valores: A = 1 ; B = 10 e

C = 6. Preencha a coluna corresponde a resultados, na tabela abaixo:

EXPRESSÃO RESULTADO

(A == B) & (B > C) 0

(A <= B) & (B == C) 0

(A<= B) & (B < C) 0

(A < C) | (B < C) 1

(A > C) | (B <= C) 0

~ (A < B) 0

~ (B < C) 1

8.1 SENTENÇAS CONDICIONAIS

As sentenças condicionais são estruturas que permitem ao MATLAB efetuar

desvios na sequência do programa, optando por um ou outro conjunto de comandos

ou até mesmo repetir um grupo de comandos um número finito de vezes. A decisão

é determinada pelo resultado (verdadeiro ou falso) de uma operação lógica.

Estas estruturas podem ser divididas em dois grupos: estruturas de decisão e

estruturas de repetição.

8.1.1 ESTRUTURAS DE DECISÃO

Uma estrutura de decisão envolve uma sentença lógica e, de acordo com o

resultado o programa decide por realizar um conjunto de comando ou outro.

8.1.1.1 Estrutura if - end

A principal estrutura de decisão corresponde ao se já comentada em

operadores lógicos. A estrutura fornece opção para o fluxo da execução de uma

rotina.

A rotina em execução, ao encontrar uma sentença if verifica se ela é

verdadeira ou falsa. No caso de ser verdadeira, a rotina executa os comandos entre

Page 69: Apostila CN 2013

Cálculo Numérico usando MatLab

69

o if e o end. Caso contrário, ela não considera esses comandos e executa aqueles

abaixo de end.

FLUXOGRAMA ESTRUTURA NA LINGUAGEM

Exemplo: Considere o exemplo de determinar a média anual de um aluno do curso.

Imprimir o resultado “aprovado” se a média for maior ou igual a 7.0.

Solução:

Após a análise e a construção do algoritmo, a digitação seria:

V

F

Fim do if

comandos

If(sentença) > B

......................

......................

programa do MATLAB

......................

If expressão condicional

Comandos

end

......................

......................

programa do MATLAB

......................

Page 70: Apostila CN 2013

Cálculo Numérico usando MatLab

70

Digite a rotina, salve-a e proceda a sua execução. Analise o resultado em

diversas situações.

8.1.1.2 A estrutura if – else - end

Esta estrutura é uma variação da estrutura acima. Ela acrescenta a opção de

realizar a execução de um novo conjunto de comando. Quer seja na primeira opção,

quer seja na segunda, após a realização a rotina passa para os comandos após o

end.

V F

comandos

If

comandos

Fim

comandos

...........

............ comandos

............

If sentença

Comandos

Else

Comandos

Fim

..............

.............. comandos

...............

Page 71: Apostila CN 2013

Cálculo Numérico usando MatLab

71

Exemplo: Suponha a situação do exemplo anterior. Se a média for igual ou maior

do que 7 emitir a mensagem “aprovado”. Caso contrário emitir a mensagem “não

aprovado”.

Solução:

A análise e o algoritmo correspondentes podem ser construídos. A rotina teria a

forma:

É possível aninhar vários if-else-end. Como isto ocorrerá depende da

situação envolvida na análise e algoritmo. Entretanto, um em particular deve ser

citado.

Page 72: Apostila CN 2013

Cálculo Numérico usando MatLab

72

8.1.1.3 Estrutura if - elseif – else - end

Exemplo: Considere o caso da média de aluno. Deseja-se que sejam emitidas

mensagens de que ele foi aprovado, está em exame ou ainda reprovado.

Solução:

Sabe-se que se a média for igual ou superior a sete, o aluno está aprovado. Se,

entretanto, for inferior a sete, mas igual ou superior a quatro, o aluno está em exame

final e, finalmente, se for inferior a quatro então o aluno está reprovado (no que diz

respeito a notas).

Realizada a análise e construído o algoritmo, o resultado seria uma rotina da forma:

Fim

V F If senteça

comandos

comandos If senteça

comandos

F

VF

Observe que no caso de

falso no primeiro if, e só

então, um novo if é

Page 73: Apostila CN 2013

Cálculo Numérico usando MatLab

73

É bom lembrar que são várias as possibilidades de aninhar sentenças if – elseif –

end. Desta forma é possível efetuar vários testes dentro de um único programa.

8.2 ESTRUTURAS DE REPETIÇÃO

Além das estruturas de decisão, existem na linguagem MATLAB ( e demais

linguagens ) as estruturas de repetição. Estas servem para proporcionar

oportunidade para que uma rotina execute várias vezes um mesmo conjunto de

comandos sem a necessidade de reescrevê-los em igual número de vezes. São

conhecidos também por LOOPS ou LAÇOS. A cada repetição do laço é chamada

passo e em cada passo pelo menos uma variável é modificada. Essa variável deve

ser quem controla o encerramento do laço. O laço deixa de ser executado quando

essa variável deixar de satisfazer uma condição definida para esse fim.

Page 74: Apostila CN 2013

Cálculo Numérico usando MatLab

74

Dois tipos de laços estão presentes no MATLAB: for – end e while - end .

Ambos obedecem ao mesmo conceito inicial de ser interrompido quando a condição

de controle seja falsa. Entretanto, existe o comando break que interrompe a

execução, em ambos os casos, a qualquer momento em que for desejável.

8.2.1 A estrutura for - end

A principal característica deste laço é que deve ser previamente conhecido o

número de vezes que se deseja repetir o conjunto de comandos. O laço tem a

seguinte forma:

for i = a : k : b

Comandos

end

Algumas considerações e regras acerca da estrutura:

• O nome da variável-índice é atribuído pelo programador e pode ser qualquer.

Em geral atribui-se as letras i , j, k , m ou n, tomando-se o cuidado de, se a

programação envolver número complexo, evitar a atribuição de i e j.

• Sobre o funcionamento, a variável assume o valor inicial ( a , no caso) e

executa o primeiro passo, retornando ao início do loop quando recebe o

incremento de valor k e, se i ainda for menor ou igual ao valor b o loop volta

a ser executado. O processo se repete até que i fica maior do que o valor b,

quando o fluxo deixa de executar os comandos no interior do loop e passa ao

primeiro comando após o end.

• O incremento k pode ser negativo.

• Todo laço for deve terminar com um end.

• O valor de i não pode ser redefinido pelos comandos no interior do laço.

• O valor de k ao final da execução é o último valor que ela recebeu, e pode

ser usado após o término do laço.

i é o índice controlador do loop.

Valor inicial de i

k é o incremento que i sofrerá a cada passo, após o primeiro.

b é o valor que i terá ao executar o último passo.

Page 75: Apostila CN 2013

Cálculo Numérico usando MatLab

75

Exemplos:

1.- Efetuar uma rotina que efetue a soma dos n primeiros número naturais, onde n

é fornecido pelo usuário no início da execução da rotina.

Solução:

O que se deseja é determinar com n conhecido. Um algoritmo para o

problema:

Início

Ler n

S = 0;

Para k = 1 até n

S = S+k

Imprimir S

Fim

Para escrever a rotina, vamos usar o for-end uma vez que é conhecido o

número de vezes que o laço de repetição é executado. A rotina seria:

Execute o programa com diversos valores de n (natural) e confira os resultados.

Inicialização da variável S. Igual a zero para não interferir no resultado da soma.

Page 76: Apostila CN 2013

Cálculo Numérico usando MatLab

76

8.2.1.1 Exercícios:

1.- Escreva uma rotina que calcula o produto dos n primeiros números naturais.

Obs.: veja que, neste caso, a inicialização da variável deve ser para o valor 1.

O problema é equivalente a determinar o valor de n!

2.- Escreva uma rotina que determina o valor de P = para um valor n a

ser fornecido pelo usuário.

3.- A função pode ser representada (em série de Taylor) por

. Escreva uma rotina que calcula o valor da aproximado para a função,

para x = 2, considerando os 6 primeiros termos da série,.

Sugestão: Uma análise do problema deve levar em consideração:

Deseja-se o valor da função para x = 2.

O problema solicita a soma dos seis primeiros termos, o que nos leva a iniciar o for-

end com n = 0 e terminar com n = 5.

8.2.2 A estrutura while - end

O comando while-end realiza um trabalho semelhante ao for-end. A diferença

está no fato de ele realizar o laço quando o número de repetições não é conhecido

antecipadamente.

A exemplo das demais estruturas de repetição, após o while existe uma

condição lógica que, para a execução do laço deve ser verdadeira quando o fluxo de

execução encontrar o while pela primeira vez. Neste caso são executados os

comandos existentes no laço até que o end seja encontrado. O fluxo volta ao while e

verifica novamente se a condição é verdadeira ou falsa. Observe que, se não

houver alteração da condição lógica a execução do loop nunca será interrompido. É

obrigatória a existência de alteração de pelo menos uma variável presente na

condição lógica para que, em algum momento, expressão lógica venha a ter valor

falso.

Page 77: Apostila CN 2013

Cálculo Numérico usando MatLab

77

A estrutura tem a seguinte construção:

while <expressão>

..................

.................. comandos

..................

end

Exemplos:

1. Escrever uma rotina para determinar todos os números pares positivos menores

ou iguais a 31. Apresentar o resultado na forma de matriz.

Solução:

Uma análise do problema:

Sabe-se que os números pares positivos são aqueles múltiplos de 2. Portando o

problema consiste em determinar os números positivos múltiplos de 2 e menores do

que 31. Isto significa que o primeiro elemento é igual a 2 e o último igual a 30.

É conveniente usar um loop para realizar o trabalho. Não se sabe quantas vezes o

loop deve ser executado e, portanto, deve-se usar o while-end.

Deseja-se apresentar o resultado na forma de matriz, por isto é bom lembrar que os

elementos de uma matriz podem ser referenciados através de índices. Se a matriz é

designada por x, então seus elementos podem ser referenciados por x(i), com i

variando de 1 até o número de elementos que formam a matriz.

Page 78: Apostila CN 2013

Cálculo Numérico usando MatLab

78

Diagrama de blocos

Veja a rotina no editor do MATLAB

A <= 30

Imprimir A

FIM

A = 2*i

i = i + 1

x(i) = A + 1

INICIO

i = 1

A = 2

i = 1; A = 2; while A <= 30

x(i) = A; i = i + 1; A = 2*i;

end disp(x)

A identação não é obrigatória, mas é aconselhável. Facilita o entendimento e possíveis correções.

Page 79: Apostila CN 2013

Cálculo Numérico usando MatLab

79

A execução no Command Windows:

8.3 OBSERVAÇÕES IMPORTANTES

1.- As sentenças condicionais podem fazer uso dos operadores condicionais. Isto

significa que a expressão no for, por exemplo, pode ser do tipo: A & B ou A | B ou

(~A & B) | C , para citar apenas alguns exemplos.

2.- Os loops podem ser aninhados. Isto quer dizer que é possível estabelecer um

for-end dentro do laço de outro for-end (e tantos quantos forem necessários), ou

ainda for-end dentro do laço de um while-end , ou, ao contrário, while-end dentro de

for-end. Além de outras combinações usando o if-end ou if-else-end, se for o caso.

3.- Além disso, é útil lembrar que as rotinas podem “chamar” ou carregar qualquer

função nativa do MATLAB, como exp() , abs(), sin(), para citar algumas.

4.- Finalmente, é bom saber que existe um comando break que, quando inserido no

laço de um comando de repetição, ocasiona a saída incondicional do loop. Ao

encontrar o break, o fluxo do programa é dirigido para o primeiro comando após o

end do loop, saindo do laço. O uso do break é útil quando se deseja interromper o

loop mesmo com a condição de controle tendo sido satisfeita.

Por exemplo, no exercício que foi enunciado acima, mesmo que a condição de

parada não seja atendida, mas um número máximo de execução do laço,

previamente estipulado, for alcançado.

Page 80: Apostila CN 2013

Cálculo Numérico usando MatLab

80

Exemplos:

1.- Dada uma matriz de ordem nxm criar uma rotina que determina a soma de

todos os elementos da matriz que sejam menores do que 10.

Solução:

Uma análise do problema fornece as seguintes informações:

Sabe-se que uma matriz de ordem nxm indica que a matriz terá n linhas e m

colunas. Se a matriz for designada por A os seus elementos podem ser

referenciados por A( i , j ) com i variando de 1 a n e j variando de 1 a m.

É necessário ter a matriz definida antes ou ser definida na execução da rotina. O

programador pode decidir. Para esse programa, a matriz será fornecida antes da

rotina ser chamada.

A rotina deve verificar se cada elemento é menor do que 10 e, o sendo, soma-lo aos

demais elementos que satisfizerem a mesma condição.

Para percorrer todos os elementos da matriz tornar-se-á necessário fazer uso de

dois contadores. Um deles percorrendo o índice que representa a linha e o outro o

índice que representa a coluna do elemento. Como conhecemos os valores de n e

de m (ordem da matriz), é possível usar, em ambos os casos o comando for-end.

Lembre-se de que se o acréscimo no contador para o for é igual a 1 ele não precisa

ser escrito na declaração. Basta colocar o valor inicial e o final, separados por dois

pontos.

Após elaboração do diagrama e do algoritmo, o programa ficaria assim.

Page 81: Apostila CN 2013

Cálculo Numérico usando MatLab

81

2.- Escrever uma rotina que resolva tantas equações do segundo grau quantas

forem desejadas pelo usuário.

Solução:

A análise do problema resulta nas observações:

Para resolver várias equações é necessário que o usuário entre com os coeficientes

da equação e precisa fazê-lo de forma que possa repetir o processo. Isso leva à

existência de um controle do fluxo sob a responsabilidade do usuário. A existência

de um loop que, após cada realização, solicita ao usuário se deseja ou não resolver

outra equação.

Na solução de uma equação do segundo grau é necessário observar que o

coeficiente principal não pode ser nulo ( a ≠ 0). O discriminante deve ser não

negativo ( delta ≥ 0 ). Esta condição obriga a emitir uma mensagem se a condição

não for satisfeita para informar ao usuário que não existem raízes reais e resolvê-la

em caso contrário.

Veja um diagrama de Blocos (Fluxograma) do problema. Poderia ser montado de

outras formas além da apresentada.

Veja a diferença na apresentação dos dois for. Em um consta o acréscimo do contador e no outro não.

Page 82: Apostila CN 2013

Cálculo Numérico usando MatLab

82

V

F

S

Fim

Flag = 1

Flag = 0

V

F

Continuar? s / n

Não existem raízes reais

Mensagem a ≠ 0

Cálculo de D

F

Ler a , b , c

a == 0

Apagar tela

F

início

Flag = 1

Flag == 0 V

V

D < 0

Imprimir x1 e x2

Calcular x1 e x2

Page 83: Apostila CN 2013

Cálculo Numérico usando MatLab

83

A rotina em MATLAB ficaria assim:

Neste exemplo o problema foi resolvido com o uso de while-end e if-else-end

, inclusive aninhando alguns.

Observe que houve alguma modificação após a construção do fluxograma.

Antes da leitura dos coeficientes b e c, foi realizado o teste com o coeficiente a e

somente se a for não nulo a rotina continua a ser executada.

Foi declarada e inicializada uma variável com o nome de flag apenas para

definir se o programa deve ser executado novamente ou se encerrado. A rotina não

Função (sqrt )nativa do MATLAB. Calcula a raiz quadrada do argumento.

Page 84: Apostila CN 2013

Cálculo Numérico usando MatLab

84

é executada apenas se flag for igual a zero. Note que ao final é solicitada a

informação de continuar ou parar. No caso de parar deve ser digitado o número

zero. Qualquer outra resposta o problema continua, visto que o valor digitado é

armazenado exatamente em flag.

Page 85: Apostila CN 2013

Cálculo Numérico usando MatLab

85

9. FUNÇÕES

No MATLAB existem várias funções nativas que podem ser usadas para

cálculos diversos, como sin(x) , cos(x) , sqrt(x) , exp(x) e várias outras, como já foi

citado.

Além disto, é possível a criação de funções próprias do usuário para efetuar algum

tipo de cálculo para o qual não existe função nativa, e cujo uso ocorre da mesma

forma como as que existem no MATLAB.

9.1 ESTRUTURAS DE UMA FUNÇÃO

Uma função é construída no mesmo ambiente em que criamos as rotinas, que

é o editor do MATLAB.

9.1.1 Declaração da função

Toda função deve ser declarada, no editor, na primeira linha. Essa declaração é

elaborada da seguinte forma:

function [argumentos de saída] = nome da função( parâmetros)

A palavra function é obrigatória e a caracteriza como função.

Argumentos de saída é o elemento que referencia algum resultado que for

necessário utilizar no futuro (outra função ou outros cálculos) e que a função

disponibilizará ao final da execução, e devem ser referenciados entre colchetes

quando for mais de um valor.

Segue-se o sinal de igual e nome da função. Esse nome da função é a

forma como ela será referenciada quando da solicitação da execução, e deve ser

sempre sucedido de um par de parênteses (obrigatório).

Parâmetros são os valores que se deseja informar e que serão utilizados

como variáveis na execução. Os parâmetros não são obrigatórios, mas é uma forma

Page 86: Apostila CN 2013

Cálculo Numérico usando MatLab

86

de se enviar dados para a função, além da possibilidade de se proceder à leitura dos

dados no interior da função, como foi realizado nas rotinas.

Pelo que se conclui então é que ao declarar uma função:

Define o arquivo a ser construído como sendo uma função, o que a torna

diferente da rotina.

Estabelece o nome da função.

Define o número de variáveis de entrada e a sua ordem.

Especifica se a função retornará algum valor, quantos são eles e o tipo das

variáveis de saída.

9.1.2 Corpo da função

Uma função, logo após ter sido declarada, podem ser incluídas linhas de

comentários iniciadas pelo símbolo % e tem as mesmas características de quando

foram estudadas as rotinas.

O código do programa a ser executado pode conter cálculos, inicialização de

variáveis, as funções nativas do MATLAB, os operadores lógicos e as expressões

lógicas, além das estruturas de fluxo do programa (if, for, while, além de outros não

mencionados aqui). Devem ser obedecidos os mesmos critérios estabelecidos para

o caso de rotinas.

9.2 SALVANDO E EXECUTANDO UMA FUNÇÃO

O arquivo construído para uma função será salvo com a mesma extensão

usada para as rotinas: .m e é atribuída pelo próprio MATLAB. Também o diretório

onde é salvo, o MATLAB já oferece uma primeira opção, que é a pasta work,

conforme já foi comentado. Nada impede, entretanto, que seja direcionado para

outro local, escolhido pelo programador, desde que sejam tomadas as providências

para que ele tenha a sua localização informada para o MATLAB.

Para executar a função basta fazer referência ao seu nome na janela do

Command Windows, ou dentro de uma rotina ou ainda dentro de uma outra função,

indicando, sempre, os parâmetros de entrada que constam da sua definição.

Page 87: Apostila CN 2013

Cálculo Numérico usando MatLab

87

Pelo que se observa, uma rotina e uma função são muito parecidas. Isto é

verdade. Entretanto algumas diferenças são significativas:

A primeira linha de uma função, a linha de declaração da função, é

obrigatória. Nas rotinas essa primeira linha não é exigida.

Uma função pode fazer receber dados de entrada, através dos parâmetros de

entrada (argumentos) e podem retornar dados para o argumento de saída, enquanto

uma rotina não goza dessas características.

Exemplo:

Elaborar uma rotina que determina o ponto extremo de uma função do segundo

grau, da forma .

Solução:

Uma análise do problema esclarece que:

É solicitado o PONTO extremo da função, o que ocasiona a determinação da

abscissa e da ordenada do ponto. Isto significa que o parâmetro de saída é um par

ordenado.

O valor do coeficiente a não pode ser nulo.

Além disso, é o valor de a que determina se a concavidade da curva está voltada

para cima ou para baixo, indicando se o valor da função é, respectivamente, mínimo

ou máximo.

Finalmente, é sabido que a abscissa do vértice é dado por e a ordenada

por onde representa o discriminante.

Poder-se-ia estabelecer um fluxograma (diagrama de blocos) para o

problema.

A função teria o seguinte aspecto:

Page 88: Apostila CN 2013

Cálculo Numérico usando MatLab

88

Para executar a função poder-se-ia proceder como aparece no Command Windows

abaixo.

Page 89: Apostila CN 2013

Cálculo Numérico usando MatLab

89

Como já foi afirmado, é possível “chamar” uma função através da rotina de

uma primeira função. Para exemplificar este fato, considere o mesmo problema

acima.

Proceda a criação de uma função, que se dará o nome de graf, e que terá

como argumentos de entrada os coeficientes da função do segundo grau e o valor

da abscissa do ponto extremo, que já teria sido calculada na função maxmin.

Esta função teria como trabalho traçar o gráfico da função, considerando

pontos antes e depois do vértice (ponto extremo da função) da parábola.

Construída, esta função teria a forma:

Como se verá, os coeficientes da função do segundo grau foram designados

por a, b e c, e assim foram tratados na função maxmin. São esses valores que

serão passados como parâmetro para a função graf. Nesta função eles serão

tratados por m, n e r, respectivamente, em todos os cálculos que envolverem os

coeficientes.

Não que isto seja obrigatório. Poder-se-ia continuar designando eles por seus

nomes de origem, mas não é obrigatório. Em cada função, as variáveis recebem os

Parâmetros da função. Os primeiros são os coeficientes e o último é o valor da abscissa do vértice.

Page 90: Apostila CN 2013

Cálculo Numérico usando MatLab

90

VALORES e dão a eles a designação própria da função. Este procedimento não

causa nenhum inconveniente ao resultado.

Neste momento, proceda a uma alteração na função maxmin, acrescentando

a “chamada” para a função graf.

Esta alteração daria o seguinte aspecto à função maxmin.

Ao executar, a partir do Command Windows a função maxmin, fornecendo os

coeficientes da função do segundo grau, a função calcula o ponto extremo, informa-

o na janela e solicita a execução da função graf, informando como parâmetros os

mesmos coeficientes que recebeu e um valor calculado no corpo da função maxmin

(p) e que representa o valor da abscissa no ponto extremo.

Executado o programa, ele apresentaria o seguinte resultado:

A única alteração: incluir uma “chamada” para a função graf, informando os parâmetros solicitados: a , b e c, além do valor de p, que é a abscissa do vértice.

Page 91: Apostila CN 2013

Cálculo Numérico usando MatLab

91

REFERÊNCIAS BIBLIOGRÁFICAS

1. Cecílio, Waléria Adriana Gonçalez, Introdução ao Matlab, Apostila – Curso de

Extensão – PUCPR, 2010.

2. HANSELMAN, Duane e LITTLEFIELD, Bruce. Matlab 5 Versão do Estudante,

Ed. Makron Books: São Paulo, 1999.

3. Universidade do Estado do Rio de Janeiro - Programa Prodenge / Sub-Programa

Reenge. Introdução à Solução de Problemas de Engenharia, Apostila de.

Page 92: Apostila CN 2013

Cálculo Numérico usando MatLab

92

10. ZEROS DE FUNÇÕES ALGEBRICAS OU TRANSCENDENTES

Este capítulo apresenta métodos numéricos para resolução de equações

complexas de uma variável. De forma simplificada, queremos encontrar as raízes

reais da equação f(x) = 0, isto é, os valores reais de x que tornam a equação

verdadeira.

Definição:

APLICAÇÃO:

“UM NÚMERO REAL X* É UM ZERO DA FUNÇÃO F(X) OU UMA RAIZ DA EQUAÇÃO

F(X) = 0 SE F(X*)=0.”

Page 93: Apostila CN 2013

Cálculo Numérico usando MatLab

93

Para resolver esse tipo de problema, existem vários tipos de métodos

numéricos que fornecem soluções aproximadas, conforme uma precisão pré-

estabelecida.

Todo o processo de resolução consiste em duas etapas:

1. Determinar o intervalo da reta que contém, de preferência, uma raiz;

2. Processo iterativo de refinamento, para obter aproximações cada vez melhores, a

partir de estimativas anteriores, até que seja atingida a precisão desejada.

10.1 INTERPRETAÇÃO GEOMETRICA E TEOREMA DE BOLZANO.

A ideia é determinar um intervalo [a,b] que contenha pelo menos um zero da

função. Existem duas formas de resolver este problema: o método gráfico e o

método analítico.

10.1.1 MÉTODO GRÁFICO “Consiste em tomar valores para x e calcular os valores de y = f(x), plotando – se os

pares ordenados obtidos em um plano cartesiano.”

Page 94: Apostila CN 2013

Cálculo Numérico usando MatLab

94

Exemplo:

Esboce o gráfico de f(x)=ex+x2-2 e identifique o intervalo que contém a raiz de f(x).

].1,0[ ]1,2[ 2*21

*1 =∈−−=∈∴ IxeIx

Existe outra forma de determinar o intervalo que contém a raiz, dada pela seguinte

sequência:

a) Tomar f(x) = g(x) - h(x). Obter a equação equivalente g(x) = h(x) a partir de

f(x)=0;

b) Esboçar os gráficos de g(x) e h(x) no mesmo plano cartesiano;

c) Localizar os pontos de x, onde as duas curvas se interceptam, pois neste

caso *).(*)(0*)( xhxgxf =⇔=

>>x=linspace(-2,2,30); >>y=e

x+ x2-2; >>plot(x,y), grid

Page 95: Apostila CN 2013

Cálculo Numérico usando MatLab

95

Exemplo:

Encontre o intervalo que contém a raiz de 2)( 2 −+= xexfx

.

].1,0[ ]1,2[ 2*21

*1 =∈−−=∈∴ IxeIx

10.1.2 MÉTODO ANALÍTICO

Às vezes fazer o gráfico de f é extremamente complicado, então quando isso

ocorrer, podemos definir o intervalo de maneira analítica, isto é, aplicar o Teorema

de Bolzano. Este teorema é muito utilizado em algoritmos numéricos, quando

queremos encontrar um intervalo que contenha pelo menos uma raiz de f(x) = 0.

Teorema de Bolzano: Se f(x) é contínua em I = [a , b] e troca de sinais nos

extremos de I então existe pelo menos uma raiz real em I tal que f(a).f(b) < 0.

>>x = linspace(-2,2,30); >>y1 = exp(x); >>y2 = 2 – x 2; >>plot(x,y1,x,y2), grid

Page 96: Apostila CN 2013

Cálculo Numérico usando MatLab

96

Exemplo:

Encontre o intervalo que contém a raiz de 2)( 2 −+= xexfx

, usando o Teorema de

Bolzano.

x f(x) SINAL

-3 7.0498 +

-2 2.1353 +

-1 -0.6321 -

0 -1.0000 -

1 1.7183 +

2 9.3891 +

3 27.0855 +

10.1.3 Exercícios:

1) Com base no teorema de Bolzano e no corolário, verifique se f(x), definida

abaixo, tem raízes no intervalo I=[-10,10]. Obs.: Na letra “a” o intervalo é de [0,10]

a) x

exxf−−= 5)(

b) 39)( 3 +−= xxxf

2) Isole graficamente os zeros das funções usando o processo da g(x)=h(x).

a) xxxf += ln)(

b) xexf x 1

)( −=

c) 2log)( −−= xxxf

>> x=-3:3;

>> y=exp(x)+x.^2-2;

>> [x;y]'

Page 97: Apostila CN 2013

Cálculo Numérico usando MatLab

97

3) Isole analiticamente os zeros das seguintes funções:

a) xxf x 32)( −=

b) tgxxxf −= 2)(

c) x

exxf2cos4)( −=

10.2 PROCESSO ITERATIVO DE REFINAMENTO

Após encontrar o intervalo que contém pelo menos uma raiz, temos como

objetivo, refinar este intervalo até encontrar uma solução tão precisa quanto se

queira. Apresentamos na sequência um algoritmo, que podemos chamar de

Algoritmo Genérico. Este calcula o valor aproximado do zero da função.

Início

Cálculos iniciais

A raiz calculada, tem a precisão desejada?

Dados iniciais

Fazer nova estimativa para a raiz

sim não

Realizar cálculos finais

Apresentar

Fim

Page 98: Apostila CN 2013

Cálculo Numérico usando MatLab

98

Desta forma, podemos constatar que um método iterativo consiste em uma

sequência de passos que se repetem em ciclos. Cada repetição é chamada de

iteração a qual utiliza dados da iteração anterior para atualizar as informações. É

importante ressaltar que o processo iterativo só se encerrará quando o erro na

aproximação seja menor que a precisão pré-estabelecida, isto é, um dos critérios de

parada for satisfeito. Caso contrário o algoritmo entrará em um looping infinito.

10.2.1 CRITÉRIOS DE PARADA

Selecionando uma tolerância 0>ε (valor arbitrário pequeno) podemos gerar uma

sequência de aproximações xk até que uma das condições definida abaixo seja

alcançada.

a) ε<− −1kk xx

b) 0,1 ≠<

− −

k

k

kkx

x

xxε

c) ( ) ε<kxf

10.3 MÉTODO DA BISSECÇÃO

Seja f(x) contínua no intervalo [a , b] e tal que f(a)f(b)<0. O método da

Bissecção, aplica o Teorema de Bolzano, sucessivas vezes, com o objetivo de

reduzir a amplitude do intervalo que contém a raiz até que a precisão pré-

estabelecida seja atingida, isto é, deseja-se reduzir o intervalo [a,b] até que

ε<− −1kk xx.

Page 99: Apostila CN 2013

Cálculo Numérico usando MatLab

99

Interpretação Geométrica

As iterações são como segue:

M

=

=

>

<

>+

=

=

=

<

<

>+

=

=

=

>

<

>+

=

11

20

10*

2

1

0

102

1

00

10*

1

0

01

0

0*

0

0

),(

0)(

0)(

0)(

2

),(

0)(

0)(

0)(

2

),(

0)(

0)(

0)(

2

xx

xx

xxx

xf

xf

xfxx

x

xb

xx

xxx

xf

bf

xfbx

x

bb

xa

bxx

xf

bf

afba

x

CONVERGÊNCIA

É possível provar que o método da Bissecção converge sempre que a função f(x) for

contínua em [a, b], com f(a)·f(b) < 0.

Page 100: Apostila CN 2013

Cálculo Numérico usando MatLab

100

NÚMERO DE ITERAÇÕES

Pode-se saber previamente o número de iterações necessárias para atingir o

resultado desejável, através da fórmula:

log2

log- a) - (b log K

ε>

sendo [a, b] o intervalo inicial e ε a tolerância requerida.

Onde kkk

abab

2

−=−

.

Exemplos:

a) Encontre uma aproximação para o zero da função f(x)= x³ - 9x + 3 em I= [0,1]

e ε = 0,001.

Ite a b 2

abx

+=

f(x) |b-a|< ε

0 0 1 0,5 -1,375 1

1 0 0,5 0,25 0,766 0,5

2 0,25 0,5 0,375 -0,322 0,25

3 0,25 0,375 0,313 0,214 0,125

4 0,313 0,375 0,344 -0,055 0,062

5 0,313 0,344 0,329 0,075 0,031

6 0,329 0,344 0,337 0,005 0,016

7 0,337 0,344 0,341 -0,029 0,008

8 0,337 0,341 0,339 -0,012 0,004

9 0,337 0,339 0,338 -0,003 0,002

10 0,337 0,338 0,338 -0,003 0,001

O zero foi encontrado com a precisão requerida:

Page 101: Apostila CN 2013

Cálculo Numérico usando MatLab

101

• Observe que a amplitude do intervalo gerado é a metade do intervalo

anterior.

b) Encontre uma aproximação para o zero da função f(x)= x – cos(x) em I=

[0,1] e ε = 0,001.

O zero foi encontrado com a precisão requerida:

Ite a b 2

abx

+=

f(x) |b-a|< ε

Desvantagem: A desvantagem do Método da Bissecção é que se você quiser uma

raiz bem aproximada o número de interações será muitas vezes impraticável em

cálculos manuais.

Vantagem: A vantagem do Método da Bissecção é que se você escolher um

intervalo onde há raiz, sempre irá convergir.

O Método da Bissecção é um dos métodos iterativos, usados para se obter zeros

reais de funções. Este, não é o melhor meio de se chegar às raízes de uma

Page 102: Apostila CN 2013

Cálculo Numérico usando MatLab

102

equação, porém seu algoritmo é o mais simples, pois não envolve cálculos

complexos.

Satisfeitas as hipóteses de continuidade de f(x) em [a,b] e de troca de sinal em a e b,

o Método da Bissecção gera uma sequência convergente, ou seja, é sempre

possível obter um intervalo que contém a raiz da equação em estudo, sendo que o

comprimento deste primeiro intervalo final satisfaz a precisão requerida.

EXERCÍCIOS:

1) Calcular a raiz cúbica de 7 é equivalente a determinar o zero da função f(x) =

x3 - 7. Sabe-se que o intervalo [1, 2.5] contém um zero. Determine uma aproximação

para 3 7 usando ε < 0.01.

2) Use o Método da Bissecção para calcular o zero da função

f(x) = x4+2x3-x-1,. Para os cálculos escolha I = [0,1] e a precisão igual a 0.05. Antes

dos cálculos, estime o número de iteração.

Page 103: Apostila CN 2013

Cálculo Numérico usando MatLab

103

10.4 MÉTODO DE NEWTON-RAPHSON

A ideia central no método de Newton-Raphson, também conhecido como

método das tangentes, é a de escolher uma função g, tal que a derivada de g, na

raiz que se está procurando, seja zero. Assim teremos, não só garantia da

convergência quanto convergência muito rápida.

( )k

kkk

xf

xfxx

´

)(1 −=+

No método de Newton-Raphson, a convergência não é linear. A convergência

é muito rápida, é quadrática. Assim, cada novo erro é proporcional ao quadrado do

erro anterior.

Teorema: Se f(a) * f(b) < 0 e f`(x) e f”(x) forem não nulas, e preservarem o sinal em

[a,b], então partindo-se da aproximação inicial, x0 pertence ao intervalo [a,b], tal que

f(x0)*f”(x0) > 0 é possível construir, pelo método de Newton-Raphson uma

seqüência {xk} que converge.

Page 104: Apostila CN 2013

Cálculo Numérico usando MatLab

104

Exemplo: Encontre o zero de y = x - cos(x) com: Tolerância: 10-5 e I=[0,2]

k xk f(xk)

0 0.5 -0.3776

1 0.7552 0.0271

2 0.7391 0.0000

Comentários:

� O Método de Newton-Raphson apresenta uma rápida convergência , o que

representa uma boa maneira para se resolver zeros de função.

� Seu maior ponto negativo é seu alto custo computacional, devido aos

inúmeros cálculos efetuados. Porém, somente assim se obtém uma rápida

convergência.

EXERCÍCIOS:

1) Encontre a raiz, aplicando a cada uma das funções um dos métodos estudados.

(Analise qual o método mais conveniente para cada função.)

a) ( ) xxxf sin2,08,0 −−= 410−=ε

b) ( ) 9221918230 234 −−++= xxxxxf 410−=ε

c) ( ) 1log −= xxxf 410−=ε

d) ( ) xexfx cos

2

−= −

210−=ε [ ]2,1

(Bisseção) Função: a ( ) b ( ) c ( ) d ( )

Page 105: Apostila CN 2013

Cálculo Numérico usando MatLab

105

Ite a b 2

abx

+=

f(x) |b-a|< ε

(Newton) Função: a ( ) b ( ) c ( ) d ( )

Ite xn ( )n

n

nnxf

xfxx

´

)(1 −=+

|xn+1-xn|< ε

Page 106: Apostila CN 2013

Cálculo Numérico usando MatLab

106

2) Encontre a raiz da função utilizando os métodos:

a) Bisseção - Intervalo: [2,3] 610ε −=

Ite a b 2

abx

+=

f(x) |b-a|< ε

Page 107: Apostila CN 2013

Cálculo Numérico usando MatLab

107

b) Newton - xo=2,5 610ε −=

Ite xn ( )n

n

nnxf

xfxx

´

)(1 −=+

|xn+1-xn|< ε

Page 108: Apostila CN 2013

Cálculo Numérico usando MatLab

108

3) Encontre pelo método da bissecção a raiz de )cos(3)( xxxf −= pertencente ao

intervalo (0,2; 0,4) com precisão 1,0=ε (cálculos com 5 casas decimais) .

n 2

nnn

bax

+=

ε<− nn ab

0

1

2

3

4

5

6

7

8

Page 109: Apostila CN 2013

Cálculo Numérico usando MatLab

109

4) Obtenha pelo método de Newton a raíz de xexfx −= −)( próxima de 5,00 =x com

precisão de 310−=ε (cálculos com 5 casas decimais).

n )´(

)()(

n

nnn

xf

xfxx −=ϕ

ε<)( nxf

0

1

2

3

4

5

6

7

8

Page 110: Apostila CN 2013

Cálculo Numérico usando MatLab

110

5) Obtenha a raíz aproximada de xxxf += )ln()( com 1.00 =x e 11 =x , precisão de 210−=ε (cálculos com 5 casas decimais).

6) Obtenha pelo método de Newton a raíz aproximada de xxxxf 65)( 23 +−= com

2,10 =x e precisão de 01,0=ε (cálculos com 5 casas decimais)

itr xn 1+nx |f(xn+1)|< ε

1

2

3

4

itr xk |f(xk)|< ε

1

2

3

4

5

6

7

Page 111: Apostila CN 2013

Cálculo Numérico usando MatLab

111

11. RESOLUÇÃO DE SISTEMAS LINEARES

Definições

Um sistema linear com m equações e n variáveis é escrito usualmente da forma:

Onde

: coeficientes ,

: variáveis

: constantes

A resolução de um sistema linear consiste em obter os valores de ( ),

caso eles existam, que satisfaçam as m equações simultaneamente.

Usando notação matricial, o sistema pode ser assim representado:

Onde

é a matriz dos coeficientes,

é a matriz das variáveis

e

é o vetor constante.

Através de exemplos analisaremos situações em relação ao número de soluções de

um sistema linear.

i) Para a solução é única e .

Page 112: Apostila CN 2013

Cálculo Numérico usando MatLab

112

ii) , neste caso há infinitas soluções representadas por

, com .

iii) Para não existe nenhuma solução.

Os métodos numéricos para resolução de um sistema linear podem ser divididos

em dois grupos distintos: métodos diretos e métodos indiretos.

Métodos diretos são aqueles que, a menos de erros de arredondamento, fornecem a

solução exata do sistema linear, entre eles estão o método de Eliminação de Gauss

e a fatoração LU com pivoteamento parcial.

Os métodos iterativos geram uma sequência de valores a partir de uma

solução inicial . Sob certas condições esta solução converge para a solução do

sistema linear, caso ela exista. O Método de Gauss-Jacobi é iterativo.

11.1 MÉTODO DE ELIMINAÇÃO DE GAUSS

O método de Eliminação de Gauss consiste em transformar o sistema linear

original num sistema linear equivalente com matriz dos coeficientes triangular

superior, pois esses são de resolução imediata. Dizemos que dois sistemas são

equivalentes quando possuem a mesma solução.

Inicialmente iremos considerar a resolução de sistemas triangulares, seja o

sistema linear , onde é triangular superior com elementos da diagonal

diferente de zero:

Da última equação, temos

Page 113: Apostila CN 2013

Cálculo Numérico usando MatLab

113

pode ser obtido da penúltima equação:

e assim sucessivamente obtém-se e finalmente :

Para obter um sistema triangular superior equivalente de um sistema linear original

faz-se uso de operações elementares escolhidas entre:

i) Trocar duas equações;

ii) Multiplicar uma equação por uma constante não nula;

iii) Adicionar um múltiplo de uma equação a uma outra equação;

O método de Eliminação de Gauss usa estas operações elementares para

triangularizar a matriz A.

A eliminação é efetuada por colunas e chamaremos de etapa k do processo a

fase em que se elimina a variável das equações k+1, k+2,..., n.

Usaremos a notação para indicar o coeficiente no final da etapa k, bem

como será o elemento do vetor constante no final da k-ésima etapa.

É importante notar que se na etapa k o coeficiente localizado na

diagonal principal for igual a zero é possível fazer troca de linhas de forma que não

se altere as colunas obtidas nas etapas anteriores à k, deste que este

procedimento será sempre possível.

Seja a matriz aumentada

Page 114: Apostila CN 2013

Cálculo Numérico usando MatLab

114

Etapa 1:

Para eliminar a variável das equações i=2,3,..., n considere , para

i=2,...,n, da equação i subtraímos a primeira equação multiplicada por .

Esses quocientes determinados por são chamados de multiplicadores e é

o pivô da primeira etapa.

Ao final desta etapa teremos a matriz:

Etapa 2:

Os multiplicadores desta etapa serão para i=3,...,n.

A variável é eliminada das equações i=3,...,n da seguinte forma: da equação i

subtraímos a segunda equação multiplicada por .

Ao final teremos a matriz:

Na etapa (n-1) obtém-se :

E o sistema linear é triangular superior e equivalente ao sistema

linear original, ou seja, possuem a mesma solução.

Page 115: Apostila CN 2013

Cálculo Numérico usando MatLab

115

Exemplo 1: Encontrar a solução de .

Etapa 1

Para facilitar utilizaremos para indicar o vetor correspondente a linha i. Nesta

etapa tem-se:

Pivô Multiplicadores Operações

e

e

Portanto,

Etapa 2

Pivô Multiplicadores Operações

Portanto,

Assim, resolver é equivalente a resolver :

Page 116: Apostila CN 2013

Cálculo Numérico usando MatLab

116

A solução deste sistema é o vetor .

Exemplo 2: Encontrar a solução de .

Etapa 1

Pivô Multiplicadores Operações

,

e

,

e

Portanto,

Etapa 2

Neste caso o pivô é zero trocaremos de posição as linhas 2 e 3:

A variável é nula nas terceira e quarta equações, logo a etapa está concluída.

Page 117: Apostila CN 2013

Cálculo Numérico usando MatLab

117

Etapa 3

Pivô Multiplicadores Operações

Para obter a solução do sistema original resolve-se:

Cuja solução é o vetor .

11.2 MÉTODO DE ELIMINAÇÃO DE GAUSS COM PIVOTEAMENTO

PARCIAL

No inicio da etapa k da fase de eliminação de Gauss, escolher para pivô o

elemento de maior módulo entre os coeficientes e trocar as

linhas k e i se for necessário.

Exemplo 1: Encontrar a solução de .

Etapa 1

O pivô é logo permuta-se as linhas 1 e 3.

Page 118: Apostila CN 2013

Cálculo Numérico usando MatLab

118

Pivô Multiplicadores Operações

,

e

,

e

Portanto,

Etapa 2

Pivô Multiplicadores Operações

e

e

Etapa 3

Pivô Multiplicadores Operações

Page 119: Apostila CN 2013

Cálculo Numérico usando MatLab

119

A solução do sistema triangular superior é .

11.3. FATORAÇÃO LU COM ESTRATÉGIA DE PIVOTEAMENTO PARCIAL

Seja o sistema linear . O processo de fatoração deste sistema consiste

em decompor a matriz A dos coeficientes em um produto de dois ou mais fatores e,

em seguida, resolver uma sequência de sistemas lineares que nos conduzirá a

solução do sistema linear original.

Por exemplo, se pudermos realizar a fatoração , o sistema linear

pode ser escrito como . Seja . A solução do sistema linear pode ser

obtida da resolução de dois sistemas:

i)

ii)

No método de fatoração LU a matriz L é triangular inferior cujo elementos da

diagonal principal são iguais a 1 e o restante dos elementos são os multiplicadores

obtidos do método de Eliminação de Gauss e a matriz U é triangular superior que

coincide com a mesma matriz obtida no final da última etapa do Método de

Eliminação de Gauss. No entanto é utilizado o pivoteamento parcial, ou seja, no

inicio da etapa k da fase de eliminação de Gauss, escolher para pivô o elemento de

maior módulo entre os coeficientes e trocar as linhas k e i

se for necessário. Essas permutações efetuadas nas linhas de A devem ser

efetuadas sobre o vetor b também para manter a equivalência entre os sistemas,

para isso será utilizada uma matriz auxiliar , no qual é uma matriz identidade

de ordem n cuja as linhas k e i são trocadas.

Page 120: Apostila CN 2013

Cálculo Numérico usando MatLab

120

Exemplo 1: Obter a solução de .

Usando o processo de Gauss para triangularizar A, tem-se:

Etapa 1:

Pivô Multiplicadores Operações

e

e

Então,

Uma vez que os elementos e são nulos, podemos guardar os

multiplicadores nestas posições, então:

Etapa 2

O Pivô é , então devemos permutar as linhas 2 e 3:

e

Page 121: Apostila CN 2013

Cálculo Numérico usando MatLab

121

A matriz é a identidade de ordem 3 no qual as linhas 2 e 3 foram permutadas

também.

Pivô Multiplicadores Operações

Efetuando a eliminação temos:

Os fatores L e U são:

e

Como houve uma permutação resolvem-se os seguintes sistemas triangulares:

i) , onde .

ii) Ux=y

Page 122: Apostila CN 2013

Cálculo Numérico usando MatLab

122

Exemplo 2: Obter a solução de .

Etapa 1

O Pivô é , então devemos permutar as linhas 1 e 3:

e

Pivô Multiplicadores Operações

,

e

,

e

Etapa 2

O Pivô é , então permutando as linhas 2 e 4:

Page 123: Apostila CN 2013

Cálculo Numérico usando MatLab

123

e

Pivô Multiplicadores Operações

e

e

Etapa 3

Pivô:

Multiplicadores:

Operações:

i)

, onde .

Page 124: Apostila CN 2013

Cálculo Numérico usando MatLab

124

ii) Ux=y

11.4 MÉTODO DE GAUSS-JACOBI

Considere o sistema linear de n equações e n variáveis:

e , i=1,...,n, na primeira equação isola-se , na segunda equação isola-se

e assim sucessivamente:

O método de Gauss-Jacobi consiste em dado , uma aproximação inicial, obter

, através da relação recursiva:

Page 125: Apostila CN 2013

Cálculo Numérico usando MatLab

125

Este processo é interrompido quando esteja suficiente próximo de e

esta distância é dada por .

Aplicando o erro relativo tem-se , dada uma precisão então

é obtido como uma solução aproximada.·.

Exemplo 1: Obter a solução de , sendo

Construindo o processo iterativo:

Tomando k=0 tem-se:

Verificando a precisão:

Page 126: Apostila CN 2013

Cálculo Numérico usando MatLab

126

Portanto: e

Para as próximas iterações tem-se:

K=1

e

K=2

e

K=3

e

Nestas condições a solução aproximada para o sistema é dada por

sabe-se que a solução exata é .

Teorema - Critério das Linhas

O sistema linear gera uma sequência convergente para a solução através do

método de Gauss-Jacobi quando calculados obtém-se

.

Exemplo 1: Dado o sistema linear , verifique se o método

de Gauss-Jacobi converge.

Para a matriz , tem-se:

Page 127: Apostila CN 2013

Cálculo Numérico usando MatLab

127

então ,pelo critério das linhas o método de Gauss-Jacobi

é convergente para este sistema linear.

Exercícios

1. Utilizando o método de eliminação de Gauss resolva os sistemas lineares:

a) Resp.:

b) Resp.:

c)

Resp.:

d)

Resp.:

Page 128: Apostila CN 2013

Cálculo Numérico usando MatLab

128

2. Utilizando o método de eliminação de Gauss resolva os sistemas lineares:

a) Resp.:

b) Resp.:

c)

Resp.:

d)

Resp.:

Page 129: Apostila CN 2013

Cálculo Numérico usando MatLab

129

3. Utilizando fatoração LU com estratégia de pivoteamento parcial obtenha as

soluções dos sistemas lineares:

4.

a)

Resp.: , , e

b)

Resp.: , , e

c)

Resp.: , , e

d)

Page 130: Apostila CN 2013

Cálculo Numérico usando MatLab

130

Resp.: , , e .

5. Obter a solução dos sistemas lineares utilizando o método iterativo de Gauss-

Jacobi:

a) , sendo

Resp.: e 0,015325

b) , sendo

Resp.: e

c) , sendo

Resp.: e

Page 131: Apostila CN 2013

Cálculo Numérico usando MatLab

131

12. INTERPOLAÇÃO POLINOMIAL

Considere um conjunto de pontos (designados por nós da interpolação) da

forma que estão associados aos valores de uma função ,

respectivamente. O objetivo é encontrar um polinômio interpolador de grau n tal que

para . Esse polinômio tem a forma geral

. Como os pontos pertencem à curva de

têm-se as seguintes igualdades:

As incógnitas são os coeficientes . Assim obtemos o sistema linear de

forma matricial:

,

onde a matriz dos coeficientes do sistema é conhecida como Matriz de

Vandermonde.

Por exemplo para quatros nós tem-se um polinômio interpolador de grau 3

( ), como mostra a figura a seguir:

Page 132: Apostila CN 2013

Cálculo Numérico usando MatLab

132

Exemplo: Obter o polinômio interpolador para os pares de pontos indicados na

tabela:

x -

1 0 1 2

y -

1 1 5 17

Solução:

O objetivo é determinar os coeficientes do polinômio

, então seja o sistema:

A solução é dada por , , e , assim

. A curva determinada por contém os pontos dados

como mostra o gráfico:

Page 133: Apostila CN 2013

Cálculo Numérico usando MatLab

133

Exercícios:

1) Obter o polinômio interpolador para os pares de pontos indicados na tabela:

x -

1 0 1 2

y 1 3 3 7

Resp.:

2) Obter o polinômio interpolador para os pares de pontos indicados na tabela:

x -1 0 1 2 3

y -

10

-

10

-

6 20 110

Resp.:

Page 134: Apostila CN 2013

Cálculo Numérico usando MatLab

134

12.1 FORMA DE NEWTON

A forma de Newton que interpola em a é a seguinte:

Para obter o valor dos coeficientes utiliza-se o operador de

diferenças divididas.

Definição de operador de diferenças divididas para um conjunto de nós , onde

:

Ordem

0

Ordem

1

Ordem

2

Ordem

n

Page 135: Apostila CN 2013

Cálculo Numérico usando MatLab

135

Tabela:

x Ordem 0 Ordem 1 Ordem 2

Exemplo: Construir a tabela de diferenças divididas dos nós:

Page 136: Apostila CN 2013

Cálculo Numérico usando MatLab

136

x -

1 0 1 2

y -

1 1 5 17

Solução:

Valores de x:

, , e

Diferenças divididas de ordem 0:

, , e

Diferenças divididas de primeira ordem:

, e

Diferenças divididas de segunda ordem:

e

Diferenças divididas de terceira ordem:

Tabela:

x Ordem

0

Ordem

1

Ordem

2

Page 137: Apostila CN 2013

Cálculo Numérico usando MatLab

137

Exemplo: Construir a tabela de diferenças divididas dos nós:

x -

1

0 1 2 3

y 1 1 0 -

1

Solução:

Valores de x:

, , , e

Diferenças divididas de ordem 0:

, , , e

Diferenças divididas de primeira ordem:

, , e

Diferenças divididas de segunda ordem:

, , e

Diferenças divididas de terceira ordem:

Diferenças divididas de quarta ordem:

Page 138: Apostila CN 2013

Cálculo Numérico usando MatLab

138

Construindo a tabela:

x Ordem

0

Ordem

1

Ordem

2

3

Na forma de Newton utiliza-se as diferenças divididas para obter os valores dos

coeficientes , onde :

Exemplo: Utilize a forma de Newton para obter o polinômio de grau três que interpola

os pontos:

x -

1

0 1 2

y -

1

1 5 17

Page 139: Apostila CN 2013

Cálculo Numérico usando MatLab

139

Solução:

Utilizando a tabela de diferenças divididas:

x Ordem

0

Ordem

1

Ordem

2

Forma de Newton:

Utilizando o Matlab para obter a forma reduzida da expressão anterior:

Portanto o polinômio que interpola os pontos dados é dado por

.

Page 140: Apostila CN 2013

Cálculo Numérico usando MatLab

140

Exemplo: Utilize a forma de Newton para obter o polinômio de grau quadro que

interpola os pontos:

x -

1

0 1 2 3

y 1 1 0 -

1

Utilizando a tabela de diferenças divididas:

x Ordem

0

Ordem

1

Ordem

2

3

Page 141: Apostila CN 2013

Cálculo Numérico usando MatLab

141

Forma de Newton:

Forma reduzida utilizando o Matlab:

Portanto o polinômio que interpola os pontos dados é dado por .

Exercícios:

1) Obter o polinômio interpolador utilizando a forma de Newton para os pares de

pontos indicados na tabela:

x -

1

0 1 2

y 1 3 3 7

Resp.:

2) Obter o polinômio interpolador pela forma de Newton para os pares de pontos

indicados na tabela:

x -1 0 1 2 3

y -

10

-

10

-

6

20 110

Resp.:

Page 142: Apostila CN 2013

Cálculo Numérico usando MatLab

142

3) Obter o polinômio interpolador pela forma de Newton para os pares de pontos

indicados na tabela:

x -

1 0 1 2 3

y 3 5 11 75 395

Resp.:

Page 143: Apostila CN 2013

Cálculo Numérico usando MatLab

143

13. AJUSTE DE FUNÇÕES

O ajuste é uma técnica de aproximação de funções que tem características

diferente da interpolação. (em geral é aplicada em um conjunto de dados

experimentais)

Motivos que levam a usar Ajuste:

1. Devido a erros experimentais nos dados, não faz sentido encontrarmos uma

função que passe exatamente pelos n+1 pontos. Devemos encontrar uma função

que melhor se ajusta aos dados;

2. Para um conjunto de dados muito grande, a solução por interpolação pode

ocupar muita memória ou tempo de processamento.

13.1 MÉTODO DOS MÍNIMOS QUADRADOS

No caso de ajuste de dados, o método dos Mínimos quadrados é utilizado no

cálculo de um conjunto de constantes (coeficientes ou parâmetros) cj, de uma função

f* que aproxima uma função y, desconhecida, da forma:

)()()()()(* 332211 xcxcxcxcxf nnφφφφ ++++= L

As funções nφφφ ,,, 21 L são escolhidas de acordo com a natureza dos

dados experimentais.

Definição: A função f* que melhor se ajusta, no sentido dos mínimos quadrados, é a

função cujo os parâmetros cj são determinados de modo que a soma dos quadrados

dos resíduos seja mínima, isto é,

Page 144: Apostila CN 2013

Cálculo Numérico usando MatLab

144

∑=

−=m

i

ii xfyR1

2))(*(ou

2

1332211 ))]()()()(([∑

=

++++−=m

i

nni xcxcxcxcyR φφφφ L

Nesta forma é mais fácil verificar que R é função dos cj e, portanto, passará por um

mínimo quando as m derivadas parciais se anularem simultaneamente. Estes geram

um sistema de m equações algébricas lineares onde as variáveis são c1, c2, ..., cn.

Estas equações são chamadas de equações normais.

13.2 AJUSTE POLINOMIAL

a) Ajuste a uma reta – Regressão Linear

Ao observar os pontos da figura, sabemos que há uma relação linear entre eles,

neste caso poderemos encontrar a reta que melhor se ajusta aos pontos dados.

‘Este método consiste em encontrar a melhor estimativa da reta r = c1 x +c0 de

modo a produzir o menor desvio possível.

Aplicando o critério de mínimos quadrados encontramos um sistema de duas

equações e duas incógnitas, dado por

Page 145: Apostila CN 2013

Cálculo Numérico usando MatLab

145

=

∑∑

∑∑∑

ii

i

ii

i

xy

y

c

c

xx

xm

2

12

, onde a solução do sistema é

( ) ∑∑∑ ∑ ∑

−=

221

ii

iiii

xmx

xymyxc

e m

xcyc

ii∑ ∑−=

10

ou

Caso Geral Linear

Da mesma forma que procedemos com o ajuste a uma reta, podemos

proceder com uma curva do tipo parábola, polinômio de grau n ou uma outro tipo de

curva no qual o ajuste é linear. Devemos frisar que linear se refere ao modo como os

coeficientes c1, c2, ... aparecem e não as funções )(,),(),(),( 321 xxxx nφφφφ L que

podem ser de qualquer forma, como, por exemplo )sen()( ,)( 21 xxex == φφ , etc.

PS: Tal função não é válida para funções do tipo )sen()( ,)( 21 axxaex bx == φφ e

outras, onde os coeficientes desconhecidos não aparecem linearmente.

Equações Normais

=

=+++

=+++

=+++

∑∑

∑∑

iin

ii

ii

nnnn

n

n

iinnnnnn

iinn

iinn

yx

yx

yx

AAA

AAA

AAA

matricialformaNa

yxcAcAcA

yxcAcAcA

yxcAcAcA

)(

)(

)(

c

c

c

.

)(

)(

)(

2

1

n

1

0

21

22221

11211

2211

22222121

11212111

φ

φ

φ

φ

φ

φ

MM

L

MOMM

L

L

L

M

L

L

.

Page 146: Apostila CN 2013

Cálculo Numérico usando MatLab

146

Onde:

)()(1

k

m

k

jkiij xxA ∑=

= φφ;

)(1

ki

m

k

ki xyb φ∑=

=;

m é igual ao número de pontos e

n é igual a quantidade de funções .φ

Caso Geral Polinomial

Para encontrar os coeficientes de um polinômio de grau n que melhor se ajusta a m

pontos resolvemos:

=

∑∑∑∑∑

∑∑∑∑∑

∑∑∑∑

=

=

=

==

+

=

+

=

+

=

=

+

====

====

m

i

i

n

i

i

m

i

i

m

i

i

nm

i

n

i

m

i

n

i

m

i

n

i

m

i

n

i

m

i

n

i

m

i

n

i

m

i

i

m

i

i

m

i

i

m

i

i

m

i

n

i

m

i

i

m

i

i

m

i

i

yx

yx

y

c

c

c

xxxxx

xxxxx

xxxxm

1

1

1

1

0

1

2

1

3

1

2

1

1

1

1

1

1

4

1

3

1

2

1

11

3

1

2

1

MM

L

MOMMMM

L

L

Page 147: Apostila CN 2013

Cálculo Numérico usando MatLab

147

Exercícios:

Questão 1. Considere os dados da tabela a seguir

xi 1 2 4 6

fi 10 5 2 1

ajuste os pontos usando a função f* = x

cc 2

1 +.

Questão 2. Observando-se um sinal np osciloscópio, verifica-se que ele

corresponde a superposição de dois efeitos, um osciloscópio e outro crescente.

Nestas condições é possível aproximá-lo por uma função f da família

f(x)=c1x+c2cos(x). Medindo-se alguns valores deste sinal, obteve-se a seguinte

tabela:

x 0 1,5 3 4,5 6

y 1 1,57 2 4,3 7

Resp: f(x)=1,0034 x + 1,0133 cos(x)

Questão 3. A tabela abaixo dá o desempenho de um torno de parafusos em função

de sua idade. Fazer a projeção da produção anual até oito anos.

x (anos) 0.5 1 2 3 4

y (paraf./dia) 2500 2400 2000 1800 1500

Resp.: (5,1202), (6,913), (7,624) e (8,335).

Page 148: Apostila CN 2013

Cálculo Numérico usando MatLab

148

Questão 4. .Encontre um polinômio de grau dois que ajusta os dados tabelados:

x 1 2 4 6

y 10 5 2 1

Resp: f(x)=14,31-5,27x+0,51x2

Page 149: Apostila CN 2013

Cálculo Numérico usando MatLab

149

14. INTEGRAÇÃO NUMÉRICA

MÉTODO DE NEWTON - COTES

VII - INTRODUÇÃO À SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

A Integração é uma operação matemática indispensável nas ciências exatas e

nas engenharias modernas. Calcular área e volume, velocidade a partir da

aceleração, trabalho da força e do deslocamento além de vários outros fenômenos

físicos, químicos, biológicos, fazem uso da integração.

Em geral, a integração de funções simples pode ser feita analiticamente, mas

muitas funções relevantes são, com freqüência, difíceis ou impossíveis de serem

integradas analiticamente, além do fato de que em certos casos, a função integrando

pode não ser conhecida, o que ocorre em aplicações das ciências e das

engenharias, quando o integrando é um conjunto de pontos.

Na integração numérica, o resultado é obtido através da divisão do intervalo

em n subintervalos do intervalo dado, determinando o resultado parcial para cada

secção e efetuando a soma deles.

Page 150: Apostila CN 2013

Cálculo Numérico usando MatLab

150

Se ( x0 , y0 ) e ( x1 , y1 ) são dois pontos de y = f(x), a integral da expressão

que realiza a interpolação linear, chega-se à expressão:

)y(y

2

hI 101 +=

Onde n

ab

n

xxh 0n −

=−

=

onde I1 é a integral de P1 (x) no intervalo [ x0 , x1 ] e que corresponde,

aproximadamente ao valor da integral de f(x), no intervalo. (Regra do Trapézio)

Procedendo da mesma forma para os demais intervalos, [ x1 , x2 ] , [ x2 , x3 ] ....[xn-1 ,

xn] e somando-se os resultados, obtém-se:

)y2y....2y2y(y2

hI n1n210 +++++= −

Isto pode ser escrito: ∑=

⋅⋅=n

0iii )y(c

2

hI

Tomando-se: 2c....ccce1cc 1n321n0 ======= − ( coeficientes de Cotes )

Exemplos:

1.- Calcular ∫3

1

3 dxln(x)x , pela regra do trapézio (repetida) para um número de 4

subintervalos. ( n = 4 ).

Solução:

Tem-se que a = 1 , b = 3 e 0,5h

4

13

n

abh =⇒

−=

−=

.

Page 151: Apostila CN 2013

Cálculo Numérico usando MatLab

151

Para os cálculos de ∑=

⋅⋅=n

0iii )y(c

2

hI

Com 2c....ccce1cc 1n321n0 ======= − . Por comodidade, para efetuar os

cálculos é possível construir uma tabela, conforme abaixo:

i xi yi ci ci yi

0 1,0 0,0000 1

1 1,5 1,3684 2

2 2,0 5,5452 2

3 2,5 14,3170 2

4 3,0 29,6625 1

∑ ⋅ ii yc =

Desta forma: )6625,29)3170,145452,53684,1(20000,0(

2

5,0)y(c

2

hI

n

0iii ++++=⋅⋅= ∑

=

I = 18,030925

Page 152: Apostila CN 2013

Cálculo Numérico usando MatLab

152

2.- Calcular ∫

+

−2

0

xcos

42x

e

, pela regra do trapézio (repetido) com 5 subintervalos.

Solução:

0,4h5

02

n

abh =⇒

−=

−=

i xi yi ci ci . yi

0 0,0 0,1839 1

1 0,4 0,1817 2

2 0,8 0,2105 2

3 1,2 0,2751 2

4 1,6 0,3837 2

5 2,0 0,5360 1

Portanto:

I = 0,5360)0,3837)0,27510,21052(0,1817(0,1839

2

0,4I +++++=

I = 0,5644

Page 153: Apostila CN 2013

Cálculo Numérico usando MatLab

153

14. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

MÉTODO DE RUNGE-KUTTA

VII - INTRODUÇÃO À SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

INTRODUÇÃO

As Equações Diferenciais Ordinárias (EDO) são ferramentas muito

importantes para a modelagem matemática, notadamente aquelas em que o

problema é descrito em termos de taxa de variação. Isto inclui vários fenômenos

físicos, químicos, biológicos entre outros.

Uma EDO de primeira ordem é uma equação da forma: y),f(xy =′ onde y′ é

a derivada da função y(x)y = , e representa a função incógnita da EDO.

A solução analítica de uma EDO é uma família de curvas onde cada elemento

da família representa a função y(x)y = diferencia de outro elemento por um valor

constante. A determinação de um desses elementos é realizada determinando uma

condição que a solução desejada deve satisfazer. Um problema dessa natureza é

chamado de Problema de Valor Inicial (PVI) e é indicado por

00 y)y(x,y),f(xy ==′ .

Para a solução de tal problema, são utilizados métodos que permitem

determinar aproximações ky dos valores da função y(x) nos pontos xk , k = 1 , 2 , 3

, 4 , ......n.

Os pontos xk são igualmente espaçados no intervalo [ x0 , xn ] , onde a função é

contínua. Isto é: xk = xk-1 + h , onde n

xxh 0n −

=.

Um procedimento para determinação da solução é baseado em expandir a

função em série de Taylor. Os métodos baseados puramente nessa expansão

exigem a determinação de derivadas de ordem superior e isso pode ser um

problema quando a ordem considerada é muita elevada. Para fugir deste

Page 154: Apostila CN 2013

Cálculo Numérico usando MatLab

154

inconveniente existe uma classe de métodos que substitui o cálculo das derivadas

pelo cálculo da função em pontos adequados (métodos de Runge-Kutta).

Métodos de Runge-Kutta

Os métodos de Runge-Kutta fornecem valores aproximados da solução da

equação diferencial a partir da expansão da série de Taylor. A vantagem desses

métodos é que o cálculo dos valores das derivadas da função f ( x , y(x) ) nos pontos

(xk , yk) é substituído pelo cálculo da função em pontos convenientemente

escolhidos, produzindo resultados equivalentes.

Runge-Kutta de 2a Ordem - RK2

Este método é baseado na expansão em série de Taylor até o termo de

segunda ordem, ou seja: )y,(xf

!2

h )y,(xfh y y kk

2

kkk1k ′⋅++=+

Esta expressão pode ser substituída por:

( ))y,f(xhy,hf(x)y,f(x2

hyy kkkkkkk1k ⋅+++⋅+=+

Ou, de modo equivalente:

( )

⋅++=

=

+⋅+=+

)Khy,hx(fK

)y,x(fK

)KK2

hyy

1kk2

kk1

21k1k

Page 155: Apostila CN 2013

Cálculo Numérico usando MatLab

155

Exemplo:

Calcular a solução aproximada, pelo RK2, da equação 1y(0);xy

dx

dy=−=

No

ponto x = 0.5, tomando h = 0.1.

Solução

Tem-se que:

( )

⋅++=

=

+⋅+=+

)Khy,h(xfK

)y,(xfK

)KK2

hyy

1kk2

kk1

21k1k

( )

⋅+⋅+=

⋅−==

+⋅+=+

)K0.1y(0.1)(xK

yx)y,(xfK

)KK0.05yy

1kk2

kkkk1

21k1k

Com as relações acima se pode montar a tabela abaixo:

k xk yk K1 K2 yexato

0 0.0 1,00000 0,00000 -0,10000 1,00000

1 0.1 0,99500 -0,09950 -0,19701 0,99501

2 0.2 0,98017 -0,19603 -0,28817 0,98020

3 0.3 0,95596 -0,28679 -0,37091 0,95600

4 0.4 0,92308 -0,36923 -0,44308 0,92312

5 0.5 0,88246 -0,44123 -0,50300 0,88250

Resposta: y(0.5) 0.8825

Page 156: Apostila CN 2013

Cálculo Numérico usando MatLab

156

Runge-Kutta de 4a Ordem - RK4

De forma análoga ao RK2, considera-se a expansão em série de Taylor até o termo

de 4a ordem e o cálculo das derivadas é substituído como antes, o que fornece

como resultado a expressão:

( )

( )( )( )( )3kk4

2kk3

1kk2

kk1

4321k1k

Khy,hxfK

Kh0.5y,h0.5xfK

Kh0.5y,h0.5xfK

y,xfK

K2K2KK6

hyy

⋅++=

⋅⋅+⋅+=

⋅⋅+⋅+=

=

++++=+

Exemplo

Calcular a solução aproximada, pelo RK4, da equação 1y(0);xy

dx

dy=−=

no

ponto x = 0.4, tomando h = 0.1.

Solução

Levando em consideração as expressões acima e os valores fornecidos no

enunciado do problema, obtém-se:

( )

)K1.0y()1.0x(K

)K0.05y(0.05)x(K

)K0.05y(0.05)x(K

yxK

K2K2KK6

0.1yy

3kk4

2kk3

1kk2

kk1

4321k1k

⋅+⋅+−=

⋅+⋅+−=

⋅+⋅+−=

⋅−=

++++=+

Com estas relações é possível montar a tabela abaixo:

Page 157: Apostila CN 2013

Cálculo Numérico usando MatLab

157

k xk yk K1 K2 K3 K4 yexato

0 0.0 1,00000 0,00000 -0,05000 -

0,04988

-

0,09950 1,00000

1 0.1 0,99501 -0,09950 -0,14851 -

0,14814

-

0,19604 0,99501

2 0.2 0,98020 -0,19604 -0,24260 -

0,24202

-

0,28680 0,98020

3 0.3 0,95600 -0,28680 -0,32958 -

0,32883

-

0,36925 0,95600

4 0.4 0,92312 -0,36925 -0,40709 -

0,40624

-

0,44125 0,92312

Resposta: y(0.4) 0,92312

EXERCÍCIO:

Considere a equação diferencial 0.5y(1);

y

1x

dx

dy=+=

. Estime y(2)

considerando h = 0.2. Resolva o problema pelo método RK2 e RK4.