Vous êtes sur la page 1sur 157

CLCULO NUMRICO USANDO O MATLAB

1



























Profa. Walria A. G. Ceclio,
Profa. Mnica D. S. Damaris e
Prof. Wadilson K. F. Pereira


CLCULO NUMRICO USANDO O
MATLAB
Clculo Numrico usando MatLab
2
SUMRIO
1. O MATLAB ............................................................................................................ 4
1.1 O AMBIENTE DE TRABALHO ................................................................................................................4
1.2 NMEROS E EXPRESSES ARITMTICAS ...............................................................................5
1.3 RESOLUES DE EXPRESSES ...............................................................................................7
1.4 OBTENDO INFORMAES DA REA DE TRABALHO ..............................................................................8
1.5 FORMATO DE SADA .......................................................................................................................8
1.6 ALGUNS COMANDOS E OBSERVAES: ..............................................................................................9
1.7 FUNES MATEMTICAS ELEMENTARES .......................................................................................... 11
2. MATRIZES E VETORES....................................................................................... 13
2.1 ALGUMAS MATRIZES ESPECIAIS ...................................................................................................... 14
2.2 CONCATENAO DE MATRIZES ....................................................................................................... 16
2.3 OPERAES COM MATRIZES ................................................................................................. 19
3. SOLUO E REPRESENTAO DE SISTEMAS DE EQUAES LINEARES 23
4. MATEMTICA SIMBLICA ................................................................................. 29
4.1 SUBSTITUIO DE VARIVEIS ......................................................................................................... 30
4.2 DERIVAO E INTEGRAO ............................................................................................................ 31
4. 3 EXERC CI OS PROPOSTOS .............................................................................................. 33
5. AMBIENTE GRFICO .......................................................................................... 38
5.1 ALGUNS COMANDOS E FUNES ..................................................................................................... 41
6. LGICA E ALGORITMO ...................................................................................... 48
6.1 PROGRAMAS ................................................................................................................................. 50
6.2 CONSTRUO DE ALGORITMOS ...................................................................................................... 50
6.3 REGRAS PARA CONSTRUO 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 VARIVEIS ............................................................................................................. 55
6.4.1 Variveis .............................................................................................................................. 55
6.4.2 Constantes ........................................................................................................................... 56
6.5 OPERADORES ............................................................................................................................... 56
6.5.1 Operadores Aritmticos ....................................................................................................... 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 SADA DISP() .................................................................................................. 65
Clculo Numrico usando MatLab
3
8. OPERADORES LGICOS ................................................................................... 67
8.1 SENTENAS CONDICIONAIS ................................................................................................... 68
8.1.1 ESTRUTURAS DE DECISO ............................................................................................. 68
8.2 ESTRUTURAS DE REPETIO ................................................................................................ 73
8.2.1 A estrutura for - end ............................................................................................................. 74
8.2.2 A estrutura while - end ......................................................................................................... 76
8.3 OBSERVAES IMPORTANTES .............................................................................................. 79
9. FUNES ............................................................................................................. 85
9.1 ESTRUTURAS DE UMA FUNO ................................................................................................... 85
9.1.1 Declarao da funo .......................................................................................................... 85
9.1.2 Corpo da funo .................................................................................................................. 86
9.2 SALVANDO E EXECUTANDO UMA FUNO ....................................................................................... 86
10. ZEROS DE FUNES ALGEBRICAS OU TRANSCENDENTES ..................... 92
UM NMERO REAL X* UM ZERO DA FUNO F(X) OU UMA RAIZ DA
EQUAO ................................................................................................................ 92
F(X) = 0 SE F(X*)=0. ............................................................................................... 92
10.1 INTERPRETAO GEOMETRICA E TEOREMA DE BOLZANO. ............................................ 93
10.1.1 MTODO GRFICO.......................................................................................................... 93
10.1.2 MTODO ANALTICO ....................................................................................................... 95
10.1.3 Exerccios: ......................................................................................................................... 96
10.2 PROCESSO ITERATIVO DE REFINAMENTO ......................................................................... 97
10.2.1 CRITRIOS DE PARADA ................................................................................................. 98
10.3 MTODO DA BISSECO ....................................................................................................... 98
10.4 MTODO DE NEWTON-RAPHSON ................................................................................................ 103
11. RESOLUO DE SISTEMAS LINEARES ....................................................... 111
11.1 MTODO DE ELIMINAO DE GAUSS ................................................................................ 112
11.2 MTODO DE ELIMINAO DE GAUSS COM PIVOTEAMENTO PARCIAL ......................... 117
11.3. FATORAO LU COM ESTRATGIA DE PIVOTEAMENTO PARCIAL ............................... 119
11.4 MTODO DE GAUSS-JACOBI ............................................................................................... 124
12. INTERPOLAO POLINOMIAL ...................................................................... 131
12.1 FORMA DE NEWTON................................................................................................................... 134
13. AJUSTE DE FUNES .................................................................................... 143
13.1 MTODO DOS MNIMOS QUADRADOS .......................................................................................... 143
13.2 AJUSTE POLINOMIAL .................................................................................................................. 144
14. INTEGRAO NUMRICA .............................................................................. 149
14. EQUAES DIFERENCIAIS ORDINRIAS .................................................... 153
Clculo Numrico usando MatLab
4
1. O MATLAB

O MATLAB um sistema interativo cujo elemento bsico de informao
uma matriz que no requer dimensionamento. Esse sistema permite a resoluo de
muitos problemas numricos em apenas uma frao de tempo que se gastaria para
escrever um programa semelhante em linguagem Fortran, Basic ou C. Alm disso,
as solues dos problemas so expressas no MATLAB quase exatamente como
elas so escritas matematicamente.

1.1 O AMBIENTE DE TRABALHO

Quando iniciamos o MATLAB, o Comando Window criado e se torna ativo.
atravs deste que nos comunicamos com o interpretador MATLAB, isto , a rea
na qual so digitados dados e instrues para o MATLAB. Desta forma, aps digitar
o comando, basta acionar a tecla enter e os resultados so exibidos na tela.


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




Clculo Numrico usando MatLab
5
Outras janelas:

[Command Directory]: rea na qual exibida a lista dos arquivos contidos no
diretrio corrente.

[Workspace]: rea de memria de trabalho do MATLAB, na qual ficam armazenadas
todas as variveis criadas na janela de comando.

[Launch Pad]: rea na qual so exibidas informaes, textos explicativos (online
help) e exemplos de utilizao dos produtos instalados.

[Help]


1.2 NMEROS E EXPRESSES ARITMTICAS

Declaraes e Variveis

As declaraes no MATLAB so frequentemente da forma
>> varivel = expresso
Ou simplesmente
>> expresso
Clculo Numrico usando MatLab
6
As expresses so compostas de operadores e outros caracteres especiais,
de funes e dos nomes das variveis. A avaliao das expresses produzem
matrizes, que so ento mostradas na tela e atribudas s variveis para uso futuro.
Se o nome da varivel e o sinal de igualdade = so omitidos, a varivel 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 declarao um ponto e vrgula, a impresso na tela
suprimida, mas a tarefa realizada. Esse procedimento, em geral, usado em
arquivos do tipo script (<nome>.m) e em situaes onde o resultado uma matriz de
grandes dimenses e temos interesse em apenas alguns dos seus elementos.
Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar
a expresso na prxima linha usando um espao em branco e trs 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 espao em branco entre -9 e ... obrigatrio.
A notao decimal convencional, com ponto decimal opcional e o sinal de
menos, so usados para nmeros. A potncia de dez pode ser includa como um
sufixo. A seguir so mostrados alguns exemplos de nmeros aceitos:
Clculo Numrico usando MatLab
7
3 -99 0.00003
3.147458638 1.512E-20 6.097885e21

As expresses podem ser construdas usando os operadores aritmticos
usuais e as regras de precedncia:

^ exponenciao
/ diviso a direita
\ diviso a esquerda
* multiplicao
+ adio
- subtrao

Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e
4\1 possuem o mesmo valor numrico, isto , 0.25.

1.3 RESOLUES DE EXPRESSES

Toda expresso calculada da esquerda para a direita utilizando as
definies da Matemtica, isto :

Potenciao Multiplicao ou diviso Adio e subtrao
Sempre obedecendo a ordem de procedncia. Para definir ou alterar a ordem
de procedncia utiliza-se do sinal de parnteses.








Clculo Numrico 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 INFORMAES DA REA DE TRABALHO

Os exemplos de declaraes mostrados nos itens acima criaram variveis que
so armazenadas na rea de Trabalho do MATLAB. Executando
>> who
obtm-se uma lista das variveis armazenadas na rea de Trabalho:
Your variables are:
a ans b k sol
Que mostra as cinco variveis geradas em nossos exemplos, incluindo ans. Uma
informao mais detalhada mostrando a dimenso de cada uma das variveis
correntes obtida com o comando whos.
Cada elemento de uma matriz real requer 8 bytes de memria, assim nossa
matriz sol de dimenso 1x1 usa 8 bytes. Seguindo o mesmo raciocnio, uma matriz
A de dimenso 3x3 usa 72 bytes.

1.5 FORMATO DE SADA

O formato numrico exibido na tela pode ser modificado utilizando-se o
comando format, que afeta somente o modo como as matrizes so mostradas, e
no como elas so computadas ou salvas. O MATLAB efetua todas as operaes
Clculo Numrico usando MatLab
9
em dupla preciso. A preciso dupla fornece uma relativa preciso de cerca de 16
dgitos decimais e intervalo de magnitude de 10
-308
a 10
+308
.
Se pelo menos um dos valores de entrada no inteiro, existem vrias
possibilidades de formatar a sada. O formato default, chamado de formato short,
mostra aproximadamente 5 dgitos significativos ou usam notao cientfica.
Podemos verificar os tipos de formatos existentes no MATLAB, seguindo o caminho:
File Preferences Numeric format.

1.6 ALGUNS COMANDOS E OBSERVAES:

As teclas seta para cima e seta para baixo repetem os comandos digitados
anteriormente. Alm 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 espao para a esquerda

Move um espao para a direita
Ctrl
Move uma palavra para a esquerda
Ctrl
Move uma palavra para a direita
Home Move para o comeo da linha
End Move para o final da linha
Del Apaga um caractere a direita
Backspace Apaga um caractere a esquerda


Clculo Numrico usando MatLab
10
O smbolo % indica textos de comentrio

Cores (classes sintticas)

Palavras reservadas (for, end, if, ...). (azul)
Textos de comentrios. (verde)
Mensagem de erro. (vermelho)
Funes e variveis. (preto)
Cores e fonte de textos da janela de comandos e cor de fundo, podem ser
alterados pelo comando preferences.
Sinal - para indicar nmero negativo.
. para indicar casa decimal.
ans uma varivel reservada, que armazena o ltimo valor calculado pelo
MATLAB.
pi: 3.141592...;
i e j: raiz imaginria (raiz quadrada de -1);
eps: Preciso numrica relativa;
realmin: menor nmero real;
realmax: maior nmero real;
Inf: infinito. Ex: 1/0;
Nan: not a number. Exemplo: 0/0.

Nome de Variveis
Deve ser alfanumrico, iniciando com letra.
Diferencia letras maisculas e minsculas (case-sensitive)
Aceita caractere _ no meio do nome
Pode ter no mximo 32 caracteres
Todas as funes do MATLAB devem ser escritas em letras minsculas:
inv(A) calcula a inversa de A, mas INV(A) uma funo indefinida.
clear all apaga todos os dados da memria
clc limpa a janela de comandos
close - fecha todas as Janelas Grficas
Clculo Numrico usando MatLab
11
A execuo do MATLAB poder ser interrompida a qualquer momento
pressionando as teclas Ctrl e C simultaneamente.

1.7 FUNES MATEMTICAS 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)
e
x

exp(x)
ln(x)=log
e
(x)

log(x)
log
10
(x)

log10(x)
Log
2
(x)

log2(x)


sqrt(x)


x^(b/a)


pi
n!

factorial(n) para n<21

Clculo Numrico usando MatLab
12
IMPORTANTE: O MATLAB operara com arcos trigonomtricos somente em
radianos.

Clculo Numrico usando MatLab
13
2. MATRIZES E VETORES

O mtodo mais fcil de entrar com pequenas matrizes no MATLAB usando
uma lista explcita. Os elementos de cada linha da matriz so separados por
espaos em branco ou vrgulas e as colunas separadas por ponto e vrgula,
colocando-se colchetes em volta do grupo de elementos que formam a matriz. Por
exemplo, entre com a expresso:

>> 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 memria RAM do computador, ficando armazenada
para uso posterior.
A expresso A ( : ) equivale a uma matriz coluna que contm a primeira
coluna de A, seguida pelas coluna subsequentes.
>> A(:)
12
45
78
3
6
9
Em algumas situaes importante definir as dimenses e o nmero de
elementos de uma matriz. Desta forma, temos:
size(matriz) todas as dimenses da matriz
length(matriz) maior dimenso da matriz
Clculo Numrico 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 posies

>> ones(2,3)
ans =
1 1 1
1 1 1


Clculo Numrico usando MatLab
15
Matriz com elementos randmicos 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 vrias 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 declarao 1:10 gera um vetor linha contendo os nmeros de 1 a 10 com
incremento unitrio. Outros incrementos, diferentes de um, podem ser usados.

>> a2=1:2:10
a2 =
1 3 5 7 9

Clculo Numrico usando MatLab
16
Incrementos negativos tambm so possveis:

>> a3=10:-1:1
a3 =
10 9 8 7 6 5 4 3 2 1

Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo,

>> x=linspace(2,10,5)
x =
2 4 6 8 10
gera um vetor linearmente espaado de 2 at 10, contendo 5 elementos.

2.2 CONCATENAO DE MATRIZES

O MATLAB permite a manipulao de linhas, colunas, elementos individuais e
partes de matrizes. Um elemento individual da matriz pode ser chamado com ndice
entre parnteses. 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




Clculo Numrico 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

Tambm 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
ento
>> 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,


Clculo Numrico 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, trs e
quatro. Tambm podemos tomar uma parte da matriz D, tal que a nova matriz
definida atravs dos elementos da linha dois e trs e colunas quatro e cinco, desta
forma, definimos:
>> D([2, 3],[4,5])
ans =
0.2373 0.4889 0.6241

possvel definir uma matriz de dimenso zero por zero a D, isto : D=[ ].
Subsequente uso desta matriz no conduz a uma condio de erro; ele propaga
matriz vazia. Isto diferente de declarao
Clear D
que remove D da lista das variveis corrente.

O comando a seguir, atribui vazio a linha trs 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


Clculo Numrico usando MatLab
19
2.3 OPERAES COM MATRIZES

O caractere apstrofo, , 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 declarao A define a transposta da matriz A:
>> A'
ans =
1 4 7
2 5 8
3 6 9

A adio e subtrao de matrizes so indicadas, respectivamente, por + e
-. As operaes so definidas somente se as matrizes so de mesmas dimenses.

>> A-A'
ans =
0 -2 -4
2 0 -2
4 2 0

>> A+A'
ans =
2 6 10
6 10 14
10 14 18
Clculo Numrico usando MatLab
20
A adio e subtrao tambm so definidas se um dos operadores um
escalar, ou seja, uma matriz 1 x 1. Neste caso, o escalar adicionado ou subtrado
de todos os elementos do outro operador.
Por exemplo:

>> A+2
ans =
3 4 5
6 7 8
9 10 11

A multiplicao de matrizes indicada por *. A multiplicao A*S definida
somente se o nmero de colunas da matriz A igual ao nmero 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





Clculo Numrico 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 expresso A^p eleva A p-sima potncia e definida se A matriz
quadrada e p um escalar. Se p um inteiro maior do que um, a exponenciao
computada como mltiplas multiplicaes. 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



Clculo Numrico usando MatLab
22
>> F=M.*N
F =
-2 9 20 7

Se o ponto for omitido, a operao executada ser uma operao matricial.
Neste caso, a operao no seria possvel. 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

Clculo Numrico usando MatLab
23
3. SOLUO E REPRESENTAO DE SISTEMAS DE EQUAES
LINEARES

Um Sistema de equaes lineares consiste em um conjunto de m equaes
polinomiais com n variveis x
j
de grau 1, que podem ser representadas na forma:






(
(
(
(
(
(

=
(
(
(
(
(
(

(
(
(
(
(
(

=
m n mn m m m
n
n
n
b
b
b
b
x
x
x
x
a a a a
a a a a
a a a a
a a a a
b Ax
M M
L
M O M M M
L
L
L
3
2
1
3
2
1
3 2 1
3 33 32 31
2 23 22 21
1 13 12 11





Em muitos problemas de engenharia estamos interessados em determinar se
existe uma soluo para o sistema de equaes lineares que descreve uma parte do
problema real.










Matriz dos coeficientes Vetor Soluo
Vetor dos termos independentes

= + + + +
= + + + +
= + + + +
= + + + +
m n mn m m m
n n
n n
n n
b x a x a x a x a
b x a x a x a x a
b x a x a x a x a
b x a x a x a x a
K
M
K
K
K
3 3 2 2 1 1
3 3 3 33 2 32 1 31
2 2 3 23 2 22 1 21
1 1 3 13 2 12 1 11

Clculo Numrico usando MatLab
24
Na construo civil: TRELIAS



Problema: Determinar as componentes horizontal e vertical das foras que
atuam nas junes da trelia:


Para isso necessrio determinar as 17 foras desconhecidas que atuam
nesta trelia.
Clculo Numrico usando MatLab
25


Um sistema de equaes lineares poder ser resolvido no MATLAB de
diversas formas:
Assumindo o sistema de equaes apresentado abaixo, temos:

= +
= + +
= + + +
= +
3 2 2 3
1 2 4 2
6
0
w z y x
w z y x
w z y x
w z y
onde
(
(
(
(


=
2 2 1 3
2 1 4 2
1 1 1 1
1 1 1 0
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



Clculo Numrico 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 soluo definido por:

>> X=inv(A)*b
X =
26/5
-11/3
61/15
2/5

Ou ainda, independente de existir ou no a inversa da matriz A, podemos
obter a soluo do problema escalonando a matriz aumentada do sistema [A,b]. No
MATLAB podemos usar o comando rref:




Clculo Numrico 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












Clculo Numrico usando MatLab
28
A soluo tambm poder ser obtida aplicando o comando solve nas
equaes 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
Clculo Numrico usando MatLab
29
4. MATEMTICA SIMBLICA

possvel instruir o MATLAB a manipular expresses matemticas, que lhe
permitam calcular com smbolos matemticos, alm de nmeros. Esse processo
frequentemente chamado de matemtica simblica. Na sequencia so apresentados
alguns exemplos de expresses simblicas.
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 expresso simblica.

Entrando com a expresso:
x
x
1

>> z=x/sqrt(1-x)
z =
x/(1 - x)^(1/2)
Para visualizar a expresso simblica na forma
x
x
1
devemos usar o comando:
>> pretty(z)

Entrando com matrizes:
Seja
(

=
d c
b a
M
>> M=[a b; c d]
M =
[ a, b]
[ c, d]



Clculo Numrico usando MatLab
30
O determinante da matriz simblica M definido por:

>> det(M)
ans =
a*d - b*c

Entrando com polinmios: e calculando suas razes:

>> 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 SUBSTITUIO DE VARIVEIS

Quando se tem uma expresso simblica em x, e que queira mudar a varivel
para s, usa-se a funo 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

Clculo Numrico usando MatLab
31
Quando queremos avaliar a funo 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 DERIVAO E INTEGRAO

A derivao de uma expresso simblica usa a funo diff em uma dentre as
quatro formas:

Expresso Resultado
syms a b c x ;
f=a*x^3+x^2-b*x+c;
Define uma expresso simblica.
diff(f) Deriva em relao a x (padro).
diff(f,a) Deriva f em relao a a.
diff(f,2) Deriva f 2 vezes em relao a x.
diff(f,a,2) Deriva f 2 vezes em relao a a.

A funo diff tambm opera sobre conjuntos. Se f for um vetor simblico 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]

Clculo Numrico usando MatLab
32
>> diff(T)
ans =
[a, 2*b*x]
[3*c*x^2, 0]

A funo de integrao int(f), onde f uma expresso simblica, tenta
encontrar outra expresso simblica F tal que diff(F)=f.

Expresso Resultado
syms s m n x;
f=sin(s+2*x);
Define uma expresso simblica.
int(f) Integra em relao a x (padro).
int(f,pi/2,pi) Integra f em relao a x de pi/2 a pi.
int(f,s,pi/2,pi) Integra f em relao a s de pi/2 a pi.
int(f,m,n) Integra f em relao a x de m a n.

A funo int tambm opera sobre conjuntos. Se f for um vetor simblico 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]





Clculo Numrico usando MatLab
33
4.3 EXERCCIOS PROPOSTOS

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

=
2

1 2
2 2
+ + + = y x y x A
x xe A
y
ln + =

( )
2
2
5 3
+

+
=
x
e y x
y x
A
) 43 (
) 2 (
.
6 4
2
+
+

=
y x
y xy
y x
xy x
A

( )
16 4
2
1
2
2
e
y
y
x
x
x

|
|

\
|

+
A=
(
(
(

5 3
2 4
0 1
.
(

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=
(
(
(

2 6 3
1 7 4
9 5 2
,calcular A+A
T
=S e verificar se S simtrica.
Resp: A simtrica




Clculo Numrico usando MatLab
34
3)Dadas as matrizes A,B e C determine:
A=
(

4 6
5 1
B=
(

2 10
6 3
C=
(

0 1
8 7

A.C e (A.C).B
B.( A.C)
Resp:
(


=
48 38
8 12
AC
,
( )
(


=
324 594
88 6 . 11
B AC
e
( )
(


=
16 44
264 192
AC B


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

2 8 7
6 1 2 / 1
4 1 2
0 3 5
B=
(
(
(

2 1
3 5
4 0

Resp:
(
(
(
(


=
48 38
13 11
13 1
11 15
AB


5) Resolva as equaes:
a)
x
x
x



3 1 1
1 5 1
1 1 3
=0 b)
1 2 3
3 1 2
1 3 2 + x x x
=0
Resp: a) {x=2, x=3, x=6} e b) {x=-10}
6) Dadas as matrizes A=
(

5 3 / 2 2
0 5 / 3 2 / 1
e B=
(
(
(


3 / 1
3 / 4
3
, calcule se for possvel:
A
T
B
T
AB no possvel
A
T
B no possvel

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

5 1 2
3 2 4
4 2 3
2 1 1
B=
(
(
(

1 5 2 4
4 3 3 3
2 1 0 1

A segunda coluna.
A quarta coluna.
Clculo Numrico usando MatLab
35
Resp: a)
(
(
(
(

13
0
14
1
e b)
(
(
(
(

13
3
18
0


8) Seja A=
(

3 0
2 1
determine g(A), onde g(x)=x
2
. Resp:
(

=
9 0
8 1
2
A


9) Determine x, y e z, se
3
(

w z
y x
=
(

w
x
2 1
6
+
(

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

10) Escreva os sistemas de equaes lineares na forma matricial, em seguida
encontre o vetor soluo.
a)

=
=
= +
4 3 2
4 2 4 2
8 5 2 3
z y x
z y x
z y x
SCD x=3, y=2 e z=1
b)

=
=
= +
0 2 2 12
0 8 16
0 4 2
1
2 1
2 1
x x
x x
x x
Somente a Sol. Trivial
c)

=
=
= +
26 5 2 3
4 4 2
8 3
z y x
y x
z x
SCD: x=4, y=3 e z=-4
d)

=
= + +
0 6 3 9
0 4 2 6
z y x
z y x
SCI:
(
(
(
(
(


=
z
y
z y
X
3
2
3
1

e)

= + +
= +
= +
5 3 6 6
2 3 6 3
1 3 2
c b a
c b a
c b
SI
f)

= +
= +
= +
14 2 2 3
17 4 2
7 2
z y x
z y x
z y x
SCD: x=2,y=-1 e z=3
h)

= + +
= + +
= +
17 4 8 3
5 3
3 2
z y x
z y x
z y x
SCD
(
(
(
(
(
(

=
3
4
3
2
3
17
X

Clculo Numrico usando MatLab
36
i)

=
= +
=
= +
7 5 4
9 3
4 2 5
16 4 2
2 1
2 1
2 1
2 1
x x
x x
x x
x x
SCD
(

=
3
2
X


11) Determine o contedo das matrizes definidas abaixo. Use a matriz A como
referncia.
(
(
(
(

=
2 2 1 1
3 5 1 0
1 5 2 1
2 7 5 1
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:












Clculo Numrico usando MatLab
37





14) Sabendo que e , isto
. (Verifique se as respostas encontradas no exerccio 12) esto
corretas.















Clculo Numrico usando MatLab
38
5. AMBIENTE GRFICO

A construo de grficos no MATLAB mais uma das facilidades do sistema.
Atravs de comandos simples podem-se obter grficos bidimensionais ou
tridimensionais com qualquer tipo de escala e coordenadas. Existe no MATLAB uma
vasta biblioteca de comandos grficos.
Se y um vetor, plot(y) produz um grfico linear dos elementos de y versos o
ndice dos elementos de y. Por exemplo, para plotar os nmeros [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 Grfica:

Se A uma matriz, plot(A) produz um grfico 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

Clculo Numrico 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 dimenso, o comando plot(x,y) permite
desenhar o grfico 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 5
0
5
10
15
20
25
30





Clculo Numrico usando MatLab
40
Para obter o grfico de uma funo y = f(x), Introduza na linha de comandos
do MATLAB o vetor x (parte do domnio 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 grfica:
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1


Observe que o grfico acima no apresenta com preciso o comportamento
da funo no intervalo . Desta forma, importante notar que o
nmero de pontos definidos no vetor x, define a qualidade com relao ao aspecto
de continuidade e diferenciabilidade da funo.
>>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 6
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1

Clculo Numrico usando MatLab
41

5.1 ALGUNS COMANDOS E FUNES

O MATLAB possui comandos de fcil utilizao para adicionar informaes
em um grfico:
title Ttulo do grfico.
xlabel Ttulo do eixo-X.
ylabel Ttulo do eixo-Y.
zlabel Ttulo do eixo-Z.
text Inserir anotao no grfico.
gtext Inserir anotao com o mouse.
grid Linhas de grade.

Alm da formatao default para grficos, outros tipos de linhas, pontos e
cores tambm podem ser usados:
TIPO DE LINHA
- ----
- - -----------------
-. ---------
:

TIPO DE PONTO



+ +++++++++
X x x x x x x x




Clculo Numrico usando MatLab
42
CORES
y Amarelo
m Lils
c azul claro
r Vermelho
g Verde
b azul escuro
w Branco
k Preto

Observe a sequencia de comandos e o respectivo grfico:
>>x=1:.01:10;
>>y=1./x;
>>plot(x,y,'y*')
>>title('FUNO Y=1/X')
>>xlabel( 'EIXO DAS ABSCISSAS')
>>ylabel('EIXO DAS ORDENADAS')

1 2 3 4 5 6 7 8 9 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
FUNO Y=1/X
EIXO DAS ABSCISSAS
E
I
X
O

D
A
S

O
R
D
E
N
A
D
A
S






Clculo Numrico usando MatLab
43
>>x=-6:.01:6;
>>y=1./x;
>>plot(x,y,'y*')
>>title('FUNO 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
150
FUNO Y=1/X
EIXO DAS ABSCISSAS
E
I
X
O

D
A
S

O
R
D
E
N
A
D
A
S


f(x)=1/x


O MATLAB plota mltiplas linhas em apenas um grfico, usando o comando
plot com mltiplos argumentos. Por exemplo: Os comandos definidos abaixo cria o
grfico da funo seno e da funo 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)')

Clculo Numrico usando MatLab
44
Para inserir ttulo e nomes nos eixos, usamos os comandos: title, xlabel e
ylabel.
>> title('Grfico das funoes: f(x)=sen(x) e f(x)=cos(x), 0<x<2*pi')
>> xlabel('x')
>> ylabel('f(x)')


Caso seja necessrio 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
)
Grfico das funoes: 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
Clculo Numrico usando MatLab
45
Outro exemplo: Grfico da funo seno e da funo 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, smbolos e cores usados para plotar grficos podem ser
controlados se os padres no so satisfatrios. Veja os exemplos, que seguem na
mesma janela usando o comando subplot.

Sintaxe do subplot:
>>subplot(m,n,p)

Parmetros de entrada:
m: nmero de eixo na horizontal
n: nmero de eixos na vertical
p: ndice da figura corrente.


Clculo Numrico usando MatLab
46
No exemplo definido abaixo, uma janela grfica (2x3) foi criada evidenciando
o grfico de seis funes.
>>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 20
0
100
200
300
-20 0 20
0
100
200
300
400
-20 0 20
0
5
10
15
-20 0 20
-40
-20
0
20
40
-20 0 20
-40
-20
0
20
40








Clculo Numrico usando MatLab
47
Na sequencia, uma nica linha apresenta trs grficos (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
60
g1(x)=x
2
+6*x-2
-5 0 5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6
g2(x)=abs(x)+1
-5 0 5
-10
-5
0
5
10
15
g3(x)=-2*x+1

INTRODUO LGICA DE PROGRAMAO
Clculo Numrico usando MatLab
48
6. LGICA E ALGORITMO


A lgica na programao muito til quando se deseja desenvolver sistemas
e programas, ela permite definir a sequncia lgica de procedimentos para cumprir o
desejado. So passos que devem ser executados em uma sequncia tal que o
objetivo ou soluo de um problema so alcanados.


Em computao, uma instruo a informao que indica ao computador
uma ao elementar que deve ser executada.
Uma instruo isolada, em geral, no resolve um processo completo. Nesses
casos necessrio um conjunto de instrues, colocadas em uma ordem sequencial
lgica.
Um algoritmo formalmente uma sequncia finita de passos, no
redundantes nem subjetivos na sua definio, logicamente encadeados que levam a
execuo de uma tarefa.
Um exemplo, no dia-a-dia, seria um manual de instalao e uso de um
aparelho eletrnico, que explica passo-a-passo como proceder a sua instalao e
como realizar cada uma das suas funes.
Outro exemplo seria o de efetuar a soma de dois nmeros reais.
Nada seria feito se a instruo fosse: efetue a soma desses nmeros. Mesmo
que essa operao fosse efetuada, qual seria o resultado? Ter-se-ia conhecimento
dele se nenhuma instruo foi dada para que isso ocorresse?
Em termos computacionais, seria necessrio estabelecer uma sequncia finita
de passos, de forma clara e precisa, que possibilitasse que o computador realizasse
a tarefa.
Seria algo como:
Leia o primeiro nmero.
Leia o segundo nmero.
Efetue a soma desses nmeros.
Informe o resultado.
Lgica o encadeamento de pensamentos para atingir determinado objetivo.
Clculo Numrico usando MatLab
49
Suponha agora que seja desejvel, alm de efetuar a soma, calcular a
multiplicao da soma pelo segundo nmero.
Ento, alm da elaborao da sequncia acima, seria necessrio proceder
multiplicao pelo segundo nmero lido.
Isto seria descrito por:

Leia o primeiro nmero.
Leia o segundo nmero.
Efetue a soma desses nmeros e o produto dessa soma pelo segundo nmero
lido.
Informe o resultado.

Algumas vezes, no possvel realizar todas as operaes de uma s vez,
conforme a linguagem utilizada e/ou a convenincia do desenvolvimento do
raciocnio.
Neste caso, os procedimentos que no puderem ser realizados de uma s vez
podem e devem ser realizados por partes:

Leia o primeiro nmero.
Leia o segundo nmero.
Efetue a soma desses nmeros.
Efetue o produto dessa soma pelo segundo nmero.
Informe o resultado.

Conforme o problema torna-se necessrio estabelecer outro tipo de
raciocnio. o caso, por exemplo, se a multiplicao, no problema acima, fosse
efetuada com o maior dos dois nmeros fornecidos, em lugar de pelo segundo. Isso
levaria a necessidade de se estabelecer:




Clculo Numrico usando MatLab
50
Leia o primeiro nmero.
Leia o segundo nmero.
Se o primeiro nmero maior do que o segundo;
Efetue a soma dos dois nmeros e multiplica a soma pelo primeiro nmero.
Seno (se o primeiro no maior do que o segundo)
Efetue a soma dos dois nmeros e multiplica a soma pelo segundo nmero.
Informe o resultado.

Poder-se-ia elaborar vrios outros problemas com especificaes mais
trabalhosas. Mas bom estabelecer aqui que em todos os casos possvel
encontrar uma sequncia de passos finita, clara e no redundantes que, ao final,
apresentaria um resultado.

6.1 PROGRAMAS

Os programas de computadores so, simplesmente, algoritmos escritos numa
linguagem de computador (Pascal, C, Cobol, Fortran, MatLab entre outras) e que
so interpretados e executados por uma mquina, no caso um computador.
bom que se saiba que um programa muito especfico e rgido em relao
aos algoritmos da vida real. Qualquer falha no raciocnio, erro de sintaxe na
linguagem ou erro na sequncia estabelecida para o computador, o resultado pode
ser muito diferente daquele que seria o correto.

6.2 CONSTRUO DE ALGORITMOS

Pseudocdigo

Ao se criar um algoritmo ele em uma linguagem chamada pseudocdigo.
Assim chamada por ser conveniente elabor-lo aproximando-se da posterior
implementao em uma linguagem de programao. Isto significa que quando da
programao, o cdigo ser gerado de acordo com o estabelecido no algoritmo.
Por esta razo, os algoritmos so independentes das linguagens de
programao e, por isto, no existe um formalismo rgido de como deve ser escrito o
Clculo Numrico usando MatLab
51
algoritmo. Um algoritmo deve ser fcil de interpretar e ao mesmo tempo fcil de
codificar.
O algoritmo deve ser intermedirio entre a linguagem falada e a linguagem de
programao.

6.3 REGRAS PARA CONSTRUO DO ALGORITMO

Um algoritmo deve descrever a sequncia de instrues, de maneira simples e
objetiva e, por isso aconselhvel a obedincia algumas regras:
Levar em considerao que o algoritmo ser visto por pessoas que no esto
familiarizadas com computao.
Usar frases curtas e simples.
Preferencialmente, usar apenas um verbo por frase.
Objetividade.
No usar palavras que possam oferecer duplo sentido.

6.3.1 Fases

Na elaborao de um algoritmo necessrio:
Conhecimento completo do problema que se pretende resolver (Anlise do
Problema). Isto inclui em estabelecer quais so os dados que devem ser
conhecidos, quais clculos devem ser realizados e em quais condies, entre
outros.
Elaborar uma sequncia de passos, finita, clara e objetiva.
Observar se o algoritmo cumpre todas as etapas na ordem desejada.

Exemplo: Deseja-se calcular a mdia anual de um aluno do curso, ao final do ano.
Soluo:
Os alunos se submetero a uma prova por bimestre, totalizando, ao final do
ano, 4 provas que correspondem a 4 notas (digamos, N1 , N2, N3 e N4 ).
A mdia anual dada pela soma das quatro notas divididas pelo nmero de
notas (4). O que se deseja o resultado da mdia assim calculada.
Clculo Numrico usando MatLab
52
Para se elaborar o algoritmo deve-se levar em conta:
Quais so os dados de entrada?
Quais so os procedimentos que sero executados para os clculos?
Qual o resultado que ser apresentado?
As respostas podem ser extradas 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.
Sada: fornecer a mdia 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 exatido. Este teste consiste em realizar com exatido a
sequncia estabelecida no algoritmo para certificar se o algoritmo realiza o desejado
de forma correta.

EXERCCIO: Elabore um algoritmo para calcular a mdia anual de um aluno do
curso, sabendo que ele recebe quatro notas no ano e que a mdia ponderada,
tendo, cada nota seu peso especfico.



Clculo Numrico usando MatLab
53
6.3.3 Diagrama de Bloco

O diagrama de blocos uma forma eficaz para representar os passos lgicos
de um determinado processamento. Ele construdo atravs de smbolos (em geral
figuras geomtricas) especficos para cada atividade e tem por objetivo facilitar a
visualizao e o entendimento dos passos de um processamento.
Dentro de cada um deles escrito o que ser realizado.
Na sequncia so descritos alguns smbolos mais utilizados. No decorrer do
curso podero ser apresentados outros, se for necessrio.

SMBOLO DESCRIO



TERMINAL
Incio ou fim do processamento.




ENTRADA DE DADOS
Exemplo: ler N




PROCESSAMENTO
Indica qualquer processamento
Exemplo: soma de dois nmeros



DECISO
Ser exemplificado no futuro



EXIBIR
Apresenta o resultado do
desenvolvimento
Clculo Numrico usando MatLab
54





SENTIDO DO FLUXO



CONECTOR


Exemplo: Para o exemplo anterior, onde foi calculada a mdia das notas de um
aluno, tem-se:
Algoritmo e diagrama de bloco:

incio
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

Incio
Imprimir
Mdia
Clculo Numrico usando MatLab
55
OBSERVAO:

Alguns preferem usar, e de fato usam quando possvel, um s smbolo de
entrada de dados, constando, explicitamente, que ser dada entrada de quais
dados.
Ler
N1 , N2 , N3 , N4

Nada impede este procedimento, desde que no seja prejudicada a clareza e
a no ambiguidade do diagrama.

Exerccio: Elabore um diagrama de blocos para o caso de clculo da mdia
ponderada, conforme enunciado anteriormente.

6.4 CONSTANTES E VARIVEIS

Variveis e constantes so os elementos bsicos que todo programa
manipula.

6.4.1 Variveis

Uma varivel um espao reservado na memria do computador para
armazenar um determinado tipo de dado.
Variveis devem receber nomes atravs dos quais podem ser referenciadas e
modificadas quando necessrio, na execuo do programa.
Uma varivel 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 programao, o sinal de igual (=), significa atribuio, como j se viu.
Neste caso, quando se escreve a = 10 o que se pretende reservar um espao de
memria, designado por a e ser armazenado o valor atribudo (10).

Clculo Numrico usando MatLab
56
6.4.2 Constantes

Constante um valor fixo que no se modifica ao longo do tempo, durante a
execuo de um programa. Conforme o seu tipo, a constante classificada como
sendo numrica lgica ou literal.

Exemplo de constantes:
PI = 3.141516, K = 4, nome = Maria.

6.5 OPERADORES

Os operadores so os meios pelos quais o computador incrementa, decrementa,
compara e avalia os dados. So classificados em trs tipos:
Operadores Aritmticos
Operadores Relacionais
Operadores Lgicos
6.5.1 Operadores Aritmticos

Os operadores aritmticos so aqueles utilizados para obter resultados
numricos. Alm da adio, subtrao, multiplicao e diviso, utiliza-se tambm o
operador para exponenciao.

OPERAO SMBOLO
Adio +
Subtrao -
Multiplicao *
Diviso /
Exponenciao ^

6.5.2 Operadores Relacionais

Os operadores relacionais so aqueles utilizados para efetuar comparaes.
Os valores a serem comparados podem ser caracteres ou variveis.
Clculo Numrico usando MatLab
57
Estes operadores retornam valores lgicos (verdadeiro ou falso/ True ou
False)
Para estabelecer prioridades no que diz respeito a qual operao executar
primeiro utilizados parnteses.
Descrio Smbolo
Igual a ==
Diferente de ~=
Maior que >
Menor que <
Maior ou igual a >=
Menor ou igual a <=

Exemplo: Considere duas variveis e seus respectivos valores: L = 5 e P = 10
Utilizando os operadores obtm-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 so muito teis quando se deseja realizar clculos
quando uma determinada condio for satisfeita. Na elaborao de um algoritmo, no
diagrama de bloco o smbolo que representa esses operadores tem a forma:



Por um dos vrtices deve seguir o fluxo que realiza as operaes no caso de
a comparao descrita no interior da figura resultar em Verdadeiro ( V ) e por outro
vrtice o fluxo que realiza as operaes no caso de a comparao resultar em falso
( F )
Clculo Numrico usando MatLab
58
Exemplo: Elaborar um algoritmo que, dados dois nmeros A e B, imprime a soma
deles se A for maior do que B e a diferena A B, se A no for maior do que B.

Inicio

Ler A
Ler B
Se A > B
Efetuar a soma dos nmeros
Seno
Efetuar a subtrao A B

Imprimir o resultado

Fim

O fluxograma ficaria da forma:


















F V

Incio
Ler A e B
R = A + B
A > B
R = A - B
Imprimir R

Fim
Clculo Numrico usando MatLab
59
7. ROTINAS (M-FILES OU SCRIPTS)

A janela do command Windows no interativa. Toda vez que acionada a
tecla enter somente o ltimo comando digitado executado e os anteriores ficam
inalterados. Se alguma alterao ou correo for necessria, todos os comandos
devero 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 correo ou alterao for necessria, abre-se o arquivo, procedem-se as
correes necessrias e salva o arquivo. Ele fica disponvel, com todos os
comandos para nova execuo.
Esses arquivos so chamados rotinas (programas), M-files ou scripts.

No uso de programas (rotinas) convm observar:
Um programa uma sequncia de comandos do MATLAB.
Toda comunicao com o usurio e feita atravs da janela command
Windows, quer seja solicitando dados, quer seja fornecendo resultados.
Podem ser executados e editados quantas vezes forem necessrias.
7.1 CONSTRUINDO UM PROGRAMA

As rotinas devem ser criadas e editadas em um editor. A janela do editor se
abrir atravs do caminho: File New Script. Ser apresentada a janela:









Os comandos devero ser
digitados aqui, linha por linha. As
linhas sero numeradas
automaticamente e para passar de
uma linha para outra tecle enter.
O editor possui propriedades
semelhantes ao word.
Nmero
da linha.
Clculo Numrico usando MatLab
60

Os comandos sero digitados linha a linha e as linhas sero numeradas
automaticamente. Aps a digitao 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 no for explicitado um caminho para o salvamento, ele ser realizado na
pasta default do MATLAB: c:\matlab7\work. neste diretrio que a rotina
procurada quando solicitada a sua execuo, a menos que tenha sido realizada uma
configurao personalizada.
Na escolha do nome da rotina no pode ser usado o nome de comandos ou
funes nativas do MATLAB e nem o nome de variveis declaradas pelo usurio.
Observe, finalmente, que as linhas iniciadas pelo smbolo % no so consideradas
na execuo. Por esta razo geralmente o smbolo usado para incluir descrio e
comentrios na rotina.

Exemplo: Calcular a mdia das notas obtidas por um aluno, na disciplina, no final do
ano.
Soluo:
A anlise e o respectivo algoritmo j foram apresentados anteriormente.
A digitao, na janela do editor, obedeceu sequncia apresentada no
algoritmo.
Foi escolhido o caminho default para salvar e atribumos o nome media para
o arquivo.
Veja a janela aps a digitao:
Clculo Numrico usando MatLab
61


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




Clculo Numrico usando MatLab
62
7.2 ENTRADA DE DADOS EM UMA ROTINA

Para executar uma rotina as variveis usadas dentro do arquivo devem ser
inicializadas. Essa inicializao (atribuio de um valor) pode ser feita de trs
modos:
a) Dentro da prpria rotina - A varivel declarada e inicializada dentro da prpria
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 variveis ali constantes.
b) Na janela do Command Windows - Neste caso, as variveis so inicializadas
antes de chamar a rotina para execuo.
No exemplo anterior o problema seria elaborado: no editor









Variveis no
inicializadas no
arquivo.
Clculo Numrico usando MatLab
63
No Command Windows, inicializa-se cada varivel e s aps solicitada a execuo
da rotina.













c) O usurio solicitado a fornecer os dados quando inicia-se a execuo. Neste
caso, usa-se a funo input() para solicitar ao usurio a entrada do dado. Essa
funo ocasiona uma interrupo temporria da execuo da rotina para que possa
ser fornecido o dado e a execuo continuada aps teclar enter.

O novo arquivo para o problema anterior ficaria assim
Inicializando as
variveis que
sero usadas na
rotina.
Solicitando a
execuo da rotina
Clculo Numrico usando MatLab
64



No command Windows, quando solicitada a rotina, imediatamente haveria
uma parada e a janela se apresentaria da seguinte forma:

















A funo input
usada para
receber dados.
Clculo Numrico usando MatLab
65
Aps a entrada de todos os valores solicitados, a janela estaria da forma seguinte:















No exemplo, os valores dos dados foram atribudos um a um. Existem formas
de se proceder a entrada dos dados na forma de matriz, como se ver mais adiante.
Tambm possvel dar entrada de strings usando input.

7.3 O COMANDO DE SADA DISP()

O comando disp() utilizado para apresentar texto (mensagens) na tela ou
para apresentar o contedo de uma varivel.
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 varivel)
Clculo Numrico usando MatLab
66










Outras funcionalidades do disp podem ser vistas na bibliografia.

A mensagem que
apareceria na janela
de execuo
Clculo Numrico usando MatLab
67
8. OPERADORES LGICOS

Um operador lgico utilizado para combinar resultados de expresses
lgicas cujo resultado sempre ser V (verdadeiro) ou F (falso).
Os operadores lgicos so:
OPERADOR
SINAL NO
MATLAB
DESCRIO
AND (E) &
Retorna V se todos os operandos forem
verdadeiros. Caso contrrio retorna F
OR (OU) |
Retorna V se pelo menos um dos operandos for
verdadeiro. Caso contrrio retorna F
NOT (NO) ~
um operador unrio. 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




Clculo Numrico usando MatLab
68
EXEMPLO: Considere trs variveis inicializadas com os valores: A = 1 ; B = 10 e
C = 6. Preencha a coluna corresponde a resultados, na tabela abaixo:

EXPRESSO 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 SENTENAS CONDICIONAIS

As sentenas condicionais so estruturas que permitem ao MATLAB efetuar
desvios na sequncia do programa, optando por um ou outro conjunto de comandos
ou at mesmo repetir um grupo de comandos um nmero finito de vezes. A deciso
determinada pelo resultado (verdadeiro ou falso) de uma operao lgica.
Estas estruturas podem ser divididas em dois grupos: estruturas de deciso e
estruturas de repetio.

8.1.1 ESTRUTURAS DE DECISO

Uma estrutura de deciso envolve uma sentena lgica 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 deciso corresponde ao se j comentada em
operadores lgicos. A estrutura fornece opo para o fluxo da execuo de uma
rotina.
A rotina em execuo, ao encontrar uma sentena if verifica se ela
verdadeira ou falsa. No caso de ser verdadeira, a rotina executa os comandos entre
Clculo Numrico usando MatLab
69
o if e o end. Caso contrrio, ela no considera esses comandos e executa aqueles
abaixo de end.


FLUXOGRAMA ESTRUTURA NA LINGUAGEM














Exemplo: Considere o exemplo de determinar a mdia anual de um aluno do curso.
Imprimir o resultado aprovado se a mdia for maior ou igual a 7.0.
Soluo:
Aps a anlise e a construo do algoritmo, a digitao seria:
V
F
Fim do if
comandos
If(sentena)
> B
......................
......................
programa do MATLAB
......................
If expresso condicional
Comandos
end
......................
......................
programa do MATLAB
......................

Clculo Numrico usando MatLab
70
















Digite a rotina, salve-a e proceda a sua execuo. Analise o resultado em
diversas situaes.

8.1.1.2 A estrutura if else - end
Esta estrutura uma variao da estrutura acima. Ela acrescenta a opo de
realizar a execuo de um novo conjunto de comando. Quer seja na primeira opo,
quer seja na segunda, aps a realizao a rotina passa para os comandos aps o
end.








V F
comandos
If
comandos
Fim
comandos
...........
............ comandos
............
If sentena
Comandos
Else
Comandos
Fim
..............
.............. comandos
...............
Clculo Numrico usando MatLab
71

Exemplo: Suponha a situao do exemplo anterior. Se a mdia for igual ou maior
do que 7 emitir a mensagem aprovado. Caso contrrio emitir a mensagem no
aprovado.
Soluo:
A anlise e o algoritmo correspondentes podem ser construdos. A rotina teria a
forma:

















possvel aninhar vrios if-else-end. Como isto ocorrer depende da
situao envolvida na anlise e algoritmo. Entretanto, um em particular deve ser
citado.




Clculo Numrico usando MatLab
72
8.1.1.3 Estrutura if - elseif else - end














Exemplo: Considere o caso da mdia de aluno. Deseja-se que sejam emitidas
mensagens de que ele foi aprovado, est em exame ou ainda reprovado.
Soluo:
Sabe-se que se a mdia 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 ento o aluno est reprovado (no que diz
respeito a notas).

Realizada a anlise e construdo o algoritmo, o resultado seria uma rotina da forma:

Fim
V
F
If
sentea
comandos
comandos
If sentea
comandos
F
V
F
Observe que no caso de
falso no primeiro if, e s
ento, um novo if
Clculo Numrico usando MatLab
73


















bom lembrar que so vrias as possibilidades de aninhar sentenas if elseif
end. Desta forma possvel efetuar vrios testes dentro de um nico programa.

8.2 ESTRUTURAS DE REPETIO

Alm das estruturas de deciso, existem na linguagem MATLAB ( e demais
linguagens ) as estruturas de repetio. Estas servem para proporcionar
oportunidade para que uma rotina execute vrias vezes um mesmo conjunto de
comandos sem a necessidade de reescrev-los em igual nmero de vezes. So
conhecidos tambm por LOOPS ou LAOS. A cada repetio do lao chamada
passo e em cada passo pelo menos uma varivel modificada. Essa varivel deve
ser quem controla o encerramento do lao. O lao deixa de ser executado quando
essa varivel deixar de satisfazer uma condio definida para esse fim.
Clculo Numrico usando MatLab
74
Dois tipos de laos esto presentes no MATLAB: for end e while - end .
Ambos obedecem ao mesmo conceito inicial de ser interrompido quando a condio
de controle seja falsa. Entretanto, existe o comando break que interrompe a
execuo, em ambos os casos, a qualquer momento em que for desejvel.

8.2.1 A estrutura for - end

A principal caracterstica deste lao que deve ser previamente conhecido o
nmero de vezes que se deseja repetir o conjunto de comandos. O lao tem a
seguinte forma:


for i = a : k : b
Comandos
end


Algumas consideraes e regras acerca da estrutura:
O nome da varivel-ndice atribudo 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
programao envolver nmero complexo, evitar a atribuio de i e j.
Sobre o funcionamento, a varivel assume o valor inicial ( a , no caso) e
executa o primeiro passo, retornando ao incio 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 aps o end.
O incremento k pode ser negativo.
Todo lao for deve terminar com um end.
O valor de i no pode ser redefinido pelos comandos no interior do lao.
O valor de k ao final da execuo o ltimo valor que ela recebeu, e pode
ser usado aps o trmino do lao.
i o ndice
controlador do
loop.
Valor inicial de
i
k o incremento que i sofrer a
cada passo, aps o primeiro.
b o valor que i ter ao
executar o ltimo passo.
Clculo Numrico usando MatLab
75
Exemplos:
1.- Efetuar uma rotina que efetue a soma dos n primeiros nmero naturais, onde n
fornecido pelo usurio no incio da execuo da rotina.
Soluo:
O que se deseja determinar com n conhecido. Um algoritmo para o
problema:
Incio
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
nmero de vezes que o lao de repetio executado. A rotina seria:




Execute o programa com diversos valores de n (natural) e confira os resultados.
Inicializao da varivel S.
Igual a zero para no
interferir no resultado da
soma.
Clculo Numrico usando MatLab
76
8.2.1.1 Exerccios:
1.- Escreva uma rotina que calcula o produto dos n primeiros nmeros naturais.
Obs.: veja que, neste caso, a inicializao da varivel 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 usurio.

3.- A funo pode ser representada (em srie de Taylor) por
. Escreva uma rotina que calcula o valor da aproximado para a funo,
para x = 2, considerando os 6 primeiros termos da srie,.
Sugesto: Uma anlise do problema deve levar em considerao:
Deseja-se o valor da funo 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 diferena
est no fato de ele realizar o lao quando o nmero de repeties no conhecido
antecipadamente.
A exemplo das demais estruturas de repetio, aps o while existe uma
condio lgica que, para a execuo do lao deve ser verdadeira quando o fluxo de
execuo encontrar o while pela primeira vez. Neste caso so executados os
comandos existentes no lao at que o end seja encontrado. O fluxo volta ao while e
verifica novamente se a condio verdadeira ou falsa. Observe que, se no
houver alterao da condio lgica a execuo do loop nunca ser interrompido.
obrigatria a existncia de alterao de pelo menos uma varivel presente na
condio lgica para que, em algum momento, expresso lgica venha a ter valor
falso.


Clculo Numrico usando MatLab
77
A estrutura tem a seguinte construo:
while <expresso>
..................
.................. comandos
..................
end

Exemplos:
1. Escrever uma rotina para determinar todos os nmeros pares positivos menores
ou iguais a 31. Apresentar o resultado na forma de matriz.
Soluo:
Uma anlise do problema:
Sabe-se que os nmeros pares positivos so aqueles mltiplos de 2. Portando o
problema consiste em determinar os nmeros positivos mltiplos 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. No 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 atravs de ndices. Se a matriz
designada por x, ento seus elementos podem ser referenciados por x(i), com i
variando de 1 at o nmero de elementos que formam a matriz.











Clculo Numrico 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 identao no
obrigatria, mas
aconselhvel.
Facilita o
entendimento e
possveis correes.
Clculo Numrico usando MatLab
79
A execuo no Command Windows:




8.3 OBSERVAES IMPORTANTES

1.- As sentenas condicionais podem fazer uso dos operadores condicionais. Isto
significa que a expresso 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 possvel estabelecer um
for-end dentro do lao de outro for-end (e tantos quantos forem necessrios), ou
ainda for-end dentro do lao de um while-end , ou, ao contrrio, while-end dentro de
for-end. Alm de outras combinaes usando o if-end ou if-else-end, se for o caso.
3.- Alm disso, til lembrar que as rotinas podem chamar ou carregar qualquer
funo nativa do MATLAB, como exp() , abs(), sin(), para citar algumas.
4.- Finalmente, bom saber que existe um comando break que, quando inserido no
lao de um comando de repetio, ocasiona a sada incondicional do loop. Ao
encontrar o break, o fluxo do programa dirigido para o primeiro comando aps o
end do loop, saindo do lao. O uso do break til quando se deseja interromper o
loop mesmo com a condio de controle tendo sido satisfeita.
Por exemplo, no exerccio que foi enunciado acima, mesmo que a condio de
parada no seja atendida, mas um nmero mximo de execuo do lao,
previamente estipulado, for alcanado.
Clculo Numrico 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.
Soluo:
Uma anlise do problema fornece as seguintes informaes:
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.
necessrio ter a matriz definida antes ou ser definida na execuo 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 condio.
Para percorrer todos os elementos da matriz tornar-se- necessrio 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), possvel usar, em ambos os casos o comando for-end.
Lembre-se de que se o acrscimo no contador para o for igual a 1 ele no precisa
ser escrito na declarao. Basta colocar o valor inicial e o final, separados por dois
pontos.
Aps elaborao do diagrama e do algoritmo, o programa ficaria assim.










Clculo Numrico usando MatLab
81
















2.- Escrever uma rotina que resolva tantas equaes do segundo grau quantas
forem desejadas pelo usurio.
Soluo:
A anlise do problema resulta nas observaes:
Para resolver vrias equaes necessrio que o usurio entre com os coeficientes
da equao e precisa faz-lo de forma que possa repetir o processo. Isso leva
existncia de um controle do fluxo sob a responsabilidade do usurio. A existncia
de um loop que, aps cada realizao, solicita ao usurio se deseja ou no resolver
outra equao.
Na soluo de uma equao do segundo grau necessrio observar que o
coeficiente principal no pode ser nulo ( a 0). O discriminante deve ser no
negativo ( delta 0 ). Esta condio obriga a emitir uma mensagem se a condio
no for satisfeita para informar ao usurio que no existem razes reais e resolv-la
em caso contrrio.
Veja um diagrama de Blocos (Fluxograma) do problema. Poderia ser montado de
outras formas alm da apresentada.
Veja a diferena na
apresentao dos dois for. Em
um consta o acrscimo do
contador e no outro no.
Clculo Numrico usando MatLab
82

































V
F
S
Fim
Flag = 1
Flag = 0
V
F
Continuar? s / n
No existem
razes reais
Mensagem a
0
Clculo de D
F
Ler a , b , c
a == 0
Apagar tela
F
incio
Flag = 1
Flag == 0
V
V
D < 0
Imprimir
x1 e x2
Calcular
x1 e x2
Clculo Numrico 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 modificao aps a construo do fluxograma.
Antes da leitura dos coeficientes b e c, foi realizado o teste com o coeficiente a e
somente se a for no nulo a rotina continua a ser executada.
Foi declarada e inicializada uma varivel com o nome de flag apenas para
definir se o programa deve ser executado novamente ou se encerrado. A rotina no
Funo (sqrt )nativa do
MATLAB. Calcula a raiz
quadrada do argumento.
Clculo Numrico usando MatLab
84
executada apenas se flag for igual a zero. Note que ao final solicitada a
informao de continuar ou parar. No caso de parar deve ser digitado o nmero
zero. Qualquer outra resposta o problema continua, visto que o valor digitado
armazenado exatamente em flag.

Clculo Numrico usando MatLab
85
9. FUNES

No MATLAB existem vrias funes nativas que podem ser usadas para
clculos diversos, como sin(x) , cos(x) , sqrt(x) , exp(x) e vrias outras, como j foi
citado.
Alm disto, possvel a criao de funes prprias do usurio para efetuar algum
tipo de clculo para o qual no existe funo nativa, e cujo uso ocorre da mesma
forma como as que existem no MATLAB.

9.1 ESTRUTURAS DE UMA FUNO

Uma funo construda no mesmo ambiente em que criamos as rotinas, que
o editor do MATLAB.

9.1.1 Declarao da funo

Toda funo deve ser declarada, no editor, na primeira linha. Essa declarao
elaborada da seguinte forma:

function [argumentos de sada] = nome da funo( parmetros)

A palavra function obrigatria e a caracteriza como funo.
Argumentos de sada o elemento que referencia algum resultado que for
necessrio utilizar no futuro (outra funo ou outros clculos) e que a funo
disponibilizar ao final da execuo, e devem ser referenciados entre colchetes
quando for mais de um valor.
Segue-se o sinal de igual e nome da funo. Esse nome da funo a
forma como ela ser referenciada quando da solicitao da execuo, e deve ser
sempre sucedido de um par de parnteses (obrigatrio).
Parmetros so os valores que se deseja informar e que sero utilizados
como variveis na execuo. Os parmetros no so obrigatrios, mas uma forma
Clculo Numrico usando MatLab
86
de se enviar dados para a funo, alm da possibilidade de se proceder leitura dos
dados no interior da funo, como foi realizado nas rotinas.
Pelo que se conclui ento que ao declarar uma funo:
Define o arquivo a ser construdo como sendo uma funo, o que a torna
diferente da rotina.
Estabelece o nome da funo.
Define o nmero de variveis de entrada e a sua ordem.
Especifica se a funo retornar algum valor, quantos so eles e o tipo das
variveis de sada.

9.1.2 Corpo da funo

Uma funo, logo aps ter sido declarada, podem ser includas linhas de
comentrios iniciadas pelo smbolo % e tem as mesmas caractersticas de quando
foram estudadas as rotinas.
O cdigo do programa a ser executado pode conter clculos, inicializao de
variveis, as funes nativas do MATLAB, os operadores lgicos e as expresses
lgicas, alm das estruturas de fluxo do programa (if, for, while, alm de outros no
mencionados aqui). Devem ser obedecidos os mesmos critrios estabelecidos para
o caso de rotinas.

9.2 SALVANDO E EXECUTANDO UMA FUNO

O arquivo construdo para uma funo ser salvo com a mesma extenso
usada para as rotinas: .m e atribuda pelo prprio MATLAB. Tambm o diretrio
onde salvo, o MATLAB j oferece uma primeira opo, 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 providncias
para que ele tenha a sua localizao informada para o MATLAB.
Para executar a funo basta fazer referncia ao seu nome na janela do
Command Windows, ou dentro de uma rotina ou ainda dentro de uma outra funo,
indicando, sempre, os parmetros de entrada que constam da sua definio.
Clculo Numrico usando MatLab
87
Pelo que se observa, uma rotina e uma funo so muito parecidas. Isto
verdade. Entretanto algumas diferenas so significativas:
A primeira linha de uma funo, a linha de declarao da funo,
obrigatria. Nas rotinas essa primeira linha no exigida.
Uma funo pode fazer receber dados de entrada, atravs dos parmetros de
entrada (argumentos) e podem retornar dados para o argumento de sada, enquanto
uma rotina no goza dessas caractersticas.

Exemplo:
Elaborar uma rotina que determina o ponto extremo de uma funo do segundo
grau, da forma .
Soluo:

Uma anlise do problema esclarece que:
solicitado o PONTO extremo da funo, o que ocasiona a determinao da
abscissa e da ordenada do ponto. Isto significa que o parmetro de sada um par
ordenado.
O valor do coeficiente a no pode ser nulo.
Alm disso, o valor de a que determina se a concavidade da curva est voltada
para cima ou para baixo, indicando se o valor da funo , respectivamente, mnimo
ou mximo.
Finalmente, sabido que a abscissa do vrtice dado por e a ordenada
por onde representa o discriminante.
Poder-se-ia estabelecer um fluxograma (diagrama de blocos) para o
problema.
A funo teria o seguinte aspecto:



Clculo Numrico usando MatLab
88














Para executar a funo poder-se-ia proceder como aparece no Command Windows
abaixo.
















Clculo Numrico usando MatLab
89

Como j foi afirmado, possvel chamar uma funo atravs da rotina de
uma primeira funo. Para exemplificar este fato, considere o mesmo problema
acima.
Proceda a criao de uma funo, que se dar o nome de graf, e que ter
como argumentos de entrada os coeficientes da funo do segundo grau e o valor
da abscissa do ponto extremo, que j teria sido calculada na funo maxmin.
Esta funo teria como trabalho traar o grfico da funo, considerando
pontos antes e depois do vrtice (ponto extremo da funo) da parbola.
Construda, esta funo teria a forma:














Como se ver, os coeficientes da funo do segundo grau foram designados
por a, b e c, e assim foram tratados na funo maxmin. So esses valores que
sero passados como parmetro para a funo graf. Nesta funo eles sero
tratados por m, n e r, respectivamente, em todos os clculos que envolverem os
coeficientes.
No que isto seja obrigatrio. Poder-se-ia continuar designando eles por seus
nomes de origem, mas no obrigatrio. Em cada funo, as variveis recebem os
Parmetros da funo. Os
primeiros so os coeficientes e
o ltimo o valor da abscissa
do vrtice.
Clculo Numrico usando MatLab
90
VALORES e do a eles a designao prpria da funo. Este procedimento no
causa nenhum inconveniente ao resultado.
Neste momento, proceda a uma alterao na funo maxmin, acrescentando
a chamada para a funo graf.
Esta alterao daria o seguinte aspecto funo maxmin.

















Ao executar, a partir do Command Windows a funo maxmin, fornecendo os
coeficientes da funo do segundo grau, a funo calcula o ponto extremo, informa-
o na janela e solicita a execuo da funo graf, informando como parmetros os
mesmos coeficientes que recebeu e um valor calculado no corpo da funo maxmin
(p) e que representa o valor da abscissa no ponto extremo.
Executado o programa, ele apresentaria o seguinte resultado:
A nica alterao: incluir uma
chamada para a funo graf,
informando os parmetros
solicitados: a , b e c, alm do
valor de p, que a abscissa do
vrtice.
Clculo Numrico usando MatLab
91












REFERNCIAS BI BLIOGRFI CAS
1. Ceclio, Walria Adriana Gonalez, Introduo ao Matlab, Apostila Curso de
Extenso PUCPR, 2010.
2. HANSELMAN, Duane e LITTLEFIELD, Bruce. Matlab 5 Verso do Estudante,
Ed. Makron Books: So Paulo, 1999.
3. Universidade do Estado do Rio de Janeiro - Programa Prodenge / Sub-Programa
Reenge. Introduo Soluo de Problemas de Engenharia, Apostila de.
Clculo Numrico usando MatLab
92
10. ZEROS DE FUNES ALGEBRICAS OU TRANSCENDENTES

Este captulo apresenta mtodos numricos para resoluo de equaes
complexas de uma varivel. De forma simplificada, queremos encontrar as razes
reais da equao f(x) = 0, isto , os valores reais de x que tornam a equao
verdadeira.
Definio:




APLICAO:

UM NMERO REAL X* UM ZERO DA FUNO F(X) OU UMA RAIZ DA EQUAO
F(X) = 0 SE F(X*)=0.

Clculo Numrico usando MatLab
93
Para resolver esse tipo de problema, existem vrios tipos de mtodos
numricos que fornecem solues aproximadas, conforme uma preciso pr-
estabelecida.

Todo o processo de resoluo consiste em duas etapas:

1. Determinar o intervalo da reta que contm, de preferncia, uma raiz;
2. Processo iterativo de refinamento, para obter aproximaes cada vez melhores, a
partir de estimativas anteriores, at que seja atingida a preciso desejada.

10.1 INTERPRETAO GEOMETRICA E TEOREMA DE BOLZANO.

A ideia determinar um intervalo [a,b] que contenha pelo menos um zero da
funo. Existem duas formas de resolver este problema: o mtodo grfico e o
mtodo analtico.

10.1.1 MTODO GRFICO

Consiste em tomar valores para x e calcular os valores de y = f(x), plotando se os
pares ordenados obtidos em um plano cartesiano.












Clculo Numrico usando MatLab
94
Exemplo:

Esboce o grfico de f(x)=e
x
+x
2
-2 e identifique o intervalo que contm a raiz de f(x).


]. 1 , 0 [ ] 1 , 2 [
2
*
2 1
*
1
= = I x e I x


Existe outra forma de determinar o intervalo que contm a raiz, dada pela seguinte
sequncia:
a) Tomar f(x) = g(x) - h(x). Obter a equao equivalente g(x) = h(x) a partir de
f(x)=0;
b) Esboar os grficos 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 *) ( x h x g x f = =











>>x=linspace(-2,2,30);
>>y=e
x
+ x
2
-2;
>>plot(x,y), grid
Clculo Numrico usando MatLab
95
Exemplo:

Encontre o intervalo que contm a raiz de
2 ) (
2
+ = x e x f
x
.

]. 1 , 0 [ ] 1 , 2 [
2
*
2 1
*
1
= = I x e I x



10.1.2 MTODO ANALTICO

s vezes fazer o grfico de f extremamente complicado, ento quando isso
ocorrer, podemos definir o intervalo de maneira analtica, isto , aplicar o Teorema
de Bolzano. Este teorema muito utilizado em algoritmos numricos, quando
queremos encontrar um intervalo que contenha pelo menos uma raiz de f(x) = 0.

Teorema de Bolzano: Se f(x) contnua em I = [a , b] e troca de sinais nos
extremos de I ento 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
Clculo Numrico usando MatLab
96
Exemplo:

Encontre o intervalo que contm a raiz de
2 ) (
2
+ = x e x f
x
, 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 Exerccios:

1) Com base no teorema de Bolzano e no corolrio, verifique se f(x), definida
abaixo, tem razes no intervalo I=[-10,10]. Obs.: Na letra a o intervalo de [0,10]
a)
x
e x x f

= 5 ) (

b)
3 9 ) (
3
+ = x x x f


2) Isole graficamente os zeros das funes usando o processo da g(x)=h(x).

a)
x x x f + = ln ) (

b)
x
e x f
x
1
) ( =

c)
2 log ) ( = x x x f

>> x=-3:3;
>> y=exp(x)+x.^2-2;
>> [x;y]'

Clculo Numrico usando MatLab
97
3) Isole analiticamente os zeros das seguintes funes:

a)
x x f
x
3 2 ) ( =

b)
tgx x x f = 2 ) (

c)
x
e x x f
2
cos 4 ) ( =


10.2 PROCESSO ITERATIVO DE REFINAMENTO

Aps encontrar o intervalo que contm pelo menos uma raiz, temos como
objetivo, refinar este intervalo at encontrar uma soluo to precisa quanto se
queira. Apresentamos na sequncia um algoritmo, que podemos chamar de
Algoritmo Genrico. Este calcula o valor aproximado do zero da funo.

















Incio
Clculos iniciais
A raiz calculada, tem a preciso desejada?
Dados iniciais
Fazer nova estimativa para a raiz
sim no
Realizar clculos finais
Apresentar
Fim
Clculo Numrico usando MatLab
98
Desta forma, podemos constatar que um mtodo iterativo consiste em uma
sequncia de passos que se repetem em ciclos. Cada repetio chamada de
iterao a qual utiliza dados da iterao anterior para atualizar as informaes.
importante ressaltar que o processo iterativo s se encerrar quando o erro na
aproximao seja menor que a preciso pr-estabelecida, isto , um dos critrios de
parada for satisfeito. Caso contrrio o algoritmo entrar em um looping infinito.

10.2.1 CRITRIOS DE PARADA

Selecionando uma tolerncia
0 >
(valor arbitrrio pequeno) podemos gerar uma
sequncia de aproximaes x
k
at que uma das condies definida abaixo seja
alcanada.

a)
<
1 k k
x x

b)
0 ,
1
<

k
k
k k
x
x
x x


c)
( ) <
k
x f



10.3 MTODO DA BISSECO

Seja f(x) contnua no intervalo [a , b] e tal que f(a)f(b)<0. O mtodo da
Bisseco, aplica o Teorema de Bolzano, sucessivas vezes, com o objetivo de
reduzir a amplitude do intervalo que contm a raiz at que a preciso pr-
estabelecida seja atingida, isto , deseja-se reduzir o intervalo [a,b] at que
<
1 k k
x x
.
Clculo Numrico usando MatLab
99
Interpretao Geomtrica




As iteraes so como segue:
M

=
=

>
<
>
+
=

=
=

<
<
>
+
=

=
=

>
<
>
+
=
1 1
2 0
1 0
*
2
1
0
1 0
2
1
0 0
1 0
*
1
0
0
1
0
0
*
0
0
) , (
0 ) (
0 ) (
0 ) (
2
) , (
0 ) (
0 ) (
0 ) (
2
) , (
0 ) (
0 ) (
0 ) (
2
x x
x x
x x x
x f
x f
x f
x x
x
x b
x x
x x x
x f
b f
x f
b x
x
b b
x a
b x x
x f
b f
a f
b a
x

CONVERGNCIA
possvel provar que o mtodo da Bisseco converge sempre que a funo f(x) for
contnua em [a, b], com f(a)f(b) < 0.

Clculo Numrico usando MatLab
100
NMERO DE ITERAES
Pode-se saber previamente o nmero de iteraes necessrias para atingir o
resultado desejvel, atravs da frmula:


log2
log - a) - (b log
K

>


sendo [a, b] o intervalo inicial e

a tolerncia requerida.

Onde
k
k k
a b
a b
2

=
.

Exemplos:
a) Encontre uma aproximao para o zero da funo f(x)= x - 9x + 3 em I= [0,1]
e = 0,001.
Ite a b
2
a b
x
+
=

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 preciso requerida:

Clculo Numrico usando MatLab
101
Observe que a amplitude do intervalo gerado a metade do intervalo
anterior.
b) Encontre uma aproximao para o zero da funo f(x)= x cos(x) em I=
[0,1] e = 0,001.
O zero foi encontrado com a preciso requerida:
Ite a b
2
a b
x
+
=

f(x) |b-a|<























Desvantagem: A desvantagem do Mtodo da Bisseco que se voc quiser uma
raiz bem aproximada o nmero de interaes ser muitas vezes impraticvel em
clculos manuais.
Vantagem: A vantagem do Mtodo da Bisseco que se voc escolher um
intervalo onde h raiz, sempre ir convergir.

O Mtodo da Bisseco um dos mtodos iterativos, usados para se obter zeros
reais de funes. Este, no o melhor meio de se chegar s razes de uma
Clculo Numrico usando MatLab
102
equao, porm seu algoritmo o mais simples, pois no envolve clculos
complexos.
Satisfeitas as hipteses de continuidade de f(x) em [a,b] e de troca de sinal em a e b,
o Mtodo da Bisseco gera uma sequncia convergente, ou seja, sempre
possvel obter um intervalo que contm a raiz da equao em estudo, sendo que o
comprimento deste primeiro intervalo final satisfaz a preciso requerida.

EXERCCIOS:
1) Calcular a raiz cbica de 7 equivalente a determinar o zero da funo f(x) =
x
3
- 7. Sabe-se que o intervalo [1, 2.5] contm um zero. Determine uma aproximao
para
3
7
usando

< 0.01.

2) Use o Mtodo da Bisseco para calcular o zero da funo
f(x) = x
4
+2x
3
-x-1,. Para os clculos escolha I = [0,1] e a preciso igual a 0.05. Antes
dos clculos, estime o nmero de iterao.
















Clculo Numrico usando MatLab
103

10.4 MTODO DE NEWTON-RAPHSON

A ideia central no mtodo de Newton-Raphson, tambm conhecido como
mtodo das tangentes, a de escolher uma funo g, tal que a derivada de g, na
raiz que se est procurando, seja zero. Assim teremos, no s garantia da
convergncia quanto convergncia muito rpida.












( )
k
k
k k
x f
x f
x x

) (
1
=
+



No mtodo de Newton-Raphson, a convergncia no linear. A convergncia
muito rpida, quadrtica. Assim, cada novo erro proporcional ao quadrado do
erro anterior.

Teorema: Se f(a) * f(b) < 0 e f`(x) e f(x) forem no nulas, e preservarem o sinal em
[a,b], ento partindo-se da aproximao inicial, x0 pertence ao intervalo [a,b], tal que
f(x0)*f(x0) > 0 possvel construir, pelo mtodo de Newton-Raphson uma
seqncia {xk} que converge.
Clculo Numrico usando MatLab
104

Exemplo: Encontre o zero de y = x - cos(x) com: Tolerncia: 10
-5
e I=[0,2]
k x
k
f(x
k
)
0 0.5 -0.3776
1 0.7552 0.0271
2 0.7391 0.0000

Comentrios:
O Mtodo de Newton-Raphson apresenta uma rpida convergncia , o que
representa uma boa maneira para se resolver zeros de funo.
Seu maior ponto negativo seu alto custo computacional, devido aos
inmeros clculos efetuados. Porm, somente assim se obtm uma rpida
convergncia.


EXERCCIOS:

1) Encontre a raiz, aplicando a cada uma das funes um dos mtodos estudados.
(Analise qual o mtodo mais conveniente para cada funo.)

a)
( ) x x x f sin 2 , 0 8 , 0 =

4
10

=

b)
( ) 9 221 9 18 230
2 3 4
+ + = x x x x x f

4
10

=

c)
( ) 1 log = x x x f

4
10

=

d)
( ) x e x f
x
cos
2
=


2
10

=

[ ] 2 , 1


(Bisseo) Funo: a ( ) b ( ) c ( ) d ( )

Clculo Numrico usando MatLab
105
Ite a b
2
a b
x
+
=

f(x) |b-a|<















(Newton) Funo: a ( ) b ( ) c ( ) d ( )

Ite x
n

( )
n
n
n n
x f
x f
x x

) (
1
=
+

|x
n+1
-x
n
|<
















Clculo Numrico usando MatLab
106

2) Encontre a raiz da funo utilizando os mtodos:

a) Bisseo - Intervalo: [2,3]
6
10

=


Ite a b
2
a b
x
+
=

f(x) |b-a|<







































Clculo Numrico usando MatLab
107
b) Newton - x
o
=2,5
6
10

=


Ite x
n

( )
n
n
n n
x f
x f
x x

) (
1
=
+

|x
n+1
-x
n
|<



























Clculo Numrico usando MatLab
108
3) Encontre pelo mtodo da bisseco a raiz de
) cos( 3 ) ( x x x f =
pertencente ao
intervalo (0,2; 0,4) com preciso
1 , 0 =
(clculos com 5 casas decimais) .
n
2
n n
n
b a
x
+
=

<
n n
a b

0
1
2
3
4
5
6
7
8











Clculo Numrico usando MatLab
109
4) Obtenha pelo mtodo de Newton a raz de
x e x f
x
=

) (
prxima de
5 , 0
0
= x
com
preciso de
3
10

=
(clculos com 5 casas decimais).

n
) (
) (
) (
n
n
n n
x f
x f
x x =

< ) (
n
x f

0
1
2
3
4
5
6
7
8











Clculo Numrico usando MatLab
110
5) Obtenha a raz aproximada de
x x x f + = ) ln( ) (
com
1 . 0
0
= x
e
1
1
= x
, preciso de
2
10

=
(clculos com 5 casas decimais).











6) Obtenha pelo mtodo de Newton a raz aproximada de
x x x x f 6 5 ) (
2 3
+ =
com
2 , 1
0
= x
e preciso de
01 , 0 =
(clculos com 5 casas decimais)
itr x
n

1 + n
x

|f(x
n+1
)|<
1
2
3
4










itr x
k
|f(x
k
)|<
1
2
3
4
5
6
7
Clculo Numrico usando MatLab
111
11. RESOLUO DE SISTEMAS LINEARES

Definies
Um sistema linear com m equaes e n variveis escrito usualmente da forma:

Onde
: coeficientes ,
: variveis
: constantes
A resoluo de um sistema linear consiste em obter os valores de ( ),
caso eles existam, que satisfaam as m equaes simultaneamente.
Usando notao matricial, o sistema pode ser assim representado:

Onde
a matriz dos coeficientes,
a matriz das variveis
e
o vetor constante.

Atravs de exemplos analisaremos situaes em relao ao nmero de solues de
um sistema linear.
i) Para a soluo nica e .
Clculo Numrico usando MatLab
112
ii) , neste caso h infinitas solues representadas por
, com .
iii) Para no existe nenhuma soluo.

Os mtodos numricos para resoluo de um sistema linear podem ser divididos
em dois grupos distintos: mtodos diretos e mtodos indiretos.
Mtodos diretos so aqueles que, a menos de erros de arredondamento, fornecem a
soluo exata do sistema linear, entre eles esto o mtodo de Eliminao de Gauss
e a fatorao LU com pivoteamento parcial.
Os mtodos iterativos geram uma sequncia de valores a partir de uma
soluo inicial . Sob certas condies esta soluo converge para a soluo do
sistema linear, caso ela exista. O Mtodo de Gauss-Jacobi iterativo.

11.1 MTODO DE ELIMINAO DE GAUSS

O mtodo de Eliminao de Gauss consiste em transformar o sistema linear
original num sistema linear equivalente com matriz dos coeficientes triangular
superior, pois esses so de resoluo imediata. Dizemos que dois sistemas so
equivalentes quando possuem a mesma soluo.

Inicialmente iremos considerar a resoluo de sistemas triangulares, seja o
sistema linear , onde triangular superior com elementos da diagonal
diferente de zero:


Da ltima equao, temos
Clculo Numrico usando MatLab
113


pode ser obtido da penltima equao:


e assim sucessivamente obtm-se e finalmente :


Para obter um sistema triangular superior equivalente de um sistema linear original
faz-se uso de operaes elementares escolhidas entre:
i) Trocar duas equaes;
ii) Multiplicar uma equao por uma constante no nula;
iii) Adicionar um mltiplo de uma equao a uma outra equao;
O mtodo de Eliminao de Gauss usa estas operaes elementares para
triangularizar a matriz A.
A eliminao efetuada por colunas e chamaremos de etapa k do processo a
fase em que se elimina a varivel das equaes k+1, k+2,..., n.
Usaremos a notao 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 possvel fazer troca de linhas de forma que no
se altere as colunas obtidas nas etapas anteriores k, deste que este
procedimento ser sempre possvel.
Seja a matriz aumentada


Clculo Numrico usando MatLab
114
Etapa 1:
Para eliminar a varivel das equaes i=2,3,..., n considere , para
i=2,...,n, da equao i subtramos a primeira equao multiplicada por .
Esses quocientes determinados por so chamados de multiplicadores e
o piv da primeira etapa.
Ao final desta etapa teremos a matriz:

Etapa 2:
Os multiplicadores desta etapa sero para i=3,...,n.
A varivel eliminada das equaes i=3,...,n da seguinte forma: da equao i
subtramos a segunda equao multiplicada por .
Ao final teremos a matriz:

Na etapa (n-1) obtm-se :

E o sistema linear triangular superior e equivalente ao sistema
linear original, ou seja, possuem a mesma soluo.



Clculo Numrico usando MatLab
115
Exemplo 1: Encontrar a soluo de .
Etapa 1
Para facilitar utilizaremos para indicar o vetor correspondente a linha i. Nesta
etapa tem-se:

Piv Multiplicadores Operaes

e



e


Portanto,

Etapa 2
Piv Multiplicadores Operaes






Portanto,

Assim, resolver equivalente a resolver :

Clculo Numrico usando MatLab
116
A soluo deste sistema o vetor .

Exemplo 2: Encontrar a soluo de .

Etapa 1


Piv Multiplicadores Operaes

,
e


,

e



Portanto,


Etapa 2
Neste caso o piv zero trocaremos de posio as linhas 2 e 3:

A varivel nula nas terceira e quarta equaes, logo a etapa est concluda.

Clculo Numrico usando MatLab
117

Etapa 3
Piv Multiplicadores Operaes



Para obter a soluo do sistema original resolve-se:

Cuja soluo o vetor .

11.2 MTODO DE ELIMINAO DE GAUSS COM PIVOTEAMENTO
PARCIAL

No inicio da etapa k da fase de eliminao de Gauss, escolher para piv o
elemento de maior mdulo entre os coeficientes e trocar as
linhas k e i se for necessrio.
Exemplo 1: Encontrar a soluo de .
Etapa 1

O piv logo permuta-se as linhas 1 e 3.
Clculo Numrico usando MatLab
118


Piv Multiplicadores Operaes

,
e


,

e


Portanto,

Etapa 2
Piv Multiplicadores Operaes

e



e



Etapa 3
Piv Multiplicadores Operaes


Clculo Numrico usando MatLab
119

A soluo do sistema triangular superior .

11.3. FATORAO LU COM ESTRATGIA DE PIVOTEAMENTO PARCIAL

Seja o sistema linear . O processo de fatorao deste sistema consiste
em decompor a matriz A dos coeficientes em um produto de dois ou mais fatores e,
em seguida, resolver uma sequncia de sistemas lineares que nos conduzir a
soluo do sistema linear original.
Por exemplo, se pudermos realizar a fatorao , o sistema linear
pode ser escrito como . Seja . A soluo do sistema linear pode ser
obtida da resoluo de dois sistemas:
i)
ii)
No mtodo de fatorao LU a matriz L triangular inferior cujo elementos da
diagonal principal so iguais a 1 e o restante dos elementos so os multiplicadores
obtidos do mtodo de Eliminao de Gauss e a matriz U triangular superior que
coincide com a mesma matriz obtida no final da ltima etapa do Mtodo de
Eliminao de Gauss. No entanto utilizado o pivoteamento parcial, ou seja, no
inicio da etapa k da fase de eliminao de Gauss, escolher para piv o elemento de
maior mdulo entre os coeficientes e trocar as linhas k e i
se for necessrio. Essas permutaes efetuadas nas linhas de A devem ser
efetuadas sobre o vetor b tambm para manter a equivalncia entre os sistemas,
para isso ser utilizada uma matriz auxiliar , no qual uma matriz identidade
de ordem n cuja as linhas k e i so trocadas.

Clculo Numrico usando MatLab
120
Exemplo 1: Obter a soluo de .

Usando o processo de Gauss para triangularizar A, tem-se:
Etapa 1:


Piv Multiplicadores Operaes

e


e


Ento,

Uma vez que os elementos e so nulos, podemos guardar os
multiplicadores nestas posies, ento:

Etapa 2
O Piv , ento devemos permutar as linhas 2 e 3:
e




Clculo Numrico usando MatLab
121
A matriz a identidade de ordem 3 no qual as linhas 2 e 3 foram permutadas
tambm.
Piv Multiplicadores Operaes





Efetuando a eliminao temos:

Os fatores L e U so:
e
Como houve uma permutao resolvem-se os seguintes sistemas triangulares:
i) , onde .




ii) Ux=y



Clculo Numrico usando MatLab
122
Exemplo 2: Obter a soluo de .

Etapa 1


O Piv , ento devemos permutar as linhas 1 e 3:

e

Piv Multiplicadores Operaes

,
e


,

e



Etapa 2
O Piv , ento permutando as linhas 2 e 4:
Clculo Numrico usando MatLab
123
e
Piv Multiplicadores Operaes

e


e



Etapa 3
Piv:
Multiplicadores:
Operaes:

i)
, onde .



Clculo Numrico usando MatLab
124

ii) Ux=y


11.4 MTODO DE GAUSS-JACOBI

Considere o sistema linear de n equaes e n variveis:


e , i=1,...,n, na primeira equao isola-se , na segunda equao isola-se
e assim sucessivamente:


O mtodo de Gauss-Jacobi consiste em dado , uma aproximao inicial, obter
, atravs da relao recursiva:
Clculo Numrico usando MatLab
125


Este processo interrompido quando esteja suficiente prximo de e
esta distncia dada por .
Aplicando o erro relativo tem-se , dada uma preciso ento
obtido como uma soluo aproximada..

Exemplo 1: Obter a soluo de , sendo


Construindo o processo iterativo:

Tomando k=0 tem-se:

Verificando a preciso:

Clculo Numrico usando MatLab
126
Portanto: e
Para as prximas iteraes tem-se:
K=1
e
K=2
e
K=3
e
Nestas condies a soluo aproximada para o sistema dada por
sabe-se que a soluo exata .
Teorema - Critrio das Linhas
O sistema linear gera uma sequncia convergente para a soluo atravs do
mtodo de Gauss-Jacobi quando calculados obtm-se
.
Exemplo 1: Dado o sistema linear , verifique se o mtodo
de Gauss-Jacobi converge.
Para a matriz , tem-se:



Clculo Numrico usando MatLab
127
ento ,pelo critrio das linhas o mtodo de Gauss-Jacobi
convergente para este sistema linear.


Exerccios
1. Utilizando o mtodo de eliminao de Gauss resolva os sistemas lineares:

a) Resp.:
b) Resp.:
c)
Resp.:
d)
Resp.:





Clculo Numrico usando MatLab
128
2. Utilizando o mtodo de eliminao de Gauss resolva os sistemas lineares:
a) Resp.:

b) Resp.:

c)
Resp.:
d)
Resp.:




Clculo Numrico usando MatLab
129
3. Utilizando fatorao LU com estratgia de pivoteamento parcial obtenha as
solues dos sistemas lineares:
4.
a)
Resp.: , , e

b)
Resp.: , , e

c)
Resp.: , , e

d)
Clculo Numrico usando MatLab
130
Resp.: , , e .

5. Obter a soluo dos sistemas lineares utilizando o mtodo iterativo de Gauss-
Jacobi:
a) , sendo
Resp.: e 0,015325

b) , sendo
Resp.: e
c) , sendo

Resp.: e




Clculo Numrico usando MatLab
131
12. INTERPOLAO POLINOMIAL

Considere um conjunto de pontos (designados por ns da interpolao) da
forma que esto associados aos valores de uma funo ,
respectivamente. O objetivo encontrar um polinmio interpolador de grau n tal que
para . Esse polinmio tem a forma geral
. Como os pontos pertencem curva de
tm-se as seguintes igualdades:




As incgnitas so 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 ns tem-se um polinmio interpolador de grau 3
( ), como mostra a figura a seguir:
Clculo Numrico usando MatLab
132


Exemplo: Obter o polinmio interpolador para os pares de pontos indicados na
tabela:
x
-
1
0 1 2
y
-
1
1 5 17
Soluo:
O objetivo determinar os coeficientes do polinmio
, ento seja o sistema:

A soluo dada por , , e , assim
. A curva determinada por contm os pontos dados
como mostra o grfico:
Clculo Numrico usando MatLab
133

Exerccios:
1) Obter o polinmio interpolador para os pares de pontos indicados na tabela:
x
-
1
0 1 2
y 1 3 3 7

Resp.:
2) Obter o polinmio interpolador para os pares de pontos indicados na tabela:
x -1 0 1 2 3
y
-
10
-
10
-
6
20 110

Resp.:










Clculo Numrico 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
diferenas divididas.

Definio de operador de diferenas divididas para um conjunto de ns , onde
:

Ordem
0



Ordem
1



Ordem
2




Ordem
n











Clculo Numrico usando MatLab
135
Tabela:

x Ordem 0 Ordem 1 Ordem 2




















Exemplo: Construir a tabela de diferenas divididas dos ns:

Clculo Numrico usando MatLab
136
x
-
1
0 1 2
y
-
1
1 5 17

Soluo:
Valores de x:
, , e
Diferenas divididas de ordem 0:
, , e
Diferenas divididas de primeira ordem:
, e
Diferenas divididas de segunda ordem:
e
Diferenas divididas de terceira ordem:


Tabela:
x Ordem
0
Ordem
1
Ordem
2




















Clculo Numrico usando MatLab
137
Exemplo: Construir a tabela de diferenas divididas dos ns:
x -
1
0 1 2 3
y 1 1 0 -
1

Soluo:
Valores de x:
, , , e
Diferenas divididas de ordem 0:
, , , e
Diferenas divididas de primeira ordem:
, , e

Diferenas divididas de segunda ordem:
, , e
Diferenas divididas de terceira ordem:

Diferenas divididas de quarta ordem:











Clculo Numrico usando MatLab
138
Construindo a tabela:
x Ordem
0
Ordem
1
Ordem
2
























3




Na forma de Newton utiliza-se as diferenas divididas para obter os valores dos
coeficientes , onde :


Exemplo: Utilize a forma de Newton para obter o polinmio de grau trs que interpola
os pontos:
x -
1
0 1 2
y -
1
1 5 17


Clculo Numrico usando MatLab
139
Soluo:
Utilizando a tabela de diferenas divididas:
x Ordem
0
Ordem
1
Ordem
2





















Forma de Newton:



Utilizando o Matlab para obter a forma reduzida da expresso anterior:


Portanto o polinmio que interpola os pontos dados dado por
.
Clculo Numrico usando MatLab
140

Exemplo: Utilize a forma de Newton para obter o polinmio de grau quadro que
interpola os pontos:
x -
1
0 1 2 3
y 1 1 0 -
1


Utilizando a tabela de diferenas divididas:

x Ordem
0
Ordem
1
Ordem
2
























3








Clculo Numrico usando MatLab
141
Forma de Newton:



Forma reduzida utilizando o Matlab:

Portanto o polinmio que interpola os pontos dados dado por .

Exerccios:
1) Obter o polinmio 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 polinmio 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.:
Clculo Numrico usando MatLab
142
3) Obter o polinmio 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.:

Clculo Numrico usando MatLab
143
13. AJUSTE DE FUNES

O ajuste uma tcnica de aproximao de funes que tem caractersticas
diferente da interpolao. (em geral aplicada em um conjunto de dados
experimentais)

Motivos que levam a usar Ajuste:

1. Devido a erros experimentais nos dados, no faz sentido encontrarmos uma
funo que passe exatamente pelos n+1 pontos. Devemos encontrar uma funo
que melhor se ajusta aos dados;
2. Para um conjunto de dados muito grande, a soluo por interpolao pode
ocupar muita memria ou tempo de processamento.

13.1 MTODO DOS MNIMOS QUADRADOS

No caso de ajuste de dados, o mtodo dos Mnimos quadrados utilizado no
clculo de um conjunto de constantes (coeficientes ou parmetros) c
j
, de uma funo
f* que aproxima uma funo y, desconhecida, da forma:

) ( ) ( ) ( ) ( ) ( *
3 3 2 2 1 1
x c x c x c x c x f
n n
+ + + + = L


As funes
n
, , ,
2 1
L
so escolhidas de acordo com a natureza dos
dados experimentais.

Definio: A funo f* que melhor se ajusta, no sentido dos mnimos quadrados, a
funo cujo os parmetros c
j
so determinados de modo que a soma dos quadrados
dos resduos seja mnima, isto ,


Clculo Numrico usando MatLab
144

=
=
m
i
i i
x f y R
1
2
)) ( * (
ou
2
1
3 3 2 2 1 1
))] ( ) ( ) ( ) ( ( [

=
+ + + + =
m
i
n n i
x c x c x c x c y R L


Nesta forma mais fcil verificar que R funo dos c
j
e, portanto, passar por um
mnimo quando as m derivadas parciais se anularem simultaneamente. Estes geram
um sistema de m equaes algbricas lineares onde as variveis so c
1
, c
2
, ..., c
n
.
Estas equaes so chamadas de equaes normais.


13.2 AJUSTE POLINOMIAL

a) Ajuste a uma reta Regresso Linear

Ao observar os pontos da figura, sabemos que h uma relao linear entre eles,
neste caso poderemos encontrar a reta que melhor se ajusta aos pontos dados.

Este mtodo consiste em encontrar a melhor estimativa da reta r = c
1
x +c
0


de
modo a produzir o menor desvio possvel.
Aplicando o critrio de mnimos quadrados encontramos um sistema de duas
equaes e duas incgnitas, dado por

Clculo Numrico usando MatLab
145
(

=
(



i i
i
i i
i
x y
y
c
c
x x
x m
2
1
2

, onde a soluo do sistema

( )

=
2
2
1
i i
i i i i
x m x
x y m y x
c
e
m
x c y
c
i i

=
1
0
ou

Caso Geral Linear

Da mesma forma que procedemos com o ajuste a uma reta, podemos
proceder com uma curva do tipo parbola, polinmio 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 c
1
, c
2
, ... aparecem e no as funes
) ( , ), ( ), ( ), (
3 2 1
x x x x
n
L
que
podem ser de qualquer forma, como, por exemplo
) sen( ) ( , ) (
2 1
x x e x = =
, etc.
PS: Tal funo no vlida para funes do tipo
) sen( ) ( , ) (
2 1
ax x ae x
bx
= =
e
outras, onde os coeficientes desconhecidos no aparecem linearmente.

Equaes Normais
(
(
(
(
(

=
(
(
(
(

(
(
(
(

= + + +
= + + +
= + + +

i i n
i i
i i
nn n n
n
n
i i n n nn n n
i i n n
i i n n
y x
y x
y x
A A A
A A A
A A A
matricial forma Na
y x c A c A c A
y x c A c A c A
y x c A c A c A
) (
) (
) (
c
c
c


.
) (
) (
) (
2
1
n
1
0
2 1
2 22 21
1 12 11
2 2 1 1
2 2 2 22 1 21
1 1 2 12 1 11

M M
L
M O M M
L
L
L
M
L
L
.

Clculo Numrico usando MatLab
146
Onde:
) ( ) (
1
k
m
k
j k i ij
x x A

=
=
;

) (
1
k i
m
k
k i
x y b

=
=
;

m igual ao nmero de pontos e

n igual a quantidade de funes
.


Caso Geral Polinomial

Para encontrar os coeficientes de um polinmio de grau n que melhor se ajusta a m
pontos resolvemos:
(
(
(
(
(
(
(
(

=
(
(
(
(

(
(
(
(
(
(
(
(




=
=
=
= =
+
=
+
=
+
=
=
+
= = = =
= = = =
m
i
i
n
i
i
m
i
i
m
i
i
n
m
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
y x
y x
y
c
c
c
x x x x x
x x x x x
x x x x m
1
1
1
1
0
1
2
1
3
1
2
1
1
1
1
1
1
4
1
3
1
2
1
1 1
3
1
2
1
M
M
L
M O M M M M
L
L










Clculo Numrico usando MatLab
147

Exerccios:

Questo 1. Considere os dados da tabela a seguir

x
i
1 2 4 6
f
i
10 5 2 1

ajuste os pontos usando a funo f* =
x
c
c
2
1
+
.

Questo 2. Observando-se um sinal np osciloscpio, verifica-se que ele
corresponde a superposio de dois efeitos, um osciloscpio e outro crescente.
Nestas condies possvel aproxim-lo por uma funo f da famlia
f(x)=c
1
x+c
2
cos(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)

Questo 3. A tabela abaixo d o desempenho de um torno de parafusos em funo
de sua idade. Fazer a projeo da produo 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).

Clculo Numrico usando MatLab
148
Questo 4. .Encontre um polinmio 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,51x
2


Clculo Numrico usando MatLab
149
14. INTEGRAO NUMRICA

MTODO DE NEWTON - COTES
VII - INTRODUO SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

A Integrao uma operao matemtica indispensvel nas cincias exatas e
nas engenharias modernas. Calcular rea e volume, velocidade a partir da
acelerao, trabalho da fora e do deslocamento alm de vrios outros fenmenos
fsicos, qumicos, biolgicos, fazem uso da integrao.
Em geral, a integrao de funes simples pode ser feita analiticamente, mas
muitas funes relevantes so, com freqncia, difceis ou impossveis de serem
integradas analiticamente, alm do fato de que em certos casos, a funo integrando
pode no ser conhecida, o que ocorre em aplicaes das cincias e das
engenharias, quando o integrando um conjunto de pontos.
Na integrao numrica, o resultado obtido atravs da diviso do intervalo
em n subintervalos do intervalo dado, determinando o resultado parcial para cada
seco e efetuando a soma deles.










Clculo Numrico usando MatLab
150
Se ( x
0
, y
0
) e ( x
1
, y
1
) so dois pontos de y = f(x), a integral da expresso
que realiza a interpolao linear, chega-se expresso:



) y (y
2
h
I
1 0 1
+ =


Onde
n
a b
n
x x
h
0 n

=

=




onde I
1
a integral de P
1
(x) no intervalo [ x
0
, x
1
] e que corresponde,
aproximadamente ao valor da integral de f(x), no intervalo. (Regra do Trapzio)
Procedendo da mesma forma para os demais intervalos, [ x
1
, x
2
] , [ x
2
, x
3
] ....[x
n-1
,
x
n
] e somando-se os resultados, obtm-se:

) y 2y .... 2y 2y (y
2
h
I
n 1 n 2 1 0
+ + + + + =


Isto pode ser escrito:

=
=
n
0 i
i i
) y (c
2
h
I

Tomando-se:
2 c .... c c c e 1 c c
1 n 3 2 1 n 0
= = = = = = =

( coeficientes de Cotes )


Exemplos:
1.- Calcular

3
1
3
dx ln(x) x
, pela regra do trapzio (repetida) para um nmero de 4
subintervalos. ( n = 4 ).
Soluo:

Tem-se que a = 1 , b = 3 e
0,5 h
4
1 3
n
a b
h =

=
.
Clculo Numrico usando MatLab
151
Para os clculos de

=
=
n
0 i
i i
) y (c
2
h
I

Com
2 c .... c c c e 1 c c
1 n 3 2 1 n 0
= = = = = = =

. Por comodidade, para efetuar os


clculos possvel construir uma tabela, conforme abaixo:

i x
i
y
i
c
i
c
i
y
i

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


i i
y c
=

Desta forma:
) 6625 , 29 ) 3170 , 14 5452 , 5 3684 , 1 ( 2 0000 , 0 (
2
5 , 0
) y (c
2
h
I
n
0 i
i i
+ + + + = =

=


I = 18,030925










Clculo Numrico usando MatLab
152
2.- Calcular

2
0
x cos
4 2x
e
, pela regra do trapzio (repetido) com 5 subintervalos.
Soluo:
0,4 h
5
0 2
n
a b
h =

=


i x
i
y
i
c
i
c
i

.
y
i

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,2751 0,2105 2(0,1817 (0,1839
2
0,4
I + + + + + =


I = 0,5644

Clculo Numrico usando MatLab
153
14. EQUAES DIFERENCIAIS ORDINRIAS

MTODO DE RUNGE-KUTTA
VII - INTRODUO SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS
INTRODUO

As Equaes Diferenciais Ordinrias (EDO) so ferramentas muito
importantes para a modelagem matemtica, notadamente aquelas em que o
problema descrito em termos de taxa de variao. Isto inclui vrios fenmenos
fsicos, qumicos, biolgicos entre outros.

Uma EDO de primeira ordem uma equao da forma:
y) , f(x y =
onde
y

a derivada da funo
y(x) y =
, e representa a funo incgnita da EDO.
A soluo analtica de uma EDO uma famlia de curvas onde cada elemento
da famlia representa a funo
y(x) y =
diferencia de outro elemento por um valor
constante. A determinao de um desses elementos realizada determinando uma
condio que a soluo desejada deve satisfazer. Um problema dessa natureza
chamado de Problema de Valor Inicial (PVI) e indicado por
0 0
y ) y(x , y) , f(x y = =
.
Para a soluo de tal problema, so utilizados mtodos que permitem
determinar aproximaes
k
y
dos valores da funo y(x) nos pontos x
k
, k = 1 , 2 , 3
, 4 , ......n.
Os pontos x
k
so igualmente espaados no intervalo [ x
0
, x
n
] , onde a funo
contnua. Isto : x
k
= x
k-1
+ h , onde
n
x x
h
0 n

=
.

Um procedimento para determinao da soluo baseado em expandir a
funo em srie de Taylor. Os mtodos baseados puramente nessa expanso
exigem a determinao de derivadas de ordem superior e isso pode ser um
problema quando a ordem considerada muita elevada. Para fugir deste
Clculo Numrico usando MatLab
154
inconveniente existe uma classe de mtodos que substitui o clculo das derivadas
pelo clculo da funo em pontos adequados (mtodos de Runge-Kutta).


Mtodos de Runge-Kutta

Os mtodos de Runge-Kutta fornecem valores aproximados da soluo da
equao diferencial a partir da expanso da srie de Taylor. A vantagem desses
mtodos que o clculo dos valores das derivadas da funo f ( x , y(x) ) nos pontos
(xk , yk) substitudo pelo clculo da funo em pontos convenientemente
escolhidos, produzindo resultados equivalentes.

Runge-Kutta de 2
a
Ordem - RK2
Este mtodo baseado na expanso em srie de Taylor at o termo de
segunda ordem, ou seja:
) y , (x f
! 2
h
) y , (x f h y y
k k
2
k k k 1 k
+ + =
+

Esta expresso pode ser substituda por:
( ) ) y , f(x h y , h f(x ) y , f(x
2
h
y y
k k k k k k k 1 k
+ + + + =
+

Ou, de modo equivalente:
( )

+ + =
=
+ + =
+
) K h y , h x ( f K
) y , x ( f K
) K K
2
h
y y
1 k k 2
k k 1
2 1 k 1 k









Clculo Numrico usando MatLab
155
Exemplo:
Calcular a soluo aproximada, pelo RK2, da equao
1 y(0) ; xy
dx
dy
= =
No
ponto x = 0.5, tomando h = 0.1.
Soluo
Tem-se que:
( )

+ + =
=
+ + =
+
) K h y , h (x f K
) y , (x f K
) K K
2
h
y y
1 k k 2
k k 1
2 1 k 1 k


( )

+ + =
= =
+ + =
+
) K 0.1 y ( 0.1) (x K
y x ) y , (x f K
) K K 0.05 y y
1 k k 2
k k k k 1
2 1 k 1 k


Com as relaes acima se pode montar a tabela abaixo:
k x
k
y
k
K
1
K
2
y
exato

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







Clculo Numrico usando MatLab
156
Runge-Kutta de 4
a
Ordem - RK4
De forma anloga ao RK2, considera-se a expanso em srie de Taylor at o termo
de 4
a
ordem e o clculo das derivadas substitudo como antes, o que fornece
como resultado a expresso:
( )
( )
( )
( )
( )
3 k k 4
2 k k 3
1 k k 2
k k 1
4 3 2 1 k 1 k
K h y , h x f K
K h 0.5 y , h 0.5 x f K
K h 0.5 y , h 0.5 x f K
y , x f K
K 2K 2K K
6
h
y y
+ + =
+ + =
+ + =
=
+ + + + =
+



Exemplo
Calcular a soluo aproximada, pelo RK4, da equao
1 y(0) ; xy
dx
dy
= =
no
ponto x = 0.4, tomando h = 0.1.
Soluo
Levando em considerao as expresses acima e os valores fornecidos no
enunciado do problema, obtm-se:
( )
) K 1 . 0 y ( ) 1 . 0 x ( K
) K 0.05 y ( 0.05) x ( K
) K 0.05 y ( 0.05) x ( K
y x K
K 2K 2K K
6
0.1
y y
3 k k 4
2 k k 3
1 k k 2
k k 1
4 3 2 1 k 1 k
+ + =
+ + =
+ + =
=
+ + + + =
+

Com estas relaes possvel montar a tabela abaixo:







Clculo Numrico usando MatLab
157
k x
k
y
k
K
1
K
2
K
3
K
4
y
exato

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

EXERCCIO:

Considere a equao diferencial
0.5 y(1) ;
y
1
x
dx
dy
= + =
. Estime y(2)
considerando h = 0.2. Resolva o problema pelo mtodo RK2 e RK4.

Vous aimerez peut-être aussi