Sei sulla pagina 1di 35

CAMPUS ALTO PARAOPEBA CAP

Apostila:
Aulas prticas de Clculo Numrico.




Autores:
Heber Tormentino de Sousa
1
.
Sandro Reis da Silva
2
.
Alexandre Cndido Moreira
3
.




Esta apostila foi elaborada para ser um guia nas aulas prticas de Clculo
Numrico para o 5 perodo de Engenharia Qumica e Engenharia de
Telecomunicaes no primeiro semestre de 2011, baseada nas anotaes para a sala
de aula e no livro Mtodos Numricos para Engenheiros e Cientistas [1] e
constituda de nove lies prticas em MatLab
4
.



OURO BRANCO
2011

1 Cincia da Computao: www.hts3.info; e-mail: heber@ufsj.edu.br; 2- Engenharia Civil; 3- Engenharia Eltrica;
4- Matlab marca registrada da Mathworks inc.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
2

Aula prtica 1
1. Reviso
1.1. Janela Command Window
No MATLAB (verso 7.6.0 R2008a, ou superior), no menu Desktop desmarque
todos os itens, exceto Command Window (deixe-o selecionado). Veja a Figura 1.1.


Figura 1.1: Deixar selecionado somente o item Command Window.
1.2. Abrir o Editor de Texto
No menu principal no item File escolha New e clique no subitem M-File.
Veja a Figura

Figura 1.2: Executando o Editor de Texto (Script) do MatLab.
1.3. Convenes adotadas na para escrever um arquivo-fonte.
Para adotar prtica de boa programao e evitar alguns erros lgicos ao se utilizar o
MatLab, convencionou-se adotar o cdigo inicial exibido na Figura 1.3 para todo cdigo-
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
3
fonte produzido nas aulas prticas, obviamente o nome do autor, a data e o objetivo deve
ser modificado corretamente a cada arquivo novo.


Figura 1.3: Conveno adotada para script das aulas prticas.

Na Figura 1.3, o comando close all fecha as janelas abertas contendo grficos,
clear all apaga as variveis definidas nas execues anteriores, clc limpa a janela de
comando (command Window) e format short configura o nmero de dgitos significativos
em quatro.
1.4. Salvando o Script.
Cdigos-fontes, (ou programas), feitos em MatLab so melhor denominados por
Script. Para salvar arquivos de Script, no menu principal do Editor de Texto escolha Save
as....
Ao salvar um arquivo de Script, o nome do arquivo deve respeitar as seguintes
regras:
1. No iniciar com dgito numrico.
2. No conter espao.
3. No conter acentos, cedilhas ou til.
1.4. Executando o Script.
O MatLab no compila os cdigos-fontes, mas os interpreta, para tanto pressione a
tecla F5.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
4
Aula prtica 2
2. Equaes no lineares
O comando fzero pode ser usado para obter a raiz de uma equao no linear e o
comando roots as razes de um polinmio.
2.1. Utilizando o comando fzero
O comando fzero pode ser usado para resolver equaes (na forma f(x) = 0) com
apenas uma varivel. necessrio saber um intervalo adequado onde exista uma soluo,
ou se houver mltiplas solues, qual delas a desejada. A forma do comando exibida na
Figura 2.1.

Figura 2.1: A forma do comando fzero

Na Figura 2.1, x recebe a soluo e um escalar, funo representa a funo a ser
resolvida e x0 aponta o valor de x prximo ao ponto onde a funo cruza o eixo-x.
A funo, cuja raiz deve ser calculada pode ser fornecida de trs diferentes
maneiras:
1. A maneira mais simples fornecer a expresso matemtica no formato string.
2. A expresso matemtica tambm pode ser fornecida como uma funo definida
pelo usurio, e o nome dessa funo deve ser digitado no formato string.
3. A expresso matemtica pode ser definida como uma funo inline, e seu nome
ento digitado no formato string .
A funo deve ser escrita na forma padro. Por exemplo, se a funo a ser resolvida
for

0,2, deve ser escrita como

0,2. Se essa funo for usada como


argumento de entrada da funo fzero e deve ser digitada como 'x*exp (-x) 0.2'.
Uma funo fornecida como um string, no pode incluir variveis predefinidas. Por
exemplo, se a funo a ser resolvida for

0,2, no possvel predefinir


b=0.2 e entrar com 'x*exp (-x) b'.
O vetor x0 pode ter um ou dois elementos. Com um elemento, este deve ser um
valor de x prximo ao ponto onde a funo cruza o eixo x, caso possua 2 elementos, estes
devem conter um intervalo que contenha uma soluo. Quando uma funo tem mais de
uma soluo, cada soluo pode ser determinada separadamente com o uso da funo fzero
e o emprego de valores de x0 que sejam prximos a cada uma das solues.
2.1.1. Exemplo
Encontre as razes da equao: 4.5 8.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
5
Soluo:
A soluo para equao do exemplo est exibida na Figura 2.2:

Figura 2.2: Resoluo do exemplo 2.1.
2.2. Utilizando o comando roots.
O comando roots pode ser usado na obteno das razes de um polinmio. A forma
do comando exibida na Equao 2.1.
d=roots(p)
(2.1)
em que,
d = vetor de coeficientes do polinmio, e
p = vetor de coeficientes do polinmio
Os polinmios so representados por um vetor linha, cujos elementos so os
coeficientes do polinmio ordenados do termo de maior ordem para o termo de ordem zero.
Se p um vetor de comprimento n, ento d um vetor de comprimento n-1.
2.2.1. Exemplo
Encontre as razes do polinmio f(x) = 4x + 5x + 7.
Soluo:
A soluo do Exemplo 2.2 est na Figura 2.3. O vetor p = [4 0 5 7] formado pelos
coeficientes do polinmio e o comando d = roots(p) retorna o vetor d com as razes do
polinmio.
Verifique na Figura 2.2, que o comando roots obtm inclusive as razes complexas
dos polinmios, (a letra i indica a parte complexa da raiz).


Figura 2.3: Calculando as razes do polinmio f(x) = 4x + 5x + 7.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
6
2.3. Exerccios

2.3.1. Utilize o comando fzero para obter as razes das equaes.
( )
x
x
x
x
x f d
x f c
e x f b
x f a
|

\
|
=
=
=
|

\
|
=

4
1
) ( )
3 ) ( )
) ( )
4
1
) ( )
5 4
3 4
2 3
2


) 5 2 ( cos ) ( )
sec ) ( )
2
3 4
ln ) ( )
) 1 8 ( log ) ( )
2
2 2
2
2
4
x x f h
x x tg x f g
x
x
x f f
x x f e
=
=
|
|

\
|
+
+
=
=


2.3.2. Utilize o comando roots para obter as razes dos polinmios.
a) 6 2 ) (
2
+ = x x x f
b) 1 2 ) (
2
= x x x f
c) 3 ) (
2
= x x f
d)
2
) 4 ( ) ( = x x f
e)
2
) 9 ( ) ( + = x x f

Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
7
Aula prtica 3
3. Sistemas de equaes lineares
O MatLab dispe de operadores e funes que podem ser utilizadas para solucionar
sistemas de equaes lineares.
3.1. Diviso esquerda
A diviso esquerda permite resolver um sistema de n equaes escritas na forma
matricial [a][x] = [b], em que [a] a matriz de coeficientes de dimenses (n x n), [x] um
vetor coluna de dimenses (n x 1) com as incgnitas e [b] um vetor coluna (n x 1) de
constantes. A forma do comando apresentada na Figura 3.1.

Figura 3.1: Forma da diviso esquerda.
3.1.1. Exemplo

Encontre as razes do sistema de equaes:

4 -2 -3 6 X
1
12
-6 7 6.5 -6 X
2
= -6.5
1 7.5 6.25 5.5 X
3
16
-12 22 15.5 -1 X
4
17

Soluo:
A soluo do Exemplo est exibida na Figura 3.2:

Figura 3.2: Resoluo do Exemplo.
3.2. Diviso direita.
A diviso direita permite resolver um sistema de n equaes escritas na forma
matricial [a][x] = [b], em que [a] a matriz de coeficientes de dimenses (n x n), [x] um
vetor coluna de dimenses (n x 1) com as incgnitas e [b] um vetor coluna (n x 1) de
constantes. A forma do comando apresentada na Figura 3.3.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
8

Figura 3.3: Forma da diviso direita.
3.2.1. Exemplo
Encontre as razes do sistema de equaes:
4 -2 -3 6 X
1
12
-6 7 6.5 -6 X
2
= -6.5
1 7.5 6.25 5.5 X
3
16
-12 22 15.5 -1 X
4
17

Soluo:
A soluo do Exemplo 3.2 est exibida na Figura 3.2. Note que o vetor b foi
transposto, caso contrrio, ocorre erro na interpretao do cdigo. A resposta dada para
esse sistema utilizando diviso a direita retorna uma resposta errada.

Figura 3.2: Resoluo do Exemplo 3.2, que apresenta resposta errada.
3.3. Exerccios

3.3.1 Resolva os Sistemas lineares:

1)
2x + y z + 4w = 3
2x y z + 2w = 4
-3y + z + w = -2
-3x + 3y + z 3w = -5

2)
x + 2y + 3z + 4w = 5
x + 3y + 5z + 7w = 11
x - z - 2w = -6



Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
9
3)

x + y + 2z - 5w = 3
2x + 5y z - 9w = -3
2x + y - z + 3w = -11
x - 3y + 2z + 7w = - 5


4)
x y z
y z
x y z
+ =
=
+ + =

1
3 7
2


5)

x y z
x y z
x z y c
+ =
+ =
+ =

2 3 1
3 2 2
8 5


6)

= + +
= + +
= + +
2 3
3 3
1
z ay x
az y x
z y x


Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
10
Aula prtica 4
4. Sistemas de equaes lineares (decomposio LU).
A funo lu decompe uma matriz [a] no produto [L][U], tal que [a] = [L][U], onde
[L] uma matriz triangular inferior e [u] uma matriz triangular superior. Uma forma da
funo :
[L, U, P]=lu(a) (4.1)
em que,
L = matriz triangular inferior,
U = matriz triangular superior,
P = matriz de permutao, e
a = matriz a ser decomposta.
O mtodo numrico usado pela funo lu, utiliza a pivotao parcial para realizar a
fatorao. Conseqentemente, as matrizes [L] e [U] resultam da fatorao de uma matriz
com linhas que podem estar em uma ordem diferente daquela de [a]. A matriz de
permutao [P] (uma matriz com 1s e 0s) contm a informao sobre a pivotao. A
multiplicao de [a] pela matriz [p] fornece uma matriz cuja decomposio dada por [L] e
[U].
[L][U] = [P][a] (4.2)
A matriz [P][a] tem as mesma linhas de [a], mas em ordem diferente. Se a pivotao
no for necessria ao utilizar a funo lu, ento a matriz de permutao [P] a matriz
identidade. Se as matrizes [L] e [U] determinadas pela funo lu forem subseqentemente
utilizadas para resolver um sistema de equaes [a][x] = [b], ento o vetor [b] deve ser
multiplicado pela matriz de permutao [P]. Isso faz com que as linhas de [b] se tornem
consistentes com a pivotao em [a].
4.1. Exemplo
A soluo do Exemplo da aula anterior est exibida na Figura 4.1.

Figura 4.1: Resoluo do sistema de equaes linear por decomposio LU.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
11
4.2. Exerccios
Resolva os sistemas lineares:

1)
2x + y z + 4w = 3
2x y z + 2w = 4
-3y + z + w = -2
-3x + 3y + z 3w = -5


2)
x + 2y + 3z + 4w = 5
x + 3y + 5z + 7w = 11
x - z - 2w = -6


3)

x + y + 2z - 5w = 3
2x + 5y z - 9w = -3
2x + y - z + 3w = -11
x - 3y + 2z + 7w = - 5


4)
x y z
y z
x y z
+ =
=
+ + =

1
3 7
2


5)

x y z
x y z
x z y c
+ =
+ =
+ =

2 3 1
3 2 2
8 5



Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
12
4.3. Funes adicionais do MATLAB para sistemas de equaes lineares
O MATLAB possui muitas funes residentes que podem ser teis na anlise de
sistemas de equaes. Vrias dessas funes so apresentadas na tabela a seguir.

Tabela 4.1: Funes para realizar operaes matriciais e a anlise de matriz
Funo Descrio Exemplo
inv(A) Inversa de uma matriz. A uma
matriz quadrada. A funo retorna a
inversa de A.
>> A=[-3 1 0.6; 0.2 -4 3; 0.1 0.5 2];
>> Ain=inv(A)

Ain =
-0.3310 -0.0592 0.1882
-0.0035 -0.2111 0.3178
0.0174 0.0557 0.4111
d=det(A) Determinante de uma matriz. A deve
ser uma matriz quadrada, d recebe
determinante de A.
>> A=[-3 1 0.6; 0.2 -4 3; 0.1 0.5 2];
>> D=det(A)
D =
28.7000


Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
13
Aula prtica 5
5. Ajuste de curvas e interpolao
O MATLAB possui funes para fazer o ajuste de curvas e a interpolao. Nesta
aula sero usadas as funes polyfit (para fazer o ajuste de curvas ) e interp1 (para
interpolao).
5.1. Utilizando o comando polyfit
O comando polyfit pode ser usado para fazer o ajuste de curvas em um conjunto de
n pontos usando polinmios de vrios graus e tambm para determinar os polinmios de
ordem n 1 que passa por todos os pontos Equao 5.1.
P =polyfit(x,y,m)
(5.1)
em que,
p = vetor contendo os coeficientes dos polinmios que melhor se ajusta aos dados;
x = vetor contendo as coordenada horizontais;
y = vetor contendo as coordenada verticais dos pontos; e
m = grau dos polinmios.
5.1.2. Exemplo
Considere o conjunto de pontos e obtenha uma funo de ajuste curva:
X 0 0,4 0,8 1,2 1,6 2 2,4 2,8 3,2 3,6 4,0 4,4 4,8 5,2
Y 0 3 4,5 5,8 5,9 5,8 6,2 7,4 9,6 15,6 20,7 26,7 31,1 35,6
Soluo:
Na Figura 5.1 apresentada a resoluo do Exemplo. Os coeficientes presente no
vetor p correspondem a Equao 5.2.
0.3233

3.7028

11.9817

14.6122

0.5263 (5.2)

Figura 5.1: Resoluo do Exemplo.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
14
Na Figura 5.2 mostrado a posio dos pontos, indicados pelos asteriscos e a linha
verde indica o traado do polinmio de ajuste, por isso alguns pontos esto fora da curva,
que era esperado por ser um ajuste de curva e no uma interpolao.

Figura 5.2: Grfico onde se exibe a posio dos pontos e o polinmio de ajuste.
5.2. Utilizando o comando interp1
O comando interp1 (o ltimo caractere no comando o nmero um) executa a
interpolao unidimensional em um ponto. A forma do comando exibida na Equao 5.2.
Yi = interp1 (x, y, xi, 'mtodo')
(5.2)
em que,
yi = valor interpolado (varivel dependente);
x = vetor contendo as coordenada horizontais;
y = vetor contendo as coordenada verticais dos pontos;
xi =valor de x no qual deseja interpolar y; e
mtodo= mtodo de interpolao, digitado com uma varivel string. Ver Tabela 5.1.
A especificao do mtodo opcional. Se nenhum mtodo for
especificado, o padro 'linear'.
Observaes importantes:
1. O vetor x deve ser monotnico ( os elementos devem estar na ordem ascendente
ou descendente).
2. xi pode ser escalar (interpolao em um ponto) ou um vetor (interpolao em
vrios pontos).
3. yi pode ser um escalar ou um vetor correspondendo aos valores interpolados nos
pontos xi.

Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
15
Tabela 5.1: Mtodos de interpolao disponveis no MatLab
Mtodo Descrio
'nearest' Retorna os valores dos pontos do conjunto de dados mais prximo aos pontos
interpolados.
'linear' Usa interpolao por spline linear.
'spline' Usa interpolao por spline cbica com condies n-a-n, onde as derivadas
terceiras no segundo e no penltimo ponto so contnuas.
'pchip' Tambm chamada de 'cubic', usa a interpolao cbica de Hermite por partes.

Observaes:
1. Quando os mtodos 'nearest' e 'linear' so usados, os valores de xi devem estar
dentro do domnio de x. Se os mtodos 'Spline' ou 'pchip' forem usados, xi pode
ter valores fora do domnio de x e a funo interp1 realiza a interpolao.
2. O mtodo 'spline' pode resultar em erros elevados se os dados de entrada no
estiverem uniformemente distribudos, com alguns pontos mais prximos entre
si do que outros.

5.2.1. Exemplo

Considere o conjunto de pontos abaixo e obtenha o polinmio interpolador p:
X 8 11 15 18 22
Y 5 9 10 8 7

Soluo:
A resoluo do exemplo apresentada na Figura 5.3, no entanto no exibido o
vetor soluo com os pontos interpolados por possuir 141 pontos. Na Figura 5.4 exibido o
grfico com os pontos (indicados por asteriscos) e a curva obtida pela aplicao dos valores
interpolados. Observe que todos os pontos esto sobre a curva obtida.

Figura 5.3: Resoluo do exemplo
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
16

Figura 5.4: Grfico com pontos dados e valores interpolados
5.3. Exerccios

5.3.1. Para cada conjunto de dados, obtenha o ajuste curvas e realize a interpolao.
a)

x 0 10 20 30 40 50
y 20 620 950 920 670 75

b)

x 3 6 9 12 15
y 2 1.8 1.5 17 2.6

c)

t (dias) 1 2 3 4 5
h (cm) 5.2 6.6 7.3 8.6 10.7

d)

L(cm) 1.0 1.6 3.0 6.2 12.8
m(g) 0.1 0.3 2.1 19.0 168.7


Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
17
Aula prtica 6
6. Diferenciao numrica

A funo residente diff do MATLAB pode ser utilizada para determinar a derivada de
uma funo matemtica e para realizar a diferenciao numrica (diferenciao regressiva).
A funo residente polyder permite determinar a derivada de um polinmio.

6.1. Utilizando o comando diff
O comando diff permite:
Calcular a diferena entre os elementos de um vetor,
Calcular a derivada aproximada a partir de dados tabulados que descrevem
uma funo.
Calcular a diferena entre os elementos de um vetor, (a sada tem um
elemento a menos que a entrada, assim para imprimir o grfico, um dos
elementos do vetor deve ser desconsiderado).
Calcular a derivada de uma funo.

6.1.1. Diferenciao de uma funo matemtica

A derivada primeira pode ser obtida utilizando o comando da Equao 6.1:

d=diff(y) (6.1)

em que y a funo matemtica e d a derivada da funo.

6.1.1.1. Exemplo



Para encontrar o valor da derivada em um ponto (x
0
) utilize o comando eval:

6.1.1.2. Exemplo





Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
18
6.1.2. Diferenciao numrica

Sejam x = (x
1
, x
2
, x
3
, ..., x
n-1,
x
n
) e y = ( f(x
1
), f(x
2
), f(x
3
), ..., f(x
n-1
), f(

x
n
)) e h=(x
2

x
1
)=(x
3
x
2
)==(x
n
-x
n-1
). Para obter a derivada de primeira ordem obtida por diferena
progressiva com dois pontos (Equao 6.2) pode ser usado o comando da Equao 6.3:

( )
( )
( )
( )
( )
( )
( )
( )

1
1
3 4
3 4
2 3
2 3
1 2
1 2
...
n n
n n
x x
y y
,
x x
y y
,
x x
y y
,
x x
y y

(6.2)

dn = diff (y)/h
(6.3)

Para as situaes em h constitudo de valores variveis, utilize o comando exibido
na Equao 6.4:

dv = diff (y)./diff(x)
(6.4)
6.1.2.1. Exemplo


No Exemplo a diferenciao numrica apresenta um erro (se comparada derivada
de X
2
), como era de se esperar, pois a derivao numrica no exata dependendo do
mtodo utilizado e do intervalo entre os pontos.

6.1.3. Diferenciao de ordem superior

Para derivadas de ordem superiores (maiores que 1), utiliza-se o comando da
Equao 6.5. O segundo argumento, representado por n na Equao 6.5, que especifica o
nmero de vezes que o comando diff ser aplicado recursivamente. Assim, diff(x,2)
equivale a diff(diff(x)). Assim, para um vetor n elementos x1,,xn, diff(x) retorna um vetor
com n-1 elementos e diff(x,2) retorna um vetor com n-2 elementos.

d=diff(x,n)
(6.5)
em que,
n um nmero inteiro que especifica o nmero de vezes que o comando diff ser
aplicado recursivamente.


Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
19
6.1.3.1. Exemplo



Para uma funo representada por um conjunto de pontos discretos (x
i
,y
i
), em que h
(distncia entre pontos) no varia, uma estimativa da derivada segunda de acordo com a
frmula de diferena progressiva com trs pontos pode ser calculada digitando-se o
comando exibido na Equao 6.6:

ds= diff(y,2)/h^2
(6.6)

O prximo exemplo apresenta a forma de se obter a derivao numrica de ordem
superior a 1 de um conjunto de dados.

6.1.3.2. Exemplo




6.2. Utilizando o comando polyder

A funo residente polyder calcula a derivada de um polinmio, um produto ou de
quociente de dois polinmios (Equao 6.7):


d=polyder(p)
(6.7)

em que,
d = vetor de coeficientes do polinmio (derivada do polinmio p), e
p = vetor de coeficientes do polinmio a ser diferenciado.

Os polinmios so representados por um vetor linha, cujos elementos so os
coeficientes do polinmio ordenados do termo de maior ordem para o termo de ordem zero.
Se p um vetor de comprimento n, ento d um vetor de comprimento n-1.
6.2.1. Exemplo
Seja polinmio f(x) = 4x + 5x + 7:
I. Defina um vetor p = [4 0 5 7].
II. Digite dp = polyder(p).
III. A sada ser dp = [12 0 5], representando f(x) = 12x + 5.


Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
20

O comando polyder tambm til no clculo da derivada quando uma funo
representada por um conjunto de pontos discretos for aproximada por um polinmio de
ajuste.

6.3. Exerccios

6.3.1. Utilize os comandos diff e polyder (se aplicvel) para determinar o valor da
derivada f(x) no ponto x
0
indicado:
5
5
9 3 5
) ( )
2
1
) ( )
0 4 9 6 5 ) ( )
0 4 ) ( )
2 3 ) ( )
3 3 2 ) ( )
4 ) ( )
0
2
2
0
0
2 3 4
0
2
0
2
0
0
2
=
+
+
=
= =
= + + =
= =
= =
= + =
= =
x para
x
x x
x f g
x para
x
x f f
x para x x x x x f e
x para x x f d
x para x x x f c
x para x x f b
x para x x f a



Respostas: a)8; b)2; c)1; d)0; e)9; f)-1/4; e g)0,3111.

6.3.2. Obtenha a diferenciao numrica de ordem 1 e ordem 2 dos conjuntos de dados
abaixo:
x y
0,400 1,5610
0,425 1,5540
0,450 1,5500
0,475 1,5430
0,500 1,5410
0,525 1,5350
0,550 1,5340
0,575 1,5290
0,600 1,5280
0,625 1,5240
0,650 1,5230
0,675 1,5220
0,700 1,5200
x y
0,400 6,25
0,425 5,53633
0,450 4,93827
0,475 4,43213
0,500 4
0,525 3,62812
0,550 3,30579
0,575 3,02457
0,600 2,77778
0,625 2,56
0,650 2,36686
0,675 2,19479
0,700 2,04082
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
21
Aula prtica 7

7. Integrao numrica

O MATLAB dispe de funes que permitem a integrao numrica, entre elas, as
funes quad, quadl e trapz (integrais simples), e da funo dblquad (integrais duplas). A
funo trapz deve ser utilizada ao se integrar dados tabulados.
7.1. Utilizando o comando quad
A forma do comando quad (Equao 7.1):

I = quad ('funo',a,b,tol) (7.1)
em que,
I = valor da integral;
'funo' = funo a ser integrada;
a e b = limites do intervalo de integrao; e
tol = erro mximo admitido. Com um maior valor de tol, a integral calculada de
forma menos precisa, porm mais rapidamente. Esse argumento opcional.

7.1.1. Em relao ao comando quad deve ser observado:
1. A funo a ser integrada pode ser fornecida em uma string, ou em um arquivo, ou
inline.
2. A funo f(x) usa um vetor x como argumento, realizando operaes elemento a
elemento.
3. A funo a ser integrada no pode apresentar uma assntota vertical (singularidade)
no intervalo de integrao [a,b].
4. O erro absoluto padro menor que 1.0 x 10
-6
, que pode ser alterado pelo
argumento (opcional) tol.
5. Usa o mtodo de Simpson adaptativo para realizar a integrao numrica, de forma
que os esquemas de integrao que refinam o domnio de integrao de forma
seletiva, dependendo do comportamento do integrando. Se o integrando variar
abruptamente na vizinhana de um ponto pertencente ao domnio de integrao,
ento essa vizinhana dividida em subintervalos menores.

7.1. Exemplo

Avaliar


3
0
dx
e
x
:


O valor exato da integral obtido analiticamente 0.8862073. Dessa forma, o erro
menor que 1% (Figura 7.1).

Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
22

Figura 7.1: Integrao numrica.

7.2. Utilizando o comando quadl:

A forma de utilizao do comando quadl (com L minsculo na ltima letra), descrita
na Equao 7.2, :
I = quadl ('funo',a,b)
(7.2)
As observaes do item 7.1.1 so aplicveis ao comando quadl, exceto o subitem 5.
O mtodo numrico usado no clculo da integral para o comando quadl o mtodo
adaptativo de Lobatto.
7.2.1. Exemplo
Avaliar


3
0
dx
e
x
:




O valor exato da integral obtido analiticamente 0.8862073. O erro nesse caso foi
prximo de 0.
7.3. Utilizando o comando trapz:
A funo residente trapz (Equao 7.3) utiliza um conjunto de pontos discretos e o
mtodo numrico trapezoidal para obter a integral de uma funo.

q = trapz (x,y)
(7.3)
em que,
x e y so vetores de mesmo tamanho que contm as coordenadas dos
pontos.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
23
7.3.1. Exemplo

Seja a tabela de pontos discretos:
X 0 0.5 1.0 1.5 2.0 2.5 3
e
x
x f

= ) (
1 0.7788 0.3679 0.1054 0.0183 0.0019 0.0001



O valor exato da integral obtido analiticamente 0.8862073. O erro da ordem de
42%. Para testes realizados com x variando em 0.1, para a mesma funo, o erro foi menor
que 1%.
7.4. Utilizando o comando dblquad:
A funo residente dblquad (Equao 7.4) permite a avaliao da integral dupla de
uma funo.

I = dblquad ('funo', xmin, xmax, ymin, ymax)
(7.4)
em que
xmin, xmax, ymin e ymax so os intervalos de integrao.


7.4.1. Em relao ao comando dblquad deve ser observado:
1. A funo a ser integrada pode ser fornecida em uma string, ou em um arquivo, ou
inline.
2. A funo f(x) deve usar um vetor x como argumento e um escalar y.
3. Os intervalos de integrao devem ser constantes.
4. O erro absoluto padro menor que 1.0 x 10
-6
, que pode ser alterado pelo
argumento (opcional) tol.

7.3. Exerccios

Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
24
Aula prtica 8

8. Problemas de Valor Inicial (PVI)
O MATLAB dispe de funes que podem ser usadas para resolver equaes e
sistemas de equao diferencial ordinria (EDO) de primeira ordem utilizando diversos
mtodos numricos avanados para otimizar a integrao automaticamente, minimizando o
erro por passo, e se necessrio, adaptando o passo de integrao ao comportamento local da
soluo.
Para representar variveis independentes e dependentes sero utilizados t e y,
respectivamente. Esta notao foi escolhida por manter compatibilidade com a Ajuda do
MatLab e ser comum o tempo a varivel independente.
8.1. Soluo de uma EDO de primeira ordem
Apresenta-se a seguir o procedimento adequado para resolver uma EDO.
8.1.1. Descrio do problema
Seja a EDO escrita na forma:


(8.1)
Os trs requisitos necessrios para que uma EDO de primeira ordem seja resolvida:
1) equao para a derivada de y em relao a t, 2) intervalo da varivel independente (t, no
Exemplo 8.1) e 3) valor inicial de y.
8.1.2. Exemplo

1 3

4.2
(8.2)

8.1.3. Funo criada pelo usurio para calcular a funo f(t,y)
A funo f(t,y), que fornece os valores de

para valores arbitrrios de t e y, pode


ser escrita pelo usurio em uma funo parte. Para a EDO dada na Equao 8.2 conforme
pode ser visto na Figura 8.1:

Figura 8.1: Funo f(t,y)em formato de arquivo do MatLab.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
25
A funo foi denominada de EqDif no exemplo, mas pode ter qualquer nome. O
nome da funo utilizado pela funo residente do MATLAB responsvel pela soluo da
EDO. O argumento de sada da funo criada pelo usurio o valor de

. No Exemplo
8.1, a funo EqDif tem dois argumentos de entrada (t e y), no entanto, pode-se definir
funes com mais de dois argumentos de entrada. Na Figura 8.2 apresenta-se um exemplo
de funo que depende da temperatura T (constante), portanto com trs argumentos de
entrada.

Figura 8.2: Equao com trs argumentos de entrada.

Um valor numrico para dever ser atribudo a T, quando a funo da Figura 8.2 for
avaliada.
8.1.4. Mtodo de soluo
Na Figura 8.3 apresenta-se a forma de resolver a EDO apresentada no Exemplo 8.1.


Figura 8.3: Comando para resolver uma equao EDO.

Tabela 1: Funes residentes do MatLab para resolver EDO de primeira ordem
Nome da funo Descrio
ode45 Funo baseada no mtodo de Runge-Kutta explcito de quarta e
quinta ordem. Considerado como melhor funo a ser usada como
primeira tentativa em problemas no-rgidos.
ode23 Funo baseada no mtodo de Runge-kutta explcitos de segunda
e terceira ordem. Rpido e menos preciso que a funo ode45.
Indicada para problemas no-rgidos.
ode113 Funo baseada em mtodo multipasso de Adams-Bashforth-
Moulton. Indicada para problemas no-rgidos.
ode15s Funo baseada em mtodo multipasso de ordem varivel com
preciso de baixa para mdia. Indicada para problemas rgidos.
ode23s Mtodo do passo simples. Baixa preciso. Indicada para
problemas rgidos.
ode23t Baixa preciso. Indicada para problemas moderadamente rgidos.
ode23tb Funo baseada no mtodo de Runge-Kutta implcito. Mais
eficiente que a funo ode15s. Indicada para problemas rgidos.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
26
Na Figura 8.3, ode45 nome de uma das funes do MatLab (Ver Tabela 1) que
permitem a resolver equaes EDO; EqDif o nome da funo definida pelo usurio, (por
exemplo, Equao 8.2, opcionalmente, EqDif pode ser fornecida como string na forma
@EqDif); tInt representa o vetor do domnio da varivel independente, que pode conter de
dois a muitos elementos de definio do domnio da varivel independente; yIni especifica
y
0
; e [t,y] armazena a soluo da EDO, em que t e y so vetores coluna.
8.1.5. Exemplo
Resolva a EDO da Equao 8.3:

1.2 7
.
0 2.5

3
(8.3)
A Equao 8.4 a soluo analtica da Equao 8.3:

.

(8.4)
Soluo:
Na Figura 8.4 apresentada a funo definida pelo usurio:


Figura 8.4: Funo definida pelo usurio.
Na Figura 8.4 exibida o cdigo digitado no editor de Script do MAtLab para
solucionar o Exemplo 8.2.

Figura 8.5: Cdigo para resolver a EDO do Exemplo 8.2.

Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
27
O vetor tInt possui seis elementos fazendo com que a soluo seja mostrada nos seis
pontos especificados. O erro para essa soluo numrica apresentou erro pequeno da ordem
de 10
-5
, que pode no se repetir para outras situaes.
Na Figura 8.6 apresentada a forma de incluir argumentos de entrada opcionais
para mudar os valores padres dos parmetros de controle e as propriedades de integrao.
Os parmetros opcionais transferem valores de argumentos funo Eqdif definida pelo
usurio (Figura 8.4).

Figura 8.6: Exemplo de funo com argumentos de entrada opcionais.
O argumento options pode ser usado para mudar os valores padro dos parmetros
de controle das funes, cuja estrutura definida pela funo odeset, conforme apresentado
na Figura 8.7:

Figura 8.7: Definindo o argumento de entrada options.
Na Figura 8.7 nome1 e nome2 indicam o nome das propriedades a ser modificada e
valor1 e valor2 correspondem os novos valores correspondentes s variveis. Por exemplo
na Figura 8.8 so ajustados o passo de integrao para 0,0002 e o erro relativo para 0,0001.


Figura 8.8: Ajustando o passo de integrao e o erro relativo.
8.1.6. Exemplo
Considere uma chapa metlica aquecida exposta ao ambiente, que resfria por
conveco a radiao, a uma taxa de variao da temperatura T no tempo dada pela
Equao 8.5.


(8.5)
em que,
As = rea superficial da chapa,
= 300 Kg/m sua densidade de massa,
V = volume da chapa,
Cv = 900 J.K/Kg, corresponde ao calor especfico na condio de volume constante,
= 0,8 sua emissividade radiativa,

Constante de Stefan-Boltzmann=5.67x10
-8
wk
4
/m
2
,
h=30 W.k/m = coeficiente de transferncia de calor, e
T = Temperatura ambiente.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
28
Trace um grfico que mostre Temperatura x tempo para chapa com V = 0,003 m e
As=0,25 m, temperatura inicial de 673 K e temperatura ambiente de 298 K para os 180
segundos iniciais.

Soluo:

Na Figura 8.9 apresentada a funo definida pelo usurio:


Figura 8.9: Funo definida pelo usurio.
Na Figura 8.10 apresenta-se o cdigo (script) para resolver o Exemplo 8.2. A funo
TaxaTemp foi passada como String e o vetor options no foi alterado adotando-se as
configuraes padres.

Figura 8.10: Cdigo MatLab para resolver a equao do Exemplo 8.2.

O argumento t representa a varivel independente e T, a varivel dependente. Os
argumentos Vol, As e Tamb representam argumentos adicionais que fornecem os valores do
volume, rea superficial da chapa e a temperatura ambiente, respectivamente. Esses valores
so transferidos para TaxaTemp (Figura 8.9) por meio dos argumentos opcionais presentes
na funo ode45.
Na Figura 8.11, exibe-se o grfico da soluo relacionando a variao da
Temperatura no tempo.

Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
29

Figura 8.11: Grfico da soluo do Exemplo 8.2.
8.2. Soluo de sistemas de EDO de primeira ordem
Sistemas de EDO de primeira ordem podem ser resolvidos com as funes listadas
na Tabela 1. Os procedimentos e comando usados na soluo de sistemas so os mesmos
usados no caso de uma nica equao. Quando se resolve um sistema de equaes s
condies iniciais so fornecidas como vetores e a soluo em forma de matriz possui uma
coluna para cada varivel dependente.
8.2.1. Funo definida pelo usurio para resolver um sistema EDO
Quando se resolve uma nica EDO, a funo EqDif definida pelo usurio calcula o
lado direito de uma equao diferencial. Sua linha de definio tem a forma
dydt=EqDif(t,y), onde os argumentos de entrada t e y so escalares usados para calcular o
valor de f(t,y), que atribudo a dydt. Quando se resolve um sistema de EDO (Equao 8.6)
h diversas variveis dependentes envolvidas, y
1
,y
2
, .y
n
, com isso, a funo EqDif precisa
calcular o lado direito de vrias equaes diferenciais em um instante t especificado:

, ,

, ,


...

, ,




(8.6)
A funo usada para resolver uma nica EDO tem a forma mostrada na Figura 8.3.
Para resolver sistemas de EDO, t um escalar e y um vetor contendo as variveis
dependentes.
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
30
8.2.2. Resolvendo um sistema de EDO
Quando esse comando exibido na Figura 8.3 aplicado na soluo de sistemas de
EDO, constitui o argumento de entrada yIni os valores iniciais das variveis dependentes,
[y
1
, y
2
,...,y
n
], t um vetor coluna e y, uma matriz, onde cada coluna a soluo de y
1
, a
segunda coluna a soluo de y
2
, e assim por diante.
8.2.2.1. Exemplo.
Considere o problema clssico de EDO, predador-presa, em que a relao entre a
populao de lees (predadores) e a populao de gazelas (presas) que residem em uma
mesma rea pode ser modelada pela Equao 8.7. Suponha que uma comunidade seja
formada por N
L
lees e N
G
gazelas, com b e d representando as taxas de natalidade e
mortalidade das respectivas espcies. A taxa de variao (crescimento ou decrescimento)
das populaes pode ser modelada pelas equaes




(8.7)

Determine a populao de lees e de gazelas em funo do tempo, de t = 0 a t = 25
anos, se, em t = 0, N
G
= 3000 e N
L
= 500. Os coeficientes do modelo so b
G
=1.1 ano
-1
,
b
L=0.00025
ano
-1
, d
G
=0.0005ano
-1
e d
L
=0.7 ano
-1
.


Soluo:

Neste problema, N
L
e N
G
so variveis dependentes, e t a varivel independente.
Para resolv-lo, define-se uma funo chamada TaxaPop (t,N), exibida na Figura 8.12,
calcula os valores Equao 8.8. O argumento de entrada N, um vetor contendo as variveis
dependentes, recebe N(L) = N
L
e N(2) = N
G
. Esses componentes so usados no clculo do
primeiro valor das equaes diferenciais. O argumento de sada dNdt tem em sua matriz no
primeiro elemento o valor de derivada

e no segundo

.

Figura 8.12: Funo definida pelo usurio baseada na Equao 8.7.

Na Figura 8.13 apresenta-se o cdigo para solucionar sistemas de EDO (Equao
8.7). Nos argumentos de sada da funo ode45, a varivel Tempo um vetor coluna, e a
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
31
varivel Pop compe-se de arranjo de duas colunas contendo a soluo para N
L
e N
G
na
primeira e na segunda coluna, respectivamente. A execuo do cdigo da Figura 8.2 gera o
grfico exibido na Figura 8.14, (mostra a populao de lees e de gazelas em funo do
tempo).


Figura 8.12: Cdigo que soluciona o Exemplo 8.3, e o exibe na forma de grfico.


Figura 8.14: Grfico da populao de lees x populao de gazelas em funo do tempo.

8. 3. Exerccios


Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
32
Aula prtica 9
9. PROBLEMAS DE VALOR DE CONTORNO.
Problemas de valor de contorno envolvem EDO de segunda ordem (ou de ordem
superior) com condies de contorno especificadas para o ponto inicial e final do intervalo.
Uma equao ordinria de ordem superior pode ser reduzido a um sistema de
equaes diferenciais de primeira ordem. A reduo feita a partir da definio de variveis
auxiliares. Um sistema de primeira ordem pode ser resolvido utilizando-se a funo bvp4c.
Essa funo usa um mtodo de diferenas finitas que aplica a frmula de Lobato de trs
estgios.
Seja a uma EDO de segunda ordem conforme a Equao 9.1:

, ,


(9.1)

Transformando a EDO de segunda ordem em um sistema EDO de primeira ordem:

, ,
(9.2)

onde w uma varivel dependente adicional (nova).

A forma mais simples de funo bvp4c do MATLAB usada na soluo de EDO de
primeira ordem pode ser visto na Figura 9.1.


Figura 9.1: Forma simples da funo bvp4c

Na Figura 9.1, edofun a funo que calcula

, , para
valores de x, y, e w fornecidos. O formato da funo edofun, que deve ser definida pelo
usurio mostrado na Equao 9.3.

dydx = edofun (x,yw)

(9.3)
Em que, x um escalar,
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
33
yw um vetor coluna com os valores das variveis dependentes,

.
dydx um vetor coluna com os valores :

,,
.
Ccfun o nome da funo em arquivo definida pelo usurio para computar o resduo na
condio de contorno. O resduo a diferena entre a soluo numrica e as condies de
contorno prescritas (nos contornos da soluo). Ccfun pode ser digitada com uma string
(isto , 'ccfun') ou com o uso de um caractere especial (isto , @ccfun).
O formato da funo criada pelo usurio ccfun exibido na Equao 9.4.

res = ccfun (ya,yb)
(9.4)


em que,
ya = vetor coluna correspondente soluo numrica em x= a. O elemento ya(1)o
valor de dy/dx em x=a;
yb = vetor coluna correspondente soluo numrica em x= b. O elemento yb(1) o
valor de dy/dx em x=b; e
res = vetor coluna com os valores dos resduos.

O argumento da funo ccfun pode ser usado com quaisquer condies de contorno.
Por exemplo, para condies de contorno de Dirichlet, onde
c e c
1
so as condies de
contorno prescritas, o vetor coluna res

. Para condies de contorno de


Neumann, onde as derivadas Da e Db so as condies de contorno prescritas, o vetor
coluna res

. Condies de contorno mistas podem ter vrias formas.


Uma estrutura contendo a tentativa inicial para a soluo. solinit criada por uma
funo residente do MATLAB chamada bvpinit (solinit o argumento de sada de bvpinit).
O formato da funo residente bvpinit est exibido na Equao 9.5.

solinit = bvpnit (x,yini)
(9.5)

O argumento de entrada x um vetor que especifica os pontos internos. Para PVC
com domnio [a,b], o primeiro elemento de x a, e o ltimo elemento b. Frequentemente,
um nmero inicial de dez pontos adequado e pode ser criado digitando-se x=linspace
(a,b,10). O argumento de entrada yini um vetor predefinido que tem um elemento para
cada uma das variveis dependentes associadas ao sistema de EDO de primeira ordem a ser
resolvido. No caso de duas equaes, como na Equao 9.2, o vetor yini tem dois
elementos. O primeiro elemento a tentativa inicial para o valor de y e o segundo
elemento a tentativa inicial para o valor de w. O MATLAB usa essas tentativas iniciais em
Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
34
todos os pontos internos, yini tambm pode ser fornecido como o nome de uma funo em
arquivo criada pelo usurio (isto , digitada como uma varivel string ' yini' ou '@yini ).
Nesse caso, a funo tem a forma y=tentativa (x), onde x um ponto interno e y o vetor
contendo a tentativa inicial para a soluo, conforme j explicado.
Uma estrutura contendo a soluo possui trs campos importantes:
1. sol.x = Coordenada x dos pontos internos. O nmero de pontos internos
determinado pelo MATLAB durante o processo de soluo e pode no ser
igual ao nmero fornecido pelo usurio em bvpinit.
2. sol.y = Soluo numrica y(x), ou seja, o valor de y nos pontos internos.
3. Sol.yp = Valor da derivada dy/dx nos pontos internos.












Apostila: Aulas prticas de Clculo Numrico- UFSJ/2011


Autores: Heber Tormentino de Sousa, Sandro Reis da Silva e Alexandre Cndido Moreira.
35
Referncias bibliogrficas:
1. GILAT, A.; SUBRAMANIAM, V. Mtodos Numricos para Engenheiros e
Cientistas. 1. ed. So Paulo: Bookman.

2. RUGGIERO, M. A. G.; LOPES, V. L. R. Clculo Numrico: Aspectos Tericos e
Computacionais. 2. ed. Rio de Janeiro. So Paulo: Makron Books, 1996.

Potrebbero piacerti anche