Você está na página 1de 140

Matemática Aplicada

···
Apontamentos de aulas
···
José Matos

Mestrado em Tecnologia e Gestão das Construções,


ISEP, Departamento de Matemática, Setembro de 2010
2

Figura de capa: Hiperbolóide de uma folha, Museu do ISEP


Conteúdo

I Métodos Numéricos 5
1 Definições e Conceitos 7
1.1 Erros e Aproximações . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Cálculo Numérico . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Aproximação de Taylor . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Erros na representação de números reais . . . . . . . . . . . . . . 14
1.5 Erros: definições elementares . . . . . . . . . . . . . . . . . . . . 19
1.6 Problema fundamental da Teoria dos Erros . . . . . . . . . . . . . 20
1.6.1 Erro na avaliação de funções . . . . . . . . . . . . . . . . 21
1.6.2 Erro na avaliação de funções de duas ou mais variáveis . . 22
1.6.3 Problema Inverso da Teoria dos Erros . . . . . . . . . . . 23

2 Interpolação Polinomial 25
2.1 Fórmula Interpoladora de Newton . . . . . . . . . . . . . . . . . 26
2.2 Interpolação de Hermite . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Interpolação Parcelar . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4 Interpolação com Splines . . . . . . . . . . . . . . . . . . . . . . 37

3 Derivação e Integração Numérica 43


3.1 Derivação Numérica . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2 Integração Numérica . . . . . . . . . . . . . . . . . . . . . . . . 46

4 Resolução de Equações 51
4.1 Método das Bissecções Sucessivas . . . . . . . . . . . . . . . . . 53
4.2 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.3 Eficiência dos métodos iterativos . . . . . . . . . . . . . . . . . . 57
4.4 Métodos da Secante, Falsa posição e Whittaker . . . . . . . . . . 59

5 Sistemas de Equações Lineares 67


5.1 Métodos directos . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2 Métodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . 68

3
4 CONTEÚDO

5.2.1 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . 69


5.2.2 Método de Gauss-Seidel . . . . . . . . . . . . . . . . . . 73

6 Equações Diferenciais Ordinárias 75


6.1 Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.2 Métodos de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.3 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . 79

II Programação Linear 83
7 Formulação de problemas 85
7.1 Conceitos Fundamentais . . . . . . . . . . . . . . . . . . . . . . 85
7.2 Formulação de problemas . . . . . . . . . . . . . . . . . . . . . . 87

8 Programação Linear 91
8.1 Forma Canónica . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.2 Resolução Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.3 Propriedades do conjunto de soluções admissíveis . . . . . . . . . 96
8.4 Algoritmo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.4.1 Teste de optimalidade . . . . . . . . . . . . . . . . . . . 98
8.4.2 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.4.3 Determinação de uma sba inicial . . . . . . . . . . . . . . 102
8.5 Formulação Matricial do Simplex . . . . . . . . . . . . . . . . . 109

9 Análise de Pós-Optimização 115


9.1 Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.2 Variações nos termos independentes das restrições . . . . . . . . . 116
9.3 Variações nos coeficientes da f.o. . . . . . . . . . . . . . . . . . . 118
9.4 Variações nos coeficientes das restrições . . . . . . . . . . . . . . 120
9.5 Introdução de novas variáveis e de novas restrições . . . . . . . . 121

10 Dualidade 123
10.1 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
10.2 Algoritmo Simplex Dual . . . . . . . . . . . . . . . . . . . . . . 126

11 Programação Inteira 131


11.1 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
11.2 Algoritmo Branch-and-Bound . . . . . . . . . . . . . . . . . . . 132
11.3 Programação Inteira Binária . . . . . . . . . . . . . . . . . . . . 138
Parte I

Métodos Numéricos

5
Capítulo 1

Definições e Conceitos

1.1 Erros e Aproximações


A utilização, cada vez mais universal, de ferramentas de cálculo electrónicas,
originou um processo de desenvolvimento de diversas áreas da Matemática Apli-
cada, e muito particularmente da Análise Numérica. Esta disciplina, nascida nas
primeiras décadas do século XX, ganhou grande visibilidade e autonomia, com os
esforços para resolver as enormes necessidades de cálculo numérico, introduzidas
pelo planeamento militar, que foram determinantes para o desenlace da II Guerra
Mundial. Em particular, entres os pioneiros do desenvolvimento dos computado-
res dos finais da década de 1940, estão os especialistas desta disciplina.
Os desenvolvimentos da Análise Numérica e da electrónica criaram, nas últi-
mas décadas, um processo de crescimento exponencial, em que cada uma das duas
áreas estimula a outra com novos problemas e novas aplicações. Por um lado, o
estudo dos métodos numéricos, nomeadamente das suas condições de utilização e
limitações e o desenvolvimento de novos métodos, permite o desenvolvimento de
novas aplicações nas engenharias, nas ciências e nas áreas sociais, o que incentiva
o desenvolvimento das aplicações informáticas. Por outro, os desenvolvimentos
da electrónica permitem aos métodos numéricos, implementados em suporte in-
formático, irem mais longe e mais depressa nas aplicações.
O cálculo de grande precisão, com resposta em tempo real, está hoje presente
nas mais diversas aplicações, de que podem destacar-se o cálculo de estruturas,
o desenho assistido por computador, a detecção remota, o diagnóstico médico,
o planeamento industrial, as previsões económicas, os estudos de mercado, as
consolas de jogos, etc.
A resolução de problemas de grande dimensão, isto é de problemas que en-
volvem um grande número de dados e de incógnitas, constitui actualmente uma
área de desenvolvimento, quer dos métodos numéricos quer das ferramentas de

7
8 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

cálculo automático, até há poucos anos praticamente insuspeita. Desta área pode
destacar-se, porque de utilização diária, as previsões meteorológicas e a utilização
de motores de busca na internet.
Uma grande vantagem do motor de busca Google, consiste na utilização de
uma ordenação dos apontadores com base numa medida da expectativa (ou da
probabilidade) de que cada uma das páginas respectivas seja do interesse do utili-
zador. Esta medida, designada pelos seus criadores (Larry Page e Sergey Brin, en-
quanto estudantes de doutoramento em Stanford, fundadores da Google em 1998)
por PageRank, é calculada com base na resolução de um sistema de equações
lineares, envolvendo uma matriz n × n que representa as hiperligações entre as
páginas da Web. Naturalmente, esta matriz não é fixa, variando no tempo com
o conteúdo da rede e variando a dimensão n com o crescimento do número de
página na Internet. A título de curiosidade refira-se que em Janeiro de 2005 esta
matriz tinha dimensão n ≈ 8 × 109 e em Agosto de 2009 já tinha crescido para
n ≈ 1011 .

1.2 Cálculo Numérico


Em Cálculo Numérico, um problema diz-se resolvido quando, juntamente com
uma solução calculada, é fornecido um majorante do erro com que esta solução
representa a solução exacta do problema.

resultado={ solução calculada, majorante do erro }

Os erros no resultado podem surgir de três origens:

Erros nos dados se os dados numéricos do problema são entidades físicas medi-
das, necessariamente aproximadas;

Erros nas fórmulas quando se tomam fórmulas aproximadas, por exemplo, quando
se toma um número finito de termos do desenvolvimento em série de uma
função;

Erros na representação de números reais resultantes da representação de nú-


meros reais com um número finito de dígitos

Quanto aos erros nos dados numéricos de um problema, uma vez que as
questões relacionadas com a sua origem, existência, eventual redução e estima-
ção/medição, não são problemas da Análise Numérica, só nos resta estudar a sua
influência no resultados das operações numéricas a efectuar. Este problema, vul-
garmente designado por problema directo da Teoria dos Erros, será tratado na
secção seguinte.
1.3. APROXIMAÇÃO DE TAYLOR 9

Relativamente à utilização de fórmulas aproximadas, pela sua importância, a


seguir trataremos do desenvolvimento de uma função em série de Taylor. Os erros
na representação de números reais e as suas implicações, presentes na generali-
dade das aplicações do cálculo científico, serão tratados a seguir.

1.3 Aproximação de Taylor


O desenvolvimento de uma função em série de Taylor (Brook Taylor, 1685,
Edmonton - 1731, Londres), constitui, como teremos oportunidade de verificar ao
longo dos capítulos seguintes, uma ferramenta muitas vezes utilizada na constru-
ção de fórmulas aproximadas.
Suponhamos que de uma função f (x) se conhecem os valores f (x0 ) e f ′ (x0 )
para algum x0 ∈ D f . Em certos casos, esta informação pode utilizar-se para obter
uma fórmula aproximada para calcular f (x) para valores de x ∈ D f e próximos
de x0 . Uma ideia, frequente em aplicações de Engenharia e em muitos processos,
numéricos e gráficos, implementados nos programas dos nossos computadores,
consiste em aproximar os valores da função f pelos valores de um polinómio,
que localmente imita o comportamento da função. Neste caso, como temos dois
dados, somos levados a procurar determinar dois valores a0 e a1 , coeficientes da
expressão linear T1 (x) = a0 + a1 x, definida por

T1 (x0 ) = f (x0 )
T1′ (x0 ) = f ′ (x0 )
Resolvendo este sistema de duas equações lineares em duas incógnitas, obtemos

a0 = f (x0 ) − f ′ (x0 )x0
a1 = f ′ (x0 )
logo, T1 (x) = f (x0 ) − f ′ (x0 )x0 + x f ′ (x0 ), pelo que podemos esperar que
f (x) ≈ f (x0 ) + (x − x0 ) f ′ (x0 ), para x ≈ x0
Mais geralmente, por verificação directa, podemos constatar que
1 1
Tn (x) = f (x0 ) + (x − x0 ) f ′ (x0 ) + (x − x0 )2 f ′′ (x0 ) + · · · + (x − x0 )n f (n) (x0 )
2 n!
constitui um polinómio de grau n em x, e pode demonstrar-se que é o único polinó-
(n)
mio de grau ≤ n tal que Tn (x0 ) = f (x0 ), Tn′ (x0 ) = f ′ (x0 ), . . ., Tn (x0 ) = f (n) (x0 ).
Definição 1 Se, para x0 ∈ D f , existem e são finitos os valores f ′ (x0 ), . . . , f (n) (x0 ),
designa-se por Polinómio de Taylor de grau n com centro em x0 de f , o polinómio
n
1
Tn (x) = ∑ k! (x − x0 )k f (k)(x0 )
k=0
10 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

Sendo n um inteiro tão grande quanto se queira, supondo que f (x) admite em
x0 derivadas de qualquer ordem, obtemos no limite o desenvolvimento em Série
de Taylor, da função f (x) com centro em x0 ,

1
f (x) ∼ ∑ k! (x − x0 )k f (k) (x0 ).
k=0

Suponhamos que para algum x0 ∈ D f , para cada valor x pertencente a uma


vizinhança de x0 contida em D f , se tem

lim Tn (x) = f (x)


n→∞

Neste caso, diz-se que o desenvolvimento em série de Taylor de f com centro em


x0 é convergente para f e Tn (x) pode utilizar-se para aproximar f (x),

f (x) ≈ Tn (x)

Supondo que f constitui uma função transcendente, isto é, o valor exacto de


f (x), para um valor de x ∈ D f genérico, não se pode obter efectuando um nú-
mero finito de operações aritméticas elementares. Se, para além disso, os valores
f (k) (x0 ), k = 0 : n são conhecidos, ou calculados de forma elementar, para algum
x0 ∈ D f , então o polinómio de Taylor produz uma fórmula aproximada para cal-
cular f (x). São exemplos desta situação as funções trigonométricas, logarítmicas
e exponenciais.

Exercício 1 Verificar que, tomando x0 = 0 obtemos


3 5
1. sen(x) ≈ x − x3! + x5!
2 4
2. cos(x) ≈ 1 − x2! + x4!
2 3
3. ex ≈ 1 + x + x2 + x3!

Nota: No caso particular em que x0 = 0, a série e o polinómio de Taylor to-


mam a designação, respectivamente de série e de polinómio de Maclaurin, do ma-
temático escocês Colin Maclaurin (1698 - 1746) que desenvolveu trabalho neste
caso particular.

Exercício 2 Para f (x) = ex , construir um polinómio P(x) tal que


 
P(0) = f (0), P(1) = f (1),
′ ′ e
P (0) = f (0), P′ (1) = f ′ (1),
1.3. APROXIMAÇÃO DE TAYLOR 11

Em M ATLAB, a função taylor permite obter polinómios de Taylor de fun-


ções. A figura 1.3 foi construída com os comandos seguintes

>> f =sin(x)
>> t5=taylor(f)
>> l=linspace(-4,4)
>> fl=subs(f,l)
>> tl=subs(t5,l)
>> plot(l,fl,’r’,l,tl,’--’)
>> grid on
>> legend(’f’, ’t5’)
>> title(’f=sen(x), t5=x-1/6*x^3+1/120*x^5’)

3 5
f=sen(x), t5=x−1/6*x +1/120*x
2
f
t5

1.5

0.5

−0.5

−1

−1.5

−2
−4 −3 −2 −1 0 1 2 3 4

Figura 1.1: Aproximação de Taylor

Tal como foi referido, obtida uma aproximação para f (x), importa estudar o
erro com que Tn (x) aproxima o valor exacto f (x). O teorema seguinte fornece um
resultado que, em alguns casos, permite calcular majorantes deste erro.
12 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

Teorema 1 (Resto de Taylor) Seja f (x) uma função contínua e com pelo menos
n + 1 derivadas contínuas em I = [a, b], então para cada x0 ∈ I,

1
f (x) = Tn (x) + (x − x0 )n+1 f (n+1) (c), x ∈ I
(n + 1)!

para algum c ∈ [x0 , x]

Definição 2 O valor do erro

1
f (x) − Tn (x) = (x − x0 )n+1 f (n+1) (c) ≡ ET (x)
(n + 1)!

com que a soma dos n+1 primeiros termos representa a soma da série, designa-se
por erro de truncatura

Uma vez que o teorema anterior não fornece qualquer forma de calcular o
valor c ∈ [x0 , x], o erro de truncatura também não pode ser calculado, pelo menos
de forma exacta. Nas aplicações práticas, dependendo da segurança pretendida no
cálculo do erro, geralmente associada à responsabilidade do exercício, podemos
proceder de diversas formas:

• Se uma aproximação do erro, sem grande responsabilidade, é suficiente,


considerando que c ≈ x0 , podemos tomar como aproximação do erro de
truncatura
1
ET (x) ≈ (x − x0 )n+1 f (n+1) (x0 )
(n + 1)!

• Se o exercício é de grande responsabilidade, envolvendo a segurança de


pessoas e bens, exigindo o cálculo do erro de truncatura com grande segu-
rança, deveremos obter um majorante de | f (n+1) (c)|, por exemplo se tiver-
mos acesso ao cálculo de

Mn+1 = max | f (n+1) (c)|,


c∈[x0 , x]

obtemos
Mn+1
| f (x) − Tn (x)| = |ET (x)| ≤ |x − x0 |n+1
(n + 1)!

• Em M ATLAB, com a Symbolic Toolbox (que recorre ao M APLE para exe-


cutar instruções de matemática simbólica, incluindo muitas das regras ele-
mentares, algébricas ou analíticas, de derivação, integração, resolução de
equações, simplificação de expressões, etc.) o cálculo da aproximação para
1.3. APROXIMAÇÃO DE TAYLOR 13

ET (x) é elementar, recorrendo às funções diff e subs. No entanto, o cál-


culo do majorante do erro, envolvendo o valor Mn+1 , máximo de uma fun-
ção num intervalo, não é tarefa elementar para um programa de computador,
pelo que, na generalidade das aplicações, terá de ser efectuado de forma
aproximada, recorrendo a uma discretização do intervalo [x0 , x]. Ambos os
processos estão ilustrados no exemplo seguinte.

Exemplo 1 Sendo f (x) = 1 + ex e x0 = 0, construir o polinómio de Taylor T6 (x)
de grau 6 de f (x) centrado em x0 e
1. Estimar uma aproximação para o erro de truncatura com que T6 (−1) apro-
xima f (−1)
2. Estimar um majorante do erro de truncatura com que T6 (−1) aproxima
f (−1)
Resolução:
As instruções seguintes definem a função f e constroem o polinómio de Taylor
>> syms x
>> f=sqrt(1+exp(x))
>> t6=taylor(f,7) % x0=0 é assumido por defeito
>> xx=-1
>> t6xx=subs(t6,xx)
t6xx =
1.16958183462971
1. Em seguida define-se f (7) e avalia-se a aproximação do erro 7!
1
(x−x0 )7 f (7) (x0 )

>> d7f=diff(f,7)
>> x0=0
>> d7f0=subs(d7f,x0)
>> ErroAprox=(xx-x0)^7*d7f0/factorial(7)
ErroAprox =
1.6561e-005

Este resultado indica que T6 (−1) aproxima f (−1) com um erro de cerca de
2 × 10−5 , isto é neste caso, atendendo aos valores calculados, o resultado
da aproximação da função deve aproximar-se a 5 casas decimais, f (−1) ≈
1.16958
2. A função linspace permite discretizar o intervalo [x, x0] em abcissas igual-
mente espaçadas. Nas instruções seguintes, o valor M7 é aproximado com
base no máximo dos valores da função | f (7) (x)| em 102 , 103 e 104 abcissas
do intervalo
14 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

>> l=linspace(xx,x0)
>> M7=max(abs(subs(d7f,l)))
M7 =
0.09703173011019
>> l=linspace(xx,x0,10^3)
>> M7=max(abs(subs(d7f,l)))
M7 =
0.09703626151753
>> l=linspace(xx,x0,10^4)
>> M7=max(abs(subs(d7f,l)))
M7 =
0.09703627210133

pelo que podemos supor que o valor M7 . 0.097 e este valor pode utilizar-
se para calcular o majorante do erro

>> ErroMax=abs(xx-x0)^7*M7/factorial(7)
ErroMax =
1.9253e-005

Este resultado mostra que T6 (−1) aproxima f (−1) com um erro menor do
que 2 × 10−5 , isto é, podemos escrever

f (−1) = 1.16958 ± 2 × 10−5

significando que
f (−1) ∈ [1.16956, 1.16960]

1.4 Erros na representação de números reais


Cada vez mais presentes nas aplicações, resultam estes erros da representação
de números reais com um número finito de dígitos.

Representação de números reais

Um número em base decimal

438, 53 = 4 × 102 + 3 × 101 + 8 × 100 + 5 × 10−1 + 3 × 10−2


1.4. ERROS NA REPRESENTAÇÃO DE NÚMEROS REAIS 15

Generalizando

x = (dn . . . d1 d0 , d−1 d−2 . . . d−k )10


= dn × 10n + · · · + d1 × 10 + d0 + d−1 × 10−1 + d−2 × 10−2 + · · · + d−k × 10−k
n
= ∑ di × 10i
i=−k

Analogamente, para uma base b ∈ N, b ≥ 2


x = (dn . . . d1 d0 , d−1 d−2 . . . d−k )b = ∑ni=−k di × bi
di ∈ {0, 1, . . ., b − 1}, dígitos

Exemplos
base representação dígitos
b=2 binária di ∈ {0, 1}
b = 10 decimal di ∈ {0, 1, . . ., 9}
b = 16 hexadecimal di ∈ {0, 1, . . ., 9, A, B,C, D, E, F}

Definição 3 Um número real x na forma

x = ±m × bt

onde m ∈ R+ 0 é a mantissa e t ∈ Z o expoente, diz-se representado em notação


científica.

Esta notação não tem implementação exacta em suporte electrónico, onde o


número de dígitos, quer da mantissa quer do expoente, é necessariamente finito.

Definição 4 Chama-se representação em ponto flutuante FP(b, p, q), ao sis-


tema de representação de base b, cuja mantissa ocupa p dígitos e o expoente
ocupa q dígitos.

A representação diz-se normalizada se a mantissa está na forma

m = d−1 × b−1 + d−2 × b−2 + · · · + d−p × b−p e d−1 6= 0 ou m = 0

isto é
b−1 ≤ m ≤ (b − 1)(b−1 + b−2 + · · · + b−p )
Os dígitos da representação de um número em notação científica designam-se
por algarismos significativos, segundo a seguinte definição

Definição 5 Dizem-se significativos todos os algarismos da representação de um


número, a partir do primeiro não nulo, contando da esquerda para a direita.
16 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

Limites da representação Sendo limitado e finito o conjunto de números re-


presentáveis num sistema de ponto flutuante, importa estudar tais limitações.
Uma primeira limitação da representação em ponto flutuante reside no facto
de o conjunto de números representáveis ser discreto e não constituir um intervalo
contínuo. Este facto, introduz uma nova quantidade, que medindo a distância
relativa entre números consecutivos de uma representação em ponto flutuante,
permite caracterizar a precisão relativa de cálculo da máquina.

Definição 6 Ao menor valor ε > 0 tal que 1 + ε > 1 chama-se epsilon da má-
quina.

Da definição resulta que, no sistema FP(b, p, q), a menor quantidade positiva


que pode somar-se ao número x = 1 e obter um número x + ε > x é ε = b−p
Quanto aos limites à representação das mantissas, recorrendo à fórmula
n
1 − rn+1
∑ rk = 1−r
, r 6= 1
k=0

verifica-se que
1 − b−p
m ≤ (b − 1)b−1(1 + b−1 + · · · + b−p+1 ) = (1 − b−1 ) = 1 − b−p
1 − b−1
Para os expoentes

t = ±d0 + d1 × b + d2 × b2 + · · · + dq−1 × bq−1

obtemos

|t| ≤ (b − 1) + (b − 1) × b + (b − 1) × b2 + · · · + (b − 1) × bq−1 = bq − 1

Concluímos que em FP(b, p, q), podem representar-se números reais x da forma


 −1
t b ≤ m ≤ 1 − b−p
x = ±m × b :
|t| ≤ bq − 1

Exemplo Em FP(10, 6, 2), representam-se números da forma

x = ±(0, d−1 d−2 d−3 d−4 d−5 d−6 )10±(t1t0 )

com
1 ≤ d−1 ≤ 9, 0 ≤ d−2 , . . ., d−6 ≤ 9, 0 ≤ t1 ,t0 ≤ 9
isto é
10−1 ≤ m ≤ 1 − 10−6 = 0, 999999 e |t| ≤ 102 − 1 = 99
1.4. ERROS NA REPRESENTAÇÃO DE NÚMEROS REAIS 17

Exemplo A norma IEEE 754 - 1985, adoptada pelos principais fabricantes de


computadores, admite dois formatos de representação de números reais: precisão
simples e precisão dupla. Ambos em base binária, o primeiro FP(2, 24, 8) reserva
8 bits para o expoente e 24 bits para a mantissa, o segundo FP(2, 52, 11) reserva
11 bits para o expoente e 52 bits para a mantissa.
Das definições anteriores resulta que o cálculo numérico em dupla precisão
tem uma precisão relativa

ε = 2−52 ≈ 2.2204 × 10−16

Este resultado pode traduzir-se, para base decimal, dizendo que o cálculo em dupla
precisão tem uma precisão relativa de 16 casas decimais ou uma precisão de 16
algarismos significativos.
Algumas versões do programa M ATLAB admitem aritmética de precisão sim-
ples, ou até outros tipos de aritmética, mas por defeito, a aritmética utilizada cor-
responde à dupla precisão da norma IEEE 754. O M ATLAB tem uma palavra
reservada para guardar a constante ε

>> eps
ans =
2.2204e-016

Este resultado, não deve confundir-se com o facto de o M ATLAB possuir diver-
sos formatos de representação dos resultados. Isto é, a representação dos números
e a precisão da aritmética é sempre em dupla precisão, apesar de a apresentação
do resultado poder assumir diversos formatos. Os comandos seguintes permitem
visualizar o mesmo resultado em formatos distintos.

>> h=.1;x(1)=0;for i=1:9, x(i+1)=x(i)+h; end; x


x =
Columns 1 through 6
0 0.1000 0.2000 0.3000 0.4000 0.5000
Columns 7 through 10
0.6000 0.7000 0.8000 0.9000
>> format long;
>> h=.1;x(1)=0;for i=1:9, x(i+1)=x(i)+h; end; x
x =
Columns 1 through 3
0 0.10000000000000 0.20000000000000
Columns 4 through 6
0.30000000000000 0.40000000000000 0.50000000000000
Columns 7 through 9
18 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

0.60000000000000 0.70000000000000 0.80000000000000


Column 10
0.90000000000000
>> format long e;
>> h=.1;x(1)=0;for i=1:9, x(i+1)=x(i)+h; end; x
x =
Columns 1 through 2
0 1.000000000000000e-001
Columns 3 through 4
2.000000000000000e-001 3.000000000000000e-001
Columns 5 through 6
4.000000000000000e-001 5.000000000000000e-001
Columns 7 through 8
6.000000000000000e-001 7.000000000000000e-001
Columns 9 through 10
7.999999999999999e-001 8.999999999999999e-001
O resultado anterior, permite ilustrar a acumulação de erros, mesmo em ope-
rações aritméticas tão simples quanto a soma, 9 vezes consecutivas, da constante
h = 0.1. Neste caso, estes erros são apenas visíveis nos resultados apresentados
com o formato long e, e resultam do facto de 0.1 constituir um dízima infinita
na base binária. O facto de a representação apenas admitir mantissas com um má-
ximo de 52 dígitos binários, introduz um erro de arredondamento na representação
de h.

Truncatura e Arredondamento
A tentativa de representar números reais com expoente superior a bq − 1 pro-
duz o resultado de "overflow"e expoentes inferiores a 1 − bq produz "underflow".
Números reais cuja mantissa tem mais do que p dígitos não são representáveis
de forma exacta e terão de representar-se de forma aproximada. Existem duas
formas de obter a representação aproximada de um número real
Truncatura desprezam-se os dígitos que não cabem na mantissa
Arredondamento o número real x é representado pelo número do sistema FP(b,
p, q) que lhe está mais próximo

Exemplos Representar no sistema FP(10, 4, 2) os seguintes números


Truncatura Arredondamento
, 26732 , 2673 , 2673
, 26738 , 2673 , 2674
, 26735 , 2673
1.5. ERROS: DEFINIÇÕES ELEMENTARES 19

Caso ambíguo do arredondamento Em base decimal, quando a parte não re-


presentável de um número é exactamente meia unidade da última casa decimal
representável, i.e. 0, 5 × 10−p, o número deve arredondar-se de forma que a man-
tissa fique par.

Exemplos
Arredondamento
, 26735 , 2674
, 26765 , 2676
, 26765007 , 2677
Verificada a existência de erros nos resultados obtidos por métodos numéricos,
uma vez que não os podemos evitar, importa estudar formas de os medir, estimar,
interpretar, comparar e eventualmente controlar e minimizar. Este objectivo está
presente ao longo de todos os capítulos deste texto.

1.5 Erros: definições elementares


Seja
x = ±m × bt
um número real e
x0 = ±m0 × bt
a sua representação aproximada no sistema FP(b, p, q). À diferença
e = x − x0 = ±(m − m0 ) × bt
chama-se erro com que x0 representa x. Ao valor absoluto do erro
∆ = |e| = |x − x0 | = |m − m0 | × bt
chama-se erro absoluto com que x0 representa x. Ao quociente do erro absoluto
pelo módulo do valor exacto
∆ |m − m0 |
δ= =
|x| |m|
chama-se erro relativo com que x0 representa x.
Como não temos, em geral, acesso ao valor exacto x, também não temos
acesso ao erro. Na generalidade das aplicações práticas, teremos de nos contentar
com um majorante do erro absoluto. Suponhamos que de um valor exacto x, co-
nhecemos uma sua representação aproximada x0 ≈ x e um majorante do respectivo
erro absoluto,
|x − x0 | ≤ ∆
20 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

Resolvendo em ordem a x,

x0 − ∆ ≤ x ≤ x0 + ∆

ou
x ∈ [x0 − ∆, x0 + ∆]
Concluímos que conhecer um valor aproximado de x e um majorante do erro ab-
soluto equivale a conhecer um intervalo que contém o valor exacto. É vulgar
representar-se este resultado na forma

x = x0 ± ∆

Definição 7 O mínimo do conjunto dos majorantes ∆ de ∆ chama-se erro abso-


luto máximo com que x0 representa x.

Nota Em face das regras de arredondamento estabelecidas, em base decimal,


um número representado com m casas decimais deve supor-se afectado de um
erro absoluto máximo de ∆ = 0, 5 × 10−m .
Nas aplicações práticas, nem sempre é possível ou conveniente calcular um
majorante do erro com que o resultado calculado representa o resultado exacto.
Nesses casos, deveremos procurar obter uma estimativa do erro, ou pelo menos da
sua ordem de grandeza.

Definição 8 Dois números reais não nulos x e y dizem-se da mesma ordem de


grandeza se o quociente do menor pelo maior em valor absoluto é superior a 0, 1,
isto é, supondo |x| ≤ |y|, se
|x|
0, 1 < ≤1
|y|
isto é, se nenhum deles é maior do que dez vezes o outro. Se, pelo contrário, |y| é
pelo menos dez vezes maior do que |x|, escreve-se

|x| ≪ |y|

e diz-se que x é menosprezável com respeito a y.

Basicamente, em notação científica decimal normalizada, a ordem de grandeza


de um número é representada pelo seu expoente.

1.6 Problema fundamental da Teoria dos Erros


Estando os dados de um problema afectados de erro, determinar um majorante
do erro com que a solução calculada representa a solução exacta do problema.
1.6. PROBLEMA FUNDAMENTAL DA TEORIA DOS ERROS 21

1.6.1 Erro na avaliação de funções


Sendo y = f (x) e x0 um valor aproximado de x com erro absoluto
∆x = |x − x0 | ≤ ∆x
então y0 = f (x0 ) representa y com erro absoluto ∆y = |y − y0 |. Da fórmula de
Taylor, se f (x) é contínua e tem derivada contínua em I = [x, x0 ] então existe c ∈ I
tal que
f (x) = f (x0 ) + (x − x0 ) f ′ (c)
logo,
y − y0 = (x − x0 ) f ′ (c),
|y − y0 | = |x − x0 | × | f ′ (c)|
≤ | f ′ (c)|∆x
Na prática, porque x ≈ x0 e c ∈ [x, x0 ], toma-se c ≈ x0 , logo
|y − y0 | . | f ′ (x0 )|∆x = ∆y

Exemplo 2 Sendo f (x) = 12 (ex + e−x ) e x ≈ 1.44, calcular f (x)


Resolução:
>> syms x
>> f=(1/2)*(exp(x)+exp(-x));
>> x0=1.44;
>> Deltax=.5*10^-2;
>> df=diff(f);
>> dfx0=subs(df,x0);
>> Deltaf=abs(dfx0)*Deltax
Deltaf =
0.0100
>> f0=subs(f,x0)
f0 =
2.2288
O resultado pode escrever-se na forma f (x) = 2.23 ± 0.01

Quanto ao erro relativo com que y0 = f (x0 ) representa y = f (x), supondo


y, y0 6= 0, então
y − y0 f ′ (x0 ) x0 f ′ (x0 ) ∆x
| | . | |∆x = | |×
y f (x0 ) f (x0 ) |x0 |
δy ≤ cond f (x0 ) δx
22 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

Definição 9 Ao número
x0 f ′ (x0 )
cond f (x0 ) = | |
f (x0 )
chama-se número de condição de f (x0 ). Se cond f (x0 ) é um número grande, a
função diz-se mal condicionada em x0 , se pelo contrário cond f (x0 ) é um número
pequeno, a função diz-se bem condicionada em x0 .
No exemplo anterior
>> condfx0=abs(x0*dfx0/f0)
condfx0 =
1.2869
>> deltax=Deltax/abs(x0)
deltax =
0.0035
>> deltay=condfx0*deltax
deltay =
0.0045
Desta definição resulta que se uma função é bem condicionada num ponto
então a pequenas perturbações no ponto correspondem pequenas perturbações no
valor da função. Se, pelo contrário, uma função é mal condicionada num ponto
então a pequenas perturbações no ponto correspondem grandes perturbações no
valor da função.
Esta noção de condicionamento, que mais tarde iremos generalizar a outros
problemas numéricos, constitui uma característica intrínseca do problema, neste
caso o da avaliação de uma dada função num ponto específico. Uma noção dis-
tinta, e que devido à analogia das definições, por vezes é confundida com esta, é a
da propagação dos erros introduzida pelo método numérico utilizado para resolver
o problema. A esta propagação dos erros, associamos a noção de estabilidade do
método, segundo a definição seguinte.
Definição 10 Um método numérico diz-se estável se a pequenos erros nos dados
correspondem pequenos erros no resultado calculado. Se, pelo contrário, a pe-
quenos erros nos dados correspondem grandes erros no resultado, diz-se que o
método é instável.

1.6.2 Erro na avaliação de funções de duas ou mais variáveis


(0)
Sendo xi , i = 0 : n, valores aproximados de xi , i = 0 : n, com erros
(0)
∆xi = |xi − xi | ≤ ∆xi , i = 0 : n,
1.6. PROBLEMA FUNDAMENTAL DA TEORIA DOS ERROS 23

ao tomarmos
(0) (0)
y0 = f (x1 , . . ., xn )
para valor aproximado de
y = f (x1 , . . . , xn )
cometemos o erro ∆y = |y−y0 |. Se os valores ∆xi forem suficientemente pequenos
e se a função f for suficientemente regular, nomeadamente se existirem e forem
(0) (0) ∂f
contínuas em x0 = (x1 , . . . , xn ) as derivadas parciais ∂xi
então, da fórmula de
x0
Taylor para funções de n variáveis
(0) (0) (0) ∂f (0) ∂f
f (x1 , . . . , xn ) ≈ f (x1 , . . ., xn ) + (x1 − x1 ) + · · · + (xn − xn )
∂x1 x0 ∂xn x0
ou
n
∂f
y − y0 ≈ ∑ (xi − xi )
(0)

i=1 ∂xi x0
logo
n
∂f
|y − y0 | ≤ ∑ |xi − xi | × |
(0)
|
i=1 ∂xi x0
ou
n
∂f
∆y = ∑ ∆xi
i=1 ∂xi x0

que constitui a fórmula fundamental da Teoria dos Erros

1.6.3 Problema Inverso da Teoria dos Erros


O problema inverso da teoria dos erros consiste em determinar a precisão com
(0)
que se devem utilizar os valores aproximados xi , i = 0 : n de xi , i = 0 : n, para
(0) (0)
que y0 = f (x1 , . . ., xn ) represente y = f (x1 , . . ., xn ) com um erro que em valor
absoluto não excede um valor ε previamente fixado.
Da fórmula fundamental da Teoria dos Erros, sabemos que
n
∂f
|y − y0 | ≤ ∑ ∆xi
i=1 ∂xi x0

deste modo, o problema consiste em determinar majorantes ∆xi , i = 0 : n dos erros


(0)
com que cada um dos valores xi , i = 0 : n aproxima xi , i = 0 : n de modo que
∂f ∂f
∆x1 + · · · + ∆xn ≤ ε
∂x1 x0 ∂xn x0
24 CAPÍTULO 1. DEFINIÇÕES E CONCEITOS

Isto é, temos que resolver uma inequação com n incógnitas, o que constitui um
problema indeterminado. Diversas estratégias podem adoptar-se afim de se obter
um problema com solução única, sendo a mais geralmente aplicada em problemas
práticos a que consiste em impor que cada uma das n variáveis tenha a mesma
contribuição para o erro total, i.e., o designado

Principio das Influências Iguais

∂f ∂f
∆x1 = · · · = ∆xn
∂x1 x0 ∂xn x0

∂f
Logo, supondo que ∂xi x 6= 0, i = 1 : n, obtemos para o sistema de n inequações,
0
a solução
ε
∆xi ≤ , i=1:n
∂f
n ∂xi x
0
Capítulo 2

Interpolação Polinomial

Seja f uma função real definida em D f ⊆ R, da qual se conhecem os valores


nas abcissas x0 , . . . , xn ∈ D f . Seja x ∈ I = [a, b] e I ⊆ D f o intervalo mínimo
que contem as abcissas xi , i = 0 : n, chama-se Interpolação ao processo de ava-
liar f (x) substituindo a função f por uma função F que satisfaz as condições de
interpolação

F(xi ) = f (xi ), i = 0 : n

As abcissas xi , i = 0 : n designam-se por nós de interpolação e F é a função


interpoladora. Diz-se Interpolação Polinomial quando a função interpoladora é
um polinómio.

Teorema 2 Dados n + 1 pontos {(xi , yi )}ni=0, de abcissas distintas, então existe


um e um só polinómio Pn (x), de grau ≤ n, tal que

Pn (xi ) = yi , i = 0 : n

Este teorema traduz-se no facto de que o polinómio interpolador de uma tabela


de n + 1 pontos de abcissas distintas, existe, é único e tem grau máximo n. Para
o caso particular n = 1 este resultado reduz-se ao facto de que por dois pontos do
plano passa uma e uma só recta.
A demonstração da existência do polinómio interpolador, pode fazer-se de
forma construtiva, i.e. exibindo a forma de o construir. Quanto à unicidade, racio-
cinando por absurdo, podemos supor que existem dois polinómios Pn (x) e Qn (x),
de grau ≤ n, tais que Pn (xi ) = Qn (xi ) = yi , i = 0 : n, logo Pn (x) − Qn (x) é um
polinómio de grau ≤ n com pelo menos n + 1 zeros, o que é absurdo.

25
26 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

Polinomio Interpolador
3.5

2.5

1.5

0.5

−0.5

−1

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2


x

Figura 2.1: Pn (xi ) = yi , i = 0 : n

2.1 Fórmula Interpoladora de Newton


O cálculo do polinómio interpolador de uma dada tabela de valores, pode
fazer-se por diversas formas, de entre as quais, as mais utilizadas são, a fórmula
de Lagrange (Joseph-Louis Lagrange, 1736, Turin - 1813, Paris) e a fórmula de
Newton (Isaac Newton, 1643, Woolsthorpe - 1727, Londres). Por ter vantagens,
sob o ponto de vista do número de operações aritméticas envolvidas, da estabili-
dade do método e da facilidade de implementação numérica, apenas se apresenta
a fórmula interpoladora de Newton.
O polinómio Pn (x), de grau ≤ n, que contém os n + 1 pontos {(xi , fi )}ni=0 , de
abcissas distintas, pode escrever-se na forma

Pn (x) = a0 +a1 (x−x0 ) +a2 (x−x0 )(x−x1 ) +· · ·+an (x−x0 )(x−x1 ) · · ·(x−xn−1 )

onde a0 , a1 , . . ., an são constantes a determinar impondo as condições de interpo-


lação
Pn (xi ) = fi , i = 0 : n
2.1. FÓRMULA INTERPOLADORA DE NEWTON 27

i.e.


 f0 = a0



 f1 = a0 + a1 (x1 − x0 )
f2 = a0 + a1 (x2 − x0 ) + a2 (x2 − x0 )(x2 − x1 )

 ..

 .

 f
n = a0 + a1 (xn − x0 ) + a2 (xn − x0 )(xn − x1 ) + · · · + an (xn − x0 )(xn − x1 ) · · · (xn − xn−1 )

Sistema triangular inferior, regular uma vez que sendo distintas as abcissas
então são não nulos os factores xi − x j , i 6= j.
Resolvido o sistema por substituição para a frente, obtemos

a0 = f 0
− f0
a1 = xf11 −x 0

Definindo Diferenças Divididas de ordem 1 como


fi+1 − fi
f [xi , xi+1 ] = xi+1 −xi , i = 0 : n−1

então
a1 = f [x0 , x1 ]
e
f2 − a0 − a1 (x2 − x0 )
a2 =
(x2 − x0 )(x2 − x1 )
f2 − f1 + f1 − f0 f1 − f0
= −
(x2 − x0 )(x2 − x1 ) (x1 − x0 )(x2 − x1 )
1 f2 − f1 f1 − f0
= ( − )
x2 − x0 x2 − x1 x1 − x0
f [x1 , x2 ] − f [x0 , x1 ]
=
x2 − x0
Definindo Diferenças Divididas de ordem 2 como

f [xi+1 , xi+2 ] − f [xi , xi+1 ]


f [xi , xi+1 , xi+2 ] = , i = 0 : n−2
xi+2 − xi

então
a2 = f [x0 , x1 , x2 ]
Mais geralmente, definindo por recorrência Diferenças Divididas de ordem
k como
28 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

f [xi+1 , . . . , xi+k ] − f [xi , . . . , xi+k−1 ]


f [xi , . . . , xi+k ] = , i = 0 : n − k, k = 1 : n
xi+k − xi
pode mostrar-se por indução sobre k que
ai = f [x0 , . . ., xi ], i = 1 : n
logo, obtemos para o polinómio interpolador, a fórmula de Newton em diferenças
divididas

Pn (x) = f0 + (x − x0 ) f [x0 , x1 ] + (x − x0 )(x − x1 ) f [x0 , x1 , x2 ] + · · ·


+ (x − x0 )(x − x1 ) · · ·(x − xn−1 ) f [x0 , . . . , xn ]
ou

Pn (x) = f0 + (x − x0 )×
{ f [x0 , x1 ] + (x − x1 ) {· · · { f [x0 , . . ., xn−1 ] + (x − xn−1 ) f [x0 , . . . , xn ]} · · · }}
fórmula que permite calcular valores do polinómio minimizando o número de
operações aritméticas, ou
n
Pn (x) = f0 + ∑ f [x0 , . . ., xk ]Πk
k=1
com
k−1
Πk = ∏ (x − xi )
i=0

Desta fórmula resulta imediatamente que


Pn (x) = Pn−1 (x) + f [x0 , . . . , xn ]Πn, n ≥ 1
As diferenças divididas costumam representar-se numa tabela, evidenciando a
forma recursiva como são calculadas
xi fi f [, ] f [, , ] ··· f [, . . ., ]
x0 f0
f [x0 , x1 ]
x1 f1 f [x0 , x1 , x2 ]
f [x1 , x2 ]
..
x2 f2 .
.. ..
. . ··· f [x0 , . . ., xn ]
xn−1 fn−1
f [xn−1 , xn ]
xn fn
2.1. FÓRMULA INTERPOLADORA DE NEWTON 29

Algoritmo de cálculo do polinómio interpolador de Lagrange


Dados dois vectores linha x e y, com o mesmo número de elementos, o se-
guinte algoritmo, calcula o polinómio interpolador de Lagrange, utilizando a fór-
mula de Newton em diferenças divididas. Tendo em conta que em Matlab os
elementos de matrizes e vectores são representados pelos seus índices a partir de
1, i.e. x = [x(1), x(2), . . ., x(length(x))], para interpolar a tabela {(xi yi )}ni=0 , as ab-
cissas introduzidas no vector x, devem interpretar-se como x(i) = xi−1 i = 1 : n + 1
e n = length(x) − 1.
A primeira parte do algoritmo consiste no cálculo das diferenças divididas.
Para o efeito é construída uma matriz f e guardada na sua primeira coluna as
ordenadas da tabela, i.e. f (:, 1) = y′ . Nas colunas 2, . . . , n + 1 desta matriz f ,
guardam-se as diferenças divididas de ordem 1, . . ., n, segundo o esquema seguinte
xi fi f [, ] f [, , ] ··· f [, . . ., ]
x(1) f (1, 1)
f (1, 2)
x(2) f (2, 1) f (0, 3)
f (2, 2)
..
x(3) f (3, 1) .
.. ..
. . ··· f (1, n + 1)
x(n) f (n, 1)
f (n, 2)
x(n + 1) f (n + 1, 1)
onde
f (i, k) = f [xi−1 , , xi+k−2 ], i = 1 : n + 2 − k, k = 2 : n + 1
representa a diferença dividida de ordem k − 1, k = 2 : n + 1 com os pontos de
abcissas x(i), . . . , x(i + k − 1), i = 1 : n + 2 − k, o que conduz à seguinte relação de
recorrência
f [xi , , xi+k−2 ] − f [xi−1 , , xi+k−3 ] f (i + 1, k − 1) − f (i, k − 1)
f (i, k) = = , i = 1 : n+2−k, k = 2 : n+1
xi+k−2 − xi−1 x(i + k − 1) − x(i)
A segunda parte do algoritmo consiste no cálculo do polinómio interpolador,
utilizando as fórmulas de recorrência
k−1
Πk = ∏ (x − xi ) = (x − xk−1 )Πk−1
i=0

com Π0 = 1, e
Pk = Pk−1 + f [x0 , . . ., xk ]Πk = Pk−1 + f (1, k + 1)Πk , k ≥ 1
com P0 = f0 = f (1, 1)
30 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

Algoritmo: Interpolação de Lagrange


Ler xx,y % Vectores linha com o mesmo número de elementos
n=comprimento(xx)-1
f(:,1)=y’ % Valores das ordenadas da tabela
Para k=2:n+1 % Diferenças Divididas de ordem k-1
Para i=1:n+2-k
f(i,k)=(f(i+1,k-1)-f(i,k-1))/(xx(i+k-1)-xx(i))
Fim
Fim
P=y(1) % Cálculo do polinómio interpolador
pik=1
Para k=1:n
pik=pik*(x-xx(k))
P=P+f(1,k+1)*pik
Fim
Retorna P

Erro na Interpolação
Teorema 3 (Lagrange) Seja Pn (x) o polinómio interpolador de {(xi fi )}ni=0 e I =
[a, b] o intervalo mínimo que contém as abcissas xi , i = 0 : n. Se fi = f (xi ), i =
0 : n, com f (x) contínua e com pelo menos n + 1 derivadas contínuas em I, então
para x ∈ I
f (n+1) (c)
en (x) = f (x) − Pn (x) = Πn+1 (x), c ∈ I
(n + 1)!
Deste teorema resulta que, com a definição

Mk = max | f (k) (x)|, k ∈ N


x∈I

obtemos um majorante para o erro com que o polinómio interpolador aproxima a


função,
Mn+1
| f (x) − Pn (x)| ≤ |Πn+1 (x)|
(n + 1)!

2.2 Interpolação de Hermite


O objectivo da interpolação de Hermite (1822, Dieuze - 1901, Paris) é repre-
sentar uma função por um polinómio interpolador de valores da função e das suas
derivadas até certa ordem nalguns pontos do seu domínio.
2.2. INTERPOLAÇÃO DE HERMITE 31

Considerando em
f (xi+1 ) − f (xi )
f [xi , xi+1 ] =
xi+1 − xi
que xi+1 → xi , isto é, que as abcissas são confluentes, obtemos
f (xi+1 ) − f (xi )
lim f [xi , xi+1 ] = lim
xi+1 →xi xi+1 →xi xi+1 − xi
o que justifica a seguinte definição
Definição 11 Define-se diferença dividida confluente de primeira ordem, por

f [xi , xi ] = f ′ (xi )

Diferenças divididas com dois ou mais nós coincidentes, dizem-se confluen-


tes. No caso das diferenças divididas de ordem n com todas as n + 1 abcissas
coincidentes, a definição seguinte generaliza a anterior
Definição 12 Define-se diferença dividida confluente de ordem n, por
1
f [xi , . . . , xi ] = f (n) (xi )
| {z } n!
n+1

Outras diferenças divididas confluentes, definem-se à custa desta definição,


por exemplo
f [xi , xi+1 ] − f ′ (xi )
f [xi , xi , xi+1 ] =
xi+1 − xi
f ′ (xi+1 ) − f ′ (xi )
f [xi , xi , xi+1 , xi+1 ] =
xi+1 − xi
f [xi , xi , xi+1 ] − 12 f ′′ (xi )
f [xi , xi , xi , xi+1 ] =
xi+1 − xi
Na interpolação de Hermite, dadas x0 , . . ., xn abcissas distintas, juntamente
com 
 f = f (x ), f ′ = f ′ (x ), . . ., f ( j0 ) = f ( j0 ) (x )

 0 0 0 0 0 0
 (j )
f1 = f (x1 ), f1′ = f ′ (x1 ), . . ., f1 1 = f ( j1 ) (x1 )

 ···

 (j )
fn = f (xn ), fn′ = f ′ (xn ), . . ., fn n = f ( jn ) (xn )
obtemos o polinómio interpolador
(m) (m)
Hk (x) : Hk (xi ) = fi , m = 0 : ji , i = 0 : n
32 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

de grau
n
k = ( j0 + 1) + · · · + ( jn + 1) − 1 = n + ∑ ji
i=0
aplicando à tabela de pontos
n o
(j ) (j )
(x0 , f0 ), (x0 , f0′ ), · · · , (x0 , f0 0 ), · · · , (xn , fn ), (xn , fn′ ), · · · , (xn , fn n )

a fórmula de Newton com diferenças divididas confluentes.

Teorema 4 (Hermite) Se f (x) é uma função contínua e admite pelo menos k + 1


derivadas contínuas em I, com k = n + ∑ni=0 ji , então

Mk+1
| f (x) − Hk (x)| ≤ |Πk+1 (x)|
(k + 1)!
com
n
Mk+1 = max | f (k+1) (x)|, Πk+1 = ∏(x − xi ) ji +1
x∈I i=0

x
Exemplo 3 Sendo f (x) = 1+x2

1. Construir o polinómio interpolador de Lagrange Pn (x) tal que Pn (−1 : 1) =


f (−1 : 1)

2. Construir o polinómio interpolador de Lagrange Pn (x) tal que


Pn ([−1, −.6, −.2, 0, .5, 1]) = f ([−1, −.6, −.2, 0, .5, 1])

3. Construir o polinómio interpolador de Hermite Hn (x) tal que Hn (−1 : 1) =


f (−1 : 1), Hn′ (−1 : 0) = f ′ (−1 : 0), Hn′′ (0) = f ′′ (0)

4. Comparar graficamente a função f (x) no intervalo [−1, 1] com os três poli-


nómios interpoladores, bem como com o polinómio de Taylor de grau n = 5
em torno de x0 = 0

5. calcular majorantes dos erros nas aproximações das alíneas anteriores

Resolução:

1. Temos três condições de interpolação, logo o polinómio

P2 (x) = f (x0 ) + (x − x0 ) f [x0 , x1 ] + (x − x0 )(x − x1 ) f [x0 , x1 , x2 ]

de grau ≤ 2 a construir. Da tabela das diferenças divididas


2.2. INTERPOLAÇÃO DE HERMITE 33

xi fi f [, ] f [, , ]
−1 −0.5
0.5
0 0 0
0.5
1 0.5

concluímos que P2 (x) = −0.5 + 0.5(x + 1) = 0.5x

2. Com mais três condições de interpolação temos um polinómio de grau n ≤ 5


a construir. Reconstruindo a tabela das diferenças divididas

xi fi f [, ] f [, , ] f [, , , ] f [, , , , ] f [, , , , , ]
−1 −0.5
0.1471
−.6 −0.4412 0.5939
0.6222 −0.0283
−.2 −0.1923 0.5656 −0.4638
0.9615 −0.7240 0.3620
0 0 −0.2308 −0.2602
0.8 −0.3077
0.5 0.4 −0.6000
0.2
1 0.5

e substituindo os valores na fórmula interpoladora de Newton, obtemos

P5 (x) = −0.5 + 0.1471(x + 1) + 0.5939(x + 1)(x + .6)


− 0.0283(x + 1)(x + .6)(x + .2) − 0.4638(x + 1)(x + .6)(x + .2)x
+ 0.3620(x + 1)(x + .6)(x + .2)x(x − .5)

3. Com condições de interpolação sobre as derivadas, temos um polinómio


interpolador de Hermite, neste caso de grau n ≤ 5. A tabela das diferen-
ças divididas tem de incluir as diferenças divididas confluentes, relaciona-
das com as derivadas da função. Construindo a tabela de forma a repetir
cada ponto, tantas vezes quantas o número de condições impostas sobre o
ponto, podemos inscrever os valores das diferenças divididas confluentes,
nas posições correspondentes a diferenças com abcissas repetidas, neste
caso, f [−1, −1] = f ′ (−1), f [0, 0] = f ′ (0) e f [0, 0, 0] = f ′′ (0)/2!. As res-
tantes diferenças são calculadas pela definição
34 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

xi fi f [, ] f [, , ] f [, , , ] f [, , , , ] f [, , , , , ]
−1 −0.5
0
−1 −0.5 0.5
0.5 0
0 0 0.5 −0.5
1 −0.5 0.25
0 0 0 0
1 −0.5
0 0 −0.5
0.5
1 0.5

Substituindo estes valores na fórmula interpoladora de Newton, obtemos

H5 (x) = −0.5 + 0.5(x + 1)2 − 0.5(x + 1)2x2 + 0.25(x + 1)2 x3

4. A função subplot do Matlab permite construir a figura 2.2, onde em cada


gráfico se representa a função, juntamente com cada um dos quatro polinó-
mios aproximantes.

P2 P5
0.5 0.5

0 0

−0.5 −0.5
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1

H5 T5
0.5 1

0.5

0 0

−0.5

−0.5 −1
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1

Figura 2.2: Interpolação de Lagrange e de Hermite e Aproximação de Taylor


2.3. INTERPOLAÇÃO PARCELAR 35

5. Utilizando os teoremas anteriores, obtemos as seguintes fórmulas para ma-


jorantes dos erros absolutos
M3
|EP2 (x)| = | f (x) − P2 (x)| ≤ |(x + 1)x(x − 1)|
3!
M6
|EP5 (x)| = | f (x) − P5 (x)| ≤ |(x + 1)(x + .6)(x + .2)x(x − .5)(x − 1)|
6!
M6
|EH5 (x)| = | f (x) − H5(x)| ≤ |(x + 1)2 x3 (x − 1)|
6!
M6 6
|ET5 (x)| = | f (x) − T5 (x)| ≤ |x |
6!
Estimados os valores M3 e M6 , com base numa discretização do intervalo
de aproximação [−1, 1], construíram-se estas funções majorantes do erro
e os respectivos gráficos que se apresentam na figura 2.3
EP2 EP5

0.4 0.02
0
0.2
−0.02

0 −0.04
−0.06
−0.2 −0.08
−0.1
−0.4

−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1


x x

EH5 ET5

0.05 0.7
0 0.6
−0.05 0.5
−0.1 0.4
−0.15 0.3
−0.2 0.2

−0.25 0.1

−0.3 0
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1
x x

Figura 2.3: Erros de Interpolação de Lagrange e de Hermite e de Aproximação de


Taylor

2.3 Interpolação Parcelar


A utilização da interpolação, de Lagrange ou de Hermite, com um elevado
número de condições de interpolação, conduz necessariamente a polinómios in-
terpoladores de grau elevado. Este facto tem os inconvenientes de exigir maior
36 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

esforço de cálculo, de ser instável do ponto de vista numérico e nem sempre é


vantajoso do ponto de vista da aproximação. No sentido de evitar a utilização
de polinómios de grau elevado, a interpolação parcelar consiste em dividir o in-
tervalo de interpolação em sub-intervalos e definir uma função interpoladora por
bocados, utilizando uma parte das condições de interpolação de cada vez.
Por ser de utilização mais frequente, apresenta-se como exemplo a interpola-
ção parcelar cúbica de Hermite, consistindo na utilização de valores da função e da
primeira derivada, em duas abcissas consecutivas de cada vez, também designada
interpolação osculatória.

Definição 13 Sejam yi = f (xi ) e y′i = f ′ (xi ) valores da função f e da sua derivada


nas abcissas x0 < x1 < · · · < xn . Designa-se por osculatória parcelar cúbica a
função


 P1 (x), x ∈ [x0 , x1 ]

 P2 (x), x ∈ [x1 , x2 ]
P(x) = ..

 .

 P (x), x ∈ [x , x ]
n n−1 n

tal que
 
Pi (xi−1 ) = yi−1 Pi′ (xi−1 ) = y′i−1
i=1:n
Pi (xi ) = yi Pi′ (xi ) = y′i

Da fórmula de Newton para o polinómio interpolador de Hermite, e da tabela


das diferenças divididas, para o polinómio P1 (x)

xi yi f [, ] f [, , ] f [, , , ]
x0 y0
y′0
f [x0 ,x1 ]−y′0
x0 y0 x1 −x0
y′0 +y′1 −2 f [x0 ,x1 ]
f [x0 , x1 ] (x1 −x0 )2
y′1 − f [x0 ,x1 ]
x1 y1 x1 −x0
y′1
x1 y1

resulta

m1 − y′0 y′ + y′1 − 2m1


P1 (x) = y0 + (x − x0 )y′0 + (x − x0 )2 + 0 2
(x − x0 )2 (x − x1 )
h1 h1
2.4. INTERPOLAÇÃO COM SPLINES 37

com h1 = x1 − x0 e m1 = f [x0 , x1 ]. Deixa-se como exercício mostrar que

mi − y′i−1
Pi (x) = yi−1 + (x − xi−1 )y′i−1 + (x − xi−1 )2
hi
y′ + y′ − 2mi
+ i−1 2i (x − xi−1 )2 (x − xi )
hi

com hi = xi − xi−1 e mi = f [xi−1 , xi ], i = 1 : n.

x
Exemplo 4 Retomando a função f (x) = 1+x 2 do exemplo anterior, construir a
função osculadora cúbica nas abcissas x0 = −1, x1 = 0 e x2 = 1
Resolução:
Neste caso, n = 2, h1 = h2 = 1, e porque f ([−1, 0, 1]) = [−0.5, 0, 0.5] temos
m1 = m2 = 0.5. Estes valores, juntamente com os valores f ′ ([−1, 0, 1]) = [0, 1, 0]
substituídos na fórmula para Pi (x), resulta em

P1 (x) = −0.5 + 0.5(x + 1)2, x ∈ [−1, 0]
P(x) =
P2 (x) = x − 0.5x2 , x ∈ [0, 1]
Na figura 2.4 representa-se a função f (x), juntamente com a função osculató-
ria P(x), bem como o majorante
 M4 2 2
| f (x) − P(x)| ≤ 4! (x + 1) x , x ∈ [−1, 0]
.
M4 2 2
4! x (x − 1) , x ∈ [0, 1]

Existem diversas generalizações da interpolação de hermite, de entre as quais


se pode destacar a interpolação com splines, sobretudo pela generalização actual
da sua aplicação.

2.4 Interpolação com Splines


A motivação da utilização de Splines, mais do que numérica, é fortemente
baseada em critérios geométricos. O que se pretende com a interpolação com
Splines é, para além de interpolar uma tabela de valores, fazê-lo com uma função
’suave’. Esta ideia de função suave pode traduzir-se no sentido de uma função
contínua e com derivadas contínuas. Esta ideia justifica a seguinte definição:

Definição 14 Uma função S(x) diz-se um spline polinomial de grau m relativo


às abcissas x0 < x1 < · · · < xn se
38 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

P(x) f(x)−P(x)
0.5 0.06

0.4

0.05
0.3

0.2
0.04

0.1

0 0.03

−0.1

0.02
−0.2

−0.3
0.01

−0.4

−0.5 0
−1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1

Figura 2.4: Interpolação Osculatória cúbica parcelar

1. S(x) coincide, em cada intervalo [xi−1 , xi ], i = 1 : n com um polinómio de


grau ≤ m

2. S(x) é contínua e tem derivadas contínuas até à ordem m − 1

Definição 15 A função spline S(x) diz-se um spline interpolador da função y =


f (x) nos nós x0 , x1 , · · · , xn se

S(xi ) = f (xi ), i = 0 : n

Desta definição, resulta imediatamente para o spline interpolador de grau 0




 f (x0 ), x ∈ [x0 , x1 [


 f (x1 ), x ∈ [x1 , x2 [
S(x) = ···



 f (xn−1 ), x ∈ [xn−1 , xn [

f (xn ), x = xn

Isto é, uma vez que neste caso não se impõem condições de continuidade, o spline
interpolador de grau 0 coincide com o polinómio interpolador parcelar de grau 0.
Este facto é suficiente para demonstrar o seguinte resultado.
2.4. INTERPOLAÇÃO COM SPLINES 39

Teorema 5 Se f (x) é contínua e admite derivada continua em I = [x0 , xn ] então


(
h = max(xi − xi−1 )
|E0 (x)| = | f (x) − S(x)| ≤ M1 h, i=1:n
M1 = max | f ′ (x)|
x∈I

Spline de grau 1
Spline de grau 0

x0 x x x0 x x x
1 2 x 1 2 3
3

Para spline interpolador de grau 1, definindo S(x) : S(x) = Si (x), x ∈ [xi , xi+1 ], i =
0 : n − 1, a definição impõem que

Si (xi ) = f (xi ), Cond. interpol.
Si (xi+1 ) = Si+1 (xi+1 ) = f (xi+1 ), Continuidade

Logo, Si (x) constitui o polinómio interpolador de f (x) nos nós xi , xi+1 , ou seja


 f (x0 ) + (x − x0 ) f [x0 , x1 ], x ∈ [x0 , x1 [

f (x1 ) + (x − x1 ) f [x1 , x2 ], x ∈ [x1 , x2 [
S(x) =

 ···

f (xn−1 ) + (x − xn−1 ) f [xn−1 , xn ], x ∈ [xn−1 , xn [

Com a mesma definição de h e para M2 = maxx∈I | f ′′ (x)|, é possível demons-


trar o teorema seguinte.

Teorema 6 Se f (x) é contínua e admite derivadas continuas até à ordem 2 em


[x0 , xn ] então
1
|E1 (x)| = | f (x) − S(x)| ≤ M2 h2
8
40 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL

Spline cúbico interpolador Para estabelecer este spline, uma vez que cada Si (x)
é um polinómio de grau ≤ 3, temos de determinar 4 coeficientes Si (x) = ai,0 +
ai,1 x + ai,2 x2 + ai,3 x3 para cada uma das n parcelas i = 0 : n − 1, num total de 4n
incógnitas.

S
i

S S
i+1
i−1

xi−1 xi x xi+2
i+1

Figura 2.5: Spline cúbica

As condições que permitem determinar estas incógnitas resultam da definição




 Si (xi ) = f (xi ), i = 0, . . . , n − 1

 Cond. interp.
 Sn−1 (xn ) = f (xn )
Si (xi+1 ) = Si+1 (xi+1 ), i = 0, . . . , n − 2 Cont. de S



 S′ (xi+1 ) = Si+1
′ (x
i+1 ), i = 0, . . ., n − 2 Cont. de S

 i′′ ′′ (x ′′
Si (xi+1 ) = Si+1 i+1 ), i = 0, . . . , n − 2 Cont. de S

num total de 4n − 2 equações. Este facto faz com que a definição de spline cú-
bica não seja única, havendo de facto muitas possibilidades de completar este
deficite, escolhendo duas condições suplementares. De entre essas possibilidades,
destacam-se, por serem as mais frequentes nas aplicações:

Spline Completo S0′ (x0 ) = f ′ (x0 ) e Sn−1


′ (xn ) = f ′ (xn ), se estes valores forem co-
nhecidos

Spline Natural S0′′ (x0 ) = Sn−1


′′ (x ) = 0
n
2.4. INTERPOLAÇÃO COM SPLINES 41

Relativamente ao erro no spline natural, demonstra-se que

Teorema 7 Se f (x) é contínua e admite derivadas continuas até à ordem 4 em


[x0 , xn ] então

5
|E3 (x)| = | f (x) − S(x)| ≤ M4 h 4 , M4 = max | f IV (x)|
384 x0 ≤x≤xn
42 CAPÍTULO 2. INTERPOLAÇÃO POLINOMIAL
Capítulo 3

Derivação e Integração Numérica

A utilização do cálculo de derivadas ou de integrais de funções em aplicações


científicas ou de engenharia é bem conhecido e não necessita de justificação. Fre-
quentemente, em aplicações que envolvam métodos numéricos, surge a necessi-
dade de se calcularem valores de derivadas ou de integrais de funções sem recorrer
à sua expressão analítica. Podemos estar a tratar de uma função cuja expressão
analítica é desconhecida, como pode ser o caso quando tratamos de interpolar
uma função desconhecida e estamos a calcular um majorante do respectivo erro.
Podemos estar a utilizar um processo que não comporta técnicas de derivação e in-
tegração analíticas, como é o caso das calculadoras de bolso vulgares ou de alguns
pacotes de software (incluindo o Matlab sem as funções symbolic). Em certos ca-
sos, se a função não é elementar, se o processo de derivação não é simples ou
se a primitivação não é imediata ou ainda se o processo, envolvendo quantidades
aproximadas, não justifica a utilização de técnicas exactas, eventualmente caras
do ponto de vista computacional, a utilização de técnicas numéricas pode ser mais
simples e mais eficiente.

3.1 Derivação Numérica


Existem diversas técnicas de derivação numérica. A primeira que se refere,
pode utilizar-se quando se dispõem de uma tabela de diferenças divididas da fun-
ção.

Teorema 8 (Teorema do Valor Intermédio) f (x) contínua e com n + 1 deriva-


das contínuas em [x0 , xn ] então

1 (n)
f [x0 , . . . , xn ] = f (c), c ∈ [x0 , xn ]
n!

43
44 CAPÍTULO 3. DERIVAÇÃO E INTEGRAÇÃO NUMÉRICA

Se as diferenças divididas de ordem n não variam muito num intervalo [a, b]


e se apenas se pretende obter um valor aproximado de f (n) (x) para x ∈ [a, b], e se
o erro nesta aproximação não é um factor determinante, obtemos a fórmula:

f (n) (x) ≈ n! f [xi , . . . , xi+n ]


Diferenças Divididas

Outra forma de se obterem fórmulas de derivação numérica, consiste em uti-


lizar fórmulas de coeficientes livres e determinar os valores destes coeficientes
impondo que as fórmulas a construir sejam exactas em algum sentido. As boas
propriedades de aproximação de funções por polinómios, justificam que se impo-
nham para as regras de derivação, que estas sejam exactas para polinómios até
ao grau tão elevado quanto possível. Esta técnica é ilustrada com os exemplos
seguintes.
Supondo que se pretende aproximar f ′ (x) e que dispomos dos valores f (x) e
f (x + h) para algum valor h > 0. Como é natural esperar que o valor calculado
depende dos dados, vamos determinar dois coeficientes, sejam a1 e a2 tais que

f ′ (x) ≈ Dh f (x) = a1 f (x) + a2 f (x + h)

Como temos dois coeficientes livres, podemos impor que esta fórmula de aproxi-
mação seja exacta para polinómios de grau ≤ 1. Esta condição significa que temos
duas equações  d
Dh 1 = dx 1
d
Dh x = dx x
para determinar as duas incógnitas. Neste caso
 
a1 + a2 = 0 a1 = −a2
a1 x + a2 (x + h) = 1 a2 = 1/h
ou seja
f (x + h) − f (x)
f ′ (x) ≈ Dh f (x) =
h
que constitui a fórmula da Diferença Progressiva
De forma análoga, supondo que dispomos dos valores f (x) e f (x − h) para
algum valor h > 0, se obtém a fórmula da Diferença Regressiva

f (x) − f (x − h)
f ′ (x) ≈ Dh f (x) =
h
Para analisar o erro, utilizando a fórmula de Taylor
1
f (x + h) = f (x) + h f ′ (x) + h2 f ′′ (c), c ∈ [x, x + h]
2
3.1. DERIVAÇÃO NUMÉRICA 45

logo
1
f ′ (x) = Dh f (x) − h f ′′ (c)
|2 {z }
Erro
Concluímos que o erro, sendo directamente proporcional ao passo h, decresce
linearmente com h. Diz-se que o erro, nestas condições, é da ordem de h.
Podemos progredir, obtendo fórmulas mais exactas, se podermos dispor de
mais dados da função. Suponhamos que dispomos dos valores f (x − h), f (x) e
f (x + h), com h > 0, pelo que, podendo impor três condições, podemos dispor de
três coeficientes livres a1 , a2 e a3 tais que
f ′ (x) ≈ Dh f (x) = a1 f (x − h) + a2 f (x) + a3 f (x + h)
e  d
 Dh 1 = dx 1
d
D x= x
 h 2 dxd 2
Dh x = dx x
ou  
 a1 + a2 + a3 = 0  a1 = −1/2h
a1 (x − h) + a2 x + a3 (x + h) = 1 a2 = 0
 
a1 (x − h)2 + a2 x2 + a3 (x + h)2 = 2x a3 = 1/2h
ou seja
f (x + h) − f (x − h)
f ′ (x) ≈ Dh f (x) =
2h
que constitui a fórmula da Diferença Central
Pode verificar-se que
1
f ′ (x) − Dh f (x) = − h2 f ′′′ (c), c ∈ [x − h, x + h]
6
isto é, o erro é de ordem h2 .
Analogamente, para se obter uma aproximação de f ′′ (x), seja
f ′′ (x) ≈ D2h f (x) = a1 f (x − h) + a2 f (x) + a3 f (x + h)
e 
 2 d2
 Dh 1 = dx2 1
d2
D2h x = dx2x

 2 2 d2 2
Dh x = dx2 x
ou  
 a1 + a2 + a3 = 0  a1 = 1/h2
a1 (x − h) + a2 x + a3 (x + h) = 0 a = −2/h2
  2
a1 (x − h)2 + a2 x2 + a3 (x + h)2 = 2 a3 = 1/h2
46 CAPÍTULO 3. DERIVAÇÃO E INTEGRAÇÃO NUMÉRICA

ou seja
f (x + h) − 2 f (x) + f (x − h)
f ′′ (x) ≈ D2h f (x) =
h2
que constitui a fórmula da Diferença Central de Ordem 2
Relativamente ao erro,
1 2 IV
f ′′ (x) − D2h f (x) = − h f (c), c ∈ [x − h, x + h]
12

logo de ordem h2 .

Exercício:

1. Para cada uma das regras anteriores, verificar que

(a) Dh (k ∗ f )(x) = k ∗ Dh f (x)


(b) Dh ( f + g)(x) = Dh f (x) + Dh g(x)

2. Para cada uma das regras anteriores, determine o maior valor de n tal que,
para f (x) = xn se tem Dh f (x) = f ′ (x)

3. Conclua com regras do tipo: ’A fórmulas ... é exacta para polinómios de


grau ...’

3.2 Integração Numérica


A construção de fórmulas numéricas aproximadas para se calcular
Z b
I= f (x)dx
a

pode fazer-se pelo processo exposto para o caso da derivação numérica.


Supondo que se conhecem os valores f (a) e f (b), podemos determinar dois
coeficientes p1 e p2 tais que

I ≈ Ia,b f (x) = p1 f (a) + p2 f (b)

impondo que esta fórmula seja exacta para polinómios de grau ≤ 1, isto é
( R
Ia,b 1 = ab dx
R
Ia,b x = ab x dx
3.2. INTEGRAÇÃO NUMÉRICA 47

Impondo a regra às funções f (x) = 1 e f (x) = x e, por outro lado integrando as


mesmas funções, obtemos
 
p1 + p2 = b − a p1 = p2
1 2 2
p1 a + p2 b = 2 (b − a ) p2 = 12 (b − a)

ou seja
Z b
b−a
f (x)dx ≈ Ia,b f (x) = ( f (a) + f (b))
a 2
que constitui a Regra do Trapézio. Consistindo, esta regra, uma regra exacta para
polinómios de grau 1, pode dizer-se que resulta de interpolar a função f (x) pelo
seu polinómio interpolador P1 (x) nos pontos de abcissas a e b, e integrar este po-
linómio. Tal como se ilustra na figura 3.1, este processo é equivalente a aproximar
a área da figura definida pela curva y = f (x), pela área do trapézio, o que justifica
o nome da regra.

3.5
I≈ Ia,b y=f(x)

y=P1(x)
2.5

1.5

0.5

0
−1 −0.5 0 0.5 1 1.5 2 2.5 3

Figura 3.1: Regra do Trapézio

Dispondo de mais valores da função, obtemos outras fórmulas. Supondo que,


para além de f (a) e de f (b), também dispomos do valor f (c) com c = (a + b)/2,
podemos procurar uma fórmula

I ≈ Ia,b f (x) = p1 f (a) + p2 f (c) + p3 f (b)


48 CAPÍTULO 3. DERIVAÇÃO E INTEGRAÇÃO NUMÉRICA

impondo que esta fórmula seja exacta para polinómios de grau ≤ 2, isto é
 Rb

 Ia,b 1 = R a dx
Ia,b x = ab xdx

 I x2 = R b x2 dx
a,b a

Neste caso
 
 p1 + p2 + p3 = b − a  p1 = p3
p1 a + p2 c + p3 b = 12 (b2 − a2 ) p2 = 4p3
 
p1 a2 + p2 c2 + p3 b2 = 31 (b3 − a3 ) p3 = 16 (b − a)

pelo que obtemos a Regra de Simpson


Z b
b−a
f (x)dx ≈ Ia,b f (x) = ( f (a) + 4 f (c) + f (b))
a 6
Consistindo, esta regra, em aproximar a área da figura definida pela curva y =
f (x), pela área definida pelo polinómio interpolador P2 (x) nos pontos de abcissas
a, c = (a + b)/2 e b, como se ilustra na figura 3.2.

3.5 y=f(x)

3 y=P2(x)

2.5

1.5

0.5

0
−1 −0.5 0 0.5 1 1.5 2 2.5 3

Figura 3.2: Regra de Simpson

Relativamente ao erro, verifica-se que


3.2. INTEGRAÇÃO NUMÉRICA 49

|b − a|3
|ET | ≤ M2 , M2 = max | f ′′ (x)|
12 x∈[a,b]

e
| b−a
2 |
5
|ES | ≤ M4 , M4 = max | f IV (x)|
90 x∈[a,b]

Se as aproximações obtidas com estas fórmulas não têm a precisão desejada,


podemos, subdividir o intervalo [a, b] e utilizar interpolação parcelar. Definindo
a partição
a = x0 < x1 < · · · < xn = b
do intervalo [a, b] em n intervalos [xi−1 , xi ] de igual amplitude, isto é xi = a +
ih, i = 0 : n, h = b−a
n e
Z b n Z xi
f (x)dx = ∑ f (x)dx
a i=1 xi−1

Aplicando a Regra do Trapézio


Z xi
xi − xi−1 h
f (x)dx ≈ ( f (xi−1 ) + f (xi )) = ( fi−1 + fi ), i = 1 : n
xi−1 2 2
logo
Z b n
h h
f (x)dx = ∑ ( fi−1 + fi ) = ( f0 + 2 f1 + 2 f2 + · · · + 2 fn−1 + fn )
a i=1 2 2

Zb n−1
h
f (x)dx ≈ ( f0 + 2 ∑ fi + fn )
2 i=1
a
Regra do Trapézio composta a n intervalos
Para a regra de Simpson
Z xi+1
xi+1 − xi−1
f (x)dx ≈ ( f (xi−1 ) + 4 f (xi ) + f (xi+1 ))
xi−1 6
h
= [ fi−1 + 4 fi + fi+1 ]
3
sendo n um número par
Z b Z x2 Z x4 Z xn
f (x)dx = f (x)dx + f (x)dx + · · · + f (x)dx
a x0 x2 xn−2

obtemos
50 CAPÍTULO 3. DERIVAÇÃO E INTEGRAÇÃO NUMÉRICA

Zb
h
f (x)dx ≈ ( f0 + 4 f1 + 2 f2 + 4 f3 + · · · + 2 fn−2 + 4 fn−1 + fn )
3
a
Regra de Simpson composta a n intervalos

Na figura 3.3, ilustra-se a técnica da aplicação das regras compostas.

4 4

3.5 3.5

3 3

2.5 2.5

2 2

1.5 1.5

1 1

0.5 0.5

0 0
−1 0 1 2 3 −1 0 1 2 3

Figura 3.3: Regras do Trapézio e de Simpson compostas

O erro de truncatura, para cada uma destas regras compostas, constituem a


soma dos erros de truncatura para as regras simples

h2
|ET (h)| ≤ (b − a)M2
12
h4
|ES (h)| ≤ (b − a)M4
180
Capítulo 4

Resolução de Equações

Seja F(x) = 0 uma equação a resolver e F uma função real de variável real.
Os valores α ∈ D F : F(α) = 0 dizem-se raízes da equação ou zeros de F(x).
Graficamente, os zeros reais são as abcissas dos pontos onde a curva y = F(x)
intersecta o eixo dos xx.
y=f(x)

10

−5

−10

−15
0 α1 2 α2 4 6α 8 α 10 12 α 14
3 4 5
y

Figura 4.1: Os zeros reais são as abcissas dos pontos onde a curva y = F(x) inter-
secta o eixo dos xx

A determinação aproximada das raízes reais de uma equação envolve, geral-

51
52 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

mente, duas etapas:


• Separação das raízes: Determinar intervalos finitos e disjuntos, contendo
cada um deles uma e uma só raíz da equação.
• Determinação numérica aproximada dos valores das raízes.

Separação das raízes A separação de raízes pode fazer-se utilizando um gráfico


e o teorema seguinte.
Teorema 9 (Cauchy) Seja F(x) uma função contínua em [a, b] ⊂ D F . Se
F(a)F(b) < 0 então ∃c ∈]a, b[: F(c) = 0
É frequente, nas aplicações, por uma questão de segurança nas conclusões que
tiramos de um gráfico, re-escrever a equação F(x) = 0 numa forma equivalente
g1 (x) = g2 (x), com funções g1 (x) e g2 (x) mais fáceis de conhecer. Neste caso, as
raízes da equação constituem as abcissas dos pontos onde as curvas dos gráficos
das duas funções se intersectam.
Exemplo 5 Separar as raízes da equação
e−x − x ∗ sen(x) = 0
As instruções seguintes, permitem construir o gráfico apresentado na figura
4.1
>> ezplot(’exp(-x)-x*sin(x)’,[-1,14]);grid on;title(’y=f(x)’)
Neste caso observa-se a existência de 5 zeros da função
α1 ∈]0, 2[, α2 ∈]2, 4[, α3 ∈]6, 8[, α4 ∈]8, 10[, α5 ∈]12, 14[
O teorema de Cauchy, verificado que a função troca de sinal entre os extremos de
cada um destes intervalos, permite confirmar este resultado.
>> f=exp(-x)-x*sin(x)
>> y=subs(f,[0,2,4,6,8,10,12,14])
y =
1.0000 -1.6833 3.0455 1.6790 -7.9145 5.4403 6.4389 -13.8685
No entanto, nem o gráfico de F(x) nem o teorema de Cauchy (Augustin Louis
Cauchy, 1789, Paris - 1857, Sceaux, França), por si só, dizem alguma coisa a
respeito da existência de outras raízes, para além das 5 encontradas no intervalo
[−1, 14].
O gráfico das funções g1 (x) = e−x e g2 (x) = x ∗ sen(x), como se mostra na
figura 4.2, permite perceber que as curvas definidas pelas duas funções se vão
intersectar uma infinidade de vezes, sempre próximo dos zeros da função sen(x),
isto é αi ≈ (i − 1)π, i = 1, 2, . . .
4.1. MÉTODO DAS BISSECÇÕES SUCESSIVAS 53

g1(x)=g2(x)
15

10

−5

−10

−15
−2 0 2 4 6 8 10 12 14

Figura 4.2: Os zeros constituem as abcissas dos pontos onde as curvas y = g1 (x)
e y = g2 (x) se intersectam

Determinação numérica aproximada dos valores das raízes


Existe uma grande quantidade de métodos, geralmente iterativos, que permi-
tem determinar raízes com a precisão pretendida.

Definição 16 Diz-se iterativo, um método numérico que partindo de uma solu-


ção aproximada x0 de um problema, permita construir uma sucessão de valores
xn , n = 1, 2, . . . convergente para a solução exacta α.

Até ao final deste capítulo, apresentam-se os métodos iterativos mais utiliza-


dos nas aplicações de engenharia.

4.1 Método das Bissecções Sucessivas


Seja F(x) uma função contínua em [a, b] tal que a equação F(x) = 0 tem um
zero único α ∈]a, b[ e F(a)F(b) < 0.
Analisando o sinal de F(x) no ponto médio c = (a + b)/2 de [a, b], pode
localizar-se a raíz num dos intervalos ]a, c[ ou ]c, b[ conforme F(a)F(c) < 0
ou F(c)F(b) < 0 respectivamente, ficando a raíz localizada num intervalo com
metade da amplitude do intervalo inicial.
54 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

y=F(x)

F(2)>0

F(0)<0

0 2 0 2
x

Figura 4.3: F(a)F(b) < 0


y=F(x)

F(2)>0

F(0)<0

0 1 2
x

Figura 4.4: F(a)F(c) < 0 ou F(c)F(b) < 0

Repetindo o processo, podemos construir uma sucessão de intervalos, cada um


contendo a raíz da equação e com metade da amplitude do intervalo anterior.
y=F(x)

F(2)>0

F(1)<0

F(0)<0

0 1 1.5 2
x

Figura 4.5: α ∈ [a, b]

Exemplo 6 Localizar a menor das raízes de ex − 5x + 2 = 0 num intervalo de


amplitude < 10−1

Localizada a raíz num intervalo de amplitude b − a, o ponto médio deste in-


tervalo c = (a + b)/2 representa o valor exacto da raíz da equação com um erro
4.2. MÉTODO DE NEWTON 55

absoluto máximo ∆ = (b − a)/2, i.e.

a+b b−a
α= ±
2 } | {z
| {z 2 }
c ∆

4.2 Método de Newton


Suponhamos que a equação F(x) = 0 tem uma solução única α no intervalo
]a, b[ e que x0 ∈ [a, b] é um valor aproximado de α. Se F é pelo menos duas
vezes continuamente derivável em ]a, b[, então a fórmula de Taylor com resto de
2a ordem
F(x) ≈ F(x0 ) + (x − x0 )F ′ (x0 ),
que consiste em aproximar a função F(x) pela recta tangente ao gráfico de F no
ponto de abcissa x0 .

y=F(x)

0
α

a x_0 x_1 x_2 b


x

Figura 4.6: xi+1 constitui a abcissa do ponto onde a recta tangente no ponto xi
intersecta o eixo dos xx
56 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

Podemos substituir a equação exacta F(x) = 0 pela equação linear aproximada


F(x0 ) + (x − x0 )F ′ (x0 ) ≈ 0. Tomando para x1 a solução exacta da equação apro-
ximada, i.e.
F(x0 )
x1 = x0 − ′
F (x0 )
que constitui a abcissa do ponto onde a recta tangente intersecta o eixo dos xx.
Repetindo o processo, construímos a sucessão de Newton

F(xn )
xn+1 = xn − , n = 0, 1, . . .
F ′ (xn )

É imediato verificar que nem sempre xn → α

y=F(x)

0
α

a x x x x2 b
0 3 1
x

Figura 4.7: Sucessão de Newton não convergente

Definição 17 Dado um método iterativo, se a convergência xn → α não depende


da escolha do valor inicial x0 nem do comportamento local da função F, diz-se
que o método é globalmente convergente. Se, pelo contrário, a convergência do
método está dependente da verificação de uma condição suficiente de convergên-
cia, então diz-se que o método exibe convergência local.
4.3. EFICIÊNCIA DOS MÉTODOS ITERATIVOS 57

Teorema 10 Seja F(x) uma função contínua, com derivadas F ′ (x) e F ′′ (x) con-
tínuas em [a, b], se c

1. F(a)F(b) < 0

2. F ′ (x) 6= 0∀x ∈ [a, b]

3. F ′′ (x) tem sinal constante em [a, b]


F(a) F(b)
4. F ′ (a) < b−a e F ′ (b) < b−a

então

• Existe uma solução única α ∈]a, b[ da equação F(x) = 0

• A sucessão de Newton
F(xn )
xn+1 = xn − , n = 0, 1, . . .
F ′ (xn )
converge para α


M2
|α − xk | ≤ (xk − xk−1 )2
2m1
M2 = max |F ′′ (x)| e m1 = min |F ′ (x)|
x∈[a, b] x∈[a, b]

Exemplo 7 Calcule uma raíz de x2 − ex = 0

4.3 Eficiência dos métodos iterativos


Em presença de diversos métodos para resolver numericamente o mesmo pro-
blema, neste caso o da determinação numérica aproximada dos valores das raízes
de uma equação F(x) = 0, importa estabelecer critérios de escolha do mais efici-
ente. Geralmente, esta escolha passa pela comparação dos métodos segundo os
dois critérios seguintes:

• A capacidade do método em reduzir rapidamente o erro com que o valor


calculado xn aproxima o valor exacto da raíz α a calcular

• O esforço computacional exigido em cada iteração


58 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

O primeiro destes critério está associado ao conceito de ordem de convergên-


cia, que mede a capacidade de um método iterativo calcular uma raíz com grande
precisão, apenas com um reduzido número de iterações. O segundo critério está
mais dependente de características da função F(x) e está associado ao número de
vezes que é necessário avaliar a função em cada iteração.

Definição 18 Diz-se que um método iterativo tem ordem de convergência p ≥ 1


e razão de convergência c ≥ 0 se a sucessão xn , n = 0, 1, . . . converge para α com
erros α − xn tais que

|α − xn | ≤ ∆n ≤ c × |α − xn−1 | p , n = 1, 2, . . .

Nos casos p = 1, p = 2 e p = 3 diz-se que a convergência é linear, quadrática


e cúbica, respectivamente. Se 1 < p < 2 a convergência diz-se supra-linear.

MBS
Representando por In = [an , bn ] o intervalo que contem a raíz ao fim de n
iterações, como vimos
an + bn
cn =
2
representa a raíz com um majorante do erro absoluto
bn − an bn−1 − an−1 1
|α − cn | ≤ ∆n = = = ∆n−1
2 4 2
logo, o MBS tem convergência linear de razão 1/2.

MN
O MN baseia-se na aproximação

0 = F(α) ≈ F(xn ) + (α − xn )F ′ (xn )

o que sugere que a análise do erro recorra ao desenvolvimento de Taylor até ao


segundo grau
1
F(α) ≈ F(xn ) + (α − xn )F ′ (xn ) + (α − xn )2 F ′′ (c), c ∈ [α, xn ]
2
ou, se F ′ (xn ) 6= 0

F(xn ) ′′
1 2 F (c)
0= + α − xn + (α − xn )
F ′ (xn ) 2 F ′ (xn )
4.4. MÉTODOS DA SECANTE, FALSA POSIÇÃO E WHITTAKER 59

logo
1 F ′′ (c)
α − xn+1 = − (α − xn )2 ′
2 F (xn )
e
M2
|α − xn+1 | ≤ |α − xn |2
2m1
M2
isto é, o MN tem convergência quadrática de razão 2m 1
.
O MN, sendo rapidamente convergente, tem no entanto a desvantagem de exi-
gir, em cada iteração, a avaliação de duas funções, F(x) e F ′ (x). Existem métodos
que, sendo quase tão rapidamente convergentes quanto o MN, não necessitam dos
valores F ′ (xn ).

4.4 Métodos da Secante, Falsa posição e Whittaker


Método da Secante Por definição
F(xn ) − F(x)
F ′ (xn ) = lim
x→xn xn − x
tomando x = xn−1 ≈ xn , isto é
F(xn ) − F(xn−1 )
F ′ (xn ) ≈
xn − xn−1
substituindo na relação de recorrência de Newton, obtemos
xn − xn−1
xn+1 = xn − F(xn ), n = 1, 2, . . .
F(xn ) − F(xn−1 )
Método da Secante

C.S.C.
Teorema 11 É condição suficiente de convergência do MS

a) 
b) como MN

c)
d) x0 , x1 ∈ [a, b] : F(x0 )F ′′ (x0 ) > 0 e F(x1 )F ′′ (x1 ) > 0

Ordem de convergência

r M2 r−1 1+ 5
|α − xn | ≤ c × |α − xn−1 | , c=( ) , r= ≈ 1.62
2m1 2
convergência supra-linear
60 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

Método da Falsa posição Tomando xn ≈ a constante,

F(xn ) − F(a)
F ′ (xn ) ≈
xn − a
de forma análoga, obtemos

xn − a
xn+1 = xn − F(xn ), n = 1, 2, . . .
F(xn ) − F(a)
Método da Falsa Posição

C.S.C.

Teorema 12 É condição suficiente de convergência do MFP



a) 
b) como MN

c)
d) x0 , a ∈ a, b : F(x0 )F ′′ (x0 ) < 0 e F(a)F ′′ (a) > 0

Ordem de convergência
M2
|α − xn | ≤ c × |α − xn−1 |, c = |b − a|
2m1
convergência linear

Método de Whittaker Nas aplicações é frequente verificar-se que os valores


F ′ (xn ) não variam muito, pelo menos em ordem de grandeza. Nesse caso, parece
legítimo pensar-se em aproximar F ′ (xn ) ≈ k, com k constante, obtendo-se a re-
lação de recorrência de Whittaker (Edmund Whittaker, 1873, Southport - 1956,
Edinburgh, Inglaterra)

1
xn+1 = xn − F(xn ), n = 1, 2, . . .
k

Valores habituais para k são k = F ′ (x0 ) e k = F ′ ( a+b


2 )

C.S.C. e ordem de convergência

Teorema 13 Se o MN converge e se x0 está suficientemente próximo de α, então


o MW converge para α, geralmente, com convergência linear.
4.4. MÉTODOS DA SECANTE, FALSA POSIÇÃO E WHITTAKER 61

Exemplo 8 Calcular as raízes α1 ∈ [0.4, 1] e α2 ∈ [2, 3] da equação ex − 5x + 2 =


0, utilizando
1. O Método de Newton

2. O Método da Secante

3. O Método da Falsa Posição


4. O Método de Whittaker
com o critério de paragem |xn − xn−1 | ≤ 10−15

O problema consiste em calcular, de forma numérica aproximada, os dois ze-


ros da função F(x) = ex − 5x + 2.
1. Para utilizar o Método de Newton, vamos verificar a Condição Suficiente
de Convergência:

(a) F(0.4) ≈ 1.4918, F(1) ≈ −0.2817, f (2) ≈ −0.6109 e F(3) ≈ 7.0855,


o que permite verificar que F(a)F(b) < 0, para cada um dos dois in-
tervalos I1 = [a, b] = [0.4, 1] e I2 = [a, b] = [2, 3].
(b) Sendo F ′ (x) = ex − 5, a resolução da equação F ′ (x) = 0 é elementar e
tem como solução única x = ln(5) ≈ 1.6094, verifica-se que F ′ (x) 6= 0
em todos os pontos de qualquer um dos dois intervalos I1 e I2
(c) Sendo F ′′ (x) = ex , a verificação de que F ′′ (x) tem sinal constante, quer
em I1 quer em I2 é elementar.
(d) A escolha de x0 = 0.4 para o cálculo de α1 e de x0 = 3 para o cálculo
de α2 , corresponde a escolher x0 ∈ {a, b} : F(x0 )F ′′ (x0 ) > 0

Pelo que podemos concluir que o Método de Newton converge para as raízes
desta equação. As instruções seguintes, definem em Matlab as funções F(x)
e F ′ (x)

>> syms x
>> f=exp(x)-5*x+2
>> df=diff(f)

Um ciclo while permite implementar o processo iterativo, com um critério


de paragem dependente dos valores calculados nas iterações. Neste caso,
em que se pretende implementar o Método de Newton, guardando os valores
xn , F(xn ), F ′ (xn ) e |xn − xn−1 | em cada iteração, o cálculo pode fazer-se,
para a raíz α1 com as seguintes instruções
62 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

>> xN(1)=0.4; i=1; d(1)=1;


>> while abs(d(i))>10^-15,
>> F(i)=subs(f,xN(i));
>> dF(i)=subs(df,xN(i));
>> d(i+1)=F(i)/dF(i);
>> xN(i+1)=xN(i)-d(i+1);
>> i=i+1,
>> end;

No quadro seguinte apresentam-se os valores calculados, visualizados com


format long no caso dos valores xn e com format short g nos outros
casos.
n xn F(xn ) F ′ (xn ) |xn − xn−1 |
0 0.4 1.4918 −3.5082
1 0.825242346537882 0.15622 −2.7176 0.42524
2 0.882728382299172 0.0038446 −2.5825 0.057486
3 0.884217099663371 2.6802 × 10−6 −2.5789 0.0014887
4 0.884218138955469 1.3078 × 10−12 −2.5789 1.0393 × 10−6
5 0.884218138955976 0 −2.5789 5.0713 × 10−13
6 0.884218138955976

Pelo que podemos concluir que α1 ≈ 0.884218138955976. A repetição do


exercício, com xN(1)=3, conduz aos resultados

n xn F(xn ) F ′ (xn ) |xn − xn−1 |


0 3 7.0855 15.086
1 2.53030926514146 1.9058 7.5574 0.46969
2 2.27812656708695 0.36775 4.7584 0.25218
3 2.20084214640940 0.028406 4.0326 0.077284
4 2.19379799847041 0.00022357 3.9692 0.0070441
5 2.19374167143071 1.4228 × 10−8 3.9687 5.6327 × 10−5
6 2.19374166784562 0 3.9687 3.5851 × 10−9
7 2.19374166784562

logo α2 ≈ 2.19374166784562.

2. Para a utilização do Método da Secante, uma condição suficiente de con-


vergência consiste nas condições 1a), 1b) e 1c) da condição suficiente de
convergência do Método de Newton, e na condição 1d) substituída por

• x0 , x1 ∈ [a, b] : F(x0 )F ′′ (x0 ) > 0 e F(x1 )F ′′ (x1 ) > 0


4.4. MÉTODOS DA SECANTE, FALSA POSIÇÃO E WHITTAKER 63

Para o cálculo de α1 , pode tomar-se x0 = 0.4 e x1 = 0.5, uma vez que F(x) >
0 para estes dois valores e F ′′ (x) > 0 para todos os valores de x. Para o caso
de α2 , pode tomar-se x0 = 3 e x1 = 2.9, pelas mesmas razões. Estes valores,
juntamente com a relação de recorrência do Método da Secante, conduziram
às seguintes instruções Matlab

>> xS(1)=0.4; xS(2)=0.5; F(1)=subs(f,xS(1)); i=2; d(2)=1;


>> while abs(d(i))>10^-15,
>> F(i)=subs(f,xS(i));
>> d(i+1)=(xS(i)-xS(i-1))*F(i)/(F(i)-F(i-1));
>> xS(i+1)=xS(i)-d(i+1);
>> i=i+1,
>> end;

Nos quadros seguintes apresentam-se os valores calculados, para α1

n xn F(xn ) |xn − xn−1 |


0 0.4 1.4918
1 0.5 1.1487
2 0.834803205243760 0.13034 0.3348
3 0.877655472091330 0.016977 0.042852
4 0.884072483892062 0.00037566 0.006417
5 0.884217692665214 1.1509 × 10−6 0.00014521
6 0.884218138925467 7.8681 × 10−11 4.4626 × 10−7
7 0.884218138955976 4.4409 × 10−16 3.0509 × 10−11
8 0.884218138955976 0 1.722 × 10−16

e para α2 , com xS(1)=3; xS(2)=2.9;,

n xn F(xn ) |xn − xn−1 |


0 3 7.0855
1 2.9 5.6741
2 2.49797510801387 1.6680 0.40202
3 2.33059142491112 0.63106 0.16738
4 2.22872151782101 0.14438 0.10187
5 2.19850175921432 0.018993 0.03022
6 2.19392403675520 0.00072392 0.0045777
7 2.19374264488059 3.8776 × 10−6 0.00018139
8 2.19374166804692 7.9891 × 10−10 9.7683 × 10−7
9 2.19374166784562 −1.7764 × 10−15 2.0130 × 10−10
10 2.19374166784562 0 4.4759 × 10−16
64 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

Como seria de esperar, os resultados obtidos coincidem com os resultados


do Método de Newton, mas com o Método da Secante são necessárias mais
iterações para o mesmo critério de paragem.

3. Para a utilização do Método da Falsa Posição, a condição suficiente de


convergência apresentada anteriormente, coincide nas três primeiras alíneas
com as condições suficientes de convergência dos métodos anteriores, pelo
que apenas é necessário impor

• x0 , c ∈ {a, b} : F(c)F ′′ (c) > 0 e F(x0 )F ′′ (x0 ) < 0

Neste caso, x0 = 1 e c = 0.4 para α1 e x0 = 2, c = 3 para α2 são os valores


que verificam esta condição. As seguintes instruções Matlab

>> xFP(1)=1; c=0.4; Fc=subs(f,c); i=1; d(1)=1;


>> while abs(d(i))>10^-15,
>> F(i)=subs(f,xFP(i));
>> d(i+1)=(xFP(i)-c)*F(i)/(F(i)-Fc);
>> xFP(i+1)=xFP(i)-d(i+1);
>> i=i+1,
>> end;

permitem obter os resultados do quadro seguinte

n xn F(xn ) |xn − xn−1 |


0 1 −0.28172
1 0.904693083058933 −0.052292 0.095307
2 0.887601475359247 −0.0087114 0.017092
3 0.884770678203282 −0.0014246 0.0028308
···
9 0.884218149298837 −2.6673 × 10−8 5.3136 × 10−8
10 0.884218140641187 −4.3460 × 10−9 8.6576 × 10−9
···
17 0.884218138955981 −1.2879 × 10−14 2.6378 × 10−14
18 0.884218138955977 −1.7764 × 10−15 4.1801 × 10−15
19 0.884218138955976 0 5.7657 × 10−16
4.4. MÉTODOS DA SECANTE, FALSA POSIÇÃO E WHITTAKER 65

e para α2 , com xFP(1)=2; c=3;, obtemos


n xn F(xn ) |xn − xn−1 |
0 2 −0.61094
1 2.07937964311479 −0.39739 0.07938
2 2.12827070960083 −0.24103 0.048891
3 2.15694846073209 −0.14002 0.028678
···
9 2.19271059715755 −0.0040873 0.00084775
10 2.19317600915340 −0.0022435 0.00046541
···
54 2.19374166784561 −1.4211 × 10−14 3.0320 × 10−15
55 2.19374166784562 −7.1054 × 10−15 1.6170 × 10−15
56 2.19374166784562 0 8.0852 × 10−16
com um considerável aumento do número de iterações utilizadas para atin-
gir o resultado, como a convergência linear deste método faria supor.
4. O Método de Whittaker pode utilizar-se com diversas escolhas do valor de
k ≈ F ′ (xn ). São exemplos, geralmente com bons resultados nas aplicações
F ′ (a)+F ′ (b)
do método, k = F ′ (x0 ), k = F ′ ( a+b
2 ) ou k = 2 . Para a raíz α1 , com
x0 = 0.4, as instruções Matlab implementam o método de Whittaker com
k = F ′ (x0 )

>> xW(1)=0.4; k=subs(df,0.4); i=1; d(1)=1;


>> while abs(d(i))>10^-15,
>> F(i)=subs(f,xW(i));
>> d(i+1)=F(i)/k;
>> xW(i+1)=xW(i)-d(i+1);
>> i=i+1,
>> end;

No quadro seguinte apresenta-se o número de iterações necessárias, para atingir o


critério de paragem, para cada uma destas três escolhas de k e para cada uma das
duas raízes calculadas.
F ′ (a)+F ′ (b)
k = F ′ (x0 ) k = F ′ ( a+b
2 ) k= 2
α1 27 19 18
α2 107 44 50
o que parece indicar que este método, sendo mais simples que qualquer um dos
anteriores, tem resultados, em termo da rapidez de convergência, pelo menos apa-
rentemente imprevisíveis. Neste exemplo de aplicação, verifica-se que o método
66 CAPÍTULO 4. RESOLUÇÃO DE EQUAÇÕES

de Whittaker pode ser pelo menos quase tão eficiente quanto o método da Falsa
Posição, de convergência linear. Dependendo da escolha do valor k, este método,
em certos casos, pode ser particularmente mais lento que os outros métodos utili-
zados. k = F[a, b]
Capítulo 5

Sistemas de Equações Lineares

Um sistema de n equações lineares em n incógnitas pode escrever-se na forma




 a11 x1 + a12 x2 + · · · + a1n xn = b1
 n
a21 x1 + a22 x2 + · · · + a2n xn = b2
⇔ ∑ ai j x j = bi , i = 1 : n

 ··· j=1

an1 x1 + an2 x2 + · · · + ann xn = bn

onde os coeficientes ai j , i, j = 1 : n e os termos independentes bi , i = 1 : n são


constantes dadas e xi , i = 1 : n são as incógnitas a determinar. Em notação matri-
cial, este sistema escreve-se
Ax = b
Existem duas classes de métodos de resolução numéricas de sistemas de equações
lineares:

Métodos directos - Fornecem a solução exacta x com um número finito de ope-


rações aritméticas.

Métodos Iterativos A solução exacta é o limite de uma sucessão de soluções


aproximadas

5.1 Métodos directos


A generalidade destes métodos, baseados no processo de eliminação de Gauss
(Carl Friedrich Gauss, 1777, Brunswick - 1855, Göttingen, Alemanha), permitem
resolver um sistema Ax = b, se A é regular, com 23 n2 (n + 3) operações aritméticas
elementares.
O número de operações aritméticas elementares envolvidas na execução com-
pleta de um algoritmo, designa-se por volume de aritmética e é vulgarmente

67
68 CAPÍTULO 5. SISTEMAS DE EQUAÇÕES LINEARES

expressso em flops, abreviatura de ’elementary floating point operation’. O resul-


tado anterior pode traduzir-se como: o algoritmo de eliminação de Gauss resolve
um sistema de n equações lineares em n incógnitas, regular, com 32 n2 (n + 3) flops.
Na avaliação e comparação de algoritmos numéricos, para além do volume de
aritmética que envolvem, deve analisar-se a propagação de erros que ocorre du-
rante a sua execução. Sendo inevitáveis, estes erros decorrem da implementação
dos algoritmos numéricos em sistemas de aritmética de precisão finita.
Se, para um determinado problema numérico se verifica que a pequenos erros
nos dados correspondem pequenos erros no resultado então diz-se que temos um
problema bem condicionado. Se, pelo contrário, a pequenos erros nos dados
correspondem grandes erros no resultado então diz-se que temos um problema
mal condicionado.
Para o problema que consiste em resolver o sistema de equações lineares Ax =
b, dados A e b, este condicionamento é dado pelo número de condição da matriz
A
cond p(A) = ||A|| p × ||A−1 || p
onde p representa a norma matricial a utilizar.
Dependendo da matriz inversa A−1 , o cálculo de cond p (A) constitui um pro-
blema do mesmo nível de dificuldade do da resolução do sistema Ax = b, pelo
que na generalidade das vezes, apenas é calculada uma estimativa do número de
condição. Matrizes tais que cond p (A) ≈ 1 dizem-se bem condicionadas. Pelo
contrário, se cond p (A) >> 1 a matriz diz-se mal condicionada, sendo que em am-
bos os casos, estas designações constituem uma simplificação da afirmação que a
resolução de um sistema associado a estas matrizes é um problema bem/mal con-
dicionado respectivamente. Em qualquer caso, pode verificar-se que a ordem de
grandeza do número de condição da matriz constitui uma estimativa do número de
algarismos significativos que são perdidos na resolução do sistema. Como exem-
plo, se para uma matriz A se tem cond(A) ≈ 103 , se os elementos de A e de b são
conhecidos de forma exacta, ou pelo menos com a precisão da máquina, e se os
cálculos são efectuados com 16 algarismos significativos, então podemos esperar
13 algarismos significativos correctos no resultado.

5.2 Métodos Iterativos


Teoricamente, para um método iterativo convergente, o erro no resultado final
é tão pequeno quanto se queira. Na prática, quando se utilizam ferramentas de
cálculo com precisão finita, o máximo que podemos esperar é atingir no resultado
a mesma precisão de cálculo da máquina.
Nos métodos iterativos, o volume de aritmética depende do número de itera-
ções a efectuar, até que se cumpra determinado critério de paragem. Neste sentido,
5.2. MÉTODOS ITERATIVOS 69

a comparação com os métodos directos não poderá fazer-se em termos absolutos,


mas apenas dependente do número de iterações a efectuar - naturalmente relacio-
nado com a ordem de convergência do método.
Em termos puramente quantitativos, se a dimensão do sistema Ax = b é grande
e a matriz A é esparsa, i.e. com muitos elementos nulos então, geralmente, um
método iterativo é mais eficiente do que a eliminação de Gauss.

5.2.1 Método de Jacobi


Seja


 a11 x1 + a12 x2 + · · · + a1n xn = b1

a21 x1 + a22 x2 + · · · + a2n xn = b2
Ax = b ⇔

 ···

an1 x1 + an2 x2 + · · · + ann xn = bn
n
⇔ ∑ ai j x j = bi , i = 1 : n
j=1

um sistema a resolver. Para cada uma das n equações, comecemos por isolar no
primeiro membro o elemento diagonal


 a11 x1 = b1 − a12 x2 − a13 x3 − · · · − a1n xn

a22 x2 = b2 − a21 x1 − a23 x3 − · · · − a2n xn

 ···

ann xn = bn − an1 x1 − an2 x2 − · · · − an,n−1 xn−1
n
⇔ aii xi = bi − ∑ ai j x j , i = 1 : n
i6= j=1

Em notação matricial, esta operação consiste em escrever


     
a11 a12 · · · a1n a11 0 · · · 0 0 a12 · · · a1n
 a21 a22 · · · a2n   0 a22 · · · 0   a21 0 · · · a2n 
     
A =  .. . .  =
. . ..   .. . . .  + 
. . ..   .. . . . . .. 
.
 . 
an1 an2 · · · ann 0 0 · · · ann an1 an2 · · · 0
| {z } | {z }
D B

de que resulta

Ax = b ⇔ (D + B)x = b
⇔ Dx = b − Bx
70 CAPÍTULO 5. SISTEMAS DE EQUAÇÕES LINEARES

Se a matriz D é regular, i.e. se são não nulos os coeficientes da diagonal, aii 6=


0, i = 1 : n, podemos escrever

x = D−1 (b − Bx)

ou, em termos das componentes,




 x1 = a111 (b1 − a12 x2 − a13 x3 − · · · − a1n xn )


x2 = a122 (b2 − a21 x1 − a23 x3 − · · · − a2n xn )

 ···

 x = 1 (b − a x − a x − · · · − a
n ann n n1 1 n2 2 n,n−1 xn−1 )
n
1
⇔ xi = (bi − ∑ ai j x j ), i = 1 : n
aii i6= j=1

O método de Jacobi (Carl Jacobi, 1804, Potsdam - 1851, Berlin, Alemanha)


(0) (0) (0)
consiste em tomar x(0) = (x1 , x2 , . . . , xn ) como aproximação inicial da solução
(k) (k) (k)
do sistema e construir a sucessão de vectores x(k) = (x1 , x2 , . . . , xn ) definida
por

x(k) = D−1 (b − Bx(k−1) ), k = 1, . . .


n
1
⇔ xi = (bi − ∑ ai j x j
(k) (k−1)
), i = 1 : n, k = 1, . . .
aii i6= j=1

Exemplo 9 Sejam
   
n2 1 ··· 1 1
 . .   
 1 n2 . . ..   2 
A= .. .. .. , b =  .. 
 . . . 1   . 
1 · · · 1 n2 n

Para a resolução do sistema Ax = b, escolhido o vector x(0) , o método de Jacobi


consiste na relação de recorrência
n
1
= 2 (i − ∑ x j
(k) (k−1)
xi ), i = 1 : n, k = 1, . . .
n i6= j=1

(1)
Tomando n = 9 e x(0) = (0, 0, . . ., 0), obtemos xi = i/n2 = i/81, i = 1 : 9 ou, com
os valores arredondados a 4 casas decimais

x(1) = (0.0123, 0.0247, 0.0370, 0.0494, 0.0617, 0.0741, 0.0864, 0.0988, 0.1111)
5.2. MÉTODOS ITERATIVOS 71

Com estes valores, calcula-se o vector

x(2) = (0.0056, 0.0181, 0.0306, 0.0431, 0.0556, 0.0681, 0.0806, 0.0931, 0.1056)

e repetindo, obtemos

x(3) = (0.0062, 0.0187, 0.0312, 0.0437, 0.0562, 0.0687, 0.0812, 0.0937, 0.1062)

Podemos observar, nos vectores calculados neste exemplo, que em cada uma
das componentes, as diferenças entre valores consecutivos vão diminuindo com
as iterações, aparentando convergir. Não conhecendo a solução exacta do sistema
de equações, podemos testar a solução calculada em termos do resíduo.

Definição 19 Seja xe uma solução aproximada do sistema Ax = b. À diferença

r = Ae
x−b

chama-se resíduo associado a xe.

No caso do exemplo anterior, a cada uma das soluções calculadas, corresponde


o resíduo

r(1) = Ax(1) − b ≈ (0.54, 0.53, 0.52, 0.51, 0.49, 0.48, 0.47, 0.46, 0.44)
r(2) = Ax(2) − b ≈ −10−1 (0.48, 0.48, 0.49, 0.49, . . . , 0.49)
r(3) = Ax(3) − b ≈ −0.48 × 10−3 (1, 1, . . . , 1)

o que permite supor que a sucessão de Jacobi, neste caso, é convergente para a
solução do sistema. O teorema seguinte, permite concluir que assim é.

Teorema 14 É condição suficiente de convergência do Método de Jacobi que a


matriz A seja estritamente diagonal dominante por linhas, i.e.
n
|aii | > ∑ |ai j |, i = 1 : n
i6= j=1

No caso do exemplo anterior, esta condição suficiente de convergência verifica-


se, uma vez que, para qualquer n ∈ N se tem
n
n2 > ∑ 1 = n − 1, i = 1 : n
i6= j=1
72 CAPÍTULO 5. SISTEMAS DE EQUAÇÕES LINEARES

Valores iniciais Em face do teorema anterior, podemos concluir que os valo-


res iniciais, para a iteração de Jacobi, podem tomar-se ao acaso, uma vez que a
convergência é assegurada por uma condição que apenas depende dos valores da
matriz A. No entanto, como a intuição permite antever, haverá escolhas de valores
iniciais que permitirão uma mais rápida aproximação da solução exacta do sistema
do que outros. Na prática, existem situações em que há um vector x(0) candidato
natural a ser o escolhido como aproximação inicial. Esta situação ocorre clara-
mente se para o sistema Ax = b já existe uma solução aproximada, situação esta
que pode resultar, por exemplo
1. De o sistema já ter sido resolvido por um método directo, de que resulta
uma solução afectada de erros.
2. De o sistema resultar de uma perturbação ou actualização nos coeficientes
ou nos termos independentes de um outro sistema, anteriormente resolvido.
Na ausência de uma qualquer outra estimativa inicial para a solução do sis-
tema Ax = b, podemos proceder de forma heurística, baseada no facto de que se
a condição de dominância da diagonal da matriz A é satisfeita com uma folga
razoável, idealmente se
n
|aii | >> ∑ |ai j |, i = 1 : n
i6= j=1

então a solução do sistema Ax = b não será muito afastada da solução do sistema


diagonal
aii xi = bi , i = 1 : n
Desta observação resulta que
(0)
x(0) = D−1 b ⇔ xi = bi /aii , i = 1 : n
constitui, geralmente, uma boa escolha para valores iniciais do método de Jacobi.

Critério de paragem O processo iterativo deve repetir-se até que os vectores


x(k) e x(k−1) estejam suficientemente próximos, por exemplo, um critério de para-
gem poderá ser, em termos da tolerância absoluta, para ε dado
(k) (k−1)
max |xi − xi |≤ε
i=1:n

ou em termos da tolerância relativa,


(k) (k−1)
max |xi − xi |
i=1:n
(k)
≤ε
max |xi |
i=1:n
5.2. MÉTODOS ITERATIVOS 73

ou ainda em termos do resíduo máximo


(k)
max |ri | ≤ ε, r(k) = Ax(k) − b
i=1:n

Outro critério de paragem de utilização corrente, que pode utilizar-se de forma


isolada ou em conjunto com um dos anteriores, é limitar o número de iterações a
um máximo previamente estabelecido.

5.2.2 Método de Gauss-Seidel


O método de Gauss-Seidel (Philipp von Seidel, 1821, Zweibrücken - 1896,
Munich, Alemanha) constitui uma alteração do método de Jacobi, que consiste
(k) (k)
em tomar, no cálculo dos valores xi os valores já actualizados x j , j = 1 : i − 1,
obtendo-se a relação de recorrência
i−1 n
1
= (bi − ∑ ai j x j − ∑ ai j x j
(k) (k) (k−1)
xi ), i = 1 : n, k = 1, . . .
aii j=1 j=i+1

Em notação matricial, este processo pode traduzir-se por decompor a matriz A em


 
a11 a12 · · · a1n
 a21 a22 · · · a2n 
 
A =  .. . . .. 
 . . . 
an1 an2 · · · ann
     
0 0 ··· 0 a11 0 · · · 0 0 a12 · · · a1n
 a21 0 · · · 0   0 a22 · · · 0   0 0 · · · a2n 
     
=  .. . . ..  +  .. . . ..  +  .. . . .. 
 . . .   . . .   . . . 
an1 an2 · · · 0 0 0 · · · ann 0 0 ··· 0
| {z } | {z } | {z }
L D U

de que resulta, se a matriz D é regular,

Ax = b ⇔ (L + D +U )x = b
⇔ Lx + Dx = b −U x
⇔ x = D−1 (b −U x) − D−1 Lx

e o processo iterativo,

x(k) = D−1 (b −U x(k−1) − Lx(k) ), k = 1, . . .


74 CAPÍTULO 5. SISTEMAS DE EQUAÇÕES LINEARES

Exemplo 10 Retomando o exemplo tratado com o método de Jacobi, com o mesmo


vector x(0) = (0, 0, . . ., 0), obtemos

x(1) = (0.0123, 0.0245, 0.0366, 0.0485, 0.0602, 0.0718, 0.0833, 0.0946, 0.1058)

x(2) = (0.0059, 0.0184, 0.0310, 0.0436, 0.0561, 0.0687, 0.0812, 0.0937, 0.1062)

e o mesmo x(3) calculado com o método de Jacobi

x(3) = (0.0062, 0.0187, 0.0312, 0.0437, 0.0562, 0.0687, 0.0812, 0.0937, 0.1062)

Os resíduos correspondentes são

r(1) ≈ (0.53, 0.50, 0.46, 0.42, 0.36, 0.28, 0.20, 0.11, 0)


r(2) ≈ −10−1 (0.26, 0.20, 0.15, 0.10, 0.06, 0.03, 0.01, 0, 0)
r(3) ≈ 10−3 (0.58, 0.34, 0.16, 0.05, −0.01, −0.03, −0.03, −0.01, 0)

Teorema 15 É condição suficiente de convergência do Método de Gauss-Seidel


que a matriz A seja estritamente diagonal dominante por linhas

Esta condição suficiente de convergência, coincidindo com a condição sufici-


ente de convergência do método de Jacobi, justifica que as considerações apre-
sentadas relativamente aos valores iniciais para o processo iterativo, possam ser
transportadas ipsis verbis para o método de Gauss-Seidel.
Relativamente ao critério de paragem, nas aplicações deste método, pode aplicar-
se qualquer um dos critérios apresentados para o método de Jacobi.
Capítulo 6

Equações Diferenciais Ordinárias

Na sua forma mais simples, uma equação diferencial

y′ (x) = f (x)

pode resolver-se integrando ambos os membros. Obtemos a chamada solução


geral Z
y(x) = f (x)dx + c,

onde c representa uma constante que pode determinar-se, produzindo uma solução
particular, fixando o valor de y(x) num dado ponto. A condição

y(x0 ) = y0

designa-se por condição inicial e y0 por valor inicial.


É frequente, nas aplicações práticas das Equações Diferenciais a problemas
de Engenharia, a dinâmica de determinado modelo ser descrita como função da
variável que descreve o próprio modelo. Em termos de descrição matemática do
problema, a sua dinâmica traduz-se nas funções derivadas da função y(x) que o
descreve.

Exemplo 11 É um facto conhecido, em dinâmica de populações, que a taxa de


crescimento do número de indivíduos de uma determinada população é, com ra-
zoável aproximação, directamente proporcional ao número de indivíduos da po-
pulação. Designando por y(t) o número de indivíduos no instante t, a descrição
matemática deste problema traduz-se, sendo k a constante de proporcionalidade,
por
y′ (t) = k ∗ y(t)
É sabido que a função exponencial y(t) = ekt constitui uma solução desta equa-
ção. Como é de verificação imediata, qualquer função da forma y(t) = y0 ∗ ekt

75
76 CAPÍTULO 6. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

satisfaz a equação diferencial dada bem como a condição inicial y(0) = y0 . A


unicidade desta solução decorre do teorema abaixo.

De uma forma geral, para os casos mais simples que envolvem apenas uma va-
riável independente x e apenas uma variável dependente y(x), a descrição do pro-
blema pode traduzir-se na forma de uma equação diferencial ordinária (EDO).
Neste estudo, ficaremos limitados às equações diferenciais ordinárias de primeira
ordem
y′ (x) = f (x, y(x))
A existência e unicidade de solução é assegurada nas condições do teorema se-
guinte.

Teorema 16 Se f (x, y) e ∂∂yf (x, y) são contínuas numa vizinhança de (x0 , y0 ), en-
tão o problema de encontrar y(x) tal que
 ′
y (x) = f (x, y(x))
y(x0 ) = y0

a que se chama Problema do Valor Inicial (PVI), tem solução única, y(x) para x
numa vizinhança de x0 .

6.1 Método de Euler


Dado o PVI 
y′ (x) = f (x, y(x))
,
y(x0 ) = y0
o Método de Euler (Leonhard Euler, 1707, Basel, Suiça - 1783, St Petersburg,
Russia) permite calcular uma tabela de valores {(xi , yi )}ni=0 de uma solução apro-
ximada yh (x), em pontos de abcissas igualmente espaçadas, com passo h cons-
tante, i.e. 
xi = x0 + ih
,
yi = yh (xi )
A função yh (x) define-se, partindo da fórmula da diferença progressiva para a
derivada
y(x + h) − y(x)
y′ (x) ≈
h
Substituindo na equação diferencial dada, obtemos a equação aproximada

y(x + h) − y(x)
≈ f (x, y(x))
h
6.1. MÉTODO DE EULER 77

Definindo yh (x) como a solução exacta da equação aproximada

yh (x + h) − yh (x) = h f (x, yh (x))

Logo, substituindo x por xi ,

yh (xi+1 ) = yh (xi ) + h f (xi , yh (xi ))

Sendo fi = f (xi , yi ), obtemos

yi+1 = yi + h fi , i = 0 : n − 1

relação de recorrência que, juntamente com o valor inicial y0 = y(x0 ) = yh (x0 )


dado, permite calcular a tabela {(xi , yi )}ni=1 .
Exemplo 12 Resolver o PVI
 ′
y (x) = (x + 1)(y(x) + x2 − 2)
y(0) = 2

no intervalo [0, 1], tomando h = 0.1


Sendo polinomial em x e em y, a função f é contínua e tem derivadas con-
tínuas, o que assegura a existência e unicidade de solução exacta deste pro-
blema. O ME permite aproximar os valores de tal solução. Neste caso, x0 = 0
logo xi = ih = 0.1i, y0 = 1 e f (x) = (x + 1)(y + x2 − 2) logo yi+1 = yi + 0.1 fi e
fi = (xi + 1)(yi + x2i − 2). Representando numa tabela os resultados, obtemos

xi yi fi
0 2 0
0, 1 2 0, 011
0, 2 2, 0011 0, 049
0, 3 2, 0060 0, 125
0, 4 2, 0185 0, 250
0, 5 2, 0435 0, 440
0, 6 2, 0875 0, 716
0, 7 2, 1591 1, 103
0, 8 2, 2694 1, 637
0, 9 2, 4331 2, 362
1, 0 2, 6693 3, 339

Erro no Método de Euler No ME, utilizando diferenças progressivas para apro-


ximar derivadas, fizemos
y(x + h) − y(x)
y′ (x) = f (x, y(x)) ≈
h
78 CAPÍTULO 6. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

Da fórmula de Taylor com resto de ordem 2

h2 ′′
y(x + h) ≈ y(x) + hy′ (x) + y (c), c ∈ [x, x + h]
2
de que resulta
y(x + h) − y(x) h
y′ (x) = − y′′ (c)
h | 2{z }
Erro de Truncatura

Notando que y′′ (x) = f ′ (x, y(x)) ≡ d


dx f (x, y(x)), calculado

M = max | f ′ (x, y(x))|


x∈[x0 ,xn ]

obtemos um majorante do Erro de Truncatura


M
|ET | ≤ h
2
Este facto justifica a classificação do ME, como sendo um método de ordem 1, no
sentido da definição seguinte:
Definição 20 Um método diz-se consistente de ordem p > 0 sse

|ET | ≤ kh p

onde k é uma constante que não depende de h, podendo apenas variar com a
função f e as suas derivadas.
Uma conclusão imediata desta análise do erro, é que no ME devemos espe-
rar um erro proporcional a h. Em termos práticos, e para exercícios sem grande
responsabilidade, este facto significa que, sendo m a ordem de grandeza de h,
devemos efectuar os cálculos intermédios e apresentar os resultados do ME com
m + 1 ou m + 2 casas decimais. Na resolução de problemas de grande responsabi-
lidade, os cálculos devem efectuar-se com mais cautela e no ME temos de contar
ainda com o erro propagado, resultante de em cada passo utilizarmos o valor yi ,
já afectado de erro, para calcularmos o valor yi+1 .
Outra conclusão da análise do erro é que a necessidade de resultados mais
precisos conduz a um de dois caminhos:
• Reduzir o passo h, com o consequente aumento do volume de aritmética, e
eventualmente do erro propagado, o que faz com que nem sempre o resul-
tado seja o esperado.

• Utilizar métodos de ordem superior, mais complexos mas mais precisos.


6.2. MÉTODOS DE TAYLOR 79

6.2 Métodos de Taylor


Considerando a fórmula de Taylor, com resto de ordem p + 1

h2 ′′
′ h p (p) h p+1 (p+1)
y(x+h) = y(x)+hy (x)+ y (x)+· · ·+ y (x)+ y (c), c ∈ [x, x+h]
2 p! (p + 1)!
Fazendo p = 1 obtemos o Método de Euler, para valores superiores de p, obtemos
métodos de ordem superior. Tomando p = 2, obtemos

h2 ′′ h3
y(x + h) = y(x) + hy′ (x) + y (x) + y′′′ (c), c ∈ [x, x + h]
2 6
de que resulta o Método de Taylor de ordem 2

h2 ′
yi+1 = yi + h fi + f
2 i
onde fi′ representa o valor y′′ (xi ) = dx
d
f (x, y(x))|x=xi .
Analisando o custo do cálculo deste valor
∂f ∂f
fi′ = (x, y(x))|x=xi + (x, y(x))|x=xi f (xi , yi )
∂x ∂y
No exemplo anterior f (x, y(x)) = (x + 1)(y(x) + x2 − 2),

fi′ = (y(x) + x2 − 2) + 2x(x + 1) + (x + 1)y′ (x)|x=xi = (yi + x2i − 2)(2xi + fi )(xi + 1)

Podemos verificar que este cálculo é frequentemente demasiado pesado, tendo em


conta que constitui apenas um factor de uma parcela de um método aproximado.
Este facto é ainda mais pertinente quando se trata de métodos de ordem superior,
envolvendo mais derivadas da função f . Esta reflexão conduziu a métodos que,
baseados no método de Taylor, permitem evitar o cálculo das derivadas da função
f.

6.3 Métodos de Runge-Kutta


Considerando o Método de Taylor de ordem 2, com uma aproximação de di-
ferenças progressivas para fi′
∂f f (xi+1 , yi+1 ) − f (xi , yi )
fi′ = (x, y(x))|x=xi ≈
∂x h
encontramos uma fórmula em que figura no segundo membro a quantidade yi+1 ,
que constitui precisamente o valor que se pretende calcular. Este facto, introduz a
80 CAPÍTULO 6. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

necessidade de utilização de um método auxiliar, capaz de produzir uma estima-


tiva para yi+1 . Utilizando o ME, obtemos

f (xi+1 , yi + h fi ) − f (xi , yi )
fi′ ≈
h
Substituindo na fórmula de Taylor

h2 f (xi+1 , yi + h fi ) − f (xi , yi )
yi+1 = yi + h fi +
2 h
h
= yi + ( fi + f (xi+1 , yi + h fi ))
2
ou

 F1 = f (xi , yi )
F2 = f (xi+1 , yi + hF1 )

yi+1 = yi + 2h (F1 + F2 )

que constitui o método de Runge-Kutta de ordem 2 (Carle Runge, 1856, Bremen


- 1927, Göttingen, Alemanha), (Martin Kutta, 1867, Byczyna, Polónia - 1944,
Fürstenfeldbruck, Alemanha)
Pode mostrar-se que ainda assim, i.e. apesar da aproximação na fórmula de
Taylor, este método é de ordem 2

|ET | ≤ kh2

onde k é uma constante relacionada com as derivadas parciais de 2a ordem de


f (x, y. Por curiosidade
 
h2 1 ∂2 f ∂2 f 1 ∂2 f 2 ∂ f ∂ f ∂f 2
ET ≈ − + f+ f − −( ) f
4 2 ∂x2 ∂x∂y 2 ∂y2 ∂x ∂y ∂y (xi ,yi )

Por processos análogos, podemos construir métodos de ordem superior. Para


o caso p = 4 obtemos


 F1 = f (xi , yi )


 F2 = f (xi + 2h , yi + h2 F1 )
F3 = f (xi + 2h , yi + h2 F2 )



 F = f (xi+1 , yi + hF3 )
 4
yi+1 = yi + h6 (F1 + 2F2 + 2F3 + F4 )
Método de Runge-Kutta de ordem 4
6.3. MÉTODOS DE RUNGE-KUTTA 81

Nota: Os métodos de RK de ordem p ≥ 5, são menos utilizados, mesmo sendo


mais precisos, porque envolvem um maior número de cálculos de f (x, y) por
passo. Por exemplo, para p = 5 são necessários 6 cálculos de f (x, y) por passo,
enquanto que, para p = 2, 3, 4 a função é avaliada p vezes por passo.

Exemplo 13
Runge-Kutta ordem 2 Solução exacta y(x)
xi yi F1 F2 xi yi
0 2 0 0, 0110 0 2
0, 1 2, 0006 0, 0116 0, 0500 0, 1 2, 00037
0, 2 2, 0036 0, 0524 0, 1286 0, 2 2, 00325
0, 3 2, 0127 0, 1335 0, 2604 0, 3 2, 01209
0, 4 2, 0324 0, 2693 0, 4640 0, 4 2, 03161
0, 5 2, 0690 0, 4786 0, 7630 0, 5 2, 06818
0, 6 2, 1311 0, 7858 1, 1895 0, 6 2, 13033
0, 7 2, 2299 1, 2238 1, 7861 0, 7 2, 22945
0, 8 2, 3804 1, 8367 2, 6108 0, 8 2, 38079
0, 9 2, 6028 2, 6842 3, 7424 0, 9 2, 60479
1, 0 2, 9241 1, 0 2, 92901

Runge-Kutta ordem 4
xi yi F1 F2 F3 F4
0 2 0 0, 00262 0, 00276 0, 01130
0, 1 2, 00037 0, 01141 0, 02696 0, 02785 0, 05179
0, 2 2, 00325 0, 05190 0, 08543 0, 08753 0, 13260
0, 3 2, 01209 0, 13272 0, 19066 0, 19457 0, 26817
0, 4 2, 03161 0, 26825 0, 35891 0, 36548 0, 47724
0, 5 2, 06818 0, 47727 0, 61154 0, 62195 0, 78460
0, 6 2, 13033 0, 78453 0, 97689 0, 99276 1, 22333
0, 7 2, 22945 1, 22307 1, 49293 1, 51654 1, 83799
0, 8 2, 38078 1, 83740 2, 21103 2, 24559 2, 68914
0, 9 2, 60478 2, 68808 3, 20128 3, 25132 3, 85982
1, 0 2, 92900
82 CAPÍTULO 6. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
Parte II

Programação Linear

83
Capítulo 7

Formulação de problemas

7.1 Conceitos Fundamentais


Enquadramento do problema

O desenvolvimento actual e recente das organizações, desde pequenas a gran-


des empresas ou corporações multinacionais, pequenas organizações locais (clu-
bes de bairro, juntas de freguesia) a organizações governamentais (ministérios,
segurança social, CIA, NASA,...) até organizações trans-nacionais globais (ONU,
UE, Organização Internacional do Comércio, FMI,...) em geral com dimensão e
complexidade crescente, conduz forçosamente a um aumento da distribuição de
tarefas e, normalmente, a um aumento da distribuição e hierarquização de compe-
tências e de responsabilidades.
Esta especialização crescente, introduz dois problemas:

1. A tendência para cada uma das componentes de uma organização, crescer


de forma autónoma, com objectivos próprios e estratégias distintas;

2. O aparecimento de conflitos na repartição dos recursos disponíveis e a difi-


culdade de alocar esses recursos às várias componentes da organização de
uma forma que seja globalmente vantajosa

A necessidade de encontrar a melhor solução para problemas deste tipo


constitui o objectivo da Investigação Operacional
As origens da ciência a que hoje se chama Investigação Operacional, são re-
motas e constituem todas as tentativas efectuadas para aplicar um procedimento
científico na busca de solução para problemas das organizações. No entanto, o
início da actividade científica com este nome (Operations Research) ocorre du-
rante a II Guerra Mundial, quando alguns matemáticos foram chamados pelos

85
86 CAPÍTULO 7. FORMULAÇÃO DE PROBLEMAS

serviços militares, ingleses e norte-americanos, para fazer investigação em ope-


rações militares. O trabalho desenvolvido foi determinante nas batalhas aéreas
sobre a Inglaterra, nas batalhas navais do Atlântico Norte e nas campanhas dos
arquipélagos do Pacífico.

Problemas da IO
Consideram-se problemas no âmbito da IO:

• Modelação das organizações

• Formulação e análise probabilística ou estocástica de processos

• Modelos de previsão

• Optimização, contínua ou discreta

• Metodologias de simulação

• Grafos e análise de redes

• Modelos de gestão de projectos

• Teoria de jogos

• Modelos multi-critério de apoio à decisão

• Sistemas de gestão de recursos (aprovisionamento, distribuição e optimiza-


ção de rotas)

Principais orientações metodológicas


• Descrever o problema de forma científica, rigorosa, baseada em noções ma-
temáticas e/ou estatística

• Formular os processos decisórios, investigando as diversas alternativas pos-


síveis, os sistemas de comparação, de negociação e de aplicação das esco-
lhas feitas

• Formular cuidadosamente o sistema em que se baseia o problema estudado,


caracterizando as funções de entrada e de saída, descrevendo as suas rela-
ções e identificando fronteiras e fontes de incerteza

• Explorar as alternativas possíveis, pesquisando as que melhor satisfazem os


objectivos e os critérios enunciados
7.2. FORMULAÇÃO DE PROBLEMAS 87

• Fornecer apoios decisórios com qualidade científica, para diversas linhas de


evolução de factores não controláveis, estabelecendo estratégias flexíveis

• Apoiar os processos de negociação, geralmente complexos, essenciais à


concretização das soluções estudadas

7.2 Formulação de problemas


O apoio aos problemas de decisão implica, frequentemente, o estabelecimento
de soluções de compromisso entre utilizações, em competição, para os mesmos
recursos. Esta classe de problemas, cujo estudo passa, cada vez mais frequente-
mente, por uma abordagem matemática, designa-se por Optimização.
A forma canónica de um problema de optimização consiste em

Maximizar 
ou F(x1 , . . . , xN )

Minimizar

satisfazendo
g1 (x1 , . . ., xN ) = 0
..
.
gM (x1 , . . ., xN ) = 0

• x1 , . . ., xN são as variáveis de decisão que representam as incógnitas em


domínios preestabelecidos

• g1 , . . . , gM são as restrições a satisfazer pela solução de modo que seja rea-


lizável (solução possível)

• F(x1 , . . ., xN ) é a função objectivo, que representará uma medida da vanta-


gem ou desvantagem de cada solução

Definição 21 Os máximos ou mínimos procurados, dizem-se condicionados pe-


las restrições e pelos domínios definidos.

Definição 22 Se as restrições forem independentes entre si, o número N − M de


variáveis que não ficam determinadas pelas restrições, designa-se por número de
graus de liberdade.

Exemplo 14 Uma empresa de produtos químicos possui r reactores, capazes de


produzir um determinado produto e l linhas de produção onde instalar cada um
dos reactores. Em determinada época do ano, pretende-se obter uma produção
88 CAPÍTULO 7. FORMULAÇÃO DE PROBLEMAS

total de T toneladas de produto. A capacidade de produção e os custos de pro-


dução variam com o reactor e com a linha de produção escolhida para a sua
instalação. Pretende-se estabelecer um plano para a escolha da linha de produ-
ção onde instalar cada um dos reactores, de forma a cumprir a cota de produção
com um custo mínimo.
Designando por
ci j o custo de produção do reactor i instalado na linha j.
pi j produção do reactor i instalado na linha j.
Ri j variáveis de decisão. Ri j = 1 se o reactor i é instalado na linha j. Ri j = 0
caso contrário.
Formulação matemática do problema:
Escolher Ri j , i = 1, . . . , r, j = 1, . . ., l de forma a
r l
Min C = ∑ ∑ ci j Ri j
i=1 j=1
r l
s.a. ∑ ∑ p i j Ri j ≥ T
i=1 j=1
l
∑ Ri j = 1, i = 1, . . ., r
j=1
Ri j = 0 ou 1
Exemplo 15 (Transporte de mercadorias) Uma empresa de concentrado de to-
mate possui 3 centros de empacotamento do produto, localizados junto dos cen-
tros de produção de tomate e geograficamente dispersos. Perto dos grandes cen-
tros de consumo, em locais distantes uns dos outros, esta empresa possui 4 arma-
zéns de redistribuição. Porque o preço do transporte representa a maior fatia da
despesa em distribuição do produto, a direcção de planeamento da empresa pre-
tende estabelecer um programa de transporte que possibilite minimizar os custos.
Os dados do problema são a produção de cada um dos 3 centros de empacota-
mento, a capacidade de cada um dos 4 armazéns e o custo de transporte de cada
uma das 3 origens para cada um dos 4 destinos. Os valores, em contentores e
euros por contentor, apresentam-se na seguinte tabela
Custo de transporte
Armazém
1 2 3 4 Produção
1 466 523 645 876 75
empacot. 2 325 461 609 719 125
3 959 628 388 658 100
Armazen. 80 65 70 85
7.2. FORMULAÇÃO DE PROBLEMAS 89

O problema pode apresentar-se de forma esquemática, representando a rede


de transportes juntamente com os respectivos custos

A1 80
466
75 P1 523
645
876

A 65
2

325
461
125 P2 609
719
A 70
3

959 628

388
100 P3
658
A4 85

Figura 7.1: Rede de transportes de concentrado de tomate dos centros de empaco-


tamento Pi para os armazéns A j e os custos respectivos, em euros por contentor.
Os valores ao lado dos centros Pi e dos armazéns A j representam as respectivas
capacidades de produção e de armazenamento, em contentores.

Para a formulação do problema em termos de um problema de optimização,


começemos por definir as variáveis de decisão
xi j - Número de contentores a transportar diariamente de Pi , i = 1, 2, 3 para
A j , j = 1, 2, 3, 4
a função objectivo, i.e. a minimização do custo de transporte
Min. C = ∑3i=1 ∑4j=1 ci j xi j
onde ci j representa o custo em euros, de transporte de um contentor do centro Pi
para o armazém A j . Neste caso, a função objectivo é

Min. C = 466x11 + 523x12 + 645x13 + 876x14 + 325x21 + 461x22 + 609x23


+ 719x24 + 959x31 + 628x32 + 388x33 + 658x34
90 CAPÍTULO 7. FORMULAÇÃO DE PROBLEMAS

e as restrições
x11 + x12 + x13 + x14 = 75
x21 + x22 + x23 + x24 = 125
x31 + x32 + x33 + x34 = 100
x11 + x21 + x31 = 80
x12 + x22 + x32 = 65
x13 + x23 + x33 = 70
x14 + x24 + x34 = 85
xi j ≥ 0

Exemplo 16 (Determinação de uma dieta) Um nutricionista pretende estabele-


cer uma dieta a partir de 5 alimentos. Impõem-se que a dieta tenha um teor
vitamínico de pelo menos 30 unidades de vitamina A, 40 unidades de vitamina B
e 20 unidades de vitamina C por Kg. Pretende-se minimizar o custo de produção
da dieta, conhecidos os teores vitamínicos e os custos de cada um dos 5 ingredi-
entes. Na tabela seguinte, apresentam-se os teores vitamínicos em unidades/Kg e
o custo em euros/Kg de cada um.

Ingrediente
1 2 3 4 5
vitamina A 3 4 5 0 5
B 5 1 9 9 5
C 9 8 0 8 0
Custo 4 5 7 8 5

Formulação do problema:

Variáveis de decisão xi - quantidade do alimento i a incluir na dieta

Função objectivo Min. 4x1 + 5x2 + 7x3 + 8x4 + 5x5

s. a.
3x1 + 4x2 + 5x3 + 5x5 ≥ 30
5x1 + x2 + 9x3 + 9x4 + 5x5 ≥ 40
9x1 + 8x2 + 8x4 ≥ 20
xi ≥ 0
Capítulo 8

Programação Linear

8.1 Forma Canónica


Designa-se por Programação Linear ou Optimização Linear o conjunto de
técnicas que permite resolver um problema de optimização, sendo lineares quer a
função objectivo F(x) quer as restrições gi (x), i = 1, . . ., M, M ≥ 1. Isto é, na sua
forma canónica, um problema de PL com M restrições e N variáveis de decisão,
M, N ≥ 1, pode escrever-se na forma

Max (Min) F = c1 x1 + c2 x2 + · · · + cN xN
a11 x1 + a12 x2 + · · · + a1N xN = b1
a21 x1 + a22 x2 + · · · + a2N xN = b2
···
aM1 x1 + aM2 x2 + · · · + aMN xN = bM
xi ≥ 0, i = 1, 2, . . ., N
com
x j variável de decisão j

c j peso da variável de decisão j na função objectivo

F função objectivo

bi disponibilidade do recurso i

ai j recurso i gasto por unidade da variável de decisão j


Se um dado problema de PL não se apresentar nesta forma, é possível reduzi-
lo a um problema equivalente com a forma canónica:
• Os problemas de Min e de Max são equivalentes

91
92 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

Max F=−Min(−F)

Max
M

0
y

−M
Min

bastando multiplicar a função objectivo por −1, para se passar de um pro-


blema para outro

• Quando as restrições constituem inequações, com a introdução de variá-


veis de folga artificiais, é possível reescrevê-las na forma de equações, por
exemplo:
5x1 + 2x2 − 6x3 ≥ 0
x1 , x2 , x3 ≥ 0
equivale a
5x1 + 2x2 − 6x3 = x4 , x4 ≥ 0
x1 , x2 , x3 ≥ 0
ou
5x1 + 2x2 − 6x3 − x4 = 0
x1 , x2 , x3 , x4 ≥ 0
no caso
5x1 + 2x2 − 6x3 ≤ 0
x1 , x2 , x3 ≥ 0
obtemos
5x1 + 2x2 − 6x3 = −x4 , −x4 ≤ 0
x1 , x2 , x3 ≥ 0
8.1. FORMA CANÓNICA 93

ou
5x1 + 2x2 − 6x3 + x4 = 0
x1 , x2 , x3 , x4 ≥ 0
• As condições de não negatividade xi ≥ 0 explicam-se pelo facto de, na ge-
neralidade dos problemas, as variáveis de decisão xi representarem quanti-
dades não negativas. Por exemplo: um salário, o tempo de execução de uma
determinada tarefa, um consumo de energia. No caso de surgir uma variável
que só pode assumir valores não positivos
xi ≤ 0
bastará substitui-la pelo seu simétrico xi = −xi , logo
xi ≥ 0
o que implica trocar os sinais nos coeficientes ci e a ji , j = 1, . . ., M. Por
exemplo
Min F = 8x1 − 3x2 + 6x3
s.a. x1 + x2 = 6
2x1 − 7x2 + 5x3 = −8
x1 , x2 ≥ 0, x3 ≤ 0
equivale a
Min F = 8x1 − 3x2 − 6x3
s.a. x1 + x2 = 6
2x1 − 7x2 − 5x3 = −8
x1 , x2 , x3 ≥ 0
No caso de uma variável do problema poder assumir valores positivos, ne-
gativos ou nulo, pode substituir-se pela diferença de duas outras variáveis
não negativas
xi = r − s, r, s ≥ 0, xi ∈ R
Exemplo
Min F = 8x1 − 3x2 + 6x3
s.a. x1 + x2 = 6
2x1 − 7x2 + 5x3 = −8
x1 , x2 ≥ 0, x3 ∈ R
fazendo
x3 = x4 − x5
obtemos
Min F = 8x1 − 3x2 + 6x4 − 6x5
s.a. x1 + x2 = 6
2x1 − 7x2 + 5x4 − 5x5 = −8
x1 , x2 , x4 , x5 ≥ 0
94 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

8.2 Resolução Gráfica


Exemplo 17 O Padaria Madrugada, fabrica dois tipos de pão, carcaça e re-
gueifa. O gerente pretende determinar as quantidades que deve produzir de cada
um dos produtos de forma a maximizar o lucro. Por Kg de produto vendido, o
lucro obtido com a carcaça e com a regueifa é, respectivamente 5 e 6 euros. Para
estudar o problema, analisaram-se as restrições diárias ao funcionamento da pa-
daria, tendo-se concluído que se pode dispor de um máximo de 120Kg de farinha,
de 22h de tempo de máquina e de 16h de mão-de-obra. Por kilo de pão carcaça
produzida são necessários 0.50Kg de farinha, 0.6h de máquina e 0.3h de mão-de-
obra. No caso da regueifa, estes valores são 0.30Kg, 0.5h e 0.5h respectivamente.
Determinar a produção óptima.
Formulação:

Variáveis de decisão xc , xr quantidade, em Kg, de carcaça e de regueifa, respec-


tivamente, a produzir diariamente.

f. objectivo Max L = 5xc + 6xr

s.a. 0.5xc + 0.3xr ≤ 120


0.6xc + 0.5xr ≤ 22
0.3xc + 0.5xr ≤ 16
xc , xr ≥ 0

Na figura 8.1 representam-se geometricamente as restrições do problema e a


função objectivo, no plano das variáveis de decisão.
Geometricamente, analisando o espaço de soluções admissíveis, verifica-se
que a solução óptima constitui o vértice X ∗ , determinado pelas condições
 
0.6xc + 0.5xr = 22 xc = 20

0.3xc + 0.5xr = 16 xr = 20

Conclusão: Fabrique-se diariamente, 20Kg de regueifa e outro tanto de car-


caça. O lucro obtido será L∗ = 5x∗c + 6x∗r = 220 euros. Este plano de produção es-
gota a capacidade das máquinas e de mão-de-obra da padaria, mas torna os 120Kg
de farinha largamente excedentários. Pelo que se recomenda, alternativamente,

1. Reduzir as encomendas de farinha, para um consumo diário de 0.5x∗c +


0.3x∗r = 16Kg

2. Estudar a capacidade de escoamento de produto, em face de um aumento de


produção, e a eventual alteração na função lucro. Investir em mais maqui-
naria e mão-de-obra.
8.2. RESOLUÇÃO GRÁFICA 95

xc

L crescente

0.3xc+0.5xr=16 5xc+6xr=L

X*

S 0.6xc+0.5xr=22
0.5xc+0.3xr=120

(restrição redundante)

0
0 xr
5xc+6xr=L*
L=0

Figura 8.1: Restrições, função objectivo, conjunto admissível e solução óptima


para o problema da ’Padaria Madrugada’.
96 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

Definição 23

Região de admissibilidade (ou conjunto admissível) S = conjunto dos pontos de


RN que satisfazem as restrições
Solução admissível X ∈ S é solução admissível
Solução Óptima X ∗ ∈ S : F(x∗ ) ≤ F(X ), ∀X ∈ S

8.3 Propriedades do conjunto de soluções admissí-


veis
Algumas propriedades da região de admissibilidade de um problema de PL,
permitem ’atalhar caminho’ optimizando o processo de busca da Solução Óp-
tima.

Teorema 17 A região de admissibilidade S de um problema de PL é um poliedro


convexo


r2


V1
V
2 r1

⋅ V3

S
⋅ V5

Convexo
⋅ V4
Não−convexo
r3

Figura 8.2: A região de admissibilidade é um poliedro convexo.

Definição 24 Diz-se de um conjunto que é convexo sse contem o segmento de


recta que une quaisquer dois dos seus pontos. Isto é

A, B ∈ S ⇒ A + t ∗ (B − A) ∈ S ∀t ∈ [0, 1]
8.3. PROPRIEDADES DO CONJUNTO DE SOLUÇÕES ADMISSÍVEIS 97

Definição 25 Vértice (ou ponto extremo) de um conjunto convexo, é um ponto


que não pertence a nenhum segmento de recta que una dois outros pontos do
conjunto.

Num problema de PL com N variáveis (de decisão e de folga) e M < N restri-


ções (equações), o facto de termos M − N graus de liberdade permite seleccionar
M −N variáveis, designadas por variáveis não básicas (vnb), atribuir-lhes valores
arbitrários e resolver as equações de restrição em ordem às restantes N variáveis,
designadas por variáveis básicas (vb).

Exemplo 18 Retomando o exemplo da ’Padaria Madrugada’, que escrito na forma


canónica toma a forma de um problema de PL em 5 variáveis e com 3 restrições

Max L = 5xc + 6xr


s.a. 0.5xc + 0.3xr + x1 = 120
0.6xc + 0.5xr + x2 = 22
0.3xc + 0.5xr + x3 = 16
xc , xr , xi ≥ 0

é elementar resolver as equações de restrição em ordem a x1 , x2 , x3 , passando


os termos correspondentes a xc e a xr para segundo membro. Logo, x1 , x2 , x3
constitui uma base para uma solução admissível, x1 , x2 e x3 são as vb dessa
solução e xc e xr vnb.

Definição 26 Designa-se por solução básica admissível (sba) uma solução ad-
missível em que as vnb tomam o valor nulo.

No exemplo anterior, xc = xr = 0, x1 = 120, x2 = 22, x3 = 16 constitui uma


sba

Teorema 18 Um ponto X constitui uma sba dum problema de PL sse corresponde


a um vértice da região de admissibilidade.

Teorema 19 Existe um número finito de sba de um problema de PL, i.e. a região


de admissibilidade S tem um número finito de vértices.

Teorema 20 O valor óptimo de um problema de PL, se existe e é finito, corres-


ponde a uma sba, i.e. ocorre num vértice da região de admissibilidade.

Com base nestes resultados, podemos concluir que para encontrar o óptimo de
um problema de PL, de entre todas as soluções admissíveis (em número infinito)
é suficiente procurar entre as sba (em número finito).
98 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

8.4 Algoritmo Simplex


O método Simplex, é um método iterativo, isto é constituído por uma sucessão
de operações que devem repetir-se até que um determinado critério esteja satis-
feito. Neste caso, o critério de paragem do MS baseia-se no seguinte teste:

8.4.1 Teste de optimalidade


Dado um problema de PL admitindo pelo menos uma solução óptima, se para
uma sba não existe uma sba adjacente melhor, então esta sba é solução óptima.

Definição 27 Para um problema de PL com N variáveis, cada um dos vértices


da região de admissibilidade é definido por N restrições. Dois vértices da região
de admissibilidade dizem-se adjacentes sse partilham N − 1 restrições. Analoga-
mente, duas sba dizem-se adjacentes se partilham N − 1 vb.

Assim, passar de uma sba para uma sba adjacente melhor, consiste em pro-
curar uma vnb que ao passar a básica permita melhorar a função objectivo. A vb
que passa a vnb é aquela que corresponde a passar para o vértice adjacente com
uma taxa de variação maior da função objectivo. Para fazer a identificação desta
variável, é necessário ter a função objectivo escrita em função das vnb.

Exemplo 19 Retomando o problema anterior, a sba xc = xr = 0, x1 = 120, x2 =


22, x3 = 16 é obviamente não óptima, uma vez que corresponde ao valor L = 0.
Analisando as taxas de variação da f.o. em função das vnb xc e xr , respectiva-
mente
∂L ∂L
=5 e =6
∂xc ∂xr
verifica-se que incrementar xr é mais vantajoso, no sentido de um crescimento
mais rápido de L, logo esta variável deve passar a básica. Para esta variável
passar a básica, é necessário passar uma das vb a não básica, logo que passe a ter
o valor nulo. Passar a uma sba adjacente implica que a outra vnb xc permaneça
nb, isto é com o valor nulo. Nestas condições, a análise das restrições

x1 = 120 − 0.5xc − 0.3xr


x2 = 22 − 0.6xc − 0.5xr
x3 = 16 − 0.3xc − 0.5xr

permite verificar que o maior valor que xr pode tomar é

min(120/0.3, 22/0.5, 16/0.5) = 32


8.4. ALGORITMO SIMPLEX 99

de modo a manter a admissibilidade da solução. Este valor corresponde a anular


x3 que passa a vnb. O problema deve reescrever-se na forma

Max L = 192 + 1.4xc − 12x3


s.a. x1 = 110.4 − 0.32xc + 0.6x3
x2 = 6 − 0.3xc + x3
xr = 32 − 0.6xc − 2x3
xc , xr , xi ≥ 0

Repetir o processo, a partir da nova sba xc = x3 = 0, x1 = 110.4, x2 = 6, xr = 32


e L = 192.
Como é imediato verificar, incrementar x3 piora a solução, no sentido de que
produz um valor menor para a f.o., mas L cresce com xc , pelo que é necessário
passar esta variável a vb, tomando o valor

xc = min{110.4/0.32, 6/0.3, 32/0.6} = 20

a que corresponde anular x2 que passa a vnb. O problema passa a tomar a forma

Max L = 220 − 4.66x2 − 7.34x3


s.a. x1 = 104 + 1.07x2 − 0.47x3
xc = 20 − 3.33x2 + 3.33x3
xr = 20 − 2x2 − 4x3
xc , xr , xi ≥ 0

Repetir o processo, a partir da nova sba x2 = x3 = 0, x1 = 104, xc = xr = 20 e


L = 220. Como é imediato verificar, acrescentar qualquer uma das variáveis x2
e x3 à base, incrementando-as, iria piorar o valor de L, pelo que o critério de
optimalidade está verificado, sendo esta a solução óptima.

Este processo constitui a essência do método Simplex, e pode resumir-se no


seguinte algoritmo.

8.4.2 Algoritmo
Inicialização Identificar uma sba inicial

Repetir a construção de uma sba melhor

Nova vb Escrever a f.o. F como função das vnb e determinar aquela que
corresponde à maior taxa de variação (positiva para um problema de
Max e negativa para um problema de Min), isto é aquela que tem maior
(menor) coeficiente.
100 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

Nova vnb Resolver as equações de restrição em ordem às vb e determinar


aquela que impõem o menor crescimento à nova vb (mantendo a ad-
missibilidade da nova solução). Passar a vnb aquela que se anula nesta
restrição.
Enquanto existir uma vnb que incrementada permita melhorar a solução.

Tal como na generalidade dos algoritmos iterativos, em que se recorre a um


processo repetitivo, também no AS as operações efectuadas se podem resumir
numa sucessão de quadros, expondo os resultados intercalares e a solução óptima
calculada. Este processo é exposto com recurso ao mesmo exemplo utilizado
anteriormente, e resulta no quadro seguinte

vb xc xr x1 x2 x3 bi
x1 0.5 0.3 1 0 0 120
x2 0.6 0.5 0 1 0 22
x3 0.3 0.5 0 0 1 16
−L 5 6 0 0 0 0

A última linha resulta de escrever a f.o. na forma

−L + 5xc + 6xr = 0

Os coeficientes das vnb na f.o., designados por custos marginais, medem a varia-
ção da f.o. por cada unidade de cada uma das vnb. As restantes linhas representam
os coeficientes das variáveis e os segundos membros das equações das restrições.
A identificação de uma sba pode fazer-se pela localização de uma sub-matriz
identidade neste quadro. Neste exemplo (xc , xr , x1 , x2 , x3 ) = (0, 0, 120, 22, 16)
é a sba inicial.
Para um problema de Max (Min), a existência de uma sba adjacente, melhor do
que a solução actual, é revelada pela existência de, pelo menos, um custo marginal
positivo (negativo). A vnb a seleccionar para incorporar na base identifica-se pela
que tem maior (menor) custo marginal. Neste caso, xr é a vnb a transitar para vb.
A identificação da vb a passar para vnb faz-se pelo teste do quociente mínimo,
identificando a linha, e a única vb x j que nela figura, a que corresponde o menor
quociente bi /ci j .

vb xc xr x1 x2 x3 bi Quocientes
x1 0.5 0.3 1 0 0 120 120
0.3 = 400
22
x2 0.6 0.5 0 1 0 22 0.5 = 44
16
← x3 0.3 0.5 0 0 1 16 0.5 = 32 ←
−L 5 6 0 0 0 0

8.4. ALGORITMO SIMPLEX 101

Esta linha vai utilizar-se para actualizar o quadro simplex, funcionando o coe-
ficiente da vnb a passar a vb nesta linha como ’pivot’, juntamente com o processo
de eliminação de Gauss. Isto é, fazendo a posição pivot passar a unitária, dividindo
todos os elementos da linha pelo pivot, e fazendo nulos todos os outros elementos
da coluna pivot, subtraindo elemento a elemento a linha pivot multiplicada pelo
coeficiente actual.
Neste caso, este processo produz

vb xc xr x1 x2 x3 bi Quocientes
x1 0.32 0 1 0 -0.6 110.4 110.4
0.32 = 345
6
← x2 0.3 0 0 1 -1 6 0.3 = 20 ←
32
xr 0.6 1 0 0 2 32 0.6 = 53.33
−L 1.4 0 0 0 -12 -192

Repetindo, obtemos

vb xc xr x1 x2 x3 bi
x1 0 0 1 -1.067 0.467 104
xc 1 0 0 3.333 -3.333 20
xr 0 1 0 -2 4 20
−L 0 0 0 -4.667 -7.333 -220

quadro este, que apresenta a solução óptima, uma vez que todos os custos margi-
nais são negativos.
Os passos do algoritmo podem resumir-se no seguinte:

1. Obter uma sba inicial

2. Verificar se esta solução é óptima

• Se todos os custos marginais são negativos, para um problema de Max


• Se todos os custos marginais são positivos, para um problema de Min

Se a solução é óptima então pára o algoritmo. Caso contrário

3. A variável a entrar na base é a que tem maior custo marginal, num problema
de Max. Idem, mas negativo para Min.

4. Determinar a variável a entrar na base:

• dividir os termos independentes pelos coeficientes positivos da variá-


vel a entrar na base
102 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

• a linha a que corresponde o menor quociente é a linha pivot - a variável


desta linha passa a vnb
• se todos os coeficientes forem negativos a solução é ilimitada
5. Manipular as linhas do quadro simplex, efectuando operações elementares
sobre matrizes, de modo a obter um coeficiente unitário para o pivot e o
valor nulo para os restantes coeficientes desta coluna.
6. voltar a 2.

8.4.3 Determinação de uma sba inicial


O problema da obtenção de uma sba inicial, uma vez que depende de propri-
edades da região de admissibilidade, está intrinsecamente relacionado com o tipo
de restrições do problema.
1. Quando todas as restrições constituem desigualdades do tipo ≤, a escolha
das variáveis de folga para vb, implica considerar todas as variáveis de de-
cisão como vnb, logo nulas, i.e. no espaço das variáveis de decisão, a sba
inicial corresponde à origem.

≤ ≥ =
r r r
1 1
1

r r r
3 3
3

S r2
S r
2

S
r
2

r
4
r4

2. A existência de restrições do tipo ≥ ou = colocam a origem fora da região


de admissibilidade. Por exemplo, considere-se a restrição
3x1 + 2x2 ≥ 7, x1 , x2 ≥ 0
a introdução de uma variável de folga, permite obter a equação
3x1 + 2x2 − f1 = 7, x1 , x2 , f1 ≥ 0
No entanto, a variável de folga f1 não pode figurar como básica na sba
inicial, porque tomaria o valor f1 = −7.
8.4. ALGORITMO SIMPLEX 103

Este problema pode resolver-se introduzindo variáveis artificiais no problema.


No exemplo anterior, a introdução da variável artificial a1 permite escrever

3x1 + 2x2 − f1 + a1 = 7, x1 , x2 , f1 , a1 ≥ 0

Esta última equação é equivalente à restrição inicial se, na solução final, a va


a1 tomar o valor nulo. Uma forma de garantir este resultado é introduzir um
problema em que a solução, se existir, garanta que todas as variáveis artificiais
são nulas.

Método das duas fases Consiste este método em começar (Fase I) por resolver
um problema de minimização com a função objectivo substituída pela soma das
va e com as restrições acrescidas das va. Para um problema com r va, a f.o. é

Min S = a1 + · · · + ar

Devido à não negatividade das va, o mínimo da f.o. obtém-se quando todas as va
forem nulas. Nesse caso, as outras variáveis constituem uma sba inicial para o
problema dado. Se não for possível encontrar uma solução deste problema, com
as va todas nulas, então o problema original não tem solução.
A Fase II consiste na resolução do problema inicial, a partir do quadro final da
Fase I, eliminadas as va.

Exemplo 20 Uma refinaria de petróleo pode misturar 3 tipos de crude para pro-
duzir gasolina normal e super. Existem disponíveis duas unidades de mistura.
Para cada ciclo de produção, a unidade mais antiga usa 5 barris de crude A,
7 barris de crude B e 2 barris de crude C para produzir 9 tanques de gasolina
normal e 7 de gasolina super. A unidade de mistura mais recente usa 3 barris de
crude A, 9 de B e 4 de C para produzir 5 tanques de gasolina normal e 9 de super.
Devido a contratos já assinados, a refinaria tem de produzir, pelo menos, 500
tanques de normal e 300 tanques de super. Existem disponíveis 1500 barris de
crude A, 1900 de crude B e 1000 de C. Por cada tanque de gasolina normal pro-
duzida, a refinaria ganha 6000 euros, enquanto que, por tanque de super, ganha
9000 euros.
O problema consiste em determinar como devem ser utilizadas as reservas
de crude e as unidades misturadoras, de forma a, respeitando os compromissos
assumidos, maximizar o lucro da refinaria.

Formulação:
v.d. xa , xr - Número de Ciclos de produção de gasolina, a utilizar a unidade
misturadora antiga e recente, respectivamente.
Os dados do problema podem resumir-se na tabela
104 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

Crude Produção
A B C N S
Misturadora A 5 7 2 9 7
R 3 9 4 5 9
Prod. Mínima 500 300
Dispon. 1500 1900 1000
Lucro 6000 9000
O lucro esperado, em milhares de euros, traduz-se na f.o.
L = 6(9xa + 5xr ) + 9(7xa + 9xr ) = 117xa + 111xr
Logo, o problema pode formular-se como
Max L = 117xa + 111xr
s.a 9xa + 5xr ≥ 500 Prod. Min. Normal
7xa + 9xr ≥ 300 Prod. Min. Super
5xa + 3xr ≤ 1500 Disp. Crude A
7xa + 9xr ≤ 1900 Disp. Crude B
2xa + 4xr ≤ 1000 Disp. Crude C
xa , xr ≥ 0
Relativamente às restrições de domínio das variáveis de decisão, pode pôr-se a
questão, cuja resposta não está explícita no enunciado, de saber se as unidades de
mistura têm ou não de funcionar em pleno. Em caso afirmativo, teremos de con-
siderar as variáveis de decisão como inteiras não negativas, isto é xa , xr ∈ N. Esta
questão não é aprofundada no contexto deste exercício, mas serve para destacar
que uma prévia descrição completa do problema, é essencial para uma formulação
fiel, que permita encontrar uma solução que efectivamente possa resolver o pro-
blema. Este problema será resolvido mais tarde, no âmbito do capítulo dedicado
à programação linear inteira, com a restrição de variáveis inteiras. Por enquanto,
o problema pode resolver-se, utilizando o método simplex, apenas com as restri-
ções de não negatividade das variáveis de decisão. Na forma canónica, o problema
traduz-se por
Max L = 117xa + 111xr
s.a 9xa + 5xr − f1 = 500
7xa + 9xr − f2 = 300
5xa + 3xr + f3 = 1500
7xa + 9xr + f4 = 1900
2xa + 4xr + f5 = 1000
xa , xr , fi ≥ 0, i = 1, . . ., 5
A existência de variáveis de folga com sinal negativo nas restrições, impede a
sua utilização como variáveis básicas de uma sba inicial (porque estas variáveis
8.4. ALGORITMO SIMPLEX 105

alcançariam valores negativos, logo não admissíveis nesta solução). O problema


pode resolver-se introduzindo variáveis artificiais nas respectivas equações. Neste
caso, as variáveis a1 e a2 nas duas primeiras equações. Para que este problema
artificial tenha restrições equivalentes às restrições do problema de partida, é ne-
cessário que as variáveis artificiais tomem o valor nulo na solução deste problema.
Este objectivo consegue-se impondo que as variáveis artificiais são não negativas
e que a sua soma é nula, isto é a soma atinge o valor mínimo possível. Assim, o
problema a resolver na fase I consiste em

Min S = a1 + a2
s.a 9xa + 5xr − f1 + a1 = 500
7xa + 9xr − f2 + a2 = 300
5xa + 3xr + f3 = 1500
7xa + 9xr + f4 = 1900
2xa + 4xr + f5 = 1000
xa , xr , a1 , a2 , fi ≥ 0, i = 1, . . . , 5

o que conduz ao quadro inicial Simplex inicial

Fase I - Quadro Inicial


vb xa xr f1 f 2 f 3 f 4 f 5 a1 a2 bi Q
a1 9 5 -1 0 0 0 0 1 0 500 55,56
a2 7 9 0 -1 0 0 0 0 1 300 42,86
f3 5 3 0 0 1 0 0 0 0 1500 300
f4 7 9 0 0 0 1 0 0 0 1900 271,43
f5 2 4 0 0 0 0 1 0 0 1000 500
−S 0 0 0 0 0 0 0 1 1 0
−S -16 -14 1 1 0 0 0 0 0 -800

A última linha é necessária para preparar o quadro para o teste de optima-


lidade, isto é escrever a função objectivo em função das variáveis não básicas.
Tratando-se de um problema de Min., a existência de coeficientes negativos na
função objectivo, revela que esta sba é não óptima. A coluna correspondente à
variável xa é escolhida para pivot, por corresponder ao coeficiente de menor valor.
A linha pivot é determinada pelo teste do quociente mínimo, neste caso a linha
correspondente à variável a2 que sairá da base. A primeira iteração do Simplex
completa-se efectuando as operações elementares sobre matrizes, descritas no al-
goritmo. Neste caso obtemos, com os valores arredondados a duas casas decimais,
o quadro
106 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

Fase I - Quadro II
vb xa xr f1 f2 f 3 f 4 f 5 a1 a2 bi Q
a1 0 -6,57 -1 1,29 0 0 0 1 -1,29 114,29 88,89
xa 1 1,29 0 -0,14 0 0 0 0 0,14 42,86
f3 0 -3,43 0 0,71 1 0 0 0 -0,71 1285,71 1800
f4 0 0 0 1 0 1 0 0 -1 1600 1600
f5 0 1,43 0 0,29 0 0 1 0 -0,29 914,29 3200
−S 0 6,57 1 -1,29 0 0 0 0 2,29 -114,29
A existência de um coeficiente negativo na última linha, revela que a variável
f2 deve entrar na base e o teste do quociente, que consiste na determinação do
menor dos valores dos quocientes dos termos independentes bi pelos coeficientes
positivos da variável f2 , revela que deve ser a variável a1 a sair da base.
Fase I - Quadro III
vb xa xr f1 f2 f3 f4 f5 a1 a2 bi Q
f2 0 -5,11 -0,78 1 0 0 0 0,78 -1 88,89
xa 1 0,56 -0,11 0 0 0 0 0,11 0 55,56
f3 0 0,22 0,56 0 1 0 0 -0,56 0 1222,22
f4 0 5,11 0,78 0 0 1 0 -0,78 0 1511,11
f5 0 2,89 0,22 0 0 0 1 -0,22 0 888,89
−S 0 0 0 0 0 0 0 1 1 0
O teste de optimalidade, aplicado ao último quadro, onde na última linha
não existe qualquer coeficiente negativo, revela que a solução correspondente,
constitui a solução óptima do problema da fase I. Uma vez que nesta solução
a∗1 = a∗2 = S∗ = 0, podemos iniciar a fase II com a solução básica obtida, umam
vez que esta constitui uma solução admissível para o problema dado. O quadro
inicial da fase II obtém-se retirando ao último quadro as colunas correspondentes
às variáveis artificiais e substituindo a linha correspondente à função objectivo
pela do problema original. Também aqui é necessário anular os coeficientes das
variáveis básicas na função objectivo, afim de poder efectuar o teste de optimali-
dade.
Fase II - Quadro Inicial
vb xa xr f1 f2 f3 f4 f5 bi Q
f2 0 -5,11 -0,78 1 0 0 0 88,89
xa 1 0,56 -0,11 0 0 0 0 55,56 100
f3 0 0,22 0,56 0 1 0 0 1222,22 5500
f4 0 5,11 0,78 0 0 1 0 1511,11 295,65
f5 0 2,89 0,22 0 0 0 1 888,89 307,69
−L 117 111 0 0 0 0 0 0
−L 0 46 13 0 0 0 0 -6500
8.4. ALGORITMO SIMPLEX 107

As iterações seguintes conduzem aos quadros

Fase II - Quadro II
vb xa xr f1 f2 f3 f4 f5 bi Q
f2 9,2 0 -1,8 1 0 0 0 600
xr 1,8 1 -0,2 0 0 0 0 100
f3 -0,4 0 0,6 0 1 0 0 1200 2000
f4 -9,2 0 1,8 0 0 1 0 1000 555,56
f5 -5,2 0 0,8 0 0 0 1 600 750
−L -82,8 0 22,2 0 0 0 0 -11100

Fase II - Quadro III


vb xa xr f1 f2 f3 f4 f5 bi Q
f2 0 0 0 1 0 1 0 1600
xr 0,78 1 0 0 0 0,11 0 211,11 271,43
f3 2,67 0 0 0 1 -0,33 0 866,67 325
f1 -5,11 0 1 0 0 0,56 0 555,56
f5 -1,11 0 0 0 0 -0,44 1 155,56
−L 30,67 0 0 0 0 -12,33 0 -23433,3
e
Fase II - Quadro IV
vb xa xr f1 f2 f3 f4 f5 bi
f2 0 0 0 1 0 1 0 1600
xa 1 1,29 0 0 0 0,14 0 271,43
f3 0 -3,43 0 0 1 -0,71 0 142,86
f1 0 6,57 1 0 0 1,29 0 1942,86
f5 0 1,43 0 0 0 -0,29 1 457,14
−L 0 -39,43 0 0 0 -16,71 0 -31757,1

O teste de optimalidade revela que a solução correspondente a este quadro


constitui a solução óptima do problema dado, isto é x∗r = f4∗ = 0 e
 ∗

 f2 = 1600


 x∗a = 271, 43
f3∗ = 142, 86



 f ∗ = 1942, 86
 1∗
f5 = 457, 14

para um lucro óptimo de L∗ = 31757, 1 milhares de euros.


Podemos concluir que o plano de produção a que corresponde o lucro máximo,
corresponde a não utilizar a misturadora recente e a utilizar a misturadora mais
108 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

antiga em 271 ciclos de produção completos e mais um ciclo com cerca de 43%
da capacidade da máquina. Este plano, esgota a disponibilidade de crude B e deixa
142,86 barris de crude A e 457,14 de crude C como excedentes. Relativamente
aos compromissos de produção de gasolina, este plano produz 1942,86 tanques
de gasolina normal e 1600 tanques de gasolina super a mais do que os mínimos
estabelecidos por contrato.
Outra conclusão imediata destes resultados constitui o facto de que a aquisição
de mais crude do tipo B, resultaria num aumento de lucro, pelo menos até a um
nível correspondente ao esgotamento de um dos outros dois tipos de crude.
Exemplo 21 Resolver o seguinte problema
Min C = 4x1 + 8x2 + 3x3
s.a x1 + x2 ≥ 2
2x1 + x3 ≥ 5
xi ≥ 0, i = 1, 2, 3
A fase I consiste em resolver o problema
Min S = a1 + a2
s.a x1 + x2 − f1 + a1 = 2
2x1 + x3 − f2 + a2 = 5
xi , fi , ai ≥ 0
que conduz aos seguintes quadros Simplex
Fase I - Quadro Inicial
vb x1 x2 x3 f1 f2 a1 a2 bi Q
a1 1 1 0 -1 0 1 0 2 2
a2 2 0 1 0 -1 0 1 5 25
−S 0 0 0 0 0 1 1 0
−S -3 -1 -1 1 1 0 0 -7

Fase I - Quadro II
vb x1 x2 x3 f1 f2 a1 a2 bi Q
x1 1 1 0 -1 0 1 0 2
a2 0 -2 1 2 -1 -2 1 1 0,5
−S 0 2 -1 -2 1 3 0 -1

Fase I - Quadro III


vb x1 x2 x3 f1 f 2 a1 a2 bi Q
x1 1 0 0,5 0 -0,5 0 0,5 2,5
f1 0 -1 0,5 1 -0,5 -1 0,5 0,5
−S 0 0 0 0 0 1 1 0
8.5. FORMULAÇÃO MATRICIAL DO SIMPLEX 109

Uma vez que na solução encontrada, as variáveis artificiais são nulas, a∗1 =
a∗2= 0, esta solução fornece uma sba inicial para o problema dado. A fase II con-
siste em aplicar o algoritmo simplex a partir do último quadro da Fase I, depois
de retiradas as colunas correspondentes às variáveis artificiais e de substituir os
custos marginais pelos coeficientes da função objectivo do problema dado. Sendo
os custos reduzidos, por definição, os coeficientes das vnb na f.o., pode ser ne-
cessário anular coeficientes de vb na última linha deste quadro inicial, antes de
efectuar o teste de optimalidade.

Fase II - Quadro Inicial


vb x1 x2 x3 f1 f2 bi
x1 1 0 0,5 0 -0,5 2,5
f1 0 -1 0,5 1 -0,5 0,5
−C 4 8 3 0 0 0
−C 0 8 1 0 2 -10

Tratando-se de um problema de Min e uma vez que neste quadro não há custos
marginais negativos, a solução obtida é óptima, isto é

x∗1 = 2, 5, x∗2 = x∗3 = 0, C∗ = 10

8.5 Formulação Matricial do Simplex


Utilizando notação matricial, o problema de Pl na forma canónica

Max F = c1 x1 + c2 x2 + · · · + cN xN
s.a a11 x1 + a12 x2 + · · · + a1N xN = b1
a21 x1 + a22 x2 + · · · + a2N xN = b2
···
aM1 x1 + aM2 x2 + · · · + aMN xN = bM
xi ≥ 0, i = 1, 2, . . ., N

pode escrever-se como


Max F = cT x
s.a Ax = b
x≥0
com c = (ci , c2 , . . ., cN )T , x = (x1 , x2 , . . . , xN )T , b = (b1 , b2 , . . . , bM )T e A =
(ai, j )M,N
i, j=1 . Agrupando os elementos relativos às vb e às vnb, nestes vectores

x = (xB , xD )T , c = (cB , cD )T , A = (B, D)


110 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

o problema toma a forma

Max F = cTB xB + cTD xD


s.a BxB + DxD = b
xB , xD ≥ 0

Se B é uma matriz regular, resolver as equações de restrição em ordem às vb


corresponde a ter
xB = B−1 (b − DxD )
Uma vez que para uma solução básica as variáveis não básicas tomam o valor
nulo, i.e. xD = 0, obtemos para as vb

xB = B−1 b

Para escrever a f.o. em função das vnb, é necessário substituir xB

F = cTB B−1 (b − DxD ) + cTD xD = cTB B−1 b + (cTD − cTB B−1 D)xD

logo
F − cTB B−1 b = rxD ,
onde r = cTD −cTB B−1 D é o vector dos custos marginais. O teste de optimalidade e a
escolha da variável a entrar na base xe , pode fazer-se por análise dos coeficientes
deste vector r. A variável a sair da base xs , será a que corresponde ao menor
coeficiente positivo Qi = B−1 bi /B−1 ai,e onde ai,e são os coeficientes de xe na
matriz D. O processo de entrada e saída da base, das variáveis xe e xs , pode fazer-
se simplesmente pela troca dos respectivos elementos dos vectores e das colunas
das matrizes. No quadro seguinte, este processo é representado por uma ’ nas
respectivas designações.

Quadro Inicial

xTD xTB bi

xB D B b

−F cTD cTB 0
8.5. FORMULAÇÃO MATRICIAL DO SIMPLEX 111

Iterações

x′D T x′B T bi Qi

B′ −1 b
xB B′ −1 D I B′ −1 b B′ −1 ai,e

−F cTD = 0 cTB = r −cTB B′ −1 b

Esta formulação do método Simplex permite traduzir o algoritmo em lingua-


gem matricial:

Algoritmo Simplex Revisto

1. Definir uma sba inicial.

2. Calcular os custos marginais


T T −1
r = c′D − c′B B′ D

3. Verificar se esta solução é óptima

• Se r ≤ 0, para um problema de Max


• Se r ≥ 0, para um problema de Min

Se a solução é óptima então pára o algoritmo. Caso contrário

4. A variável xe a entrar na base é a que tem maior(menor) custo marginal,


num problema de Max(Min).

5. Calcular Qi = B′ −1 bi /B′ −1 ai,e e determinar o menor coeficiente positivo,


correspondente à variável a sair da base.

6. Substituir a coluna de xs por xe em B e determinar B′ −1

7. voltar a 2.
112 CAPÍTULO 8. PROGRAMAÇÃO LINEAR

Exemplo 22 Para o mesmo exemplo tratado anteriormente, relativamente à sba


inicial as variáveis básicas são as variáveis artificiais e as variáveis não básicas
são as variáveis de decisão, isto é
xB = [ f1 , f2 , f3 ]T , xD = [xc , xr ]T
As matrizes relativas às restrições, correspondentes a estas variáveis são
     
1 0 0 0.5 0.3 120
B =  0 1 0  = I, D =  0.6 0.5  , b =  22  ,
0 0 1 0.3 0.5 16

cTB = [0, 0, 0], cTD = [5, 6]


logo, r = cTD = [5, 6]. A solução é não óptima, porque se trata de um problema de
max e r tem coeficientes positivos. A variável xe a entrar na base é xr , porque tem
o maior coeficiente. O vector Q = [120/0.3, 22/0.5, 16/0.5] = [400, 44, 32] tem
o elemento positivo mínimo correspondente a xs = f3 que é a variável a sair da
base. Logo, em B e em D, as colunas correspondentes a f3 e a xr devem permutar,
assim como os elementos correspondentes nos vectores xB e xD .
xB = [ f1 , f2 , xr ]T , xD = [xc , f3 ]T
   
1 0 0.3 0.5 0
B =  0 1 0.5  = I, D =  0.6 0  ,
0 0 0.5 0.3 1
cTB = [0, 0, 6], cTD = [5, 0]
Invertendo B, obtemos  
1 0 −0.6
B−1 =  0 1 −1 
0 0 2
Logo,  
0.5 0
r = [5, 0] − [0, 0, 6]B−1  0.6 0  = [1.4, −12]
0.3 1
e  
110.4
B−1 b =  6 
32
o que permite verificar que xc deve entrar da base. Neste caso
   
.5 .32
B−1 ae = B−1  .6  =  .3 
.3 .6
8.5. FORMULAÇÃO MATRICIAL DO SIMPLEX 113

logo Q = [110.4/0.32, 6/0.3, 32/0.6] = [345, 20, 53.33] tem o elemento positivo
mínimo correspondente a xs = f2 . Logo, em B e em D, as colunas f2 e xc devem
permutar.
xB = [ f1 , xc , xr ]T , xD = [ f2 , f3 ]T
   
1 0.5 0.3 0 0
B =  0 0.6 0.5  , D =  1 0  ,
0 0.3 0.5 0 1
cTD = [0, 0], cTB = [0, 5, 6]
Invertendo B, obtemos
 
1 −1.067 0.467
B−1 =  0 3.333 −3.333 
0 −2 4

Logo,  
0 0
r = [0, 0] − [0, 5, 6]B−1  1 0  = [−4.667, −7.333]
0 1
O teste de optimalidade permite verificar que esta se trata da solução óptima,
logo  ∗   
f1 104
x∗B =  x∗c  = B−1 b =  20 
x∗r 20
e f2∗ = f3∗ = 0, produzindo um lucro máximo L∗ = cTB B−1 b = 220

Esta notação matricial do Simplex, é particularmente útil na análise dos re-


sultados de um problema de PL. A Análise de Pós-Optimização ou Análise de
Sensibilidade tem como objectivos:

• determinar a sensibilidade da solução óptima a pequenas variações dos pa-


râmetros;

• identificar parâmetros cuja impresição pode ter grande influência na deter-


minação da s.o.
114 CAPÍTULO 8. PROGRAMAÇÃO LINEAR
Capítulo 9

Análise de Pós-Optimização

9.1 Objectivos
Utilizado o AS para resolver um problema de PL, para além da interpretação
da solução, pode pôr-se a questão de saber até que ponto é que esta permanece
como solução se algum dos parâmetros do problema for alterado. Ou pode pôr-
se a questão de saber quais os parâmetros do problema que mais influenciam o
resultado óptimo obtido. Esta questão pode ser particularmente pertinente, por
exemplo, relativamente aos termos independentes nas restrições bi , quando estes
representam limites de determinados recursos, acerca dos quais foram tomadas
decisões, e que poderão ser objecto de investimento, se da alteração de tais va-
lores resultar uma solução óptima do problema com vantagem significativa. A
introdução de novas variáveis ou de novas restrições, pode também pôr a ques-
tão de saber se a solução se mantém. Estas questões designam-se por análise de
sensibilidade ou análise de pós-optimização.
De entre as alterações possíveis num modelo de PL, avultam pela sua frequên-
cia:
• As alterações nos termos independentes das restrições, traduzindo altera-
ções de recursos disponíveis
• As alterações nos coeficientes da f.o., traduzindo alterações de preços
• As alterações nos coeficientes das restrições, traduzindo alterações do pro-
cesso produtivo
• A introdução de novas restrições, traduzindo novos constrangimentos
O quadro do algoritmo simplex permite, sem necessidade de refazer os cálcu-
los, verificar as alterações na solução em face de uma destas alterações no pro-
blema.

115
116 CAPÍTULO 9. ANÁLISE DE PÓS-OPTIMIZAÇÃO

9.2 Variações nos termos independentes das restri-


ções
Resolvido um problema de PL, obtida uma solução óptima, podemos estudar
a relação entre o valor óptimo obtido F ∗ e os valores bi dos limites estabelecidos
para as disponibilidades dos recursos.

xc

0.3xc+0.5xr=16

X* 0.5xc+0.3xr=120

S 0.6xc+0.5xr=23
0.6xc+0.5xr=22

0
0 x
r
5xc+6xr=L*

Figura 9.1: Variações nos termos independentes das restrições

Em muitos casos, pode haver possibilidade de aumentar a quantidade disponí-


vel bi do recurso i, nesses casos, importa justificar em termos económicos, se esse
aumento trará vantagem em termos do benefício F. Consequentemente, qualquer
informação acerca do contributo dos recursos para o valor do objectivo F, pode ser
de extrema importância. A medida de tal contributo é dada pelos Preços Sombra.

Definição 28 Ao coeficiente y∗i da variável de folga xi na f.o., chama-se preço


sombra do recurso i. Este coeficiente mede o incremento da f.o. F por unidade
de (um pequeno) incremento do recurso bi .
9.2. VARIAÇÕES NOS TERMOS INDEPENDENTES DAS RESTRIÇÕES117

No exemplo anterior, como se pode verificar, incrementar b2 de uma unidade,


resulta em
  ∗
0.6xc + 0.5xr = 23 xc = 7/0.3 ≈ 23.333

0.3xc + 0.5xr = 16 x∗r = 18

e L∗ ≈ 224.667, que representa um incremento de 4.667 relativamente ao valor


L∗ obtido com o limite b2 = 22. Podemos concluir, neste exemplo, que por cada
hora de tempo de máquina que se possa dispor a mais, o lucro aumentará cerca
de y∗2 = 4.67 euros. Analogamente, por cada hora de mão-de-obra disponível,
teremos um incremento de lucro de y∗3 = 7.33 euros.
Confirmando a análise que já havíamos feito, o preço sombra y∗1 = 0 significa
que o incremento da quantidade de farinha disponível, não se traduz em aumento
de lucro. Este facto é devido à restrição ser satisfeita, pela solução óptima, com
uma desigualdade <, significando que existe um excedente do respectivo recurso.
Pelo contrário, as duas outras restrições são satisfeitas com igualdades.

Definição 29 Designam-se por restrições activas, aquelas que são verificadas


com igualdade pela solução óptima. Os recursos associados a estas restrições,
i.e. os recursos que são esgotados pela solução óptima, designam-se por recursos
escassos. As restrições para as quais se verifica uma desigualdade, designam-se
por não-activas e os respectivos recursos, i.e. aqueles que possuem preço sombra
nulo, designam-se por recursos livres.

Naturalmente, como a análise da figura 9.1 permite evidenciar, estas varia-


ções nos termos independentes das restrições estão limitadas a pequenos valores.
Grandes variações nestes termos independentes, podem produzir alterações signi-
ficativas na região de admissibilidade das restrições. As restrições de não nega-
tividade das variáveis impõem que a solução básica se mantenha admissível sse
xB = B′ −1 b ≥ 0

Exemplo 23 Do último quadro do simplex, no exemplo anterior,

vb xc xr f1 f2 f3 bi
f1 0 0 1 -1.067 0.467 104
xc 1 0 0 3.333 -3.333 20
xr 0 1 0 -2 4 20
−L 0 0 0 -4.667 -7.333 -220

i.e.  
1 −1.067 0.467
B−1 =  0 3.333 −3.333 
0 −2 4
118 CAPÍTULO 9. ANÁLISE DE PÓS-OPTIMIZAÇÃO

Como se pode verificar, alterando o valor b2 do tempo de máquina, para b2 = 40


obtemos    
120 84.79
xB = B−1  40  =  79.99 
16 −16
logo, não admissível. Pelo contrário, com b2 = 30 obtemos a solução admissível
 
95.46
xB =  46.66 
4
Uma vez que o vector r = c′D T − c′B T B′ −1 D, dos custos marginais, não de-
pende do vector b, dos termos independentes das equações de restrição, então esta
solução mantém-se óptima.

9.3 Variações nos coeficientes da f.o.


Como a análise da figura 9.2 permite ilustrar, pequenas variações nos coefici-
entes da f.o., geralmente produzindo pequenas variações no valor óptimo da solu-
ção F ∗ , podem não produzir qualquer alteração nos valores óptimos das variáveis
(de decisão e de folga).
O teste de optimalidade permite verificar se a solução óptima se mantém. De
facto, da formulação matricial do Simplex, resulta que, com os novos valores dos
coeficientes ci , a s.b. se mantém óptima se
T T −1
r = c′D − c′B B′ D≤0
para um problema de máximo (r ≥ 0 para um problema de mínimo). No exemplo
anterior, suponhamos que a f.o. seria alterada para L = 5xc + 7xr . Relativamente
à última iteração efectuada, verifica-se que a matriz
 
−1.667 0.467
B−1 D =  3.333 −3.333 
−2 4
i.e. é constituída pelas colunas, no último quadro do Simplex, correspondentes às
variáveis não básicas. Logo, neste caso
r = [0, 0] − [0, 5, 7]B−1D = [−2.667, −11.333]
pelo que concluímos que a solução se mantém óptima, com alteração nos preços
sombra, que passam para y∗2 = 2.667 e y∗3 = 11.333. Neste caso, o lucro óptimo
aumenta para
L∗ = cB ∗ x∗B = [0, 5, 7] ∗ [140, 20, 20]T = 240,
9.3. VARIAÇÕES NOS COEFICIENTES DA F.O. 119

x
c

0.3x +0.5x =16


c r

X* 0.5xc+0.3xr=120

S 0.6x +0.5x =22


c r

0
0 x
r
5xc+6xr=L*

Figura 9.2: Variações nos coeficientes da f.o.


120 CAPÍTULO 9. ANÁLISE DE PÓS-OPTIMIZAÇÃO

No entanto, para um maior desequilíbrio entre os custos marginais, por exem-


plo, para L = 5xc + 10xr obtemos r = [3.333, −23.333] logo esta solução é não
óptima. O problema pode resolver-se retomando o último quadro do problema
anterior e recomeçar as iterações

9.4 Variações nos coeficientes das restrições


Neste caso, é necessário distinguir duas situações.

Coeficientes de vnb x
x 2 Coeficientes de vb
B

X*
*
X

xD x
1

Figura 9.3: Variações nos coeficientes das restrições

Coeficientes das vnb Uma vez que são alterados elementos da matriz D, a solu-
ção mantém-se óptima sse satisfaz o teste de optimalidade, i.e. com a nova
matriz D′
r = cD T − cB T B−1 D′ ≥ 0
Caso contrário, continuar o Simplex a partir do último quadro.
Coeficientes das vb Neste caso são alterados elementos da matriz B logo, para
além do teste de optimalidade, a solução deve manter-se admissível. Com a
nova matriz B′ , estas condições traduzem-se por
−1
r = cD T − cB T B′ D≥0
e
−1
B′ b≥0
Caso contrário, recuar até uma solução possível e continuar o Simplex.
9.5. INTRODUÇÃO DE NOVAS VARIÁVEIS E DE NOVAS RESTRIÇÕES121

No exemplo anterior, suponhamos que por razões legais, o fabrico da regueifa


passa a exigir mais tempo de máquina, seja 0.6 horas máquina por kilo de regueifa
o novo valor. Sendo xr a variável associada à quantidade de regueifa a produzir,
e uma vez que esta variável é básica na s.o. encontrada xB = [ f1 , xc , xr ], esta
alteração traduz-se na nova matriz
 
1 0.5 0.3
B =  0 0.6 0.6 
0 0.3 0.5
Calculado o vector dos custos marginais,

r = [0, 0] − [0, 5, 6]B−1 D = [−5.833, −5.0]

verifica-se que a solução

xB = B−1 b = [106.667, 11.667, 25.0]

se mantém óptima. Neste caso, apenas é alterado o lucro óptimo, que baixa para
CB ∗ xB = L∗ = 208.33, bem como os preços sombra, que passam para y∗2 = 5.833
e y∗3 = 5.
Para uma maior alteração deste coeficiente, seja 0.7 o novo coeficiente, obte-
mos r = [−7.778, −1.111] e xB = [111.111, −2.222, 33.333] logo não admis-
sível. Recuando no quadro Simplex para este exemplo, na iteração anterior a
solução básica é xB = [ f1 , f2 , xr ] = [110.4, 6, 32], a que correspondem as matri-
zes    
1 0 0.3 0.5 0
B =  0 1 0.7  , D =  0.6 0 
0 0 0.5 0.3 1
obtemos xB = B−1 b = [110.4, −0.4, 32], pelo que teremos de recuar até à primeira
iteração e refazer as iterações.

9.5 Introdução de novas variáveis e de novas restri-


ções
Se no problema for introduzida uma nova variável, seja xn , a solução básica
mantém-se óptima se,
rn = cn − cB ∗ B−1 ∗ an ≥ 0
onde an é o vector dos coeficientes de xn nas restrições e cn o coeficiente na f.o..
No caso do exemplo em estudo, suponhamos que o gerente da Padaria estuda
a possibilidade de produzir ’pão de leite’, para o que necessita, por Kg de pão a
122 CAPÍTULO 9. ANÁLISE DE PÓS-OPTIMIZAÇÃO

produzir, de 0.7Kg de farinha, 0.4h de máquina e 0.3h de mão-de-obra. O lucro


esperado é de 7 euros por Kg de pão produzido.

rn = 7 − [0, 5, 6]B−1 ∗ [0.7, 0.4, 0.3] = 2.933

Para um valor de lucro de 3 euros, obtemos r = −1.067, logo teremos de continuar.


Capítulo 10

Dualidade

A noção de Dualidade permite analisar um problema de programação linear


sob dois pontos de vista - a visão primal e a visão dual do problema. Estas duas
visões, permitem a criação de dois problemas distintos, o Primal e o Dual, ambos
com a mesma solução. A existência de dois problemas distintos, com a mesma
solução, introduz a vantagem óbvia de que se pode resolver aquele que for mais
fácil, ou mais rápido, para encontrar esta solução. Outra vantagem da Dualidade,
com a introdução do Algoritmo Dual, consiste na análise de pós-optimização, no-
meadamente na resolução de um problema já optimizado, acrescentado de novas
restrições.

10.1 Definições
No problema Dual os preços sombra assumem o papel de variáveis de decisão.
De forma análoga, as variáveis de decisão do Problema Primal, constituem os
preços sombra do Dual.
Por definição, os preços sombra constituem os coeficientes das variáveis de
folga na função objectivo. Já vimos que o preço sombra yi traduz o incremento na
função objectivo, por unidade de aumento do recurso i. Este valor pode interpretar-
se como o custo pela não utilização de unidades adicionais do respectivo recurso,
ou o preço pago pela limitação do recurso em causa.
No caso do problema da Padaria Madrugada

Variáveis de decisão xc , xr quantidade, em Kg, de carcaça e de regueifa, respec-


tivamente, a produzir diariamente.

f. objectivo Max L = 5xc + 6xr

123
124 CAPÍTULO 10. DUALIDADE

s.a. 0.5xc + 0.3xr ≤ 120 Farinha


0.6xc + 0.5xr ≤ 22 máquina
0.3xc + 0.5xr ≤ 16 mão-de-obra
xc , xr ≥ 0
o problema pode pôr-se na óptica da utilização dos recursos, isto é procurando
minimizar os custos de utilização dos recursos. Neste ponto de vista, procura-se
o valor óptimo dos recursos existentes.
No problema dual, a garantia de que os recursos se estão a valorizar numa
situação de admissibilidade, é dada pelas condições de que deve compensar pro-
duzir cada um dos produtos. Ou seja as restrições estão associadas aos produtos
e não aos bens de consumo. Ora compensa produzir, cada um dos produtos, se as
receitas dessa produção compensam os custos associados.
No exemplo, podemos pensar que compensa produzir «pão carcaça» se o custo
da utilização de farinha, tempo de máquina e mão-de-obra é compensado pela
receita obtida na produção deste produto. O que é o mesmo que garantir que a
utilização dos bens deve ter um valor mínimo igual à receita marginal associada
ao produto. Neste caso
0.5y1 + 0.6y2 + 0.3y3 ≥ 5
Estas ideias estão na base da definição seguinte
Definição 30 [Problema Primal/Dual]
Para o problema de PL

Max Z(x) = c1 x1 + c2 x2 + · · · + cn xn
s.a a11 x1 + a12 x2 + · · · + a1n xn ≤ b1
Max Z(x) = cx
a21 x1 + a22 x2 + · · · + a2n xn ≤ b2
⇔ s.a Ax ≤ b
···
x≥0
am1 x1 + am2 x2 + · · · + amn xn ≤ bm
x j ≥ 0, j = 1, 2, . . ., n

designado por problema Primal, define-se o seu problema Dual por

Min W (x) = b1 y1 + b2 y2 + · · · + bm ym
s.a a11 y1 + a21 y2 + · · · + am1 ym ≥ c1
Min W (y) = by
a12 y1 + a22 y2 + · · · + am2 ym ≥ c2
⇔ s.a yA ≥ c
···
y≥0
a1n y1 + a2n y2 + · · · + amn ym ≥ cn
yi ≥ 0, i = 1, 2, . . ., m
10.1. DEFINIÇÕES 125

Exemplo 24

Max L = 5xc + 6xr


Min W = 120y1 + 22y2 + 16y3
s.a. 0.5xc + 0.3xr ≤ 120
s.a. 0.5y1 + 0.6y2 + 0.3y3 ≥ 5
0.6xc + 0.5xr ≤ 22 ⇆
0.3y1 + 0.5y2 + 0.5y3 ≥ 6
0.3xc + 0.5xr ≤ 16
y1 , y2 , y3 ≥ 0
xc , xr ≥ 0
| {z }
| {z } Dual
Primal
Analogamente, ao problema (Primal)

Min Z(x) = cx
s.a Ax ≥ b
x≥0

associamos o problema Dual

Max W (y) = by
s.a yA ≤ c
y≥0

Desta forma, sendo simétrica esta definição, verifica-se que o problema Dual
de um problema Dual é o primal. Isto é, cada um dos dois problemas é simulta-
neamente Primal e Dual um relativamente ao outro.
Outra consequência desta definição é que os parâmetros dos dois problemas,
Primal e Dual são os mesmos. Em particular, os coeficientes de uma restrição no
Primal, constituem os coeficientes de uma variável no Dual e vice-versa. Assim
como os coeficientes da f.o. num dos problemas, constituem os termos indepen-
dentes das restrições do outro problema.
Correspondência entre parâmetros
Primal Dual
restrição i ↔ variável i
f. obj. ↔ termos ind.
Com esta correspondência de parâmetros, é natural esperar encontrar uma re-
lação entre as soluções do Primal e do Dual. Das restrições dos dois problemas

Ax ≤ b
yA ≥ c
126 CAPÍTULO 10. DUALIDADE

dado que se x e y são soluções admissíveis então x ≥ 0 e y ≥ 0 logo



yAx ≤ yb = W (y)
yAx ≥ cx = Z(x)
e
Z(x) ≤ yAx ≤ W (y)
Isto é, para quaisquer s.a. x e y do Primal e do Dual, respectivamente, o valor da
f.o. do Primal, para um problema de maximização, é ≤ que o valor da f.o. do
Dual.
No caso de o problema admitir solução óptima, é válido o seguinte resultado:

Teorema 21 É condição necessária e suficiente que x∗ e y∗ sejam soluções ópti-


mas do Primal e do Dual que

Z(x∗ ) = W (y∗ )

Dadas as soluções admissíveis x e y, Primal e Dual, relativamente às v.b.,


utilizando as definições,

Z(x) = cB xB = cB B−1 b
W (y) = yb

logo
Z(x) = W (y) ⇐⇒ cB B−1 b = yb
Para mostrar que a solução desta equação y = cB B−1 é a s.o. do Dual, é suficiente
verificar o critério de admissibilidade.

yA ≥ c ⇐⇒ cB B−1 ∗ [B, D] ≥ [cB , cD ]


⇐⇒ [cB , cB B−1 D] ≥ [cB , cD ]
⇐⇒ cB B−1 D ≥ cD
⇐⇒ r = cD − cB B−1 D ≤ 0

que constitui o critério de optimalidade do Primal (Max).


Isto é, concluímos que a optimalidade do Primal r ≤ 0 é equivalente à admis-
sibilidade yA ≥ c do Dual.

10.2 Algoritmo Simplex Dual


O algoritmo Simplex (Primal), consiste em transitar entre soluções básicas
admissíveis até encontrar uma que satisfaça o critério de optimalidade. Existem
10.2. ALGORITMO SIMPLEX DUAL 127

situações (por exemplo em análise de pós-optimização, quando se alteram os ter-


mos independentes das restrições, ou quando se acrescenta uma nova restrição),
em que temos uma solução não admissível mas que satisfaz o critério de optima-
lidade. Tais soluções, do Primal, correspondem a soluções duais admissíveis mas
não óptimas. O problema pode resolver-se pelo algoritmo simplex, aplicado ao
quadro do problema Dual. Um método mais eficiente, designado por algoritmo
Simplex Dual consiste em utilizar o quadro Primal e transitar entre soluções ópti-
mas não admissíveis até encontrar uma que satisfaça o critério de admissibilidade.
A estratégia deste algoritmo consiste em minimizar o grau de não admissibilidade
das soluções que verificam o critério de optimalidade.

Exemplo 25 A resolução do problema


Max Z = −x1 + 2x2 + x3
s.a. 2x1 + x2 − x3 ≤ 2
2x1 − x2 + 5x3 ≤ 6
4x1 + x2 + x3 ≤ 6
xi ≥ 0, i = 1, 2, 3
conduziu ao seguinte quadro Simplex
vb x1 x2 x3 f1 f2 f3 bi
x2 3 1 0 .5 0 .5 4
f2 0 0 0 3 1 -2 0
x3 1 0 1 -.5 0 .5 2
−Z -8 0 0 -.5 0 -1.5 -10

• Alterações na disponibilidade de bens, alteraram os termos independen-


tes das restrições para b = (3, 5, 9)T . Re-optimize o problema utilizando o
algoritmo Dual
• Retome o problema inicial, acrescido da restrição x1 + x2 + 2x3 ≤ 6

Resolução
• O cálculo de
xB = B−1 b = (6, −4, 3)
permite verificar que esta solução óptima é não admissível. Para diminuir
o grau de não admissibilidade desta solução, devemos tomar a linha f2
como pivot. A determinação do menor dos quocientes positivos c j /ai, j ,
onde ai, j são os coeficientes negativos da linha pivot e c j os da linha da
f.o., determina que f3 corresponde à coluna pivot. A eliminação de Gauss
permite obter o seguinte quadro
128 CAPÍTULO 10. DUALIDADE

vb x1 x2 x3 f1 f2f3 bi
x2 3 1 0 .5 0 .5 6
f2 0 0 0 3 1 -2 -4
x3 1 0 1 -.5 0 .5 3
−Z -8 0 0 -.5 0
-1.5 -15
Qi .75
x2 3 1 0 1.25 0.25 0 5
f3 0 0 0 -1.5 -.5 1 2
x3 1 0 1 .25 .25 0 2
−Z -8 0 0 -2.75 -0.75 0 -12

que constitui a solução admissível (e óptima) x∗2 = 2,...


• É imediato verificar que x∗1 + x∗2 + 2x∗3 = 8, logo a solução óptima do pro-
blema não satisfaz a nova restrição, i.e. é não admissível para o novo
problema. Acrescentando a equação x1 + x2 + 2x3 + f4 = 6 ao quadro da
solução óptima anterior, obtemos uma sb não admissível. Por aplicação do
Alg. Dual

vb x1 x2 x3 f1 f2 f3 f4 bi
x2 3 1 0 .5 0 .5 0 4
f2 0 0 0 3 1 -2 0 0
x3 1 0 1 -.5 0 .5 0 2
f4 1 1 2 0 0 0 1 6
f4 -4 0 0 .5 0 -1.5 1 -2
−Z -8 0 0 -.5 0 -1.5 -10
Qi 2 1
x2 1.67 1 0 0.67 0 0 .33 3.33
f2 5.33 0 0 2.33 1 0 1.33 2.67
x3 -.33 0 1 -.33 0 0 -.5 1.33
f3 2.67 0 0 -.33 0 1 -.67 1.33
−Z -4 0 0 -1 0 0 -1 -8

O algoritmo Simplex Dual, pode resumir-se nos seguintes passos:


• Determinar a linha pivot, pela que corresponde à restrição menos satisfeita.
Se todas as restrições são satisfeitas, a solução é admissível
• Determinar a coluna pivot, correspondente ao valor mínimo dos quocientes
c j /ai, j , para ai, j < 0
• Transformar a base, a partir do elemento pivot, utilizando E.G., tal como no
algoritmo Primal
10.2. ALGORITMO SIMPLEX DUAL 129

• Regressar a 1.
130 CAPÍTULO 10. DUALIDADE
Capítulo 11

Programação Inteira

11.1 Definições
Em muitos problemas de Programação Matemática, o significado das variá-
veis de decisão impõem que os seus valores só fazem sentido se forem números
inteiros. São exemplos desta natureza casos em que as variáveis de decisão repre-
sentam o número de pessoas, de máquinas ou de veículos a atribuir a determinada
actividade. Se a formulação de um problema conduz a um problema de Progra-
mação Linear, excepto que as variáveis são restritas a valores inteiros, diz-se que
se trata de um problema de Programação Inteira (PI). Se apenas algumas das va-
riáveis de decisão devem obedecer à restrição de tomar valores inteiros, diz-se que
se trata de um problema de Programação Inteira Mista (PIM). O caso mais restrito
da PI em que os valores admissíveis das variáveis são apenas 0 e 1, valores fre-
quentemente utilizados como significando ’sim’ e ’não’ ou ’verdadeiro’ e ’falso’,
designa-se por Programação Inteira Binária (PIB).
Em qualquer dos casos, i.e. PI, PIM e PIB, embora com ligeiras diferenças
na implementação, ao problema pode aplicar-se um algoritmo de «Branch-and-
Bound». Esta metodologia baseia-se nos conceitos seguintes:

Ramificação Ramificar (Branching) um problema consiste em produzir dois ou


mais problemas, de tal forma que a solução de um e só um deles coincide
com a solução do problema de partida. Um processo de ramificar um pro-
blema consiste em redefinir o domínio de uma variável como a reunião de
subconjuntos disjuntos, à custa de introduzir novas restrições. Esta técnica
permite dividir um problema em, dois ou mais, problemas mais simples.

Relaxamento Relaxar um problema consiste em resolver um problema com a


mesma função objectivo, mas considerando apenas um subconjunto das res-
trições. Na prática, retiram-se ao problema dado as restrições que mais

131
132 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA

contribuem para o tornar difícil de resolver. Este relaxamento, produzindo


o efeito de «alargar» a região de admissibilidade, conduz a um problema
cujo valor óptimo constitui um limite superior (Bound) do valor óptimo do
problema de partida.

11.2 Algoritmo Branch-and-Bound


A técnica «Branch-and-Bound», consiste na aplicação sequencial de três eta-
pas: ramificação, relaxamento e selecção. A selecção consiste em calcular um
limite superior para o valor óptimo em cada um dos sub-problemas definidos e
descartar aqueles cujo valor desse limite indica que não podem constituir o pro-
blema com a solução óptima.

Exemplo 26

Problema1 : Max Z = 4x1 − 2x2 + 7x3 − x4


s.a. x1 + 5x3 ≤ 10
x1 + x2 − x3 ≤ 1
6x1 − 5x2 ≤ 0
−x1 + 2x3 − 2x4 ≤ 3
x j ∈ N, i = 1, . . ., 4

Iteração 1
Relaxar este problema, eliminando as restrições que dificultam a sua resolu-
ção, neste caso, consiste em eliminar as restrições de variáveis inteiras, relaxando-
as para restrições de não negatividade, o que conduz ao

Problema1relaxado : Max Z = 4x1 − 2x2 + 7x3 − x4


s.a. x1 + 5x3 ≤ 10
x1 + x2 − x3 ≤ 1
6x1 − 5x2 ≤ 0
−x1 + 2x3 − 2x4 ≤ 3
x j ≥ 0, i = 1, . . . , 4

A resolução deste problema de PL, utilizando o algoritmo Simplex, conduz à so-


lução
(x1 , x2 , x3 , x4 ) = (1.25, 1.5, 1.75, 0), Z = 14.25
Obviamente esta solução é não admissível para o problema inicial. No entanto,
uma vez que o problema inicial constitui um sub-problema deste último, o valor
óptimo da sua solução não pode ultrapassar o valor Z = 14.25.
11.2. ALGORITMO BRANCH-AND-BOUND 133

Para efectuar a primeira ramificação do problema, é necessário definir a va-


riável de ramificação. Neste caso, uma vez que x1 constitui a primeira variável a
tomar um valor não inteiro na solução, e que x1 ∈ [1, 2], o Probl.1 é ramificado
nos dois sub-problemas:
Problema 2: Probl.1 + restrição x1 ≤ 1
Problema 3: Probl.1 + restrição x1 ≥ 2

P2 x1 ≤ 1
ր
P1 Inicio
(1.25, 1.5, 1.75, 0) ց
Z = 14.25 P3 x1 ≥ 2
No caso geral, sendo x∗i ∈]k, k+1[ a variável de ramificação, com k = ⌊xi ⌋ ∈ N,
as restrições xi ≤ k e xi ≥ k + 1 conduzem a dois sub-problemas cuja solução óp-
tima tem um valor xi necessariamente distinto do valor x∗i não inteiro do problema
de partida.
O passo seguinte consiste em calcular limites superiores para os valores ópti-
mos das soluções destes dois problemas. Estes valores são obtidos relaxando as
restrições da mesma forma que para o Probl.1. Resolvidos os problemas relaxados
obteve-se
Problema 2 relaxado: (x1 , x2 , x3 , x4 ) = (1, 1.2, 1.8, 0), Z = 14.2
Problema 3 relaxado: Não existem soluções admissíveis.

P2 x1 ≤ 1
(1, 1.2, 1.8, 0)
Z = 14.2
ր
P1 Inicio
(1.25, 1.5, 1.75, 0) ց
Z = 14.25 P3 x1 ≥ 2
S = 0/

Iteração 2
Uma vez que para o Probl.3 não existem soluções admissíveis, a iteração 2
consiste em aplicar a mesma metodologia da iteração 1, ao problema 2.
Variável de ramificação: x2 = 1.2 ∈ [1, 2].
Ramificação:
134 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA

Problema 4: Probl.2 + restrição x2 ≤ 1

Problema 5: Probl.2 + restrição x2 ≥ 2

P4 x2 ≤ 1
ր
P2 x1 ≤ 1
(1, 1.2, 1.8, 0) ց
ր Z = 14.2 P5 x2 ≥ 2
P1 Inicio
(1.25, 1.5, 1.75, 0) ց
Z = 14.25 P3 x1 ≥ 2
S = 0/
Limite superior:

Problema 4 relaxado: (x1 , x2 , x3 , x4 ) = (0.83, 1, 1.83, 0), Z = 14.17

Problema 5 relaxado: (x1 , x2 , x3 , x4 ) = (0.83, 2, 1.83, 0), Z = 12.17

P4 x2 ≤ 1
ր (0.83, 1, 1.83, 0)
P2 x1 ≤ 1 Z = 14.17
(1, 1.2, 1.8, 0) ց
ր Z = 14.2 P5 x2 ≥ 2
P1 Inicio (0.83, 2, 1.83, 0)
(1.25, 1.5, 1.75, 0) ց Z = 12.17
Z = 14.25 P3 x1 ≥ 2
S = 0/

Iteração 3
Ramificar Probl.4: Variável de ramificação: x1 = 0.83 ∈ [0, 1]

Problema 6: Probl.4 + restrição x1 ≤ 0 ⇒ x1 = 0

Problema 7: Probl.2 + restrição x1 ≥ 1 ⇒ x1 = 1

Limite superior:
11.2. ALGORITMO BRANCH-AND-BOUND 135

Problema 6 relaxado:

Max Z = −2x2 + 7x3 − x4


s.a. x3 ≤ 2
x2 − x3 ≤ 1
x2 ≥ 0 redundante
2x3 − 2x4 ≤ 3
x2 ≤ 1
x j ≥ 0, j = 2, . . . , 4

solução: (x1 , x2 , x3 , x4 ) = (0, 0, 2, 0.5), Z = 13.5


Problema 7 relaxado:

Max Z = 4 − 2x2 + 7x3 − x4


s.a. 5x3 ≤ 9
x2 − x3 ≤ 0
6 − 5x2 ≤ 0
2x3 − 2x4 ≤ 4
x j ≥ 0, i = 2, . . ., 4
Não existem soluções admissíveis

P6 x1 = 0
(0, 0, 2, 0.5)
ր Z = 13.5
P4 x2 ≤ 1
(0.83, 1, 1.83, 0)ց
ր Z = 14.17 P7 x1 = 1
P2 x1 ≤ 1 S = 0/
(1, 1.2, 1.8, 0)ց
ր Z = 14.2 P5 x2 ≥ 2
P1 Inicio (0.83, 2, 1.83, 0)
(1.25, 1.5, 1.75, 0)ց Z = 12.17
Z = 14.25 P3 x1 ≥ 2
S = 0/

Iteração 4
Ramificar Probl.6: Variável de ramificação: x4 = 0.5 ∈ [0, 1]
Problema 8: Probl.6 + restrição x4 ≤ 0 ⇒ x4 = 0
136 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA

Problema 9: Probl.6 + restrição x4 ≥ 1


Limite superior:
Problema 8 relaxado:
Max Z = −2x2 + 7x3
s.a. x3 ≤ 2 redundante
x2 − x3 ≤ 1
x3 ≤ 1.5 x3 ≤ 1
x2 ≤ 1
x j ≥ 0, j = 2, 3
solução: (x1 , x2 , x3 , x4 ) = (0, 0, 1, 0), Z = 7
Problema 9 relaxado:
Max Z = −2x2 + 7x3 − x4
s.a. x3 ≤ 2
x2 − x3 ≤ 1
2x3 − 2x4 ≤ 3
x2 ≤ 1
x4 ≥ 1
x j ≥ 0, j = 2, 3, 4
solução: (x1 , x2 , x3 , x4 ) = (0, 0, 2, 1), Z = 13

P8 x4 = 0
(0, 0, 1, 0)
ր Z=7
P6 x1 = 0
(0, 0, 2, 0.5)ց
րZ = 13.5 P9 x4 ≥ 1
P4 x2 ≤ 1 (0, 0, 2, 1)
(0.83, 1, 1.83, 0)ց Z = 13
ր Z = 14.17 P7 x1 = 1
P2 x1 ≤ 1 S = 0/
(1, 1.2, 1.8, 0)ց
ր Z = 14.2 P5 x2 ≥ 2
P1 Inicio (0.83, 2, 1.83, 0)
(1.25, 1.5, 1.75, 0)ց Z = 12.17
Z = 14.25 P3 x1 ≥ 2
S = 0/
11.2. ALGORITMO BRANCH-AND-BOUND 137

Uma vez que os problemas 8 e 9 relaxados têm soluções óptimas que são ad-
missíveis para os problemas 8 e 9 completos, estas soluções constituem soluções
admissíveis para o problema original. Logo, a iteração 4 termina com a escolha do
óptimo provisório Z ∗ = 13 correspondente ao problema 9, por ser o valor máximo
dos dois.
Encontrada uma solução admissível inteira, o passo seguinte do algoritmo con-
siste em pesquisar a árvore para trás, em busca de outro sub-problema que possa
ramificar-se e produzir um valor óptimo superior ao valor provisório Z ∗ já encon-
trado.
Neste caso, uma vez que apenas o problema 5 estaria em condições de ser
ramificado e que a este problema corresponde um máximo da função objectivo que
é inferior ao valor provisório, obtido com o problema 9, nenhum sub-problema
do problema 5 poderá produzir uma solução com função objectivo maior. logo, a
resolução do problema termina com a solução óptima (x∗1 , x∗2 , x∗3 , x∗4 ) = (0, 0, 2, 1)
e Z ∗ = 13.

Algoritmo Branch-and-Bound

Em cada iteração, fazer:

1. Ramificar: De entre os sub-problemas ainda não descartados, seleccionar


um para ramificar. Escolher para variável de ramificação x j a primeira de
entre as variáveis com um valor não inteiro x∗j , na solução do problema
relaxado. Ramificar criando dois sub-problemas, adicionando a restrição
x j ≤ ⌊x∗j ⌋ a um e a restrição x j ≥ ⌊x∗j ⌋ + 1

2. Limitar: Para cada um dos dois sub-problemas, obter o limite superior do


valor óptimo, aplicando o método Simplex ao problema relaxado

3. Descartar: Para cada um dos sub-problemas, aplicar o teste triplo seguinte


e descartar aqueles cujo problema relaxado satisfaz uma das condições:

(a) Ter limite Z ≤ Z ∗ , onde Z ∗ é o limite provisório actual


(b) Ter região de admissibilidade vazia
(c) A solução óptima é inteira. Neste caso, se o respectivo valor da f.o.
é maior do que o valor provisório Z ∗ , actualizar o valor provisório
com este novo valor e repetir o primeiro teste para os problemas não
descartados, com o valor actualizado.

Parar quando não houver mais sub-problemas não descartados.


138 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA

11.3 Programação Inteira Binária


Constituindo um caso particular da Programação Inteira, aos problemas de
PIB, pode aplicar-se o algoritmo Branch-and-Bound. Uma diferença significativa
surge no processo de relaxamento dos problemas, conquanto no caso mais geral
da PI, as restrições de variáveis inteiras xi ∈ N0 sejam relaxadas para restrições
de não negatividade xi ≥ 0, no caso da PIB, as restrições de variáveis binárias
xi ∈ {0, 1} devem substituir-se pelas restrições xi ≤ 1 juntamente com as restrições
de não negatividade das variáveis xi ≥ 0. No processo de ramificação, a partir da
primeira variável x j não inteira do problema relaxado, as restrições de ramificação
são x j = 0 para um dos novos problemas e x j = 1 para o outro.

Exemplo 27 Resolver o seguinte problema de PIB

Max. Z = 2x1 − x2 + 5x3 − 3x4 + 4x5


s.a 3x1 − 2x2 + 7x3 − 5x4 + 4x5 ≤ 6
x1 − x2 + 2x3 − 4x4 + 2x5 ≤ 0
xi ∈ {0, 1}, i = 1, . . . , 5

O problema relaxado consiste em

Max. Z = 2x1 − x2 + 5x3 − 3x4 + 4x5


s.a 3x1 − 2x2 + 7x3 − 5x4 + 4x5 ≤ 6
x1 − x2 + 2x3 − 4x4 + 2x5 ≤ 0
xi ≤ 1, i = 1, . . . , 5
xi ≥ 0, i = 1, . . . , 5

Resolvido este problema, encontramos a solução óptima, do problema relaxado,


x = (0, 67; 1; 1; 1; 1) e Z = 6, 33. O processo de ramificação faz-se com a variável
x1 e as restrições x1 = 0 para um problema e x1 = 1 para o outro. Obtemos os
problemas
P2 : Max. Z = −x2 + 5x3 − 3x4 + 4x5
s.a −2x2 + 7x3 − 5x4 + 4x5 ≤ 6
−x2 + 2x3 − 4x4 + 2x5 ≤ 0
xi ∈ {0, 1}, i = 2, . . ., 5
e
P3 : Max. Z = 2 − x2 + 5x3 − 3x4 + 4x5
s.a −2x2 + 7x3 − 5x4 + 4x5 ≤ 3
−x2 + 2x3 − 4x4 + 2x5 ≤ −1
xi ∈ {0, 1}, i = 2, . . ., 5
11.3. PROGRAMAÇÃO INTEIRA BINÁRIA 139

As soluções dos problemas relaxados apresentam-se na árvore seguinte


P2 x1 = 0
(0, 0, 1, 1, 1)
Z = 6 = Ẑ
ր
P1 Inicio
(0.67, 1, 1, 1, 1) ց
Z = 6.33 P3 x1 = 1
(1, 1, 0.86, 1, 1)
Z = 6.29
Sendo a solução do problema P2 relaxado constituída por valores binários, logo
admissível para o problema inicial, toma-se o valor Z = 6 para máximo provisó-
rio, facto representado por Ẑ = 6. Uma vez que o valor Z = 6.29, correspondente
à solução do problema P3 relaxado, é superior a Ẑ e esta solução não é admissí-
vel para o problema dado, começamos a iteração seguinte pela ramificação deste
problema. A variável de ramificação é x3 , pelo que as condições x3 = 0 e x3 = 1,
definem os problemas P4 e P5 a partir do problema P3
P4 : Max. Z = 2 − x2 − 3x4 + 4x5
s.a −2x2 − 5x4 + 4x5 ≤ 3
−x2 − 4x4 + 2x5 ≤ −1
x2 , x4 , x5 ∈ {0, 1}
e
P5 : Max. Z = 7 − x2 − 3x4 + 4x5
s.a −2x2 − 5x4 + 4x5 ≤ −4
−x2 − 4x4 + 2x5 ≤ −3
x2 , x4 , x5 ∈ {0, 1}
A árvore dos problemas resolvidos e das soluções actualizadas
P2 x1 = 0
(0, 0, 1, 1, 1)
Z = 6 = Ẑ P4 x3 = 0
ր (1, 0, 0, 0.75, 1)
P1 Inicio Z = 3.75
(0.67, 1, 1, 1, 1) ց ր
Z = 6.33 P3 x1 = 1
(1, 1, 0.86, 1, 1) ց
Z = 6.29 P5 x3 = 1
(1, 1, 1, 1, 0.75)
Z=6
140 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA

O problema P4 é descartado porque à solução corresponde um valor Z = 3.75 < Ẑ


e o problema P5 é ramificado, a partir da variável x5 , uma vez que pode produzir
soluções óptimas alternativas. Os problemas resultantes são

P6 : Max. Z = 7 − x2 − 3x4
s.a 2x2 + 5x4 ≥ 4
x2 + 4x4 ≥ 3
x2 , x4 ∈ {0, 1}
e
P7 : Max. Z = 11 − x2 − 3x4
s.a 2x2 + 5x4 ≥ 8
x2 + 4x4 ≥ 5
x2 , x4 ∈ {0, 1}
É imediato verificar, até por tentativas, que o problema P6 só tem duas soluções
admissíveis (x2 , x4 ) = (0, 1) e (x2 , x4 ) = (1, 1), a que correspondem os valores
Z = 4 e Z = 3, logo valores inferiores a Ẑ. Quanto a P7 , verifica-se que não tem
soluções admissíveis. Descartados estes dois problemas, concluímos o algoritmo
com a solução óptima x1 = x2 = 0, x3 = x4 = x5 = 1 e Z = 6.

Você também pode gostar