Sei sulla pagina 1di 1753

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales

Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3

Matemticas de EspecialidadIngeniera Elctrica

Presentacin de la Asignatura
Curso 2015-2016

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_introduccin_2016.pdf

1/39

 La asignatura tiene por objeto el Clculo, Anlisis

2/39

Matemtico e Ingeniera de sus Mtodos Numricos


para resolver problemas (los problemas de la gente).
Mediante esta ingeniera podremos resolver ptimamente problemas prcticos
de nuestra profesin1 aquellos de base cientfica que se modelizan y simulan
en trminos matemticos y analizar la idoneidad de los resultados.

 VISIN: Para trabajar en algo o con algo, hay que saber cmo
hacerlo fsicamente; : : : imaginarlo mejor, disearlo y elaborarlo:

Me lo contaron y lo olvid; lo vi y lo entend;


lo hice y lo aprend
Confucio, 551-479 a.C.

Insistiremos en los que se refieren a la ingeniera elctrica.

3/39

Apuntes, documentacin y anuncios




En sitio Web: www.jldelafuenteoconnor.es

Mediante e-mail: jldelafuente@etsii.upm.es


alumnos@jldelafuenteoconnor.es

Objetivos de esta asignatura




Introduccin terica y aplicacin prctica del diseo, anlisis e


ingeniera numrica (digital) de procedimientos y algoritmos
que puedan abordar y resolver problemas cotidianos con base
cientfica:
 Simulacin matemtica de fenmenos naturales,
econmicos y sociales
 Diseo ingenieril y cientfico de modelos matemticos

4/39

Profundizar en el manejo del ordenador como herramienta


fundamental para dar solucin a esos problemas y desafos
Siempre que ensees, ensea a la vez a dudar de lo que
enseas
Jos Ortega y Gasset. 1883-1955.

5/39

Entorno de clculo cientfico e ingenieril

6/39

Metodologa que seguiremos




Clases orientadas a la prctica, de nuestra profesin, con


ordenador




Rigor cientfico
Aprender a valorar la idoneidad tcnica de una estrategia
frente a otra para resolver problemas numricos en ingeniera:
 Desarrollar espritu crtico y posibles alternativas a lo que
os presentamos

7/39

La Asignatura NO es:
 Un recetario de procedimientos
 Un curso de Matlab y aplicaciones:
 Matlab ser el instrumento fundamental que nos permita

traducir al ordenador un problema y lo que queremos hacer,


o experimentar, con l para resolverlo
 Algunas referencias tiles para conocerlo mejor:

Curso de Introduccin a la Programacin


Interactive MATLAB tutorial
Getting started with MATLAB
MATLAB examples
Getting started with MATLAB (manual en PDF)

Profesores:

8/39

Gabriela Sansigre
Jos Luis de la Fuente OConnor
Jos Luis de la Fuente OConnor

www.jldelafuenteoconnor.es

Ingeniero Industrial, Escuela Tcnica Superior de Ingenieros


Industriales, Madrid, 1976

Master of Science in Engineering Economic Systems, Stanford


University, 1978




Doctor Ingeniero Industrial, ETSII, Madrid,

1979
Profesor Titular de Universidad, UPM, Madrid, 1990

9/39

Experiencia profesional:






Electricit de France
Iberdrola, 1976hasta la fecha

Experiencia docente:








Systems Europe, USA

Diversos cursos de doctorado


Matemticas de la especialidad, 1987-2003
Mtodos matemticos de especialidad: Ingeniera elctrica, 2003-2012
Matemticas de la especialidad, ingeniera elctrica, 2013-  
Mltiples cursos, seminarios, etc. de optimizacin, mtodos numricos y estrategia
empresarial

Experiencia investigadora:




Dirigido ms de 10 proyectos de investigacin de la Unin Europea (>100 MM de euros)


Colaboracin en diversos proyectos de investigacin acadmicos

Programa general


Fundamentos de los mtodos numricos en la ingeniera

Elementos de lgebra lineal numrica




Solucin de ecuaciones de una variable








Funciones de interpolacin y aproximacin. Transformada de Fourier





Optimizacin no lineal

Sistemas de ecuaciones lineales


 Mnimos cuadrados lineales
Mtodos iterativos para sistemas de ecuaciones lineales
Valores y vectores propios
Sistemas de ecuaciones lineales de grandes dimensiones: matrices dispersas
Sistemas de ecuaciones no lineales
Optimizacin lineal
 El mtodo simplex
 Dualidad
 Mtodos de punto interior
Derivacin e integracin de funciones
Integracin de ecuaciones diferenciales ordinarias y en derivadas parciales.

10/39

Referencias y lecturas posibles










11/39

Numerical analysis. Sauer, T., Second Edition, Pearson, 2012. (hay versin
en espaol)
Introduccin a la Investigacin de Operaciones. Hillier, F.S. y Lieberman,
G.J., Novena edicin, McGraw-Hill. 2010.
Numerical Mathematics. Quarteroni, A., Sacco, R. y Saleri, F., Springer
Verlag, 2007.
Numerical Optimization. Nocedal, J. y Wright, S.J., Second Edition.
Springer Verlag, 2006.
Numerical Methods in Finance and Economics. A MATLAB-Based
Introduction. Brandimarte, P., Second Edition. John Wiley and Sons, 2006.
MATLAB guide. Higham, D. y Higham, J., Second Edition. SIAM, 2005.
Scientific Computing. An Introductory Survey. Heath, M., Second Edition.
McGraw-Hill, 2002.

Este curso en Internet?

12/39

Misitiowebhttp://www.jldelafuenteo
Todoslosdatosdesitiosweb

Iraesteinforme

1ene.2014 31dic.2015

Visingeneraldeaudiencia
Todaslassesiones
100,00%

Visingeneral

Sesiones
100

50

abrilde2014

juliode2014

octubrede2014

enerode2015

abrilde2015

juliode2015

NewVisitor
Sesiones

Usuarios

Nmerodepginasvistas

9.360

6.908

13.785

octubrede2015

ReturningVisitor

25,3%

Pginas/sesin

Duracinmediadelasesin

Porcentajederebote

1,47

00:01:34

81,81%
74,7%

%denuevassesiones

73,76%

Idioma

Sesiones

1. (notset)

3.297

2. es

2.864

%Sesiones
35,22%
30,60%

Iraesteinforme

Misitiowebhttp://www.jldelafuenteo
Todoslosdatosdesitiosweb

13/39

1ene.2014 31dic.2015

Ubicacin
Todaslassesiones
100,00%

Grficodevisitasporubicacin
Resumen

3.676

Adquisicin
Pas
Sesiones

Comportamiento

%denuevas
sesiones

9.360 74,74%

1.

2.

3.

4.

Spain
United
States
(not
set)
Brazil

Nuevos
usuarios

Porcentajede

Conversiones

Pginas/sesin

rebote

6.996 81,81%

Duracin
mediadela
sesin

1,47 00:01:34

Porcentajede
conversiones
delobjetivo

Consecuciones
deobjetivos

Valordel
objetivo

0,00%

0,00$

%deltotal:
100,00%
(9.360)

Mediadela
vista:73,76%
(1,33%)

%deltotal:
101,33%
(6.904)

Mediadela
vista:81,81%
(0,00%)

Mediadelavista:
1,47(0,00%)

Mediadela
vista:00:01:34
(0,00%)

Mediadela
vista:0,00%
(0,00%)

%deltotal:
0,00%(0)

%deltotal:
0,00%(0,00$)

3.676 (39,27%)

46,82%

1.721 (24,60%)

71,49%

1,90

00:02:50

0,00%

0 (0,00%)

0,00$ (0,00%)

1.333 (14,24%)

99,40%

1.325 (18,94%)

86,05%

1,11

00:00:25

0,00%

0 (0,00%)

0,00$ (0,00%)

951 (10,16%)

99,89%

950 (13,58%)

92,85%

1,05

00:00:20

0,00%

0 (0,00%)

0,00$ (0,00%)

535 (5,72%)

96,64%

517 (7,39%)

96,07%

1,04

00:00:13

0,00%

0 (0,00%)

0,00$ (0,00%)

Thus, we can use the chain as a checklist in gauging the


quality of a decision as we make it.

Dnde surgen los desafos y problemas?

14/39

The next six pages explain what to consider in

CREATIVE
ALTERNATIVES

USEFUL
INFORMATION

CLEAR
VALUES

DECISION
QUALITY
HELPFUL
FRAME

SOUND
REASONING

COMMITMENT TO
FOLLOW THROUGH

Page 5

Tomar decisiones o analizar opciones

2009 Decis

Contexto general industrial y profesional


portunity

World Energy
Demand

poised
ge

ce

Industrial
Nonelectric

20%
Transportation
29%

Electricity
Industrial

10%
Electricity
Commercial

15%

Electricity
Residential

15%
EIAAnnualEnergyReview2009

15/39

16/39

En ingeniera elctrica

the european electricity industry:

17/39

Power System Structure


Hydro

Gas or CC

Nuclear

Coal

Basics
Generation &
transmission
Substations &
transformers
Control centers

http://tcip.mste.illinois.edu/
Credit: Jim McCally, Iowa State

18/39

Cualquier sistema de ingeniera elctrica tiene




Generacin Fuente de potencia y energa. Idealmente con


niveles de tensin y frecuencia determinados

Transporte Transmite potencia y mueve la energa

Demanda o carga Consume energa, absorbe potencia e


introduce otros componentes

19/39

20/39

C A L I F O R N I A

E N E R G Y

C O M M I S S I O N!

Supporting Evolution of the Electricity Grid

Historical Grid

Smart Grid

21/39

AQU y aqu

Tambin

22/39

:::

23/39

Potencia y Energa


Potencia Consumo instantneo de energa; capacidad de


aportar algn trabajo en cada instante

Energa Trabajo realmente producido o consumido;


integracin de la potencia en el tiempo.
Julio
kWh
Btu
1 l gasolina

=
=
=
=

1 vatio-segundo
kilovatio-hora (3;6  106 J)
1:055 J, 1 MBtu=0,292 MWh
9;65 kWh

24/39

Capacity Market

f Operating Reserves on Competition

serve Requirement
ive market requires
the available
and

- 21 -

actice that when


exceeds demand by
e market will be
be possible to keep
xpensive
/ MW, i.e. 10 Cents

ng Reserves may
le excess capacity

cal and Electronics Eng. Dept., METU, Spring 2005, Prof. Dr. Osman SEVAOLU, Page 10

Operativa

25/39

Recursos

26/39

indekiler

Trkiye Enerji Piy

Enerji Sektrnde

Olan zelletirme

Elektrik retim
Elektrik Dat

Transporte

27/39

Optimizacin

Balancing and Settlement Market

Iberdola Control Center

Balancing and
Settlement Market

METU

28/39

EE 710 Electricity Trading, Electrical and Electronics Eng. Dept., METU, Spring 2005, Prof. Dr. Osman SEVAOLU, Page 1

Modelizacin

29/39

Eficiencia energtica

METU

Ancillary Services
30/39

Payment for Ancillary Services


Ancillary Services

are essential or even vital,


casuse revenue loss on market
participants, who have been
influenced by or who have carried out
the service,
cannot be offered and left freely,
otherwise everyone would prefer to
let the others to perform them

Hence the regulator must;


Decide on the types of ancillary services
to be purchased,
Determine the prices to be paid for these
services,
Materiales y componentes
Grant authorithy to TSO for assignment
of these duties to market participants,
Make market participants to pay for them
EE 710 Electricity Trading, Electrical and Electronics Eng. Dept., METU, Spring 2005, Prof. Dr. Osman SEVAIOGLU, Page 73

31/39

DEFFGGHIJHKJLM

Redes

Midwest
32/39

Visualize
PSERC

Visualizacin

33/39

Sincronismo

IIIM
M
A
G
E
N
MA
AG
GE
EN
N

Reconocimiento de imgenes y diagnstico

34/39

33 MEMBERS - 24 COUNTRIES

Capacities at cross-border points


on the primary market

THE EUROPEAN
NATURAL GAS
NETWORK

Visit the GTE website for available capacities at crossborder points through links with the concerned TSOs.
Interconnection points

Transport by pipeline
under 24
24 to 36
36 and over
drilling platform

cross-border interconnection point


LNG terminal

LNG terminal - under construction


LNG terminal - projected
Major interconnection point
Gas reserve areas

Transport by tanker
LNG route

Nr Location

from

1A Zeebrugge ZPT

Gassco

1B Zeebrugge IZT

Interconnector (UK)

1C Zeebrugge IZT

Fluxys

1D Zeebrugge LNG

(B)

LNG

max. flowrate
in Mio Nm /h

Tel +32 2 209 05 00


Fax +32 2 209 05 01

gte@gte.be
www.gte.be

from

1,60

40 Tuy

Transgas

(P)

(E)

0,04

(B)

2,30

41 Griespass

Transitgas

(CH) SNAM Rete Gas (I)

2,40

SNAM Rete Gas (I)

0,40

(Tun) SNAM Rete Gas (I)

3,44

Fluxys

Interconnector (UK)

1,00

42 Panigaglia

LNG

Fluxys

(B)

0,87

43 Mazara del Vallo

TPMC

2A Zelzate Zebra

Fluxys

(B)

Zebra

(NL)

0,70

44A Gorizia

2B Zelzate GTS

Fluxys

(B)

GTS

(NL)

0,50

44B Gorizia

to

max. flowrate
in Mio Nm /h

Nr Location

Interconnector (B)

to
(N)

Gas Transmission Europe


Avenue des Arts 19
B - 1210 Brussels

Gas Storage

indication of gas reserve areas

SNAM Rete Gas (I)


Geoplin

Enags

Geoplin

(Slov)

0,17

(Slov) SNAM Rete Gas (I)

0,03
3,12

Hilvarenbeek

GTS

(NL)

Fluxys

(B)

2,40

45 Tarvisio

OMV TAG

(A)

Obbicht

GTS

(NL)

Fluxys

(B)

0,20

46 Murfeld

OMV

(A)

Geoplin

(Slov)

0,42

s Gravenvoeren

GTS

(NL)

Fluxys

(B)

1,10

47 Mosonmagyarovar

OMV

(A)

MOL

(H)

0,50

WINGAS

(D)

0,23

48A Baumgarten

SPP

(SK)

OMV

(A)

4,56

E.ON-Ruhrgas
(D)
Thyssengas

0,75

48B Baumgarten

OMV

(A)

SPP

(SK)

no transit

SPP

(SK)

Transgas

(CZ)

6,50

SPP

(SK)

10,50

DEPA

(GR)

0,22

6A Eynatten

Fluxys

(B)

6B Eynatten

Fluxys

(B)

Bras

Fluxys

(B)

SOTEG

(Lux)

0,19

49 Lanzhot

Petange

Fluxys

(B)

SOTEG

(Lux)

0,06

50 Velke Kapusany

9A Quvy (H)

Fluxys

(B)

1,10

51 Revithoussa

9B Taisnires (L)

Fluxys

(B)

Gaz de France (F)

0,95

52A Bacton

9C Blaregnies (H)

Fluxys

0,95
1,43

Gaz de France (F)

(B)

Gaz de France (F)

10 Bocholtz

GTS

(NL)

E.ON-Ruhrgas (D)

11A Zevenaar

GTS

(NL)

E.ON-Ruhrgas (D)

11B Zevenaar

GTS

(NL)

12 Winterswijk

GTS

(NL)

13A Oude Statenzijl H-gas

GTS

(NL)

13B Oude Statenzijl H-gas

GTS

(NL)

13C Oude Statenzijl H-gas

GTS

(NL)

13D Oude Statenzijl L-gas

GTS

(NL)

13E Oude Statenzijl L-gas

GTS

(NL)

14A Emden (NPT)

Gassco

(N)

E.ON-Ruhrgas (D)

14B Emden (EPT1)

Gassco

(N)

E.ON-Ruhrgas (D)

14C Emden (NPT)

Gassco

(N)

14D Emden (EPT1)

Gassco

(N)

14E Emden (NPT)

Gassco

(N)

14F Emden (EPT1)

Gassco

(N)

14G Emden (NPT)

Gassco

(N)

14H Emden (EPT1)

Gassco

(N)

Thyssengas

Gassco

(N)

E.ON-Ruhrgas (D)

LNG
Nat Grid Transco (UK)

Interconnector (B)

2,30

52B Bacton

Interconnector (B)

Nat Grid Transco (UK)

1,00

53 Moffat

Nat Grid Transco (UK)

(D)

54 Twynholm

BGE (UK)

(IRL)

(UK) Premier Transm. (IRL)

BulgarGaz

(Bul)

DEPA

(GR)

0,36

Gazprom

(Rus)

Gasum

(FIN)

0,80

Nat Grid Transco (UK)

2,57

1,75

56 Imatra

(D)

0,08

57 St. Fergus

E.ON-Ruhrgas (D)

0,70

58 Beregdaroc

(D)

0,40

59 Kiskundorozsma

MOL

BEB

(D)

0,82

60 Bilbao

LNG

EWE

(D)

0,60

61 Sines

LNG

BEB

BGE (UK)

55 Kula

E.ON-Ruhrgas (D)
WINGAS

SNAM Rete Gas (I)

1,24
2,53

Thyssengas

Ukrtransgas (UKR)

Gassco
Ukrtransgas

(N)
(UKR)

MOL

(H)

(H)

NIS

(SER)

Bahia de Bizkaia (E)


Transgs

(PT)

1,75
0,55
0,80
0,90

1,45

GTS

(NL)

0,40

GTS

(NL)

1,90

BEB

(D)

BEB

(D)

Thyssengas

(D)

Dornum

Kiel

Penemunde

Emden

Gdansk

Lbeck

Rostock
Niechorze

0,85
(D)

H
RG

2,10
(D)

(DK)

BEB/E.ON-Ruhrgas

Gastra

(DK)

Nova Naturgas (S)

18 Nybro

DONG Trade

(DK)

Gastra

(DK)

1,35

PGNiG

(PL)

WINGAS

(D)

2,00

20 Grlitz
21 Olbernhau

0,34
0,27

VNG

(D)

PGNiG

(PL)

0,26

Transgas

(CZ)

WINGAS

(D)

0,50

Dortmund

(CZ)

(D)

1,53

Remich

Transgas

(CZ)

E.ON-Ruhrgas (D)

0,28

Obergailbach

Transgas

(CZ)

E.ON-Ruhrgas (D)

1,30

23B Waidhaus

Transgas

(CZ)

E-ON-Ruhrgas (D)
Gaz de France (F)

2,60

OMV

(A)

E.ON-Ruhrgas (D)

0,52

OMV

(A)

Bayerngas

(D)

25 Burghausen
26 Kiefersfelden
27 Wallbach

E.ON-Ruhrgas (D)

28 Obergailbach

E.ON-Ruhrgas (D)
Gaz de France (F)

29 Remich

E.ON-Ruhrgas (D)

30 Dunkerque

Gassco

31 Oltingue

(N)

Gaz de France (F)

32 Fos-sur-Mer

GSO

34 Montoir de Bretagne

LNG

35 Barcelona

LNG

36 Cartagena

LNG

37 Tarifa

SAGANE

38 Huelva

LNG

39 Badajoz

Enags

0,37

(A)

0,10

(CH)

1,20

(F)

(Mor)

(E)

MEGAL

SOTEG

(Lux)

Gaz de France (F)


Transitgas

Enags

(CH)

(E)

Waidhaus
Nrnberg

Burghausen

Gas

Kiefersfelden

PGNiG Transmission

1,55

Polish Oil and Gas Company

0,19
1,95
0,85
0,65
0,27

Gaz de France (F)

1,15

Enags

(E)

1,20

Enags

(E)

0,60

Enags

(E)

1,07

Enags

(E)

0,45

(PT)

0,35

Transgas

Grlitz

Sayda
Olbernhau

MEG
AL

Mnchen

Wallbach

Gaz de France (F)

LNG

33 Col de Larrau

(D)
(D)

OMV

Gaz de France (F)

STE
GAL

Dresden

Stuttgart

WINGAS
Bayerngas

Transitgas

NATURAL GAS TRANSMISSION

JAGAL
Leipzig

Zwickau

NP
TE

Transgas

22B Sayda

VNG

Frankfurt/Oder

Hannover

Frankfurt

23A Waidhaus

24 Oberkappel

AL
WED

Kln

WEDAL

TG
SE

19 Frankfurt am Oder

H
RG
NETRA

L
MIDA

Gastra

17 Dragor

Hamburg

NETRA

JAGAL

Oude Statenzijl

MIDAL

16 Ellund

AL
ID
M

15 Dornum

22A Sayda

35/39
Wir bewegen Erdgas.

DEUDAN

1A
1A

Albacete

TRANSGAZ
ROMANIAN NATIONAL GAS TRANSMISSION COMPANY

Santa Cruz
de Tenerife (projected)

scale = 1 : 8.000.000

Las Palmas (projected)

Madrid Forum VIII, 8-9 July 2004

Gas/Transporte

36/39

Loptimisation en action

dans lindustrie et la technologie

La conception de structures pour laeronautique


minimiser le poids du fuselage en maintenant lintegrite structurale

reduction de la masse
en cours doptimisation
SAMTECH
(2009)
Tecnologa
(naXys)

y precisin
Octobre 2013

19 / 110

37/39

Innovacin para el desarrollo

38/39

ESENCIAL: Desarrollo humano tico

39/39

No siempre hay que hacer lo obvio:


una cierta acracia estimula

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Definiciones, notacin y
proposiciones bsicas
de matemticas

Jos Luis de la Fuente OConnor


Profesor Titular

jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es

ndice
1

Conjuntos

Espacios vectoriales
2.1 Espacios normados, espacios mtricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Espacios con producto interior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Aplicaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
4
6
8

Topologa

Matrices
4.1 Normas de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Matrices ortogonales, unitarias, simtricas, Hessenberg, de permutacin y de proyeccin
4.3 Valores propios, valores singulares y formas cuadrticas . . . . . . . . . . . . . . . . . .
4.3.1 Valores propios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Valores singulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Formas cuadrticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Teorema de la proyeccin

21

Conjuntos convexos

22

Funciones
7.1 Condiciones necesarias y suficientes de primer y segundo orden que ha de cumplir un punto
mnimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Teorema de la funcin implcita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30
34
35

Programacin Matemtica y Optimizacin


8.1 Dualidad . . . . . . . . . . . . . . . . .
8.1.1 Dualidad Lagrangiana . . . . .
8.1.2 Dualidad de Wolfe . . . . . . .
8.1.3 Ejemplo . . . . . . . . . . . . .

35
38
42
42
42

Enfoques de clculo diferencial, clculo de variaciones y principios a tener en cuenta para


estudiar el mtodo de los elementos finitos, FEM, para resolver ecuaciones en derivadas parciales
9.1 Solucin de una ecuacin en derivadas parciales . . . . . . . . . . . . . . . . . . . . . . . . .
9.1.1 El problema en forma dbil o variacional . . . . . . . . . . . . . . . . . . . . . . . .
9.1.2 Espacios de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1.3 Discretizacin del problema en un subespacio de elementos finitos lineales . . . . . .
9.1.4 Reformulacin del problema como un sistema de ecuaciones lineales . . . . . . . . .
9.2 Algo sobre funcionales y clculo de variaciones . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1 Proposiciones esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 Bibliografa

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

9
11
13
15
15
19
20

43
45
46
47
48
51
52
55
56

N ESTE TEXTO DE INTRODUCCIN a la asignatura Matemticas de la EspecialidadIngeniera


Elctrica se recopilan conceptos, definiciones, relaciones y resultados bsicos de matemticas que
pueden ser tiles para seguir su desarrollo de manera provechosa. Prcticamente todos se han estudiado en otras asignaturas de cursos anteriores a aqul en el que se imparte sta. En ningn caso es un exhaustivo
recordatorio de las matemticas que debe conocer un ingeniero industrial. Tambin se introduce una notacin
que, de forma uniforme, trataremos de usar en todas las lecciones y presentaciones que explicaremos y ensearemos en las clases.

1 Conjuntos
Un conjunto es una coleccin de objetos: los nmeros naturales, las soluciones de un problema determinado,
los municipios de una provincia, etc. Se identifica por una letra mayscula: el conjunto S , el conjunto de los
nmeros naturales N, el de los enteros Z, el de los reales R, complejos C, racionales Q, etc.
Cada uno de los objetos en la coleccin es un elemento o miembro del conjunto. Si un elemento a pertenece
a un conjunto se indica a 2 S . Los conjuntos se definen mediante la enumeracin entre llaves de sus elementos,
S D fa; b; : : : g, o especificando, tambin entre llaves, la propiedad que los caracteriza, S D fx W x 2 R; x 
2g: nmeros reales menores o iguales que dos.
El conjunto sin elementos se denomina vaco, designndose ;. Ejemplo: el conjunto S de los nmeros reales
x que son mayores que 1 y menores que 0: esto es, S D fx 2 R W x > 1; x < 0g.
Si S y S 0 son dos conjuntos y todos los elementos del conjunto S 0 lo son de S , se dice que S 0 es un
subconjunto del conjunto S, o que est contenido en S 0 , expresndose S 0  S o S  S 0 .
La unin de dos conjuntos S y T , expresada S [ T , es el conjunto formado por los elementos que pertenecen
a S o a T.
La interseccin de S y T , expresada S \ T , es el conjunto formado por los elementos que pertenecen a S y
a T.
Si S 0 es un subconjunto de S , el complemento de S 0 en S es el conjunto formado por los elementos de S
que no pertenecen a S 0 .
Si a y b son nmeros reales, y a  b, el conjunto de nmeros x de la recta real tales que a  x  b se
indica a; b. El formado por los x tales que a < x  b, por .a; b. El de los x que verifican que a < x < b,
por .a; b/.
Si S es un conjunto no vaco de nmeros reales acotados superiormente mayorados, existe un nmero
real mnimo y tal que x  y para todo x 2 S. Al nmero y se le denomina cota superior mnima o supremo
de S ; se expresa as:
sup .x/ o sup fx W x 2 S g :
x2S

De forma similar se define la cota inferior mxima o nfimo de un conjunto S no vaco de nmeros reales
acotados inferiormente o minorados:
Knf .x/ o

x2S

Knf fx W x 2 S g :

Dados dos conjuntos S y T , una aplicacin, transformacin o mapeo f de S en T , expresada como f W


S ! T , es una asociacin o criterio que a cada elemento de S hace corresponder uno de T .
La imagen de un elemento x 2 S con la aplicacin f W S ! T es el elemento f .x/ 2 T . El conjunto
imagen f .S/ = ff .x/ 2 T; para todo x 2 S g. La imagen de un subconjunto S 0  S con la aplicacin f sera,
por consiguiente, el subconjunto imagen f .S 0 /. El conjunto S se conoce como origen o dominio de definicin y
el T como dominio de valores. Una aplicacin f W S ! T se dice inyectiva si para cualquier par de elementos
x; y 2 S, x y, se cumple que f .x/ f .y/. Ejemplo, la aplicacin f W R ! R, definida por f .x/ D x 2 ,
no es inyectiva, pues f .1/ D f . 1/ D 1.
Una funcin es un caso particular de aplicacin en donde los conjuntos origen e imagen son conjuntos de
nmeros: R, C, Z, N, etc.
Una aplicacin f W S ! T se dice suprayectiva sobreyectiva, epiyectiva, suryectiva o exhaustiva si
el conjunto imagen f .S / es igual a todo el conjunto T ; es decir, para todo y 2 T existe un x 2 S tal que
f .x/ D y.
1

conjunto imagen f .S/ = ff .x/ 2 T; para todo x 2 S g. La imagen de un subconjunto S 0  S con


la aplicacin f sera, por consiguiente, el subconjunto imagen f .S 0 /. El conjunto S se conoce como
origen o dominio de definicin y el T como dominio de valores. Una aplicacin f W S ! T se dice
inyectiva si para cualquier par de elementos x; y 2 S , x y, se cumple que f .x/ f .y/. Ejemplo,
la aplicacin f W R ! R, definida por f .x/ D x 2 , no es inyectiva, pues f .1/ D f . 1/ D 1.
Una funcin es un caso particular de aplicacin en donde los conjuntos origen e imagen son conjuntos de nmeros: R, C, Z, N, etc.
Una aplicacin f W S ! T se dice suprayectiva sobreyectiva, epiyectiva, suryectiva o exhaustiva
Una aplicacin se dice
biyectiva si es inyectiva y suprayectiva. Ejemplo, si Jn esunelx 2conjunto
de los nmeros
si el conjunto imagen f .S/ es igual a todo el conjunto T ; es decir, para todo y 2 T existe
S
que:f:.x/
D y. y se define una aplicacin  W Jn ! Jn que modifica el orden de disposicin
enteros de 1 a n, Jn Dtalf1;
: ; ng,
Una aplicacin se dice biyectiva si es inyectiva y suprayectiva. Ejemplo, si Jn es el conjunto de los
de los elementos de Jnnmeros
estas
aplicaciones se denominan permutaciones, tal aplicacin es biyectiva.
enteros de 1 a n, Jn D f1; : : : ; ng, y se define una aplicacin  W Jn ! Jn que modifica el
orden de
disposicin de si
los elementos
de Jn biyeccin
estas aplicaciones
se denominan
Un conjunto S se dice
numerable
existe una
entre
N y S:permutaciones,
a cada unostal de los n elementos k,
aplicacin es biyectiva.
1  k  n, se le asocia Un
unconjunto
elemento
a 2 S , esto es: k 7! a .
S se diceknumerable si existe una biyeccinkentre N y S : a cada unos de los n elementos k, 1  k de
 n,un
se leconjunto
asocia un elemento
esto es: k 7! akde
. N en T : a cada elemento n  1 se le hace
Una sucesin de elementos
T es auna
k 2 S,aplicacin
Una sucesin de.n/
elementos de un conjunto T es una aplicacin de N en.1/
1 .n/
corresponder un x .n/ 2
T
:
n
!
7
x
.
Tal
sucesin
se
expresa
como
fx T : a; cada
x .2/elemento
; : : : g nofx
gn1 .
se le hace corresponder un x .n/ 2 T : n 7! x .n/ . Tal sucesin se expresa como fx .1/ ; x .2/ ; : : : g o
.n/
fx gn1
Los conjuntos dotados
de. ciertas leyes de composicin o asociacin interna adicin, multiplicacin, diLos conjuntos dotados de ciertas leyes de composicin o asociacin interna adicin, multiplicavisin o cualquier otra,
se dice que poseen una estructura. Las estructuras algebraicas fundamentales son
cin, divisin o cualquier otra, se dice que poseen una estructura. Las estructuras fundamentales
son: grupo, anillo
(Z por (R
ejemplo),
y C, por ejemplo)
y espaciovectorial.
vectorial.
grupo, anillo (Z por ejemplo),
cuerpo
y C,cuerpo
por(Rejemplo)
y espacio

2 Espacios vectoriales

Un espacio vectorial E es una estructura algebraica creada a partir de un conjunto no vaco, una ley de
composicin interna definida para los elementos del conjunto, adicin, con la siguientes propiedades grupo
conmutativo,
xCy DyCx
.x C y/ C z D x C .y C z/
xCDx
x C . x/ D

y una ley de composicin externa, producto por un escalar, definida entre dicho conjunto y otro conjunto, K,
con estructura de cuerpo, con las siguientes propiedades,
1x Dx
.x/ D ./x
. C /x D x C x
.x C y/ D x C y;
vlidas cualesquiera que sean x; y; z en E y ; en K. A se le denomina elemento neutro y a x el opuesto
de x. Es usual denominar vectores a los elementos de E y escalares a los de K. En las aplicaciones que se
estudian en la asignatura los casos ms importantes ocurren cuando K D R o K D C. Con la notacin K
designaremos a cualquiera de los cuerpos R o C y por x un vector cualquiera de un espacio vectorial.
El paradigma de espacio vectorial lo constituye el formado por sucesiones ordenadas de n elementos cualesquiera de K, o n-uplas x D x1 ; : : : ; xn , definiendo la suma de vectores mediante
x1 ; : : : ; xn C y1 ; : : : ; yn D x1 C y1 ; : : : ; xn C yn
2

y el producto por un escalar mediante


x1 ; : : : ; xn D x1 ; : : : ; xn :

P
Otros espacios vectoriales habituales son Pn , de polinomios de grado n, pn .x/ D nkD0 ak x k , con coeficientes ak , reales o complejos, n  0 y C p .a; b/ de funciones reales o complejas continuas en a; b y con
derivadas continuas hasta orden p, 0  p < 1. Este espacio es un espacio funcional pues sus elementos son
funciones en vez de vectores propiamente dichos.
Si X es un conjunto arbitrario el conjunto de aplicaciones ' W X ! K se estructura tambin como un
espacio vectorial definiendo las operaciones
.' C

/ W x 7 ! '.x/ C

.x/

.'/ W x 7 ! '.x/ :

El ejemplo anterior es un caso particular de este espacio vectorial tomando X D f1; 2; : : : ; ng.
Un subespacio vectorial M de un espacio vectorial E sobre un cuerpo K es un subconjunto no vaco que
es un espacio vectorial sobre K. Es decir, es cerrado respecto de las operaciones de adicin y producto por un
escalar: que cumple que
8x; y 2 M H) x C y 2 M;

8x 2 M y 8 2 K H) x 2 M:
La interseccin de una familia cualquiera de subespacios de E es tambin un subespacio.
Si X es un subconjunto cualquiera de E el subespacio GenfX g, generado o engendrado por X, es la interseccin se todos los subespacios que contienen a X . Cuando GenfXg D E, se dice que X es una parte
generadora de E.
Dados vectores x1 ; : : : ; xn y escalares 1 ; : : : ; n , el vector formado segn la expresin
x D 1 x1 C    C n xn
se dice que es una combinacin lineal de los vectores x1 ; : : : ; xn de coeficientes 1 ; : : : ; n . Un subconjunto
X de E es un subespacio si y slo si contiene a cualquier combinacin lineal de cualquier subconjunto finito
de vectores de X . Tambin se demuestra que el subespacio GenfXg es el conjunto de todas las combinaciones
lineales de vectores de X.
Un conjunto de vectores x1 ; x2 ; : : : ; xk se dicen linealmente dependientes si existen escalares i , no todos
P
cero, tales que kiD1 i xi D 0 ; linealmente independientes, si
k
X
i D1

i xi D 0 H) i D 0;

0i k:

Una parte X de un espacio vectorial E se dice que es una familia libre si los vectores de cualquier subconjunto
finito de X son linealmente independientes.
La dimensin de un subespacio es el mximo nmero de vectores linealmente independientes en el subespacio.
Una base de un espacio vectorial E es cualquier subconjunto B de E que sea, simultneamente, una parte
libre y generadora de E; dicho de otra forma, una base de un espacio vectorial es un conjunto normalmente
se supone ordenado (numerado) de vectores linealmente independientes que generan (o engendran) dicho
espacio. Se demuestra que cualquier espacio vectorial tiene una base y que todas las bases de un mismo espacio
tienen la misma cardinalidad se pueden poner en biyeccin. Cuando el cardinal de las bases es un nmero
natural, n 2 N, se dice que el espacio es de dimensin finita n. En un espacio vectorial K n ,
2 3
2 3
2 3
1
0
0
6 7
6 7
6 7
607
617
607
6 7
6 7
6 7
e1 D 6 : 7 ; e2 D 6 : 7 ; : : : ; en D 6 : 7 ;
6 :: 7
6 :: 7
6 :: 7
4 5
4 5
4 5
0
0
1
3

forman una base en dicho espacio; ste, por tanto, tiene dimensin n. Esta base se denomina base cannica o
base estndar de K n . En esta base, cualquier vector x T D x1 ; x2 ; : : : ; xn se puede expresar de la siguiente
forma:
2 3
2 3
2 3
2 3
1
x1
0
0
6 7
6 7
6 7
6 7
607
617
6 x2 7
607
6 7
6 7
6 7
6 7
6 : 7 D x1 6 : 7 C x2 6 : 7 C    C xn 6 : 7 :
6 :: 7
6 :: 7
6 :: 7
6 :: 7
4 5
4 5
4 5
4 5
xn
0
0
1
Es decir Rn D Genfe1 ; : : : ; en g. La base estndar de Pn es S D f1; t; t 2 ; : : : ; t n g.
Si A y B son subconjuntos de un espacio vectorial E, el conjunto A C B se define como:
A C B D fa C b W a 2 A; b 2 Bg :
Cuando A y B son subespacios, tambin lo es la suma A C B. Si adems A \ B D ;, la suma se denomina
directa, escribindose A B. Si A B D E, 3.1
cualquier
vectornormados
c 2 E se descompone de manera nica como
Espacios
c D a C b, con a 2 A y b 2 B; tambin se dice que A y B son subespacios suplementarios.

Si en un espacio vectorial E sobre K (R o C) se define una norma vectorial como


k  k W E ! R que verifica

2.1 Espacios normados, espacios mtricos

kvk D 0 H) v D 0 y x 0 H) kxk > 0;

Si en un espacio vectorial E sobre K (R o C) se define una norma vectorial como una aplicacin k  k W E !
kvk D jjkvk para 2 K y v 2 E;
R que verifica
kvk D 0 H) v D 0 y x 0 H) kxk > ku
0; C vk  kuk C kvk 8u; v 2 E;
kvk D jjkvk
es
2 un
K espacio
y v 2 vectorial
E;
se dicepara
que E
normado.

La condicin
kukCkvk es la desigualdad de Minkowski; se conoce tambi
ku C vk  kuk
C kvk kuCvk
8u; v 2E;

del tringulo. Es una generalizacin del hecho de que un lado de un tringulo no puede

se dice que E es un espacio vectorial normado.la suma de los otros dos: ver figura. Una variante de esta regla es la siguiente:
La condicin ku C vk  kuk C kvk es la desigualdad de Minkowski por Hermann Minkowski, Lituania
ku vk  kuk kvk:
1864-1909; se conoce tambin como regla del tringulo. Es una generalizacin del hecho de que un lado de
un tringulo no puede ser mayor que la suma de los otros dos: ver figura 2.1. Una variante de esta regla es la
siguiente: ku vk  kuk kvk.
v
uCv
u
Figura 3.1: Representacin grfica de la regla del tringulo

Figura 2.1: Representacin grfica de la regla del tringulo

En el espacio vectorial Kn , para 1  p < 1, se tiene la familia de normas

En el espacio vectorial Kn , para 1  p < 1, se tiene la familia de normas



1=p
p
p
p
p
p
p
kxk
D
jx
j
C



C
jx
j
;
p
1
n
jx1 j C    C jxn j
kxkp D

denominadas
normas1859-1937.
p de Hlder. Casos
lo constituyen
las correspondien
denominadas normas p de Hlder por Otto Hlder,
Alemania
Casosparticulares
particulares
lo constitup
D
2:
yen las correspondientes a p D 1 y p D 2:

kxk1 D
kxk2 D

n
X
i D1

jxi j

jx1 j2 C    C jxn j2 :

kxk1 D
kxk2 D

n
X
i D1

jxi j

p
jx1 j2 C    C jxn j2 :

Esta ltima se denomina en Rn norma eucldea. Tambin en Kn es una norma la dada

Esta ltima se denomina en Rn norma eucldea, por Euclides de Alejandra, Grecia,


325-265
en
kxk
aa.C.
x jxiTambin
j:
1 D mK
1in
Kn es una norma la dada por
normas
kxkEstas
mKax cumplen,
jxi j : cualquiera que sea x 2 Kn , que
1 D
1i n

kxk1  kxk2  kxk1  nkxk1 :

Si la bola cerrada unidad en R2 es el conjunto fx 2 R2 W kxk  1g, sus formas pa


vectoriales 1, 2, 1, y p son las que representa la figura 3.2.
7

Estas normas cumplen, cualquiera que sea x 2 Kn , que


kxk1  kxk2  kxk1  nkxk1 :
Si la bola cerrada unidad
R2 es fx
el conjunto
fx 2 1g
R2es Wlakxk
1g, suunidad
forma en
en espacios vectoriales
Si el en
conjunto
2 R2 W kxk
bolacerrada
normados por la 1, 2, 1Ry2p
sonforma
las que
representa
la figura
2.2. 1, 2, 1, y p son estas.
, su
para
las normas
vectoriales
x11 D
=
kxk

x22 D
=
kxk

2
i
2

i=1

|xijx
| ij

iD1

D1

q


2 2
|x11|j22+C|xjx
2 | 2=
jx
j

q
DxT xx T x

D1

kxk1
ax jx
D mK
i ij D 1
1i2
1i2

kxkp D jx1jp C jx2jp 1=p ;


D1

.1  p < 1/
28/63

Figura 2.2: Forma de la bola unidad para diferentes normas en R2


a

En el espacio C 0; 1 de funciones continuas del intervalo 0; 1 en C, son normas las dadas por
d

10

kf kp D

"Z

jf .t /j dt

#1=p

donde, si f W C ! C, se define la integral definida de esta funcin en el intervalo a; b,


b

l
I.f / D

f .x/ dx;
a

como
Pn el lmite de las sumas de Riemann Georg Friedrich Bernhard Riemann, Alemania 1826-1866, Rn D
xi / f .ti /; x1 D a; xnC1 D b; xi  ti  xi C1 ; cuando la particin en subintervalos se hace
i D1 .xi C1
muy fina. Tambin en una norma la dada por
kf k1 D mKax jf .t /j :
t 20;1

Los espacios de funciones Lp .0; 1/, p > 1, con la norma


kxk D

Z

jx.t /jp dt

1=p

; donde x.t / 2 Lp .0; 1/;

en los que si y.t / 2 Lp .0; 1/ se cumple que


Z

jx.t /j dt

1=p

<1

son tambin espacios1 normados.


1 Casos

particulares son L1 .a; b/ de funciones cuyo valor absoluto es integrable en a; b y L2 .a; b/ de funciones al cuadrado
integrables en a; b.

En un espacio vectorial normado se define la distancia entre dos elementos u y v mediante


d.u; v/ D ku

vk :

Esta definicin convierte a cualquier espacio vectorial normado en un espacio mtrico. El espacio de los nmeros reales, por ejemplo, con la distancia .x; y/ D jx yj es el espacio mtrico R1 .
Sea E un espacio vectorial normado; se dice que una sucesin2 fx .n/ g en E converge a un lmite v 2 E, si
para todo " > 0, existe un N 2 N tal que a partir de l, n  N , se cumple que kx .n/ vk < ".
Cuando una sucesin fx .n/ g admite un vector lmite v slo tiene ese vector como lmite.3 Se escribe
lKmn!1 x .n/ D v. Es equivalente decir que lKmn!1 x .n/ D v y que lKmn!1 kx .n/ vk D 0. En particular, x .n/ ! 0 si y slo si kx .n/ k ! 0.
Una sucesin fx .n/ g en un espacio vectorial normado por k  k se denomina sucesin de Cauchy si para cada
" > 0 existe un n 2 N tal que cualesquiera que sean p; q  n, se cumple que kx .p/ x .q/ k < ". Toda sucesin
convergente es una sucesin de Cauchy pero pueden existir espacios normados con sucesiones de Cauchy que
no son convergentes. Un espacio vectorial normado se dice completo si toda sucesin de Cauchy en l tiene
lmite.
Un espacio de Banach por Stefan Banach, Polonia 1892-1945 es un espacio vectorial completo respecto
de la norma a l asociada. Todo espacio vectorial normado de dimensin finita es un espacio de Banach. En un
espacio de dimensin infinita esto no es cierto; por ejemplo, es fcil ver que en C 0; 1 la sucesin de funciones
cuyas grficas son las de la figura 2.3 es una sucesin de Cauchy para cualquier norma k  kp , pero no tiene
lmite en C 0; 1.
fn .x/ 6
=

1
n











1
n

Figura 2.3: Grfica de una de las funciones de una sucesin de Cauchy

2.2 Espacios con producto interior


Sea E un espacio vectorial sobre un cuerpo K (R o C); una forma sesquilineal vez y media lineal sobre
E es una aplicacin hji W E  E ! K que verifica4 :
1) hu C vjwi D hujwi C hvjwi y
2) hujv C wi D hujvi C hujwi;

cualesquiera que sean u, v, w en E y ; en K. Si adems se cumple que hujvi D hvjui, la forma se denomina
hermtica. Es claro que hujui es siempre un nmero real. Cuando se cumple que
u 0 H) hujui > 0 ;
2 Cuando

as lo aconseja la dificultad de la notacin, una sucesin tambin se designa por fxn g; sus integrantes, x .k/ .
existe lmite es nico.
4 La barra designa complejo conjugado.
3 Si

se dice que la forma es definida positiva, denominndosela tambin producto escalar. Una forma sesquilineal
sobre R es siempre una forma bilineal.
Un espacio prehilbertiano es un espacio vectorial sobre K dotado de una forma hermtica definida positiva.
Todo espacio prehilbertiano es un espacio normado mediante
p
kvk D hvjvi :

En la demostracin de que esta definicin corresponde a la de una norma en E juega un papel importante la
desigualdad de Cauchy-Schwarz por Augustin Louis Cauchy, Francia 1789-1857 y Karl Hermann Amandus
Schwarz, Prusia 1843-Alemania 1921 a saber,

hujvi  kuk  kvk :


Si  es un abierto de Rn , el espacio vectorial de las funciones al cuadrado integrables en 5 es


Z
2
L2 ./ D f W  ! R;
jf .x/j dx < 1


que es un espacio prehilbertiano si se le dota del producto escalar


Z
hf; gi D
f .x/g.x/dx:


Un espacio de Hilbert por David Hilbert, Prusia Oriental 1862-1943


es un espacio prehilbertiano comp
pleto respecto de la norma asociada al producto escalar k  k D h; i . Dicho de otra forma, un espacio
prehilbertiano que con esta norma da un espacio de Banach. Todo espacio de Hilbert es un espacio de Banach,
pero el recproco no es cierto.
R
El espacio vectorial L2 ./ dotado de la norma anterior, hf; gi D  f .x/g.x/dx, es un espacio de Hilbert.
El espacio eucldeo n-dimensional, expresado Rn o En , es un espacio de Hilbert de dimensin finita. Visto
as, un espacio de Hilbert sera la generalizacin de un espacio eucldeo, incluida la dimensin infinita. El
producto escalar en un espacio eucldeo es una forma bilineal. En particular, dados dos vectores en R2 de la
forma u D a; bT y v D c; d T , su producto escalar viene dado por hu; vi D ac C bd . que se puede verificar
que es una forma bilineal.
Dos vectores cuyo producto escalar es cero se denominan ortogonales; si sus kk2 son la unidad se denominan
ortonormales. Para dos vectores ortogonales se tiene la identidad
ku C vk2 D kuk2 C kvk2 ;

que es una generalizacin del teorema de Pitgoras. En un espacio prehilbertiano el nico vector ortogonal a
todos los vectores del espacio es el vector nulo; si este espacio es de dimensin finita es posible construir una
base ortonormalizada.
En un espacio eucldeo n-dimensional el ngulo entre dos vectores x e y es
!
xT y
 D arc cos
;
kxkkyk
donde

D

xT y
kxkkyk

cumple que 1    1, para cualesquiera x e y.


Dos vectores son ortogonales si x T y D 0 ( D =2;  D 0); alineados, si x T y D kxkkyk ( D 0;  D 1);
opuestos, si x T y D kxkkyk ( D ;  D 1). Forman un ngulo agudo si x T y > 0 ( < =2;  > 0) y un
ngulo obtuso si x T y < 0 ( > =2;  < 0).
Una familia cualquiera de vectores distintos del nulo y ortogonales dos a dos es una familia libre. Si M es
un subespacio de un espacio prehilbertiano E de dimensin finita, el subespacio ortogonal de M , M ? , es el
subespacio formado por todos los vectores ortogonales a los de M , siendo un subespacio suplementario de M ;
es decir M M ? D E. Cualquier x 2 E, por consiguiente, se puede expresar como x D a C b, con a 2 M
y b 2 M ?.
5 Tambin

se suelen denotar L2 ./.

2.3 Aplicaciones lineales


Dados dos espacios vectoriales E y F sobre el mismo cuerpo K se define una aplicacin lineal, transformacin lineal, mapeo, operador lineal u homomorfismo, f , de E en F , como una aplicacin f W E ! F que
verifica
f .x C y/ D f .x/ C f .y/ ;

cualesquiera que sean los vectores x, y de E y los escalares  y . Existen dos casos particulares interesantes:
el primero cuando E D F , en este caso se dice que f es un operador lineal de E o endomorfismo de E; el
segundo cuando F D K el cuerpo base, en cuyo caso la aplicacin se denomina forma lineal sobre E.
El conjunto L.E; F / de todas las aplicaciones lineales del espacio E en el espacio F se estructura como un
espacio vectorial si se definen las siguientes operaciones:
adicin .f C g/ W

.f C g/.x/ D f .x/ C g.x/ 8x 2 EI

producto por un escalar f W .f /.x/ D f .x/

8x 2 E y 8 2 K:

En particular, el conjunto L.E; K/ de formas lineales es un espacio vectorial denominado dual de E, representndose con E  .
Para una aplicacin lineal f W E ! F , el conjunto de vectores de F que son la imagen de los de un
subespacio de E forma un subespacio de F . En particular, la imagen de todo E es un subespacio de F que se
denomina subespacio imagen de f , representndose mediante Im.f /. Anlogamente, el conjunto anti-imagen
de un subespacio de F forma un subespacio de E. En particular, la anti-imagen del subespacio nulo de F forma
lo que se denomina el ncleo de la aplicacin, representndose por ker.f /. As pues
ker.f / D fx 2 E W f .x/ D 0g :
Si b 2 F , la ecuacin lineal f .x/ D b tiene solucin si y slo si b 2 Im.f /. En ese caso el conjunto de
todas las soluciones es la variedad lineal traslacin de un subespacio dada por x0 C ker.f /, donde x0 es
una solucin particular de la ecuacin. En particular, la aplicacin es inyectiva si y slo si ker.f / D ;.
Sean E y F dos espacios prehilbertianos sobre el cuerpo K; si f W E ! F es una aplicacin lineal, la
aplicacin traspuesta de f es la aplicacin f  W F ! E que cumple
hxjf  .y/i D hf .x/jyi ;
cualesquiera que sean los vectores x 2 E e y 2 F . Particularmente importante es el caso en que E D F : f  se
dice entonces que es el operador adjunto de f . Cuando un operador f de E cumple que f  D f se denomina
operador autoadjunto. En el caso de que E sea un espacio vectorial real, tambin se dice que f es un operador
simtrico y cuando es un espacio vectorial complejo, que f es un operador hermtico. Un operador simtrico
cumple que
hxjf .y/i D hf .x/jyi;
mientras que uno hermtico, que

hxjf .y/i D hf .x/jyi:

Un operador f de E es unitario cuando es invertible y su inverso coincide con su adjunto. Es decir, si


f  D f 1 . Para un operador unitario se tiene que
hf .x/jf .y/i D hf  .f .x//jyi D hxjyi ;
de manera que kf .x/k D kxk. Por este motivo a los operadores unitarios tambin se les denomina operadores
isomtricos.
Dada una transformacin lineal, aplicacin lineal, o mapeo, f W E ! E, se dice que un subespacio W de E
es un subespacio invariante frente a f (o f -invariante) si para todo vector w 2 W se cumple que f .w/ 2 W .
Dicho de otra manera, W es un subespacio invariante si f .W /  W .
8

3 Topologa
En un espacio vectorial normado se define una bola abierta, S.x0 ; r/, de centro x0 y radio r, como el
conjunto de puntos x que verifican kx x0 k < r. Es decir:
S.x0 ; r/ D fx 2 Rn W kx

x0 k < rg:

N 0 ; r/, se define, por el contrario, como el conjunto de puntos x que verifican kx


Una bola cerrada, S.x
x0 k  r. Es decir:
N 0 ; r/ D fx 2 Rn W kx x0 k  rg:
S.x

Consideraremos en lo que sigue de este apartado un subconjunto S del espacio vectorial mtrico hasta ahora
estudiado (puede ser, por ejemplo, Rn ).
Un punto y 2 S es un punto interior del conjunto S si existe un " tal que
kx

yk < " ) x 2 S :

En otras palabras, existe una bola abierta S.y; "/ de centro y y radio " contenida ntegramente en S .
El conjunto de todos los puntos interiores del conjunto S se denomina interior de S . Este conjunto puede,
evidentemente, ser vaco. Ejemplo: un plano del espacio R3 .
Un subconjunto de S se dice abierto si coincide con su interior; es decir, si alrededor de todo punto de S
existe una bola abierta contenida ntegramente en S . Dos ejemplos: la bola abierta unidad, S.x; 1/ D fx W
kxk < 1g y el espacio Rn en su totalidad. En general los subconjuntos o conjuntos abiertos se caracterizan por
no tener lmites definidos o ser disjuntos de su frontera (ver ms adelante la definicin del concepto frontera).
Un entorno de un punto x, E.x/, es un conjunto abierto que contiene a x. En otras palabras, E.x/ es un
entorno de x si contiene una bola abierta de centro x.
Se dice que un punto x es un punto de acumulacin del subconjunto S si en todo entorno de x existen un
nmero infinito de puntos de S.
Un punto x se denomina punto de adherencia del subconjunto S cuando todo entorno de dicho punto x
contiene al menos un punto de S; es decir, para todo " existe un y 2 S tal que kx yk < ". El conjunto de todos
los puntos de adherencia se denomina adherencia en la literatura anglosajona y latinoamericana, clausura
N
cl.S/. La adherencia de la bola abierta S.x; 1/ D fx W kxk < 1g es la cerrada S.x;
1/ D fx W kxk  1g.
Se denomina frontera de un conjunto a la parte de la adherencia que no est en el interior.
Un conjunto, o subconjunto, se dice cerrado si coincide con su adherencia. La adherencia de cualquier
conjunto S es el conjunto cerrado ms pequeo que contiene a S . Se puede demostrar que un conjunto es
cerrado si y slo si toda sucesin convergente de elementos de S tiene un lmite en ese conjunto.
Un conjunto, o subconjunto, se dice compacto si es cerrado y acotado (contenido en una bola de radio
r < 1). Un importante resultado, debido a Weierstrass, dice que si S es un conjunto compacto, de cada
sucesin o sucesin infinita fx .n/ gn2N de elementos de dicho conjunto es posible extraer una subsucesin
n
o
x .`/
LN
`2L

que converge a un elemento del propio conjunto S.


Si fr .k/ g es una sucesin de nmeros reales y s .k/ D sup fr .i / W i  kg, entonces fs .k/ g converge a un
nmero real s0 ; a este nmero se le denomina lmite superior de fr .k/ g y se expresa como




lKm sup r .k/
o lKm r .k/ :
k!1

El lmite superior de una sucesin de nmeros reales es el mayor punto de acumulacin de la sucesin. De
forma similar se define el lmite inferior.

4 Matrices
Sean dos espacios vectoriales E y F de dimensiones finitas n y m sobre el mismo cuerpo K. Una aplicacin
lineal g W E ! F , g 2 L.E; F /, est caracterizada o representada en dos bases fe1 ; e2 ; : : : ; en g de E y
9

ff1 ; f2 ; : : : ; fm g de F por una tabla de coeficientes, matriz asociada, de m filas y n columnas:


2
3
a11    a1n
6 : :
7
:: : : ::: 7 2 K mn :
AD6
4
5
am1    amn

Los coeficientes aij estn definidos por

g.ej / D
El vector columna j -simo

m
X

aij fi ;

i D1

1  j  n:

3
a1j
6a 7
6 2j 7
6 : 7
4 :: 5
amj

representa el vector g.ej / en la base .fi /. A partir de la matriz A se pueden calcular los coeficientes y1 ; y2 ; : : : ; ym
del vector y D g.x/ en la base .fi /, conociendo los coeficiente x1 ; x2 ; : : : ; xn en la base .ej /. En efecto:
2 3
2
3
2
3
2
3
y1
a11
a12
a1n
6 7
6
7
6
7
6
7
6 y2 7
6 a21 7
6 a22 7
6 a2n 7
6 : 7 D x1 6 : 7 C x2 6 : 7 C    C xn 6 : 7 :
6 : 7
6 : 7
6 : 7
6 : 7
4 : 5
4 : 5
4 : 5
4 : 5
ym

am1

am2

amn

Expresin que tambin se puede escribir de la siguiente forma:


yD

n
X

x i ai ;

i D1

donde ai es el vector columna i -simo de la matriz A. As pues, si se fijan dos bases en E y F , cada aplicacin
lineal, g W E ! F , queda unvocamente representada por una matriz. Recprocamente, toda matriz en K mn
define unvocamente una aplicacin lineal entre dos espacios E y F de dimensiones n y m en los que se han
fijado dos bases. En particular, se pueden identificar las matrices m  n con las aplicaciones lineales de K n en
K m.
Las matrices de m filas y n columnas con coeficientes en el cuerpo K forman un espacio vectorial, K mn ,
sobre dicho cuerpo K.
Si E y F son dos espacios de dimensin finita dotados de un producto escalar y la aplicacin 2 L.E; F /
se representa en dos bases ortonormalizadas mediante una matriz A, la aplicacin T 2 L.F; E/, traspuesta
de , viene representada por la matriz A T , traspuesta de A.
El ncleo y la imagen de una matriz A 2 K mn , ker.A/ y Im.A/, respectivamente, se definen como los
subespacios de K n y K m que son el ncleo y la imagen de la aplicacin lineal asociada:
7
7
ker.A/ D fx 2 K n W Ax D 0g
7
5
:
m
n
Im.A/ D fy 2 K W y D Ax; x 2 K g
mn
A2K

Dicho de otra forma, la imagen de una matriz es el subespacio generado por los vectores columna de la matriz;
los vectores fila tambin generan un subespacio que no es otro que la imagen de A T .
Para una matriz A 2 Rmn se cumple que:

ker A T D .Im.A//?

Im A T D .ker.A//?
?
ker.A/ D Im A T
?
Im.A/ D ker A T
:
10



De acuerdo con esto, si A 2

Rmn ,

,QQHU3URGXFW /HQJWK DQG2UWKRJRQDOLW\

se cumple que



7KHQH[WWKHRUHPDQG([HUFLVH YHULI\WKHFODLPVPDGHLQ6HFWLRQ
FRQFHUQLQJ
ker .A/ Im A T D Rn :
WKHVXEVSDFHVVKRZQLQ)LJ  $OVRVHH([HUFLVH LQ6HFWLRQ 

En la figura 4.4 se muestran estos subespacios.

I m

K e
r A

r A
K e

I m

'*(63&  7KHIXQGDPHQWDOVXEVSDFHVGHWHUPLQHG

Figura 4.4:
fundamentales
determinados por A mn
m ! n PDWUL[
A
E\DQSubespacios
El rango de una matriz es la dimensin6 de su subespacio imagen:

5)&03&. 

rango.A/ D dim.Im.A//:
/HW A EHDQ m ! n PDWUL[ 7KHRUWKRJRQDOFRPSOHPHQWRIWKHURZVSDFHRI
A LV
A
A
WKHQXOOVSDFHRI

DQGWKHRUWKRJRQDOFRPSOHPHQWRIWKHFROXPQVSDFHRI
LV
nn
Una matriz A 2 K mn se dice de
T rango completo si rango.A/ D mKn.m; n/. Una matriz cuadrada A 2 K
WKHQXOOVSDFHRI

A
se denomina singular si rango.A/ < n; regular si rango.A/ D n. Tambin se cumple que rango.A/ D
rango.A T /.
.5RZ A/? D 1XO A DQG .&RO A/? D 1XO AT
La aplicacin asociada a una matriz A 2 Rmn es suprayectiva si rango.A/ D m. Para una matriz A 2
mn
K
se cumple que
[ LVLQ 1XO A WKHQ [ LV
1300' 7KHURZFROXPQUXOHIRUFRPSXWLQJ
A[ VKRZVWKDWLI
dim.ker.A// C rango.A/
D n;

RUWKRJRQDOWRHDFKURZRI A ZLWKWKHURZVWUHDWHGDVYHFWRUVLQ Rn / 6LQFHWKHURZV

o, alternativamente, dim.ker.A// D n rango.A/. La aplicacin lineal asociada a A es, por tanto, inyectiva,
RI A VSDQWKHURZVSDFH [ LVRUWKRJRQDOWR 5RZ A &RQYHUVHO\ LI [ LVRUWKRJRQDOWR
si y slo si rango.A/ D n. Por otro lado dim.ker.A T // C rango.A T / D m.
5RZ A WKHQ [ LVFHUWDLQO\RUWKRJRQDOWRHDFKURZRI A DQGKHQFH A[ D  7KLVSURYHV
El producto exterior uvT de un vector columna n  1 por un vector fila 1  n es una matriz A nn de rango
WKHUVWVWDWHPHQWRIWKHWKHRUHP 6LQFHWKLVVWDWHPHQWLVWUXHIRUDQ\PDWUL[ LWLVWUXH
1.
2
3
IRU AT  7KDWLV WKHRUWKRJRQDOFRPSOHPHQWRIWKHURZVSDFHRI
AT LVWKHQXOOVSDFHRI
u
v
u
v



u
v
1 1 1 2
7 A
AT  7KLVSURYHVWKHVHFRQGVWDWHPHQW6EHFDXVH
5RZ AT 1Dn&RO
6
u
v
u
v2    u2 vn 7
2
1
2
T
6
A D uv D 6 :
:: 7
7
: 5
4 ::
un v1 un v2    un vn
2
3

$QJOHVLQ R DQG R 2SWLRQDO

4.1 Normas
,I X DQGdeY matrices
DUHQRQ]HURYHFWRUVLQHLWKHU R2 RU R3  WKHQWKHUHLVDQLFHFRQQHFWLRQEHWZHHQ
# EHWZHHQWKHWZROLQHVHJPHQWVIURPWKHRULJLQWRWKH
WKHLULQQHUSURGXFWDQGWKHDQJOH
Aun cuando
en lo que sigue nos limitaremos
a matrices cuadradas, la mayor parte de las definiciones y
SRLQWVLGHQWLHGZLWK
X
DQG
Y
7KHIRUPXODLV
resultados son extensibles a matrices rectangulares; tambin supondremos que las matrices son reales.
Las matrices cuadradas de orden n forman un espacio vectorial con un producto, esto es, un lgebra. Una
X ! Y D kcon
Xk kelYproducto.
k FRV # Se define formalmente sobre 
norma matricial es una norma vectorial compatible
Rmn como
mn
una aplicacin k  k W R
! R que cumple:

7RYHULI\WKLVIRUPXODIRUYHFWRUVLQ R2  FRQVLGHUWKHWULDQJOHVKRZQLQ)LJ  ZLWKVLGHV


D 0 H) A D 0:
YkkAk
 %\WKHODZRIFRVLQHV
RIOHQJWKV kXk kYk DQG kX #1)
2) kAk D jj  kAk:

kX # Yk2 D kXk2 C kYk2 # 2kXk kYk FRV #


3) kA C Bk  kAk C kBk:

(u , u )

4) kABk  kAk  kBk:

1 R
2 mn que no son normas matriciales pues no cumplen la propiedad 4). As,
Existen normas sobre el espacio
si se define
|| u v||
kAk D mKax jaij j ;

|| u||

6 Recordemos:

! n
1i;j

mximo nmero de vectores linealmente independientes.

(v1, v2)

||v||

'*(63&  7KHDQJOHEHWZHHQWZRYHFWRUV

11

h i
se satisfacen 1), 2) y 3); sin embargo, tomando A D B D 11 11 , es fcil ver que kABk D 2 > kAk  kBk D 1,
por lo que no se cumple 4).
Un ejemplo importante de norma matricial es la norma de Frobenius, definida como:
X
2
kAk2F D
aij
D traza.A T A/;
1i;j n

Pn

donde la traza de una matriz A de orden n es i D1 ai i . Es fcil ver que esta norma deriva del producto escalar
hAjBi D traza.A T B/, que configura al espacio de las matrices cuadradas como un espacio prehilbertiano. La
norma de Frobenius cumple que
kABkF  kAkF  kBkF :

Una norma matricial k  k sobre Rmn se dice consistente con una norma vectorial k  k0 sobre Rn cuando
para cada matriz A y cada vector x se cumple que
kAxk0  kAk  kxk0 :
Por ejemplo, la norma de Frobenius y la norma eucldea de Rn son consistentes pues
kAxk2  kAkF  kxk2 :
Se demuestra que para toda norma matricial es posible construir una norma vectorial consistente. Recprocamente, a toda norma vectorial sobre Rn se le puede asociar una norma matricial consistente. Una norma
matricial consistente con una cierta norma vectorial k  k se construye mediante la definicin
kAk D

sup
0x2Rn

kAxk
:
kxk

Esta norma matricial se dice inducida por la norma vectorial. Ejemplo: la norma matricial inducida por la norma
eucldea de Rn es la norma espectral:
kAk2 D

sup
0x2Rn

"

x T A T Ax
xT x

#1=2

q
D max .A T A/ D max .A/;

donde  designa un valor propio de A y  un valor singular. Si k  k es la norma inducida por una cierta norma
vectorial y k  k0 es una norma matricial cualquiera consistente con esa norma vectorial, se cumple, para toda
matriz A, que kAk  kAk0 . En particular, para la norma espectral y la norma de Frobenius, se cumple que
p
kAk2  kAkF  nkAk2 :
Tambin, que kABkF  kAkF  kBk2 y kABkF  kAk2  kBkF 2. Como casos particulares, kIk2 D 1 y
kDk2 D mKaxi jdi j.
Las normas matriciales inducidas ms usadas son
kAk1 D mKax

1j n

kAk1 D mKax

1i m

m
X

i D1
n
X

j D1

jaij j y
jaij j :

Ejemplo 4.1 El efecto que produce aplicar la transformacin lineal basada en la matriz
"
#
12
AD
02
12

[2, 2]T
[0, 1]T
norma11
norma

A1 = 4

[1, 0]T

[1, 0]T

A2 2,9208

norma22
norma

A = 3

norma1

norma

La aplicacin transforma el vector e 1 D 1; 0T en s mismo y


Figura 4.5: Efecto Tde una aplicacin
e 2 D 0; 1 en 2; 2T . lineal sobre la bola unidad para diferentes normas

39/63

sobre la bola unidad definida a partir de las normas k  k1 , k  k2 y k  k1 en R2 , se representa en la figura 4.5. La
aplicacin transforma
el
vector
e1 D 1;
02T en3 s mismo y e2 D 0; 1T en 2; 2T . Con la norma 1, el vector
a
c
1
b
unitario que ms sed amplifica
la4 transformacin
es 0; 1T (o 0; 1T ), que pasa a ser 2; 2T . Su
gal aplicarle
e
f
9
6
5
factor de amplificacin,
enj trminos de10la norma
1, es 4.
8
7
i
h
Con la norma 2, el vector unitario que ms se amplifica es el que se representa en la figura con una recta
discontinua. El factor de amplificacin es 2,9208.
Para la norma 1, igualmente, el vector unitario que ms se amplifica es el que se representa tambin con la
recta discontinua: 1; 1T , que pasa a transformarse en 3; 2T . El factor de amplificacin correspondiente es en
este caso 3 ya que


1; 1T D 1
1


3; 2T D 3:
u
1
es

Adems de las normas vectoriales y matriciales ya presentadas, otra norma vectorial que se utiliza en el curso


p
p


kxkA D A 1=2 x D hAxjxi D x T Ax;
2

energa7

denominada norma A o norma de


del vector x, para una matriz A simtrica y definida positiva. A
hxjyiA D hAxjyi se le denomina producto interior de A o producto escalar de energa. La matriz A 1=2 es
la nica matriz definida positiva solucin de la ecuacin matricial X 2 D X  X D A.

4.2 Matrices ortogonales, unitarias, simtricas, Hessenberg, de permutacin y de proyeccin


Una matriz Q 2 Rmn se dice ortogonal si verifica que QT Q D I; es decir, cuando sus vectores columna
son ortogonales dos a dos y de norma eucldea unitaria (ortonormales). Si Q 2 Rnn es ortogonal, se cumple
que QQT D QT Q D I.
7 Pues

suele corresponder con la energa fsica de ciertos sistemas.

13

Las matrices ortogonales Q 2 Rmn verifican:


9
>
>
kQk2 D 1
>
>
>
=
1=2
kQkF D n
si m  n y
kQAk2 D kAk2 >
>
>
>
>
kQAk D kAk ;
F

kQk2
kQkF
kAQk2
kAQkF

D1
D m1=2
D kAk2
D kAkF

9
>
>
>
>
=
>
>
>
>
;

si m  n:

Una matriz ortogonal no modifica ni los ngulos ni las normas, .Qx/H .Qy/ D x H QH Qy D x H y. Si
y D x, jjQxjj2 D jjxjj2 .
La extensin de las matrices ortogonales al campo complejo son las matrices unitarias. Son matrices, U 2
C nn , cuya inversa es su compleja conjugada: U H U D U U H D I: Todos los valores propios de las matrices
unitarias tienen mdulo unidad. Como las ortogonales, una matriz unitaria no modifica ni los ngulos ni las
normas, .U x/H .U y/ D x H U H U y D x H y. Si y D x, jjU xjj2 D jjxjj2 .
Una matriz de permutacin es una matriz cuadrada cuyas columnas estn formadas por las de la matriz
unidad permutadas. Una matriz de permutacin es una matriz ortogonal.
Una matriz se dice simtrica si se verifica que A D A T . Para una matriz cualquiera A 2 Rmn , la matriz
A T A es simtrica. Si A 2 C nn es igual a su traspuesta conjugada, A D B D A H , bij D aNj i , se dice
hermtica.
Una matriz A se dice definida positiva si x T Ax > 0 para todo vector x 0. De forma similar se definen matrices semidefinida positiva, definida negativa y semidefinida negativa, si x T Ax  0, < 0 y  0,
respectivamente, para todo vector x 0. La matriz A se dice indefinida si x T Ax es positivo para algn x y
negativo para otros. Tambin A 2 C nn se dice definida positiva si para todo x 2 C n ; x 0, se cumple que
x H Ax > 0.
Si A 2 Rnn es simtrica y definida positiva se puede descomponer de la formaA D QDQT donde Q
1
1
es una matriz ortogonal y D, diagonal, tiene todos sus coeficientes positivos por lo que A 2 D QD 2 QT
1
1
satisfacindose que A 2 A 2 D A.
Se dice que una matriz A 2 C nn de coeficientes aij es de diagonal dominante por filas cuando cumple que
jai i j 

n
X

jaij j;

n
X

jaj i j;

j D1;j i

i D 1; : : : ; n:

Anlogamente, se dice diagonal dominante por columnas si


jai i j 

j D1;j i

i D 1; : : : ; n:

Si las desigualdades se verifican estrictamente la matriz A se denomina diagonal estrictamente dominante.


Lema 4.1 Para que una matriz simtrica sea definida positiva es necesario que todos los coeficientes de la
diagonal principal sean positivos.
Lema 4.2 Para que una matriz simtrica A sea definida positiva es necesario que el coeficiente de mayor
valor absoluto est en la diagonal principal. Ms concretamente,
mKax jaij j < mKax akk :
i j

Lema 4.3 Si en cada fila de una matriz simtrica A el coeficiente de la diagonal principal es mayor que la
suma de los valores absolutos de todos los dems coeficientes de la fila, es decir, si
akk >

n
X
j D1

jakj j

k D 1; : : : ; n;

j k

A es definida positiva.
14

Es importante destacar que este ltimo criterio define una condicin suficiente, no necesaria. En efecto, la
matriz
3
2
322
Q D 42 3 25
223
es definida positiva pues
x T Qx D x12 C x22 C x32 C 2.x1 C x2 C x3 /2

cualquiera que sea x 0, es siempre positiva. Esa matriz, sin embargo, no satisface el lema 4.3.
Una matriz de Vandermonde por Alexandre-Thophile Vandermonde, Francia 1735-1796 es una matriz
que presenta una progresin geomtrica en cada fila; como esta:
3
2
1 1 12 : : : 1n 1
6 1 2 2 : : : n 1 7
2
2
7
6
n 17
2
6
V D 6 1 3 3 : : : 3 7 :
7
6: : : :
4 :: :: :: : : ::: 5
1 n n2 : : : nn 1
Una matriz de Hankel por Hermann Hankel, Alemania 1839-1873 es una matriz cuadrada con todas sus
diagonales de derecha a izquierda paralelas numricamente. Es decir, tiene la forma
3
2
a b c d e
6b c d e f 7
7
6
7
6
H D 6 c d e f g 7:
7
6
4d e f g h 5
e f g h i

Una matriz de Hessenberg por Karl Adolf Hessenberg, Alemania 1904-1959 es una matriz triangular
excepto por una subdiagonal adyacente a la diagonal principal.
@
@
@

@
@

Cualquier matriz se puede reducir a la forma de Hessenberg mediante transformaciones ortogonales de Householder o Givens. Si la matriz original es simtrica, al reducirla a la forma de Hessenberg se obtendr una
tridiagonal.
Se denomina proyector o matriz de proyeccin a una matriz P 2 Rnn que verifica que P 2 D P. Si P
adems es simtrica, se denomina proyector ortogonal o matriz de proyeccin ortogonal. Si, en este ltimo
caso, F es el subespacio imagen de la matriz P (el mismo que el de la matriz P T ), Px define la proyeccin
ortogonal del vector x sobre F .
Se denomina proyector suplementario de P al proyector S D I P. Si F D Im.P/ y G D ker.P/,
entonces F D ker.S / y G D Im.S /.
En el caso de un proyector ortogonal P en el que F D Im.P/, se tiene que Rn D F F ? , verificndose
que kPxk2  kxk2 y que
kx Pxk2 D
mKn
kx yk2 :
y2Im.P /DF

4.3 Valores propios, valores singulares y formas cuadrticas


4.3.1 Valores propios
Si A es una matriz cuadrada de orden n y coeficientes en K (R o C), un vector no nulo u 2 Kn se denomina
vector propio de A si para algn  2 K se cumple que
Au D u :
15

A este  se le denomina valor propio o autovalor de la matriz A. El conjunto de los valores propios de una matriz A se denomina espectro de A, designndose por .A/. El radio espectral, .A/, se define de la siguiente
manera:
.A/ D mKax ji j:
1i n

Para que un nmero  sea valor propio de A, el sistema lineal y homogneo de ecuaciones dado por .I
A/x D 0 debe tener soluciones distintas de la trivial x D 0. Esto equivale a que
det.A

I/ D 0 :

Esta es una ecuacin polinmica de grado n en  que se denomina ecuacin caracterstica, o polinomio caracterstico, de la matriz A. La ecuacin caracterstica admite la raz  D 0 si y slo si det.A/ D 0. Una matriz es
invertible, por tanto, si y slo si no admite al cero como vector propio.
Para que exista una solucin distinta de la trivial x D 0, el valor propio  deber ser raz del polinomio
caracterstico de grado n asociado a A, esto es det.A I/ D 0. Lo que es igual a n C g1 n 1 C g2 n 2 C
   C gn D 0:
El Teorema fundamental del lgebra establece que cada ecuacin polinmica de grado n, con coeficientes
complejos, tiene n races en el cuerpo de los complejos.
La multiplicidad algebraica del valor propio  de A es la multiplicidad de la raz correspondiente del polinomio caracterstico asociado a A. La multiplicidad geomtrica de  es el nmero de vectores propios linealmente
independientes que se corresponden con . La multiplicidad geomtrica de un valor propio es menor o igual
que su multiplicidad algebraica.
Por ejemplo, si A D I,  D 1 es un valor propio con multiplicidad algebraica y geomtrica n. El polinomio
caracterstico de A es p.z/ D .z 1/n y ei 2 C n , i D 1; : : : ; n, sus vectores propios. Si el valor propio  tiene
una multiplicidad geomtrica menor que la algebraica, se dice defectuoso. Se dice que una matriz es defectuosa
si tiene al menos un valor propio defectuoso. La matriz
2
3
210
40 2 15
002
tiene un valor propio, 2, de multiplicidad algebraica 3 y multiplicidad geomtrica 1; u D 100T . Si una matriz
A 2 C nn no es defectuosa, dispone de un conjunto de n vectores propios linealmente independientes.
Un resultado interesante debido a dos matemticos del siglo XIX, Cayley, britnico y Hamilton, irlands,
dice que cualquier matriz A 2 C nn satisface su propia ecuacin caracterstica. Es decir,
A n C g1 A n

C g2 A n

C    C gn I D 0:

Si A es invertible, como consecuencia de ello,


A

1 n
A
gn

g1 n
A
gn



gn 1
I:
gn

A partir del teorema de Cayley-Hamilton tambin es fcil comprobar


 1 2  que existe un polinomio p de grado
1
mximo n 1 tal que A
D p.A/. Como ejemplo, la matriz 3 4 tiene como polinomio caracterstico
x 2 5x 2. El teorema de Cayley-Hamilton dice que A 2 5A 2I D 0, lo cual se puede comprobar
inmediatamente. La inversa de A se puede obtener de esta ecuacin a partir de A .A 5I/ D 2I. En efecto,
A 1 D 21 .A 5I/.
Para A 2 C nn y 0 b 2 C n1 , al subespacio Kj .A; b/ D Genfb; Ab; : : : ; A j 1 bg se le denomina
subespacio de Krylov.
Igual que cualquier matriz tiene asociado un polinomio caracterstico, cualquier polinomio tiene asociado
una matriz compaera. La matriz compaera de un polinomio mnico8 p.t / D c0 C c1 t C    C cn 1 t n 1 C t n
8 Un

polinomio a0 C a1 x C a2 x 2 C : : : C an x n se dice que es mnico si an D 1.

16

es

3
0 0 ::: 0
c0
61 0 ::: 0
c1 7
7
6
7
6
c2 7
C .p/ D 6 0 1 : : : 0
6 :: :: : : ::
:: 7
4: : : :
: 5
0 0 : : : 1 cn 1
2

El polinomio mnimo q.t / de la matriz A es el polinomio mnico nico de grado mnimo tal que q.A/ D 0.
Una matriz real de orden n no tiene necesariamente valores propios reales pero, como consecuencia del teorema fundamental del lgebra, cualquier matriz compleja tiene al menos un valor propio complejo. El nmero
mximo de valores propios es n.
Al aplicrsele a cualquier vector la transformacin que representa A ese vector tiende a orientarse en la
direccin del vector propio dominante de A. Si aquel vector est en la direccin de alguno de los vectores
propios de A, se
o contrae por un factor que determina el correspondiente valor propio. Por ejemplo,
 expande

la matriz A D 21 12 tiene como valores propios 3 y 1. Los vectores propios asociados son 1 1T y 1 1T . El
efecto de aplicarla sobre distintos vectores se puede ver en la figura 4.6: en magenta y azul los vectores propios;
otros en rojo.

Figura 4.6: Efecto de aplicrsele a diversos vectores la transformacin que representa la matriz A D
Siendo  un valor propio de una matriz A, el conjunto de soluciones del sistema de ecuaciones
.I

2 1
12

A/x D 0

es un subespacio de Kn que se denomina subespacio propio asociado al valor propio , designndose con E .
Si n es la multiplicidad de  como raz de la ecuacin caracterstica de A, se cumple que
dim.E /  n :
La interseccin de subespacios propios correspondientes a valores propios distintos se reduce al subespacio
nulo; esto es,
  H) E \ E D ; :

De este modo, la suma de subespacios propios es directa. Se cumple que


M
E D Kn
2.A/

si y slo si para cada  2 .A/, dim.E / D n ; en ese caso existe una base de Kn formada toda ella por
vectores propios de A.

17

El teorema central en el estudio de los mtodos y algoritmos numricos para el clculo y anlisis de valores
y vectores propios es el de la descomposicin de Schur por Issai Schur, Alemania 1875-1941.
Teorema 4.4 Descomposicin o triangularizacin de Schur Para cualquier A 2 C nn existe una matriz
unitaria U y una matriz triangular superior, T , tal que
AU D U T o U H AU D T .
Los valores propios de A son entonces los coeficientes de la diagonal principal de R.
Teorema 4.5 Para cualquier matriz hermtica A 2 C nn existe una matriz unitaria U tal que
U H AU D D,
donde D es una matriz diagonal.
1. Los valores propios de A son nmeros reales.
2. Se pueden obtener vectores propios de A que sean ortonormales.
En este caso se dice que la matriz A es semejante a una matriz diagonal: la matriz A es diagonalizable por
semejanza. Dos matrices semejantes tienen el mismo polinomio caracterstico y los mismos valores propios.
Una matriz A 2 C nn es normal, es decir AA H D A H A, si y slo si A D U U H , donde U es una matriz
unitaria y una diagonal cuyos coeficientes son los valores propios de A. Los vectores propios son los vectores
columna de U .
Toda matriz real y simtrica tiene todos sus valores propios reales y es diagonalizable por semejanza. Se
demuestra adems que los subespacios propios correspondientes a valores propios distintos son ortogonales.
De aqu se sigue que es siempre posible formar una base ortonormalizada de vectores propios para una matriz
real y simtrica A. Existe entonces una matriz ortogonal Q tal que se verifica que
QT AQ D D;

con QT D Q

y, de aqu que, toda matriz real y simtrica es congruente ortogonal con su reducida diagonal. Este resultado
fundamental de la teora de matrices es la versin elemental del denominado teorema espectral.
Una matriz simtrica definida positiva tiene todos sus valores propios reales y positivos; si es semidefinida,
alguno es cero. Si la matriz es negativa definida, todos sus valores propios son negativos.
Si A es hermtica, el producto x H Ax es un nmero real. Los valores propios de una matriz hermtica, en
consecuencia, son nmeros reales. En una matriz hermtica los vectores propios correspondientes a dos valores
propios distintos son ortogonales entre s.
Teorema 4.6 Descomposicin de Jordan Para una matriz A 2 C nn existe una matriz regular X 2 C nn
tal que X 1 AX D diag.J 1 ; : : : ; J k / donde2
3
i 1
6
7
6 i 1 0 7
6
7
Ji D 6
  7 2 C ni ni
6
7
4 0
 15
i
y n1 C    nk D n. Las J i son las matrices o bloques de Jordan y los i los valores propios de A.

Un resultado muy interesante para averiguar el orden de magnitud de los valores propios de una matriz
es el del teorema de Gerschgorin, que dice que si A 2 Rnn es una matriz simtrica con valores propios
1 ; 2 ; : : : ; n , entonces
8
9

>
>

n
=
<
X
jaij j ;
mKn i  mKn ai i
>
1i n
1i n

>
j D1
:
;
j i
8
9

>

>
n
<
=
X
mKax i  mKax akk C
jakj j :
>
1kn
1kn

>
j D1
:
;
j k

18

4.3.2 Valores singulares


La nocin de valor propio, o autovalor, no tiene significado para matrices rectangulares. En stas, por el
contrario, si lo tiene, como en las cuadradas, el concepto de valor singular. Si A es una matriz cualquiera m  n
con coeficientes en R, se definen sus valores singulares i ; i D 1; : : : ; mKnfm; ng, como las races cuadradas
positivas de los valores propios de la matriz cuadrada A TA 2 Rnn .
Teorema 4.7 Descomposicin en valores singulares Si A 2 Rmn es una matriz de rango r existen matrices
ortogonales U 2 Rmm y V 2 Rnn tales que
A D U V T ,
h
i
donde D r 0 , 2 Rmn y r D diag.1 , 2 ; : : : ; r /, con 1  2      r > 0. Si las matrices
0 0
U y V se escriben como U D u1 ; : : : ; um y V D v1 ; : : : ; vn , los ui y vi son los vectores singulares
izquierdos y derechos, respectivamente, correspondientes a los valores singulares i , i D 1; : : : ; r.
D EMOSTRACIN . Sean x 2 Rn e y 2 Rm dos vectores tales que
kxk2 D kyk2 D 1

y Ax D y;

con

 D kAk2 :

La existencia de estos vectores x e y est garantizada por la definicin de kAk2 .


Sean las dos matrices ortogonales
V D x V 1 2 Rnn

U D y U 1 2 Rmm

(siempre es posible ampliar un conjunto de vectores ortogonales hasta formar una base ortonormal de Rn ).
Como U T1 Ax D U T1 y D 0, la matriz U T AV tiene la siguiente estructura:
T

A1 D U AV D
donde B D U T1 AV 1 2 R.m
wT w, como

1/.n 1/

"

yT
U T1

A x V 1 D

"

 wT
0 B

h
i
 k D  2 CwT w   2 C
y wT D y T AV 1 . Dado que kA1 w


2
Bw
2

 k 
 k D
kA1 w
kA1 k2 k w
kA1 k2
2
2

2
 2 C wT w ;

se cumple que kA1 k2  . 2 C wT w/1=2 . Como las matrices U y V son ortogonales, kA1 k2 D kAk2 D  y
por consiguiente w D 0. La argumentacin de la demostracin se completa por induccin.
Los valores singulares de A son las longitudes de los semiejes del hiperelipsoide E definido, a partir de la
esfera unidad y el operador A, por
E D fy W y D Ax; kxk2 D 1g :
En la figura 4.7 se describe grficamente el caso en que m D n D 2.
Si A es una matriz n  n, j det.A/j D 1  2    n . Para una matriz A 2 Rmn cuya descomposicin en
valores singulares es A D U V T , se define su matriz pseudoinversa, A , como
A D V U T ;
donde

D diag.1 1 ; : : : ; r 1 ; 0; : : : ; 0/ 2 Rnm :
 1 T
 1
Si A 2 Rmn es de rango completo y m > n, A D A T A
A ; si m < n, A D A T AA T
.
mn

Para cualquier matriz A 2 R


, la matriz A A es la matriz n  n de proyeccin ortogonal sobre el
subespacio de los vectores fila de A, AA la m  m de proyeccin ortogonal sobre la imagen de la matriz A
(subespacio de sus vectores columna) y .I A A/ la de proyeccin ortogonal sobre el ncleo de A, ker.A/.
19

Ax
Ax

Figura 4.7: Representacin en dos dimensiones de una transformacin lineal de la esfera unidad
La matriz A mn D U V T , de rango r, se puede escribir como la suma de r matrices de rango uno as
AD

r
X

i ui viT ;

i D1

donde los ui y vi son los vectores columna i -simos de U y V . Dada la descomposicin en valores singulares
de A, de rango r, los vectores singulares izquierdos fu1 ; : : : ; ur g conforman una base ortonormal de Im.A/
y furC1 ; : : : ; um g otra base ortonormal de ker.A T /. Igualmente, fvrC1 ; : : : ; vn g es una base ortonormal de
ker.A/ y fv1 ; : : : ; vr g una base ortonormal de Im.A T /.
4.3.3 Formas cuadrticas
Una forma cuadrtica en n variables es un polinomio de segundo grado en esas variables. La expresin ms
general de una forma cuadrtica es
q.x/ D x T Qx ;

donde Q D QT es una matriz simtrica de orden n. Nos limitaremos al anlisis de formas cuadrticas con
coeficientes reales.
Mediante una transformacin lineal de variables, x D T y, una forma cuadrtica se puede reducir a la forma
cannica de suma de cuadrados siguiente:
q.x/ D

p
X

yi2

pCq
X

yi2 :

i DpC1

iD1

El rango de la forma es p C q y la signatura p q (p nmeros positivos y q negativos).


Una forma cuadrtica real es definida positiva si para todo vector x 0, q.x/ > 0. El rango y signatura de
una forma cuadrtica definida positiva valen n. Si Q la forman los coeficientes qij y se introducen los nmeros
menores como
2
3
q11 q12    q1i
6q q  q 7
6 21 22
2i 7
i D det 6 :: :: : : :: 7 ;
4 : :
: : 5
qi1 qi 2    qi i

la forma cuadrtica asociada a Q es definida positiva si y slo si todos los menores i son positivos.
Sean 1 ; : : : ; n los valores propios que sabemos son reales de la matriz Q; por el teorema espectral,
existe una matriz ortogonal P tal que
P T QP D diag.1 ; : : : ; n /:
Haciendo en la forma cuadrtica q.x/ D x T Qx el cambio de variables x D Py, se tiene que
q.x/ D y T P T QPy D 1 y12 C    C n yn2 ;
20

lo que hace ver que el rango de la forma cuadrtica es el nmero total teniendo en cuenta las multiplicidades
de valores propios no nulos de Q, mientras que la signatura coincide con la diferencia entre los nmeros de
valores propios positivos y negativos. En particular, la forma cuadrtica asociada a Q es definida positiva si y
slo si todos los valores propios de Q son positivos.
En ciertos casos es importante acotar el cociente de una forma cuadrtica al cuadrado de la norma eucldea,
es decir, el cociente
x T Qx
r.x/ D T
;
x 0:
x x
Mediante una transformacin ortogonal x D Py, este cociente se escribe como
r.x/ D
de manera que se deducen las acotaciones

1 y12 C    C n yn2
;
y12 C    C yn2

mi n .Q/ 

x T Qx
 max .Q/ :
xT x

Estas acotaciones no se pueden mejorar ya que si Qv D v,

vT Qv
vT v

D .

5 Teorema de la proyeccin
Gran parte de las teoras de sistemas de ecuaciones y de optimizacin que se estudian en la asignatura
estn basadas en unos pocos resultados simples e intuitivos. Entre estos, quizs el ms sencillo y usado sea
el teorema de la proyeccin. Su aplicacin en la teora de mnimos cuadrados lineales es fundamental. En un
espacio Eucldeo ordinario de tres dimensiones determina que la distancia ms corta de un punto exterior a
un plano a ese plano la proporciona la perpendicular al plano desde dicho punto. La expresin formal de este
teorema en espacios de Hilbert es la que sigue.
Teorema 5.1 Sea H un espacio de Hilbert y M un subespacio cerrado de H . Para todo vector x 2 H existe
un nico vector m0 2 M tal que kx m0 k2  kx mk2 , para todo m 2 M . La condicin necesaria y
suficiente adems para que m0 2 M sea el vector mnimo nico es que x m0 sea ortogonal a M .
D EMOSTRACIN . Primero probaremos que si m0 es un vector que minimiza kx mk, x m0 es ortogonal
a M . Supongamos para ello, por el contrario, que existe un m que no es ortogonal a x m0 ; sin prdida de
generalidad podemos suponer que kmk D 1 y que hx m0 jmi D 0. Definamos el vector m1 2 M como
m1 D m0 C m. Tendremos que
kx

m1 k22 D kx
D kx

m0
m0 k22

mk22 D kx

jj2 < kx

m0 k22

m0 k22 :

hx

m0 jmi

hmjx

m0 i C jj2

De esta manera, si x m0 no es ortogonal a M , m0 no es el mnimo que decamos.


Veamos ahora cmo, si x m0 es ortogonal al subespacio M , m0 es el nico vector de M que minimiza
kx mk2 . En efecto, para todo m 2 M , el teorema de Pitgoras dice que
kx

mk22 D kx

m0 C m0

mk22 D kx

m0 k22 C km0

mk22 :

Por lo tanto kx mk2 > kx m0 k2 para m m0 .


Demostraremos ahora la existencia de un m0 que minimiza kx mk2 . Si x 2 M , entonces m0 D x y todo
estara probado como es obvio. Si x M , definamos un D Knfm2M kx mk2 ; lo que queremos es obtener
un m0 2 M tal que kx m0 k2 D .
A tal fin, sea fm.i / g una sucesin de vectores en M tal que kx m.i / k2 ! . Por la ley del paralelogramo9
se tiene que

2
2

2

2
.j /
.j /
.j /


.i /
.i /
.i /
.m
x/
C
.x
m
/
C
.m
x/
.x
m
/
D
2
m
x
C
2
x
m







:
2

9 Para

u, w 2 M , ju C wj2 C ju

wj2 D 2juj2 C 2jwj2 .

21

Proposicin 8.1 (Condiciones necesarias de primer orden) Sea  un subconjunto de Rn y una


funcin f W  ! R, f 2 C 1 . Si x  en un mnimo relativo de f en , para toda direccin d 2 Rn ,
factible desde x  , se cumple que rf .x  /d  0.
Corolario 8.2 Sea  un subconjunto de Rn y una funcin f W  ! R, f 2 C 1 . Si x  es un
mnimo relativo de f en  y x  es un punto interior de , se cumple que rf .x  / D 0.

Reordenando, se obtiene

.j /
m


2
2

2

2

.i / C m.j /
m

.j / 8.3
(Condiciones

Proposicin
necesarias
de segundo orden) Sea
 un subconjunto de Rn y una
.i /
m.i / D 2funcin
x ! C
2 2xC 2 . m
4mnimo
m f W 
x relativo de f en ,:para toda direccin d 2 Rn ,

R,
f
Si
x
en
un


2
2
2
2

xk22

factible desde x  , se cumple que:

/
.i / km
Como
! est
cuando
i !pues
1,rf
km
! 0 cuando
i; j ! 1.
Es decir,De
fm.ila
g es
Para todo i; j , el vector .m
C m /=2
en M
ste
es un
vectorial
(lineal).
definicin
.x  /d
 0:espacio
Exercise
.i /
una sucesin
de.jCauchy;
como M es un subespacio cerrado, la sucesin fm g tiene un lmite m0 en
.i
/
/

T 2

de se deduce que kx M
.my, debido
Cm
/=2k

,
por
lo
que
2
rf .x
D 0; entonces d r f .x /d  0:
a la continuidad de la norma,Sikx
m0 k/d
2 ! .

2

2

2
El teorema

solucin
problema
/
.j /en evidencia
.i /del
2
given two
n-vectors
6=0,2y
de.ila/x
pone
que
m
x Cnecesarias
2 la
x m
4
: Sea x  un punto interior de  y su m.j
proyeccin
m

Proposicin
8.4
(Condiciones
de segundo
orden)
.i /

.jxk
/2
2

.j /

m.i / k22

pngase que tambin unminimizar


mnimo relativo
de f W  ! R, f 2 C 2 . Entonces:
ktx yk

t
minimize
!0 yk
cuando
i; j ! 1. Es decir, fm.i / g es una
cuando i ! 1,
km.j / (over
m.it)/ k22ktx


!
Como
/ D 0:
es el vector proyeccin ortogonal de y sobre x: txrf
en.x
la figura.
sucesin de Cauchy; como M es un subespacio cerrado, la sucesin fm.i / g Ttiene
un lmite m0 en M y, debido
Para
todo
r 2 f .x  /d
 0:x
is the
projection
of a vector y on thed;
lined through
0 and
a la continuidad degeometrically,
la norma, kx tx m
k
!
.
0 2
km.i /

Proposicin 8.5 (Condiciones suficientes de segundo orden) Sea f 2 C 2 una funcin definida en
x interior. Supngase adems que:
una regin en la cual x  es un punto

tx .x  / D 0:
rf

La matriz Hessiana r 2 f .x  / es definida positiva:

x  es entonces un mnimo relativo estricto de f .

9 Conjuntos convexos

Figura 5.8:
Solucin de minimizar t ktx
8 Conjuntos
convexos

yk

Un conjunto
C  R se dice convexo si y slo si para todo par de puntos x ; x 2 C todas las
n
n

Un conjunto
C evidencia
R se dice que
convexo
si y slo si del
para todo par de puntos x1 ; x2 2 C todas las 1 2
El teorema de laVectors
proyeccin
pone
en
la solucin
1-20estn en C . Es decir, cuando para
combinaciones
de la forma
x D x1 C .1problema
/x2 , con 0    1,

combinaciones de la forma x D x1 C .1 /x2 , con 0    1, estn en C . Es decir, cuando para


cada par
puntosconvexo,
del conjunto
convexo,
todos
los puntos
de laestn
recta
los une estn en el conjunto.
cada par de puntos
del de
conjunto
todos los
puntos de
la recta
que los une
enque
el conjunto.

minimizar ktx

yk

es el vector proyeccin ortogonal de y sobre x: tx en la figura 5.8.

6 Conjuntos convexos
Conjunto convexo

Conjunto no convexo

Un conjunto C  Rn seLa
dice
convexo
y 1slo
dedefine
puntos
x1 ; x2 2 C
todasdelas
expresin
x sets
Dsix
C .1si para
/x2Examples
,todo
0  par
 1,
la combinacin
convexa
x1 combinaciones
y x2 . Si
Examples of convex
of non-convex sets
0
<

<
1,
es
decir

2
.0;
1/,
la
combinacin
se
denomina
estrictamente
convexa.
de la formaxA
D line
x1 C
.1
/x
,
con
0



1,
estn
en
C
.
Es
decir,
cuando
para
cada
par
de convexa
puntos de
del
segment is
a convex set. The union of two non-overlapping
2 La
line
expresin x D x
C
.1
/x
,
0



1,
define
la
combinacin
x1 y segmen
x2 . Si
1
2
Non-convex sets can have indentations.
El puntos
concepto
de combinacin
se 1/,
puede
generalizar
a cualquier
nmero
finito de puntos
de
conjunto convexo, todos los
la<recta
queconvexa
los
estn
en el conjunto.
0 de
<
1, es decir
 2une
.0;
la combinacin
se denomina
estrictamente
convexa.
la siguiente manera:

xD
donde

p
X
i D1

i D 1;

p
X

25

i xi ;

i D1

i  0;

i D 1; : : : ; p:

Fig. 4.9. Convex


sets
with
pairs
of
points
joined by line segments.

El conjunto interseccin de todos los conjuntos convexos que contienen a un subconjunto S  Rn


se llama envoltura convexa de S y se designa por conv.S/.

Title Page

 derecha


Figura
6.9:
Conjuntos
convexos izquierda; no 
convexos




38

of

156

Title Page
Go Back

Full Screen

23

Close

39

of 156
Quit

La expresin x D x1 C .1 /x2 , 0    1, define la combinacin convexa de x1 y x2 . Si 0 <  < 1,


es decir  2 .0; 1/, la combinacin se denomina estrictamente convexa.
El concepto de combinacin convexa se puede generalizar a cualquier nmero finito de puntos de la siguiente
manera:
p
X
xD
i xi ;
donde

i D1

p
X
i D1

i D 1;

i  0;
22

i D 1; : : : ; p:

Go Back

Figure 2.2 Some simple convex and nonconvex sets. Left. The hexagon,
which includes its boundary (shown darker), is convex. Middle. The kidney
shaped set is not convex, since the line segment between the two points in
the set shown as dots is not contained in the set. Right. The square contains
some boundary points but not others, and is not convex.

2.3 The convex hulls of two sets


Left. The convex hull of a
Figura 6.10: EnvolturaFigure
convexa
de dos conjuntos de R2 . in
LaRde. la
izquierda de 15 puntos; la de la derecha de
set of fifteen points (shown as dots) is the pentagon (shown shaded). Right.
un conjunto no convexo
The convex hull of the kidney shaped set in figure 2.2 is the shaded set.

El conjunto interseccin de todos los conjuntos convexos que contienen a un subconjunto S  Rn se llama
envoltura convexa
de S (figura
6.10)
y is
seconvex
designa
por conv.S
/.the set can be seen by every other
Roughly
speaking,
a set
if every
point in
n se dice
an unobstructed
straight se
path
them,
where unobstructed
Un conjunto Cpoint,
 Ralong
que es afn (tambin
dicebetween
que C es
una variedad
afn o una variedad lineal)
means
lying
in
the
set.
Every
affine
set
is
also
convex,
since
it
contains
si para cualesquiera x; y 2 C y cualquier  2 R se tiene que .1 /x C y 2 the
C . entire
El conjunto vaco es
line between any two distinct points in it, and therefore also the line segment
afn. Una combinacin afn de vectores v1 ; v2 ; : : : ; vn es una combinacin lineal c1 v1 C    C cn vn en la que
between the points. Figure 2.2 illustrates some simple convex and nonconvex sets
c1 C    C cn Din1.R2 .
n
Un conjunto C 
afn siofythe
sloform
si es
la forma C D fa C l W a 2 Rn ; l 2 Lg, donde L es un
We Rcalles
a point
1 xde
1 + + k xk , where 1 + + k = 1 and
n
i 0,
= 1,asociado
. . . , k, a convex
combination
of the points
. . ,subespacio
xk . As withdesplazado
affine
subespacio vectorial
deiR
a C . Es
decir, un conjunto
afnxes
del origen.
1 , .un
sets,
it
can
be
shown
that
a
set
is
convex
if
and
only
if
it
contains
every
convex
La dimensin de un conjunto afn x C L es la de su correspondiente subespacio L. Un plano afn en Rn es un
combination
points.
A convex
of points
can be thought
of as a que cualquier
n . Una
traslado de un subespacio
deofRits
recta
en Rn combination
es un plano afn
de dimensin
1. Es evidente
mixture or weighted average of the points, with i the fraction of xi in the mixture.
conjunto afn es convexo aunque el recproco no es cierto en general.
Si S  Rn , la envoltura
afn
deofSa, set
aff.S
es la interseccin
deset
todos
conjuntos
afines que contienen a
The convex
hull
C, /,denoted
conv C, is the
of alllos
convex
combinations
S. Como se puede
comprobar,
of points
in C: aff.S / D aff.conv.S //.
Un conjunto de puntos o vectores fv1 ; : : : ; vp g de Rn es afnmente dependiente si existen nmeros reales
conv C = {1 x1 + + k xk | xi C, i 0, i = 1, . . . , k, 1 + + k = 1}.
c1 ; : : : ; cp no todos cero tales que c1 C    C cp D 0 y c1 v1 C    C cp vp D 0. De lo contrario ser afnmente
independiente. As the name suggests, the convex hull conv C is always convex. It is the smallest
setesthat
contains C: convexa
If B is any
set that
contains
C, thenafnmente
conv C independientes.
Un simplex o convex
simplejo
la envolvente
de convex
un conjunto
finito
de vectores
B. Figure 2.3 illustrates the definition of convex hull.
Para construir un simplex
k-dimensional
o k-simplex
se procedetocomo
sigue:
The idea
of a convex combination
can be generalized
include
infinite sums, integrals, and, in the most general form, probability distributions. Suppose 1 , 2 , . . .

0-simplex S 0 : un solo punto fv1 g

1-simplex S 1 : conv.S 0 [ fv2 g/ y v2 no est en aff.S 0 /

2-simplex S 2 : conv.S 1 [ fv3 g/ y v2 no se encuentra en aff.S 1 /


::
:

k-simplex S k : conv.S k
7KH*HRPHWU\RI9HFWRU6SDFHV
v1

[ fvkC1 g/ y vkC1 no est en aff.S k

v1

v1
S0

v2
S1

1 /.

v1

v2

v3
S2

v4

v2

v3
S3

'*(63& 

Figura 6.11: El simplex S 1 es un segmento de recta. El tringulo S 2 proviene de seleccionar un punto v3


que no est en la recta que contiene a S 1 y despus formar la envolvente convexa con S 1 . El tetraedro S 3 se
S3 est
S 2S 2
)LJal 
7KHWHWUDKHGURQ
LVSURGXFHGE\FKRRVLQJDSRLQW
produce
elegir
un punto v4 que no
en el plano de S 2 y despus formarY4laQRWLQWKHSODQHRI
envolvente convexa con

DQGWKHQIRUPLQJWKHFRQYH[KXOOZLWK S 2 
%HIRUHFRQWLQXLQJ
FRQVLGHUVRPHRIWKHSDWWHUQVWKDWDUHDSSHDULQJ
7KHWULDQJOH
Sea S D
fv1 ; : : : ; vk g un conjunto
afnmente independiente. Para cada punto p en aff.S
/ los coeficientes
2
1
S KDVWKUHHHGJHV (DFKRIWKHVHHGJHVLVDOLQHVHJPHQWOLNH S  :KHUHGRWKHVH
WKUHHOLQHVHJPHQWVFRPHIURP" 2QHRIWKHPLV
S 1  2QHRIWKHPFRPHVE\MRLQLQJWKH
23
HQGSRLQW Y2 WRWKHQHZSRLQW Y3  7KHWKLUGFRPHVIURPMRLQLQJWKHRWKHUHQGSRLQW Y1 WR
Y3  <RXPLJKWVD\WKDWHDFKHQGSRLQWLQ S 1 LVVWUHWFKHGRXWLQWRDOLQHVHJPHQWLQ S 2 
7KHWHWUDKHGURQ S 3 LQ)LJ KDVIRXUWULDQJXODUIDFHV 2QHRIWKHVHLVWKHRULJLQDO

)LJXUHJLYHVDJHRPHWULFLQWHUSUHWDWLRQWRWKHEDU\FHQWULFFRRUGLQDWHVLQ([DPSOH
 VKRZLQJWKHWULDQJOH "DEF DQGWKUHHVPDOOWULDQJOHV "SEF "DSF DQG "DES 7KH
DUHDVRIWKHVPDOOWULDQJOHVDUHSURSRUWLRQDOWRWKHEDU\FHQWULFFRRUGLQDWHVRI S ,QIDFW
1
DUHD."SEF/ D ! DUHD."DEF/
10
4
c1 ; : : : ; ck de la representacin p D c1 v1 C    C ck vk son las coordenadas baricntricas de p. Las coorde516
Appendix B Convex Sets
nadas baricntricas tienen interpretaciones fsicasy geomtricas.
Fueron
en 1827 por
 1 ! DUHD
 3 ."
 DEF
 9 originalmente
 5  definidas 
DUHD
DSF
."
/
D
/
1
August F. Mbius, Alemania 1790-1868. Si a D 7 , b3 D 0 , c D 3 y p D 3 , el punto p en el centro
de la figura 6.12 tiene por coordenadas baricntricas
tres nmeros no negativos ma , mb y mc tales que p es el
x2
5 (sin masa)x2y las masas m , m y m en los vrtices
centro de masa de un sistema que consiste
tringulo
a
c
b
! DUHD."DEF/
DUHDen
DES
."le
/D
12
correspondientes. Las masas estn unvocamente determinadas
al requerir que su suma sea 1.
a

x1

rea x=1 srea(abc )


convex

nonconvex

Fig. B.1 Convexity


p
rea = t rea(abc )

b
2.C

C + Drea = rrea(abc )

'*(63&  S D r D C s E C t F +HUH r D 14 

Figura 6.12: Punto


p Dt ra
sD
D C sb C tc. En este caso r D
1

3

5

12

1
4,

sD

1
3

yt D

5
12 :

7KHIRUPXODVLQ)LJ DUHYHULHGLQ([HUFLVHV
$QDORJRXVHTXDOLWLHVIRU
D
Proposicin
6.1 El conjunto
de soluciones de un sistema
de
ecuacionesClineales, C D fx W Ax
C
YROXPHVRIWHWUDKHGURQVKROGIRUWKHFDVHZKHQ
S
LVDSRLQWLQVLGHDWHWUDKHGURQLQ
 b; A 2
R3D
mn
m
R
; b 2ZLWKYHUWLFHV
R g, es un conjunto
afn.
D E F DQG
G
0 efecto, supongamos que 0x1 ; x2 2 C , es decir, Ax1 D b, Ax2 D b. Entonces, para
D EMOSTRACIN . En
cualquier , 6HH([HUFLVHLQ6HFWLRQ ,QDVWURQRP\
KRZHYHU EDU\FHQWULFFRRUGLQDWHVXVXDOO\UHIHUWRRUGLQDU\
Fig. B.2 Properties of convex sets
R3 FRRUGLQDWHVRISRLQWVLQZKDWLVQRZFDOOHGWKH ,QWHUQDWLRQDO&HOHVWLDO5HIHUHQFH6\VWHP D&DUWHVLDQ
A . x1 C .1 / x2 / D  Ax1 C .1  / Ax2

FRRUGLQDWHV\VWHPIRURXWHUVSDFH ZLWKWKHRULJLQDWWKHFHQWHURIPDVV WKHEDU\FHQWHU RIWKHVRODUV\VWHP

 b convex
C .1 hull
/ b
Definition. Let S be a subset of E nD
. The
of S, denoted co(S), is
the set which is the intersection of D
all b;
convex sets containing S. The closed
convex hull of S is defined as the closure of co(S).

lo que prueba que la combinacin afn x1 C .1  /x2 est tambin en el conjunto C . El subespacio asociado
conclude
this section
a cone and a convex cone. A
con el conjunto afn CFinally,
en estewe
caso
es el espacio
nulobydedefining
A, ker.A/.
convex cone is a special kind of convex set that arises quite frequently.

Un conjunto C  Rn se dice un cono si para todo x 2 C , x 2 C , para todo escalar  2 R tal que   0.

0
Not convex

0
Convex

Not convex

Figura 6.13: Tres conos: el primero


y el segundo no son convexos; el tercero si
Fig. B.3 Cones
Un cono que tambin es convexo se denomina cono convexo (figura 6.13). En este caso, para todo x1 ; x2 2 C
y 1 ; 2  0, 1 x1 C 2 x2 2 C .
El conjunto fx 2 Rm W x D A; A 2 Rmn ; 2 Rn ;  0g es un cono convexo generado por los vectores
columna de la matriz A.
El conjunto de todas las combinaciones cnicas, 1 x1 C    C k xk , 1 ; : : : ; k  0, de los puntos de un
conjunto C es la envoltura cnica de C , cone.C /.
Un punto x es un punto extremo o vrtice de un conjunto convexo C si y slo si no es interior a un segmento
de recta contenido en C . Es decir, si y slo si
10 nica.

x D .1

/y C z con 0 < < 1 y y; z 2 C ) x D y D z:


24

entonces un elementoTeorema
de conv (X)
puede escribir como
i xi , para R(I)
+ con
deseCarathodory
para iI
conos
P
P
i = 1. Anlogamente, un elemento de cone
n (X) se puede poner como i i xi ,
x1

Teorema 2.1. Si X R y x cone (X), existen x iI X y i 0, i = 1, 2, , n,


n
(I)
para cierto R+ . tales que x = P i xi . Es decir, cualquier elemento de la envoltura cnica de X es
x2

iI

Figure 2.4 The pie slice shows all points of the form 1 x1 + 2 x2 , where
1 , 2 0. The apex of the slice (which corresponds to 1 = 2 = 0) is at
0; its edges (which correspond to 1 = 0 or 2 = 0) pass through the points
x1 and x2 .

i=1

n
Definicin 2.8. Llamamos
envoltura
afn de
al menor
subconjunto
combinacin
cnica
de,Xa loRsumo,
n elementos
de X.afn
que contiene a X, es decir,
\

a f f (X) :=
A Rn : A es afn y X A .

Anlogamente a los resultados anteriores tenemos que:

Proposicin 2.5. Dado X Rn , se tiene que: 0


0
k

Figure 2.5 The conic hulls (shown shaded) of the two sets of figure 2.3.
k

6.10
X Figura
6.14: Envoltura
cnica de los dos conjuntos de la figura
i
i

x
:
k

N,
x

X,

R,
i
=
1,
2,
.
.
.
,
k
;

=
1
a f f (X) =

i
i
i

Figure 2.5 The conic hulls (shown shaded) of the two sets of figure 2.3.

Figura 8.8: Envoltura cnica de los dos conjuntos de la figura i=1


8.6

i=1

Dos resultados importantes


a Constantin Carathodory,
Alemania, 1873-1950, dicen que si X  Rn
Teoremadebidos
de Carathodory
para convexos
Un punto x es un punto extremo de un conjunto convexo C si y slo si no esP
interior
a un segmento de recta contenido
Teorema
Carathodory
y x 2 de
cone.X/,
ypara
i , iconos
D 1; : : : ; n,ntales que x D niD1 i xi . Es i decir, cualquier elemento de
en Cexisten
. Es decir, sixyislo
si
(X),
Teorema
2.2.
Si/yXCcnica

R y xi< a1yloy;conv
existen
xX. Igualmente,
X y 0, i = 1, n. . . , n + 1,
la envoltura
cnica
es
de 2,
x D .1 (X),
z con 0 <de,
) n
x 0,
Dpuntos
yiD=
z: 1,
Teorema
2.1. Si
X de
RnXyn+1
x combinacin
cone
existen
x n+1X zsumo,
y2 CP
, n, i si X  R y
i nC1
Pi , i Ddebido
P
n existen xi y
x 2 conv.X/,
1; : :a:Carathodory
; n C 1, tales
que
Dn iy x 2i D1
i/,xexisten
elemento de la
P
i . Esxi decir,
Dos
que
si Xx

R
cone.X
y i , i Dcualquier
1; : :elemento
: ; n,
i resultados
i xii cualquier
=decir,
1,
tales
que dicen
xde =
cnica
Es
decir,
cualquier
de la envoltura
Pn importantes
i x . de
talesenvoltura
que x =convexa
i xque
.decon
Es
elemento
de
la
envoltura
cnica
de
X
es
tales
xX
D decir,

.
Es
cualquier
elemento
la
envoltura
X
es
combinacin
cnica
de,
a
lo
sumo,
iD1
esi=1
combinacinn convexa de, a loi=1sumo, n C 1 puntos de X. La
figura 6.15 ilustra estos
PnC1
i=1 n puntos de X. Igualmente,
si X  R y x 2 conv.X /, existen xi y i , i D 1; : : : ; n C 1, tales que x D iD1 i xi .
resultados. cnica
convexa
dedeXlanenvoltura
eselementos
combinacin
asumo,
lo sumo,
Es decir,de,
cualquier
convexa de X
convexade,
de, a lo
n C 1 puntosnde+
X. 1
La puntos de X.
combinacin
a loelemento
sumo,
dees combinacin
X.convexa
figura 8.9 ilustra estos resultados.

Figura 8.9: El teorema de Carathodory


Teorema de Carathodory paraFigura
convexos
6.15: El teorema de Carathodory

Llamaremos hiperplano H de vector caracterstico a 2 Rn ; a 0, al conjunto H D fx 2 Rn W aT x D cg, con

n
i
Teorema 2.2. Si cX2 R.UnRhiperplano
yx
existen
Xlineal
y eni R. 0, i = 1, . . . , n + 1,
es elconv
conjunto(X),
de soluciones
de unax
ecuacin
n ; a 0, al conjunto H D fx 2 Rn W aT x D cg,
Llamaremos
hiperplano
H
de
vector
caracterstico
a.n2 R
n+1
n+1
Un hiperplano en RP
es un espacio afn o una variedad lineal
1/-dimensional.
P
i


tales
que
x=
decir,
cualquier
de
la envoltura
concon ci2=R.1,Un
Dado
un hiperplano
H , conjunto
axi x
D .c,Es
llamaremos
semiespacios
cerrados
de ecuacin
borde H a los conjuntos
H
hiperplano
es el
de
soluciones
de unaelemento
lineal
en DRnx.2 R W a x  c
n

i=1

2 Rn W1/-dimensional.
a T x > c y H D x 2 Rn W a T x < c .
y H en
DR
xn
2R
aTi=1
xespacio
 c , y semiespacios
de borde H alineal
H C D x.n
hiperplano
esn W un
afn o abiertos
una variedad
Los semiespacios de borde H son convexos; la unin de HC y H es el espacio Rn .

Unde X es combinacin convexa de, a lo sumo, n + 1 puntos de X.


convexa
T

Dado un hiperplano
, ase representa
x D c,
llamaremos
semiespacios
cerrados de borde
H a los conjuntos HC D
T
En la
figuraH
8.10
el hiperplano
x1 C 4x
2 D 11, su vector caracterstico a D 1; 4 y los semiespacios


n
T
n
T
HC y H .
x 2 R W a x  c y H DT x 2 R W a x  c , y semiespacios abiertos de borde H a HV C D x 2 Rn W aT x > c
En un hiperplano a x D c, la constante c determina el desplazamiento del hiperplano del origen. Un hiperplano se

n Wexpresar
puede
fx W semiespacios
aT .x x0 / D 0g, donde
x0 es cualquier
punto
del hiperplanola
(aTunin
x0 D c).de
EsaH
ltima
y HV D x 2 R
aT x de<lacforma
. Los
de borde
H son
convexos;
C y H es el espacio
T
?
?
expresin
se
puede
trabajar
un
poco
ms
pues
fx
W
a
.x
x
/
D
0g
D
x
C
a
,
donde
a
es
el
complemento ortogonal
0
0
n
T
R . En la figurade 6.16
se fvrepresenta
hiperplano
x1 Cconsiste
4x2 en
Dun11,
su vector
a, es decir
W aT v D 0g. Loelque
lleva a que un hiperplano
desplazamiento
x0 caracterstico
ms todos los vectoresa D 1; 4 y los
T
ortogonales
al
vector
caracterstico
a:
el
conjunto
de
soluciones
de
a
x
D
c:
x
C
ker.a/,
recordemos.
0
semiespacios HC y H .
Un politopo es un conjunto formado por la interseccin de un nmero finito de semiespacios cerrados. Un politopo
cnico es un conjunto formado por la interseccin de un nmero finito de semiespacios cerrados que pasan por un punto.

a
Un poliedro es un politopo acotado y no vaco. Es fcil comprobar
que la interseccin de conjuntos convexos es convexa
y que, por lo tanto, los politopos y los poliedros son conjuntos convexos. Si un politopo P es un poliedro, cualquier punto
se puede expresar como combinacin convexa de sus puntos extremos.
H+

Teorema 8.1 Sea C un conjunto convexo e y un punto exterior a la adherencia


de C . Existe un vector a tal que
y
x0
aT y < Knfx2C aT x.

21

Figura 8.10: Hiperplano x1 C 4x2 D 11 y los semiespacios en los que divide R2

Figura 6.16: Hiperplano x1 C 4x2 D 11 y los semiespacios en los que divide R2

En un hiperplano aT x D c, la constante c determina el desplazamiento del hiperplano del origen.


Un
se puede expresar de la forma fx W aT .x x0 / D 0g, donde x0 es cualquier punto del
T hiperplano
T
En un hiperplano ahiperplano
x D (ac,
constante
c determina
el desplazamiento
del origen. Un
x0la
D c).
Esa ltima expresin
se puede trabajar
un poco ms pues fx del
W aT .xhiperplano
x0 / D
?
?
T
T
0g
D
x
C
a
,
donde
a
es
el
complemento
ortogonal
de
a,
es
decir
fv
W
a
v
D
0g.
Lo que lleva
0
hiperplano se puede expresar
de
la
forma
fx
W
a
.x
x
/
D
0g,
donde
x
es
cualquier
punto
del hiperplano
0
0
a que un hiperplano consiste en un desplazamiento x0 ms todos los vectores ortogonales al vector
?
Tpoco ms pues fx W aT .x
(aT x0 D c). Esa ltima
expresin
se
puede
trabajar
un
x
/
D
0g
D
x
caracterstico a: el conjunto de soluciones de a x D c: x0 C ker.a/, recordemos.
0
0 Ca , donde
Un politopo es un conjunto formado por la interseccin de un nmero finito de semiespacios cerrados. Un politopo cnico es un conjunto formado por la interseccin de un nmero finito de semiespa25
cios cerrados que pasan por un punto.
B.3y no
Separating
Supporting
Hyperplanes
Un poliedro es un politopo acotado
vaco. Es fciland
comprobar
que la interseccin
de conjuntos 519
convexos es convexa y que por lo tanto los politopos y los poliedros son conjuntos convexos. En esta
figura se muestran varios politopos; el del centro es un poliedro.

a? es el complemento ortogonal de a, es decir fv W aT v D 0g. Lo que lleva a que un hiperplano consiste en un


desplazamiento x0 ms todos los vectores ortogonales al vector caracterstico a: el conjunto de soluciones de
aT x D c: x0 C ker.a/, recordemos.
Un politopo es un conjunto formado por la interseccin de un nmero finito de semiespacios cerrados. Un
politopo cnico es un conjunto formado por la interseccin de un nmero finito de semiespacios cerrados que
pasan por un punto.
Un poliedro es un politopo acotado y no vaco: ver figura 6.17. Es fcil comprobar que la interseccin de
conjuntos convexos es convexa y que, por lo tanto, los politopos y los poliedros son conjuntos convexos. Si
B.3 Separating and Supporting Hyperplanes
519
un politopo P es un poliedro, cualquier punto
se puede expresar como combinacin convexa
de sus puntos
extremos o vrtices.

Fig.
B.5 Polytopes
Figura 6.17: Diversos
politopos:
el del centro, un poliedro

Teorema 6.2 SeaIt C


conjunto
convexo
e y un punto
exterior
de C .ofExiste
un vector a tal
is un
easy
to see that
half spaces
are convex
setsa la
andadherencia
that the union
H+ and
T
T
Knfx2C
que a y < H
a whole
x.
is the
space.

D EMOSTRACINDefinition.
. Sea
A set which can be expressed as the intersection of a finite number
DtoKnf
yk2 polytope.
> 0:
of closed half spaces is said
be kx
a convex
x2C

see that
sets es
obtained
family
of solutions
Existe un x0 en laWe
frontera
de Cconvex
tal quepolytopes
kx0 yk2areDthe
. Esto
as puesaslathe
funcin
continua
f .x/ D kx yk2
to
a
set
of
linear
inequalities
of
the
form
alcanza su mnimo en cualquier conjunto cerrado y acotado por lo que slo es necesario considerar x en la
interseccin de la adherencia de C y la bola abierta de
centro y y radio 2.
a1T x  b1
A continuacin probaremos que a D x0 y satisface
las condiciones del enunciado del teorema. En efecto,
a2T x  b2
para cualquier , 0   1, al ser C un conjunto convexo,
el punto x0 C .x x0 / 2 C , por lo que

2  kx
kx0 C .x x0 / yk
yk22 :
0
2
amT x  bm 
Desarrollando,
2.x0 y/T .x x0 / C 2 kx x0 k22  0:
since each individual inequality defines a half space and
the solution family is
Considerandothe
esta
expresin cuando
! 0C,
se tiene
que ai = 0, the resulting set can still, as
intersection
of thesehalf
spaces.
(If some
the reader may verify, be expressed as the intersection of a finite number of half
.x0 y/T .x x0 /  0
spaces.)
Several polytopes are illustrated in Fig. B.5. We note that a polytope may be
o que
empty, bounded, or unbounded. The case of a nonempty bounded polytope is of
special interest and
we distinguish this case by the following.
.x0 y/T x  .x0 y/T x0 D .x0 y/T y C .x0 y/T .x0 y/
Definition. A nonempty bounded
polytope
D .x
y/Tisy called
C 2 : a polyhedron.
0

Haciendo a D x0

B.3

y queda probado el teorema.

SEPARATING AND SUPPORTING

La interpretacin geomtrica de este teorema es que dado un conjunto convexo C y un punto y exterior a la
HYPERPLANES
adherencia de C existe un hiperplano que contiene a y, sin tocar a C , estando C en uno de sus semiespacios
two theorems
in caracterstico
this section are
perhaps
the most
importanthiperplano
results related
to de C e y.
abiertos. Ese The
hiperplano,
de vector
a en
el teorema,
se denomina
separador
Geometrically,
thedisjuntos,
first states
point entonces
outside aun
convex
a b tales que
Si C y D convexity.
son dos conjuntos
convexos
C that
\ Dgiven
D ;,aexiste
a 0set,
y un
T
T
hyperplane
can
be
passed
through
the
point
that
does
not
touch
the
convex
set.
The
a x  b, para todo x 2 C , y a x  b, para todo x 2 D. Dicho de otra manera, la funcin aT x b es no
second, which is a limiting case of the first, states that given a boundary point of a
convex set, there is a hyperplane that contains the boundary point and contains the
26
convex set on one side of it.

E2

aT x b

aT x b

E1

E3

Figure 2.18 Three ellipsoids in R2 , centered at the origin (shown as the


lower dot), that contain the points shown as the upper dots. The ellipsoid
E1 is not minimal, since there exist ellipsoids that contain the points, and
are smaller (e.g., E3 ). E3 is not minimal for the same reason. The ellipsoid
E2 is minimal, since no other ellipsoid (centered at the origin) contains the
points and is contained in E2 .

Figure 2.19 The


hyperplane
| aT x = b} separates
the entre
disjointCconvex
Figura
6.18:{x
Hiperplano
separador
y D sets
C and D. The affine function aT x b is nonpositive on C and nonnegative
on D.
T
T

a xb
a xb

positiva en C y no negativa en D. El hiperplano x W aT x D b es un hiperplano separador de los conjuntos
C y D como se ve en la figura 6.18.
D
Existen bastantes principios de dualidad que se usan en laC asignatura, en especial en la teora y tcnicas de
optimizacin, que relacionan un problema en trminos de vectores en un espacio vectorial con otro expresado
a
en trminos de subespacios en ese espacio. En gran cantidad de esos principios est presente la relacin que se
ilustra en la figura 6.19. La distancia ms corta de un punto a un conjunto convexo es igual al mximo de las
Figure 2.19 The hyperplane
{x Hiperplano
| aT x = b} separates
disjoint
Figura 8.14:
separadorthe
entre
C y Dconvex sets
C and D. The affine function aT x b is nonpositive on C and nonnegative
on D.

Figura 8.15: Distancia ms corta de un punto a un conjunto convexo en trminos de la de a hiperplanos separadores

Figura 6.19: Distancia ms corta de un punto a un conjunto convexo en trminos de la de a hiperplanos sepaen ese espacio. En gran cantidad de esos principios est presente la relacin que se ilustra en la figura 8.15. La distancia
radores
ms corta de un punto a un conjunto convexo es igual al mximo de las distancias desde el punto a los hiperplanos que
separan el conjunto convexo del punto. El problema original de minimizacin sobre vectores se convierte en otro de
maximizacin sobre hiperplanos.

distancias desde el punto a los hiperplanos que separan el conjunto convexo del punto. El problema original de
Teorema 8.3 Sea C un conjunto convexo e y un punto frontera de C . Existe un hiperplano que contiene a y y a C en
minimizacin sobre vectores
convierte
uno de susse
semiespacios
cerrados.en otro de maximizacin sobre hiperplanos.
D EMOSTRACIN . Sea fy g una sucesin de puntos exteriores a la adherencia de C . Sea fa g la sucesin de puntos
Teorema 6.3 Sea C un
conjunto
unelpunto
frontera
deanterior,
C . Existe
normalizados,
ka kconvexo
D 1, obtenidaedey
aplicar
teorema anterior
a la sucesin
tales que, un hiperplano que contiene a y


y a C en uno de sus semiespacios cerrados.  
.k/

.k/

.k/

a.k/

y .k/ < Knf a.k/

x2C

x:

D EMOSTRACIN . Sea Como


fy .k/
una
sucesin
desubsucesin
puntosfaexteriores
a laa unadherencia
C .que,
Sea fa.k/ g la sucesin
fa gg es
una sucesin
acotada, una
g, k 2 H, converger
lmite a. Para este ade
se tiene
para cualquier
x 2 C,
.k/




de puntos normalizados, ka k2 D 1, obtenida
de aplicar
el teorema
anterior a la sucesin anterior, tales que,
a y D lKm a
y  lKm a
x D a x:

T

T
Un hiperplano que contiene un.k/
conjunto convexo
C en uno de sus semiespacios
cerrados y que contiene algn punto
a de apoyo
y .k/
nf a.k/ x:
frontera de C se denomina hiperplano
de C . < K
.k/

.k/

.k/

.k/

k2H

.k/

k2H

x2C

De acuerdo con esta definicin, el teorema anterior dice que, dado un conjunto convexo C y un punto frontera y de C ,
existe un hiperplano de apoyo de C que contiene y.


.k/
En la figura 8.16 x W aT x D aT x0 es el hiperplano de apoyo
de C en el punto x0 : el punto x0 y el conjunto C estn


T
separados por el hiperplano x W a x D aT x0 . Geomtricamente quiere decir que el hiperplano x W aT x D aT x0 es


T
T
tangente al conjunto C en x0 y el semiespacio x W a x  a x0 contiene a C .

Como fa.k/ g es una sucesin acotada, una subsucesin fa g, k 2 H, converger a un lmite a. Para este a se
tiene que, para cualquier x 2 C ,

T

T
24 lK
aT y D lKm a.k/ y .k/ 
m a.k/ x D aT x:
k2H

k2H

Un hiperplano que contiene un conjunto convexo C en uno de sus semiespacios cerrados y que contiene
algn punto frontera de C se denomina hiperplano de apoyo de C .
De acuerdo con esta definicin, el teorema anterior dice que, dado un conjunto convexo C y un punto frontera
y de C , existe un hiperplano
de apoyo de C que contiene y.

T
En la figura 6.20 x W a x D aT x0 es el hiperplano de apoyo de C en el punto x0 : el punto x0 y el conjunto
C
separados por el hiperplano x W aT x D aT x0 . Geomtricamente
quiere decir
estn

que el hiperplano
T
x W a x D aT x0 es tangente al conjunto C en x0 y el semiespacio x W aT x  aT x0 contiene a C .
27

%&'*/*5*0/

/HW S EHDFRPSDFWFRQYH[VXEVHWRI Rn  $ QRQHPSW\VXEVHW F RI S LVFDOOHG


D SURSHU IDFH RI S LI F S DQGWKHUHH[LVWVDK\SHUSODQH H D f  d ! VXFK
Hcones
f .S/ 'inequalities
d RU f .S/ & d  7KHK\SHUSODQH H LVFDOOHG
DQGHLWKHU
WKDW F D
2.6S \
Dual
and generalized
51
D VXSSRUWLQJK\SHUSODQH WR S  ,IWKHGLPHQVLRQRI F LV k  WKHQ F LVFDOOHGD
NIDFH RI S 
,I P LVDSRO\WRSHRIGLPHQVLRQ k  WKHQ P LVFDOOHGD NSRO\WRSH $ IDFH
RI P LVFDOOHGD YHUWH[ SOXUDO YHUWLFHV  DIDFHLVDQ
HGJH DQGD .k " 1/
a
GLPHQVLRQDOIDFHLVD IDFHW RI S 
x0
C

&9".1-&  6XSSRVH S LVDFXEHLQ R3  :KHQDSODQH H LVWUDQVODWHGWKURXJK


R3 XQWLOLWMXVWWRXFKHV VXSSRUWV WKHFXEHEXWGRHVQRWFXWWKURXJKWKHLQWHULRURIWKH
FXEH WKHUHDUHWKUHHSRVVLELOLWLHVIRU H \ S  GHSHQGLQJRQWKHRULHQWDWLRQRI H  6HH
Figure 2.21 The hyperplane {x | aT x = aT x0 } supports C at x0 .
)LJXUH 
Figura 6.20: Hiperplano de apoyo de C en x0
H \ S PD\EHDGLPHQVLRQDOVTXDUHIDFH IDFHW RIWKHFXEH
that the point x0 and the set C are separated by the hyperplane {x | aT x = aT x0 }.
geometric
interpretation
is thatcubo
the hyperplane
| aT xque
= aTse
x0 }traslada
is tangenten R3 hasta que apenas
Hdimensin
\ S PD\EHDGLPHQVLRQDOHGJHRIWKHFXEH
Si S es un politopo The
de
3 en R3 un
y H un{x
plano
T
T
to C at x0 , and the halfspace {x | a x a x0 } contains C. This is illustrated in
se apoya en el cubo, pero
no
el interior de ste, hay tres posibilidades para H \ S dependiendo de la
PD\EHDGLPHQVLRQDOYHUWH[RIWKHFXEH
H\
Scorta
figure
2.21.
orientacin de H . Se venAenbasic
la figura
result, 6.21.
called the supporting hyperplane theorem, states that for any
nonempty convex set C, and any x0 bd C, there exists a supporting hyperplane to
C at x0 . The supporting hyperplane theorem is readily proved from the separating
hyperplane theorem.
H We distinguish two cases. If the interior of C is nonempty,
the result follows immediately by
H applying the separating hyperplane theorem to
the sets {x0 } and int C. If the interior of C is empty, then C must lie in an affine
set of dimension less than n, and any hyperplane containing that affine set contains
C and x0 , and is a (trivial) supporting hyperplane.
S is also a partial converse of the supporting
S
S
There
hyperplane theorem: If a set
is closed, has nonempty interior, and has a supporting hyperplane at every point
in its boundary, then it is convex. (See exercise 2.27.)

2.6

Dual cones and generalized inequalities

H ! SDual
es bidimensional
2.6.1
cones

H ! S es unidimensional

H
H ! S es de dimensin 0

'*(63&  Let K be a cone. The set

Figura 6.21: H \ S es una cara cuadradabidimensional


del cubo, una arista unidimensional del cubo o un
K = {y | xT y 0 for all x K}
(2.19)
vrtice de dimensin 0 del cubo

is called the dual cone of K. As the name suggests, K is a cone, and isEHFDXVHWKH\KDYH
always
0RVWDSSOLFDWLRQVRISRO\WRSHVLQYROYHWKHYHUWLFHVLQVRPHZD\
convex, even when the original cone K is not (see exercise 2.31).
DVSHFLDOSURSHUW\WKDWLVLGHQWLHGLQWKHIROORZLQJGHQLWLRQ
Geometrically,
y K if and only if y is the normal of a hyperplane that
Lema 6.4 (Farkas) El sistema
de ecuaciones
supports K at the origin. This is illustrated in figure 2.22.

Ax
D b; of a xsubspace
 0; V Rn (which is a cone) is
Example 2.22 Subspace.
The dual
/HW S EHDFRQYH[VHW
$ SRLQW
S LQcone
H[WUHPHSRLQW RI S LI S LV
ST LVFDOOHGDQ

its orthogonal complement V = {y | y v = 0 for all v V }.


S
QRWLQWKHLQWHULRURIDQ\OLQHVHJPHQWWKDWOLHVLQ

0RUHSUHFLVHO\ LI [; \ 2 S
no tiene solucin si y slo si la tiene el sistema
DQG S 2 xy  WKHQ S D [ RU S D \ 7KHVHWRIDOOH[WUHPHSRLQWVRI S LVFDOOHGWKH
SUROH RI S 
.II /
y T A  0T ;
bT y > 0;

% & ' * / .I
* 5/* 0 /

donde A 2 Rmn .

D EMOSTRACIN . El lema por Farkas Bolyai, Hungra 1775-1856 se puede reformular de la siguiente manera. Si existe un x  0 tal que Ax D b, no existe ningn y tal que y T A  0T y bT y > 0. Recprocamente,
si no existe ningn x  0 tal que Ax D b, existe un y tal que y T A  0T y bT y > 0.
Supongamos que el sistema (I) tiene una solucin x tal que Ax D b y x  0. Sea y un punto tal que
y T A  0T . En este caso bT y D x T A T y  0 pues x  0 y y T A  0T . Esto demuestra que bT y no puede
ser positivo y, por lo tanto, el sistema (II) no tiene solucin.
Supongamos ahora que el sistema (I) no tiene solucin. Esto quiere decir que b S D fv D Ax W x  0g;
es decir que b no pertenece al politopo cnico S . Observando la figura 6.22, est claro que si b S, existe un
hiperplano separador definido por un y, que separa S y b, y para el cual y T ai  0, i D 1; : : : ; n y y T b > 0,
es decir, y forma un ngulo de ms de 90 grados con cada uno de los vectores columna de A y de menos de 90
grados con11 b. Esto verifica que el sistema (II) tiene solucin.
11 El hiperplano separador del politopo cnico S de la figura debera casi tocar a ste a lo largo de a . El hiperplano de apoyo
5
correspondiente, s tocara a a5 .

28

8.1 Dualidad y condiciones de optimo

473

Politopo c
onico S

a3

a2

474

a4

Captulo 8. Dualidad y an
alisis de sensibilidad
a1
a5
Semiespacio abierto {y : bT y > 0}
Hiperplano

a2

an
a1

a3
b
b
/S

Figura 8.2
Figura 6.22: Demostracin del lema de Farkas
Descripci
on geometrica de la existencia de un hiperplano separador
T

Cono {y : y A 0 }
El lema
de Farkas
es un
resultado importante
para el en
estudio
de sistemas
lineales de inecuaciones.
Su interEl par
(P)-(D)
se denomina
habitualmente,
la literatura
especializada,
forma simetrica
pretacin
geomtrica
es
la
siguiente:
de la dualidad.
onson
exponemos
dos teoremas
que
soluciones
par
1. Si aiA; yicontinuaci
D a1;
: : :de
; n,
los n vectores
columna de
la caracterizan
matriz A, quelas
se cumpla
que obptimas
D Ax,del
x
0, de
quiere
Captulo 8. Dualidad
an
lisis
sensibilidad
P
problemas primal-dual.
n
decir que el vector b D i D1 ai xi , xi  0; en otras palabras, que b pertenece al politopo cnico generado
Figuraun8.3
porTeorema
los vectores
columna
de A. En la figurade6.23,
a la izquierda,
se
muestra
ejemplo
donde
el sistema
(I)
8.3
(Complementariedad
Holguras)
Sean
x
e
y
soluciones
factibles
del
El sistema (I) del lema de Farkas
no tiene
soluci
on.par
Lade
tiene (II)
programas primal-dual en forma simetrica
(P)-(D) de (8.8). Las condiciones necesarias y
bT yrespectivos
> 0}
Semiespacio
abierto {y
sucientes para que
sean o
ptimos
de :sus
problemas son:

a2

(cT y T A)x = 0

a2

(8.9)

an

a1

a3

y T (Ax b) = 0.
a1

an

(8.10)

n. Como x e y son soluciones factibles de (P) y (D), respectivamente, se tiene


Demostracio
que
Semiespacio abierto {y : bT y > 0}
s = Ax b 0, x 0
(8.11)
y
wT = cT y T A 0T , y 0.
(8.12)
Cono {y : y T A 0T }

Cono {y : y T A 0 T }

Figura 8.4
Figura
8.3
El sistema
(II)nodel
lema
de Farkas
noDerecha:
tiene soluci
on. La (II)
tiene
Figura 6.23: Izquierda: El sistema (I) del lema
de Farkas
tiene
solucin;
si (II).
El sistema
no(I)
El sistema
(I)
del
lema
de
Farkas
no
tiene
soluci
o
n.
La
tiene
(II)
tiene solucin; la tiene (I)
no tiene solucin:
el vector b no pertenece al cono generado por a1 , a2 , a3 y an . La interseccin del cono
a2
29
an
a1

fy W y T A  0T g (conjunto formado por los vectores y que forman un ngulo mayor o igual de 90 con
los vectores columna de la matriz A) y el semiespacio abierto fy W bT y > 0g, no es el conjunto vaco: el
sistema (II) tiene solucin, pues b y cualquier y en el cono que define la zona sombreada forma un ngulo
menor de 90 y, por lo tanto, bT y > 0.
2. El sistema (II) no tiene solucin si la interseccin del cono fy W y T A  0T g y el semiespacio abierto
fy W bT y > 0g es el conjunto vaco. En la figura 6.23 a la derecha se muestra un ejemplo donde el sistema
(II) no tiene solucin. Todo vector y en la zona que define el cono indicado forma un ngulo mayor de 90
con b. La tiene sin embargo (I) pues b pertenece al cono generado por a1 , a2 y an .

7 Funciones
Recordemos que una funcin es un caso particular de aplicacin donde los conjuntos origen e imagen son
conjuntos de nmeros.
Una funcin f W Rn ! R se dice continua en x si para toda sucesin fx .k/ g que converge a x (expresado
.k/
x ! x), se cumple que f .x .k/ / ! f .x/. De forma equivalente, f se dice continua en x si dado un " > 0,
existe un > 0 tal que
ky xk < H) kf .y/ f .x/k < " :
Una funcin f W R ! R tiene como derivada la funcin
f 0 .x/ D

df .x/
f .x C h/
D lKm
dx
h
h!0

f .x/

supuesto ese lmite existe. Una funcin f que es derivable en un punto x D a es continua en a.
Una funcin f W R ! R se dice satisface la condicin de Lipschitz con constante en un conjunto X , si
para todo x e y pertenecientes a X se cumple que
jf .x/

f .y/j  jx

yj:

Una funcin que satisface la condicin de Lipschitz en un conjunto X se dice continua -Lipschitz en ese X,
designndose f 2 Lip .X /.
Dada una norma vectorial kk en Rn y otra matricial kk en Rmn , m; n > 0, una funcin g W Rn ! Rmn se
dice satisface la condicin de Lipschitz con constante en un abierto D  Rn , si para todo x e y pertenecientes
a D se cumple que
kg.x/ g.y/k  kx yk:
Una funcin g que satisface la condicin de Lipschitz en D se dice continua -Lipschitz en ese D, designndose
g 2 Lip .D/.
Un resultado muy interesante referido a funciones continuas es el teorema de Weierstrass, que dice que una
funcin continua definida en un conjunto compacto S tiene un punto donde alcanza un mnimo en S. Es decir,
existe un x  2 S tal que para todo x 2 S, f .x/  f .x  /.
Un conjunto de funciones f1 ; f2 ; : : : ; fm de Rn en R se puede considerar como una funcin vectorial
f D f1 ; f2 ; : : : ; fm T :
Esta funcin asigna a todo vector x 2 Rn otro vector f .x/ D f1 .x/; f2 .x/; : : : ; fm .x/T de Rm . Tal funcin
vectorial se dice continua si lo es cada uno de sus componentes f1 ; f2 ; : : : ; fm .
Si cada una de las funciones de f D f1 ; f2 ; : : : ; fm T es continua en algn conjunto abierto de Rn , se
dice f 2 C . Si adems cada funcin componente tiene derivadas parciales de primer orden continuas en ese
abierto, se dice que f 2 C 1 . En general, si las funciones componentes tienen derivadas parciales de orden p
continuas, se indica f 2 C p .
Si f W Rn ! R y f 2 C 1 , se define el vector gradiente de f como el vector


@f .x/ @f .x/
@f .x/ T
rf .x/ D
;
;:::;
:
@x1
@x2
@xn
30

Tambin se puede ver expresado alguna vez como fx .x/.


Si f 2 C 2 , se define la matriz Hessiana de f en x por Ludwig Otto Hesse, Alemania 1811-1874 como
la matriz n  n
2
3
@2 f .x/ @2 f .x/
@2 f .x/

6 2
7
@x1 @xn 7
6 @ x1 @x1 @x2
6 2
7
6 @ f .x/ @2 f .x/
@2 f .x/ 7
6
7

2
r 2 f .x/ D 6
@x2 @xn 7
6 @x2 @x1 @ x2
7:
::
::
::
::
6
7
:
6
7
:
:
:
6 2
7
2
4 @ f .x/ @2 f .x/
@ f .x/ 5
 2
@xn @x1 @xn @x2
@ xn

A esta matriz tambin se la puede ver designada como F .x/.


Para la funcin vectorial f D f1 ; f2 ; : : : ; fm T , f 2 C 1 , se define la matriz Jacobiana por Carl Gustav
Jacob Jacobi, Alemania 1804-1851 como la matriz m  n
2
3
@f1 .x/
@f1 .x/ @f1 .x/

6 @x1
@x2
@xn 7
6
7
6 @f2 .x/ @f2 .x/
@f2 .x/ 7
6
7

6
7
@x2
@xn 7 :
rf .x/ D J .x/ D 6 @x1
6
7
::
::
::
::
6
7
:
:
:
:
6
7
4 @fm .x/ @fm .x/
@fm .x/ 5

@x1
@x2
@xn

Si f 2 C 2 , es posible definir m Hessianas F1 .x/; F2 .x/; : : : ; Fm .x/ para cada una de las f1 ; : : : ; fm .
Una funcin f W Rn ! Rm es afn si es la suma de una funcin lineal y una constante; es decir, tiene la
forma f .x/ D Ax C b, donde A 2 Rmn y b 2 Rm .
Teorema 7.1 Teorema de Taylor Si f W Rn ! R y f 2 C 1 en una regin que contiene el segmento
x1 ; x2 , es decir puntos x1 C .1 /x2 ; 0   1, existe un  , 0    1, tal que
f .x2 / D f .x1 / C r T f x1 C .1  /x2 .x2 x1 /:
2
Adems, si f 2 C , existe un ; 0    1, tal que
f .x2 / D f .x1 / C r T f .x1 /.x2

1
x1 / C .x2
2

x1 /T F x1 C .1


 /x2 .x2

x1 / ;

donde F denota la matriz Hessiana de f .


Si la funcin f W R ! R es continua y derivable k C 1 veces en un intervalo, o segmento, x; x0 , existe un
b entre x y x0 tal que
 f 00 .x0 /
2 f 000 .x0 /
x0 C
x x0 C
x
2
3
k f .kC1/ .b/
kC1
x0 C
x x0
:
.k C 1/

f .x/ D f .x0 / C f 0 .x0 / x


C

f .k/ .x0 /
x
k

x0

3

C 

Las aproximaciones por este teorema para una funcin concreta, sen.x/, se pueden ver en la figura 7.24.
Una funcin f W Rn ! R se dice convexa (figura 7.25) si cumple que f .x C y/  f .x/ C f .y/
para todo x; y 2 Rn y todo ; 2 R, con C D 1,  0,  0. Si S  Rn es un conjunto convexo
y f W Rn ! Rm es una funcin afn, la imagen de f .S / D ff .x/ W x 2 S g es un conjunto convexo. De
forma similar, si f W Rk ! Rn es una funcin afn, la imagen inversa f 1 .S / D fx W f .x/ 2 S g tambin es
convexa.
Teorema 7.2 Teorema del valor intermedio Si f W R ! R es una funcin continua en el intervalo a; b,
toma todos los valores entre f .a/ y f .b/. Ms concretamente, si y es un nmero entre f .a/ y f .b/, existe
un nmero c dentro de a; b, es decir, tal que a  c  b, en el que f .c/ D y.
31

7.4 Convex and Concave Functions

193

Figura 7.24: Funcin sen.x/ y, en x D 0, las aproximaciones por Taylor de primer orden, de orden 3, 5, 7, 9,
11 y 13
y = f(x)

convex
(a)

Figura 7.25: Funcin convexa


f

Teorema 7.3 Teorema del valor medio Si f W R ! R es una funcin


 continua y derivable en el intervalo
0
a; b, existe un nmero c entre a y b tal que f .c/ D f .b/ f .a/ =.b a/.

20 | CHAPTER 0 Fundamentals

f (c)

f (c)

y
x

convex
(b)
f

a c

b
(b)

(a)

Figura 7.26: Teorema del valor intermedio

Figure 0.1 Three important theorems from calculus. There

32

a and b such that: (a) f (c) = y, for any given y between f (a


0.4, the Intermediate Value Theorem (b) the instantaneous sl
(f (b) f (a))/(b a) by Theorem 0.6, the Mean Value Theor
region is equal in area to the horizontally shaded region, by

| CHAPTER 0 Fundamentals

f (c)

f (c)

a c

b
(b)

(a)

b
(c)

Figura 7.27: Teorema del valor medio

Figure 0.1 Three important theorems from calculus. There exist numbers c between
b such
y, for
any given
y between
f (a) en
and
(b), by Theorem
Teorema 7.4 Teorema adeand
Rolle
Si f that:
W R (a)
! fR(c)es=una
funcin
continua
y derivable
el fintervalo
a; b y
0
0.4,
the
Intermediate
Value
Theorem
(b)
the
instantaneous
slope
of
f
at
c
equals
suponemos que f .a/ D f .b/, existe entonces un nmero c, entre a y b, tal que f .c/ D 0. G ENERALIZA CIN Si f W R ! R es (f
continua
y derivable
veces en0.6,
a; the
b yMean
la derivada
orden n(c)existe
en el abierto
(b) f (a))/(b
a) nby 1
Theorem
Value de
Theorem
the vertically
shaded
.a; b/, y existen n intervalos
a1
<
b1

a2
<
b2

:
:
:

an
<
bn
en
a;
b,
tales
que
f
.ak/
D
f
.bk/
para
region is equal in area to the horizontally shaded region, by Theorem 0.9, the Mean
todo k D 1 : : : n, existe Value
un nmero
c enfor
.a;Integrals,
b/ tal queshown
la derivada
ordencase
n de g(x)
f en=c1.es cero.
Theorem
in thede
special

THEOREM 0.4

 EXAMPLE 0.7

(Intermediate Value Theorem) Let f be a continuous function on the interval [a, b]. Then
f realizes every value between f (a) and f (b). More precisely, if y is a number between
f (a) and f (b), then there exists a number c with a c b such that f (c) = y.

Show that f (x) = x 2 3 on the interval [1, 3] must take on the values 0 and 1.
Because f (1) = 2 and f (3) = 6, all values
0 and

between 2 and 6, including


1, must be taken onFigura
by f . 7.28:
For example,
setting
Teorema de
Rolle c = 3, note that f (c) = f ( 3) = 0, and
secondly, f (2) = 1.


Teorema 7.5 Primer teorema del valor medio de las integrales Si f W R ! R es una funcin continua en el
intervalo a; b, existe entonces al menos un nmero c entre a y b tal que

THEOREM 0.5

(Continuous Limits) Let f be a continuous function in a neighborhood of x0 , and assume


Z
limn xn = x0 . Thenb
f .x/ dx D f .c/.b a/:


a
lim f (xn ) = f lim xn = f (x0 ).


Teorema 7.6 Segundo teorema del valor medion


de las integrales Sin
f W R ! R es una funcin continua en
el intervalo a; b y g W R ! R una funcin integrable que no cambia de signo en a; b, existe entonces un
In other words, limits may be brought inside continuous functions.
nmero c entre a y b tal que
Z b
Z b
THEOREM 0.6 (Mean Value Theorem)
Letdx
fD
bef a.c/continuously
f .x/g.x/
g.x/ dx: differentiable function on the interval

a
[a, b]. Then therea exists a number c between
a and b such that f (c) = (f (b) f (a))/

Teorema 7.7 Si (b
f W
R a).
! R es una funcin continua en el intervalo a; b y a  c  b, entonces

 EXAMPLE 0.8

Z x
d
f .t / dt D f .x/
c
Apply the Mean Valuedx
Theorem
to f (x) = x 2 3 on the interval [1, 3].

para todo x en a; b.

The content of the theorem is that because f (1) = 2 and f (3) = 6, there must
exist a number c in the interval (1, 3) satisfying f (c) = (6 (2))/(3 1) = 4. It is easy

to nd such a c. Since f (x) = 2x, the correct c = 2.
33 case of the Mean Value Theorem.
The next statement is a special

THEOREM 0.7

(Rolles Theorem) Let f be a continuously differentiable function on the interval [a, b],
and assume that f (a) = f (b). Then there exists a number c between a and b such that

f(c)

f (c)

b
(b)

(c)
Figura 7.29: Teorema del valor medio de las integrales

0.1 Three important theorems from calculus. There exist numbers c between

b such that: (a) f (c) = y, for any given y between f (a) and f (b), by Theorem
e IntermediateTeorema
Value Theorem
(b) the instantaneous
slope
of yf v.x/
at c funciones
equals reales continuas con derivadas continuas.
7.8 Integracin
por partes Sean
u.x/
f (a))/(b a)Entonces
by Theorem 0.6, the Mean ZValue Theorem (c) the verticallyZ shaded
0
is equal in area to the horizontally shaded u
region,
by dx
Theorem
0.9, the Mean
.x/v.x/
D u.x/v.x/
u.x/v 0 .x/ dx:
Theorem for Integrals, shown in the special case g(x) = 1.

7.1 Condiciones necesarias y suficientes de primer y segundo orden que ha de cumplir un

te Value Theorem)
Let mnimo
f be a continuous function on the interval [a, b]. Then
punto
very value between f (a) and f (b). More precisely, if y is a number between
Se trata de definir condiciones necesarias y suficientes para determinar si dada f W  ! R,  2 Rn , un
(b), then there exists

 a number c with a c b such that f (c) = y.
punto x cumple

minimizar f .x/:
x

(x) =

x2

x

2 [1,
se dice
que es
un on
mnimo
local de0laand
funcin
3Un
onpunto
the interval
3] must
take
the values
1. f W  ! R si existe un  > 0 tal que
f .x/  f .x  / para todo x 2  a una distancia menor que  de x  . Es decir, para todo x 2  tal que

 / para between
cause f (1) jx
= 2
(3)f .x/
= 6,> all
2x and
0 and
x and
j < .f Si
f .xvalues
x 6,, aincluding
una
menor que  de x  , se dice que x 
distancia
todo x 2 ,
aken on by es
f .un
For
example,
settingdec f= en .
3, note that f (c) = f ( 3) = 0, and
mnimo
local estricto
(2) = 1.
 n

Teorema 7.9 Condiciones necesarias de primer orden Sea  un subconjunto de R y una funcin f W  !
R, f 2 C 1 . Si x  en un mnimo local de f en , se cumple que rf .x  / D 0.

s Limits) Let fSi be


acontinuous
function
x0 , andestacionario.
assume
en x
se cumple que
rf .x  /in
D a0,neighborhood
al punto x  se leof
denomina
= x0 . Then
Teorema 7.10 Condiciones
necesarias
de segundo orden Sea  un subconjunto de Rn y una funcin f W


2


2

 !
limR,ff(x2n ) C= .fSi xlimen xun
= f (xlocal
rf .x / D 0 y r f .x / es
n mnimo
0 ). de f en , se cumple que
n
semidefinida
positiva.

Teorema
7.11
Condiciones
de segundo
orden Sea  un subconjunto de Rn y una funcin f W
r words, limits
may be
brought
insidesuficientes
continuous
functions.

 ! R, f 2 C 2 . Si se cumple que rf .x  / D 0 y r 2 f .x  / es definida positiva, x  en un mnimo local


.
e Theorem) estricto
Let f debef aencontinuously
differentiable function on the interval

there existsTeorema
a number
a and cualquier
b such that
f (c)
= (f
mnimo
f (a))/global de f . Si adems f es
7.12c between
Si f es convexa,
mnimo
local
x  (b)
es un


derivable, cualquier mnimo local x es un mnimo global de f .

Mean Value Theorem to f (x) = x 2 3 on the interval [1, 3].

e content of the theorem is that because f (1) = 2 and f (3) = 6, there must
ber c in the interval (1, 3) satisfying f (c) = (6 (2))/(3 1) = 4. It is easy

a c. Since f (x) = 2x, the correct c = 2.

xt statement is a special case of the Mean Value Theorem.34

eorem) Let f be a continuously differentiable function on the interval [a, b],

7.2 Teorema de la funcin implcita


Teorema 7.13 Sea x0 D x01 ; x02 ; : : : ; x0n T un punto de Rn que satisface estas condiciones:
(a) Las m funciones fi 2 C p , i D 1; 2; : : : ; m, en algn entorno de x0 , para alguna p  1.

(b) fi .x0 / D 0; i D 1; 2; : : : ; m:

3
@f1 .x0 /
@f1 .x0 /

6 @x1
@x: m 7
6
7
::
::
::
(c) La matriz Jacobiana de la funcin vectorial, rf .x0 / D 6
7, es regular.
:
:
4 @fm .x0 /
@fm .x0 / 5

@x1
@xm
T
Entonces existe un entorno de xO 0 D x0mC1 ; x0mC2 ; : : : ; x0n
2 Rn m tal que para xO
T
O i D 1; 2; : : : ; m tales que:
xmC1 ; xmC2 ; : : : ; xn en ese entorno existen funciones i .x/,
2

(i) i 2 C p .

(ii) x0i D i .xO 0 /; i D 1; 2; : : : ; m.


O 2 .x/;
O : : : ; m .x/;
O x/
O D 0; i D 1; 2; : : : ; m.
(iii) fi .1 .x/;
Este teorema 12 es muy til para respaldar la caracterizacin de puntos ptimos en programacin matemtica
con y sin condiciones, solucin de ecuaciones lineales y no lineales y muchos otros aspectos que analizamos
en la asignatura.
Supngase que se tiene una funcin vectorial f W Rn ! Rm que cumple que fi .x/ D 0, i D 1; 2; : : : ; m:
El teorema de la funcin implcita estudia, si n m de las variables son fijas, si el problema se puede resolver
en m incgnitas. Es decir, si x1 , x2 ; : : : ; xm se pueden expresar en funcin de las restantes n m de la forma
xi D i .xmC1 ; xmC2 ; : : : ; xn / ;
A las funciones i W Rn

i D 1; 2; : : : ; m:

! R, si existen, se las denomina funciones implcitas.

Ejemplo 7.1 Consideremos la ecuacin x12 C x2 D 0. Una solucin de la misma es x1 D, x2 D 0. En un


entorno de esta solucin, sin embargo, no hay funcin  tal que x1 D .x2 /. En esta solucin no se cumple la
u
condicin .c/ del teorema de la funcin implcita. En cualquier otra solucin si existe dicha .
Ejemplo 7.2 Sea A una matriz m  n y considrese el sistema de ecuaciones lineales Ax D b. Si A se
estructura as, A D B; C , donde B es m  m, entonces se satisface la condicin .c/ del teorema de la funcin
implcita si, y slo si, B es regular. Esta condicin se corresponde con los requisitos y enunciados de la teora
de ecuaciones lineales. La funcin implcita se puede considerar como una generalizacin no lineal de la teora
u
lineal.

8 Programacin Matemtica y Optimizacin


La Programacin Matemtica (lineal y no lineal), u Optimizacin, tiene por objeto de estudio el problema
general
minimizar f .x/
x2Rn

sujeta a

ci .x/ D 0;
cj .x/  0;

i 2 E;
j 2 I:

Las funcin objetivo f y las condiciones ci y cj son, en general, no lineales, continuas y tienen derivadas parciales continuas hasta al menos primer orden. Los conjuntos E y I contienen los ndices de las condiciones que
12 Sus

orgenes estn asociados a Newton, Leibnitz y Lagrange, pero fue formulado por Cauchy

35

son de igualdad y de desigualdad, respectivamente. El conjunto de puntos que satisfacen todas las condiciones
se denomina regin factible.
Un punto x que satisfaga todas las condiciones se dice regular si los vectores gradiente del conjunto de
condiciones activas en ese punto son linealmente independientes.
Teorema 8.1 Condiciones de ptimo de primer orden de Karush-Kuhn-Tucker Supngase que x  es un
punto regular y mnimo local del problema general de programacin matemtica anterior. Existe un vector
de multiplicadores de Lagrange,  , con coeficientes i , i 2 E [ I, tal que se cumple que
rx L.x  ;  / D rf .x  / T c.x  / D 0;
ci .x  / D 0; para todo i 2 E;

ci .x  /  0; para todo i 2 I;
i  0; para todo i 2 I;

i ci .x  / D 0; para todo i 2 E [ I:


Un caso particular del problema de programacin matemtica enunciado es uno de Programacin Lineal
min. c T x
s. a

Ax D b
x  0:

As expresado se denomina en forma estndar. La regin factible, o conjunto de soluciones de un programa


lineal P D fx 2 Rn W Ax D b; x  0g, es un politopo convexo.
Teorema 8.2 Equivalencia entre puntos extremos y soluciones bsicas Sean A 2 Rmn una matriz de rango
m, b 2 Rm y el politopo convexo
P D fx 2 Rn W Ax D b; x  0g :
Un x 2 P es un punto extremo de P si y slo si los vectores columna de A asociados a los coeficientes
positivos de x son linealmente independientes.
D EMOSTRACIN . Supongamos sin prdida de generalidad que los p primeros coeficientes del vector x son
N las p primeras columnas de
positivos y los n p ltimos cero. Si x D xN T ; 0T T , xN > 0, y designamos por A
N
la matriz A, se tiene que Ax D A xN D b.
N no son
Probemos primero la necesidad de la condicin enunciada. Supongamos que las columnas de A
N
N
N 0 tal que A w
N D 0. De
N Di
linealmente independientes. En este caso existir un vector w
h aquique A.xN h "w/
N
N
xC"
w
N
bx "w
0
00
N
N  0. Los puntos y D
A xN D b y, para un " suficientemente pequeo, que .xN "w/
yy D
0
0

estn, por consiguiente, en P . Adems, dado que x D 21 .y 0 Cy 00 /, x no puede ser un punto extremo de P . Como
N son linealmente dependientes.
consecuencia de esto, si x es un punto extremo, las columnas de la matriz A
Probemos ahora la suficiencia. Supongamos que x no es un punto extremo de P . Esto quiere decir que
x D y 0 C .1 /y 00 , donde y 0 ; y 00 2 P; y 0 y 00 y 0 <  < 1. Como x e y 0 estn en P , A.x y 0 / D
Ax Ay 0 D b b D 0. Adems, dado que  y 1  son estrictamente positivos, los ltimos n p coeficientes
N en
de y 0 y, por consiguiente, de x y 0 , han de ser cero pues lo son los de x. Las columnas de la matriz A,
N
consecuencia, son linealmente dependientes. De aqu que, si las columnas de A son linealmente independientes,
x es un punto extremo.

Una direccin del politopo P D fx 2 Rn W Ax D b; x  0g es un vector no nulo, d 2 Rn , tal que para


todo x0 2 P el rayo fx 2 Rn W x D x0 C d;   0g pertenece a P .
Una direccin d de un politopo P se dice extrema si no puede ponerse como combinacin lineal no negativa
de dos direcciones diferentes de P . Es decir, no existen dos direcciones d1 y d2 en P , d1 d2 , y unos
1 ; 2 > 0, tales que d D 1 d1 C 2 d2 .
36

Cualquier direccin de un politopo se puede expresar como combinacin lineal no negativa de las direcciones
extremas del politopo. Si P es un poliedro, obviamente, no tiene direcciones.
Teorema 8.3 Teorema de la representacin Todo punto del politopo P D fx 2 Rn W Ax D b; x  0g se
puede expresar de la forma
X
xD
i vi C d;
i 2I

donde fvi W i 2 I g es el conjunto de puntos extremos o vrtices de P ,


direccin de P , o d D 0.

i 2I

i D 1, i  0, y d, o es una

D EMOSTRACIN . La haremos por induccin en p, nmero de coeficientes positivos de x. Si p D 0, el teorema


es obvio, pues x D 0 es un punto extremo. Supongamos que se cumple lo enunciado para puntos con menos
de p coeficientes positivos y que x tiene p coeficientes positivos.
Si x es un punto extremo, como x D vi para algn i 2 I , el teorema es obvio. Supongamos por tanto que
x no es un punto extremo. En este caso existe un vector w 0, con wi D 0 si xi D 0, tal que Aw D 0. Se
pueden dar los tres casos siguientes:
(a) Que w tenga coeficientes positivos y negativos. Consideremos los puntos x. / D x C  w en la recta que
pasa por x que determina w, y sean  0 y  00 el menor valor positivo y mayor valor negativo, respectivamente, de  para los que x. / tiene al menos un coeficiente cero ms que los que tiene x. Los puntos
x 0 D x. 0 / y x 00 D x. 00 / pertenecen claramente a P por lo que, por la hiptesis de induccin, al tener
un coeficiente nulo ms, se pueden expresar segn lo enunciado en el teorema. En consecuencia, como x
est en la recta que une x 0 y x 00 , se puede expresar de la siguiente manera
x D x 0 C .1 /x 00
!
X
D
0i vi C d 0 C .1
i 2I

D
donde  D  00 =. 0
Como 0 <  < 1,

X

0i

C .1

i 2I

/

X
i 2I

00i vi C d 00

/i vi C d 0 C .1
00

/d 00 ;

 00 /.

0i  0
Ad 0

y
Ad 00

00i  0;

para todo i 2 I;

D 0;

d0

0

d 00

 0;

X
i 2I

0i D

X
i 2I

00i D 1;

se deduce entonces que


i D 0i C .1

/i  0

para todo i 2 I;

d D d 0 C .1

/d 00  0

00

Ad D 0;

X
i 2I

i D 1;

quedando probado que x se puede expresar de la forma enunciada.


(b) Que w  0. Definamos x 0 como en el caso (a). El punto x se puede expresar como x D x 0 C  0 . w/,
con  0 > 0. Como x 0 se puede expresar por induccin en la forma deseada y . w/ es una direccin en
P , x tambin se puede expresar de la forma enunciada.
(c) Que w  0. Este caso se prueba igual que el caso (b) sin ms que sustituir x 0 ,  0 y w por x 00 ,  00 y w,
respectivamente.
Corolario 8.4 Si el politopo P D fx 2 Rn W Ax D b; x  0g es no vaco, tiene al menos un punto extremo
o vrtice.
37

x4
x3
x
x5

x2
y
x1

Figura 8.30: Representacin de un punto de un politopo (poliedro) como combinacin convexa de puntos
extremos

Corolario 8.5 Si el politopo P D fx 2 Rn W Ax D b; x  0g es cerrado y acotado (es un poliedro), todo


punto x 2 P se puede expresar como combinacin convexa de sus puntos extremos.
Teorema 8.6 Teorema fundamental de la Programacin Lineal Dado un politopo no vaco P D fx 2 Rn W
Ax D b; x  0g de soluciones de un PL, el valor mnimo de la funcin objetivo c T x, para x 2 P , se alcanza
en un punto extremo de P (solucin bsica factible ptima), o c T x no est acotada inferiormente en P .
D EMOSTRACIN . Sea V D fvi W i 2 I g el conjunto de puntos extremos de P . Como P es no vaco, al menos
tiene un punto extremo vi 2 V . De acuerdo con el teorema de la representacin, o el politopo P posee una
direccin d tal que c T d < 0, o tal direccin no existe. Consideremos estos dos casos.
(a) El politopo P tiene una direccin d tal que c T d < 0. En este caso P no est acotado y el valor de la
funcin objetivo tiende a 1 en la direccin d.
(b) El politopo P no tiene una direccin d tal que c T d < 0. En este caso cualquier x 2 P se puede expresar
de una de las dos maneras siguientes:
X
X
xD
i vi
donde
i D 1; i  0 o
i 2I

xD

X
i 2I

i vi C dN donde

i 2I

X
i 2I

i D 1; i  0 y c T dN  0:

En ambos casos, suponiendo que c T vmi n es el menor de los elementos del conjunto fc T vi W i 2 I g, se
tiene que
!

X
X 
T
T
T
i D c T vmi n :
c x
i c vi  c vmi n
i 2I

i 2I

Es decir, el mnimo de

cT x

se alcanza en un punto extremo de P : vmi n .

8.1 Dualidad
La Dualidad juega un papel destacado en Programacin Lineal y no lineal. Sirve para caracterizar y verificar
la optimalidad de un proceso iterativo y las condiciones en que se da el ptimo, para analizar la sensibilidad
de una solucin a la variacin de los parmetros del problema, para estudiar la velocidad de convergencia de
determinados algoritmos de optimizacin que usan su formulacin y contemplar diversos aspectos geomtricos
que permiten interpretar mejor lo que se est haciendo en la bsqueda de una solucin.
Las ideas y formulacin que exponemos a continuacin siguen enteramente lo que expone al respecto el libro
de Luenberger citado en el apartado de bibliografa. Se basa en una forma elegante y global de contemplar la
dualidad en trminos de conjuntos e hiperplanos que tocan esos conjuntos. Evidencia el papel de los multiplicadores de Lagrange como definidores de hiperplanos que pueden ser considerados los duales de puntos en un
38

436

Chapter 14 Dual and Cutting Plane Methods

espacio vectorial. Esta forma terica de enfrentarse a la dualidad proporciona una simetra entre los problemas
primal y dual, la cual pude considerarse perfecta si los problemas son convexos. Si no lo son, la imperfeccin
la plasma elconsidered
denominado
de to
dualidad
dual,space.
que tiene
interpretacin
muy sencilla
asgap
dual
points oinbrecha
a vector
Theuna
theory
provides geomtrica
a symmetry
en este contexto
y mucha
importancia
en los algoritmos
programacin
lineal
y no lineal
se estudian en
between
primal
and dual problems
and thisdesymmetry
can be
considered
as que
perfect
el curso en for
la asignatura.
convex problems. For non-convex problems the imperfection is made clear
En el problema
dual lasgap
incgnitas
por resolver
los multiplicadores
de Lagrange
deltheory,
problema primal,
by the duality
which has
a simpleson
geometric
interpretation.
The global
que miden las
sensibilidades
del
primal
a
variaciones
en
los
coeficientes
que
determinan
las
condiciones
de este
which is presented in this section, serves as useful background when later we
problema yspecialize
determinantocomo
unasduality
penalizaciones
que se
introducen
su funcin
por no
a local
theory that
can
be used en
even
withoutobjetivo
convexity
andutilizar adecuadamentewhich
los recursos
que to
fijan
condiciones.ofLathe
funcin
de Lagrange
incorpora
as toda la informacin
is central
theesas
understanding
convergence
of dual
algorithms.
disponible del problema.
As a counterpoint to Section 11.9 where equality constraints were considered
La teorabefore
globalinequality
que se expone
en este here
apndice
es la first
baseconsider
sobre la aque
construir
dualidades
de tipo local
constraints,
we shall
problem
with
inequality
de los diversos
problemas
lineales
y
no
lineales
que
se
vern
en
los
distintos
temas
del
curso,
incluso
sin la
constraints. In particular, consider the problem
existencia de convexidad, o en algoritmos especializados para problemas de Programacin Lineal como los de
minimize fx
(1)
punto interior, dual del Smplex, etc.
De momento vamos a referirnos a problemas
de
programacin
matemtica
como
subject to gx 0
minimizar fx.x/

x2Rn

(1)
a fg.x/
functions
andg 0are defined on . The function g
 E n is a convex set, and the sujeta
x 2 ; convex, but we assume that there
is p-dimensional. The problem is not necessarily
point. Recall
thefunciones,
primal function
associated
with
definedgfor
donde  2isRan feasible
es un conjunto
convexothat
y las
la escalar
f W Rn !
R y(1)
la is
vectorial
W Rp ! Rn ,
p
as Este problema no es necesariamente convexo pero se asume que tiene al menos un punto
zE
estn definidas
en .
factible. Esta notacin es perfectamente compatible con otras que se utilizan sin ms que adoptar la convencin
z = inf fx  gx z x 

(2)
de signos adecuada.
La funcin
primalby
asociada
(1) se
define,
para
un zof2 inequality
Rp , como constraint take on arbitrary
defined
lettinga the
right
hand
side
values. It is understood!.z/
thatD(2)
on the
= z  gx z, for some
Knfisffdefined
.x/ W g.x/
 z;set
x 2Dg:
(2)
x 
.
definen las
Se llega a ella dejando
que el
de la derecha
de la
inecuacin
que
pueda tomar
If problem
(1)trmino
has a solution
x with
value
f = fx
, then f iscondiciones
the point on
valores arbitrarios.
Se entiende
(2)where
est definida
en el function
conjunto passes
D D fzthrough
W g.x/ 
para algunos
the vertical
axis in que
E p+1
the primal
thez; axis.
If (1) x 2 g.
 con
un valor de la funcin objetivo igual a f  D f .x  /, entonces
Si el problema
(1)
tiene
una
solucin
x
does not have a solution, then f = inffx  gx 0 x 
is the intersection
f  es el punto
de eje vertical de RpC1 donde la funcin primal se cruza con ese eje. Si (1) no tiene solucin
point.
ese punto de cruce
f  D Kprinciple
nf ff .x/ Wisg.x/
 0;from
x 2 g.
Theesduality
derived
consideration of all hyperplanes that lie
El principio
de
dualidad
se
deduce
de
la
consideracin
todos
que quedan
por debajo de la
below the primal function. As illustrated in de
Fig.
14.1los
thehiperplanos
intercept with
the vertical
indican se cruzan con el eje vertical
funcin primal.
Como
la figura 8.31,
todos los
quef se
.
axis of
suchilustra
a hyperplanes
lies below
(orhiperplanos
at) the value
por debajo de f  , o en f  .
w(z)

f*
Hiperplano
debajo de w(z)

Fig. 14.1 Hyperplane below z

Figura 8.31: Hiperplano por debajo de !.z/.


Para expresar esta propiedad se define la funcin dual en el cono positivo de Rp como
n
o
./ D Knf f .x/ C Tg.x/ W x 2  :
39

(3)

En general,  puede que no sea finita dentro del ortante positivo, RC , pero la regin donde est definida es
convexa.
Proposicin 8.7 La funcin dual es cncava en la regin donde es finita.
D EMOSTRACIN . Supngase que 1 y 2 estn en la regin finita y sea 0   1. Entonces
.1 C .1

2 // D Knf ff .x/ C .1 C .1

/2 /T g.x/ W x 2 g

 Knf ff .x1 / C T1 g.1 / W x1 2 g


C Knf f.1

/f .x2 / C .1

D .1 / C .1

/.2 /:

/T2 g.x2 / W x2 2 g

Se define   D sup f./ W   0g, suponindose que el supremo se extiende a toda la regin donde  es
finita.
Proposicin 8.8 Forma dbil de dualidad.    f  .
D EMOSTRACIN . Para todo   0 se tiene que
./ D Knf ff .x/ C T g.x/ W x 2 g

 Knf ff .x/ C T g.x/ W g.x/  0; x 2 g


 Knf ff .x/ W g.x/  0; x 2 g D f  :

Adoptando e supremos de .x/ se tiene que    f  .


De acuerdo con este resultado la funcin dual proporciona cotas inferiores del valor ptimo de f .
La funcin dual tiene una interpretacin geomtrica interesante. Si se considera el vector 1 T T 2 RpC1 ,
con   0 y la constante c, el conjunto de vectores r zT T 2 RpC1 tales que el producto interior 1 T r zT T 
r C T z D c define un hiperplano en RpC1 . Para diferentes valores de c se tiene diferentes hiperplanos, todos
paralelos entre si.
Para un vector dado 1 T T consideremos el hiperplano ms bajo posible de esa forma que casi toca
soporta la regin de encima de la funcin primal del problema (1). Supongamos que x1 define ese punto de
contacto y que r D f .x1 / y z D g.x1 /. Se tendr que c D f .x1 / C T b.x1 / D ./.
Ese hiperplano se cruzar con el eje vertical en un punto de la forma r0 0T . Este punto tambin satisfar
que 1 T T r0 0T D c D ./. Lo que lleva a que c D r0 . Por lo que ese punto dar ./ directamente.
Chapter
Dual and
Cutting
Plane
Methods definido por  que justo toca el epigrafo
La funcin 438
dual en 
es igual14al punto
donde
se cruzan
el hiperplano
el conjunto de puntos situados por encima del grfico de una funcin de la funcin primal.
w (z)

gap de dualidad

hiperplano ms alto
z

Fig. 14.2 The highest hyperplane

Figura 8.32: Hiperplano ms alto.

Furthermore, this intercept (and dual function value) is maximized by the


Lagrange multiplier which corresponds 40
to the largest possible intercept, at a point
no higher than the optimal value f . See Fig. 14.2.
By introducing convexity assumptions, the foregoing analysis can be
strengthened to give the strong duality theorem, with no duality gap when the

constraints of the form hx = 0, as in Section 11.9.


Specifically, we consider the problem
maximize

fx

(4)

Adems, como indica la figura 8.32,


ese punto
cruce
valorde
subject
to de
hx
= 0 (y elgx
0 la funcin dual) se maximiza con el
multiplicador de Lagrange que corresponde al plano ms alto posible que intercepta el eje vertical, siendo el
x
punto de esa intercepcin menor o igual que el valor
ptimo f  . La diferencia constituye el gap de dualidad.
Si se incorporan suposiciones de convexidad el anlisis que estamos haciendo se completa con el teorema
where
h iscuando
affineno
of hay
dimension
m, g is convex
of dimension
p, planos
and  con
is aelconvex
de la dualidad
fuerte
gap de dualidad
y la interseccin
de esos
eje vertical es el

set.
propio f . Se puede ver en la figura 8.33.
r

w (z)

f * =

hiperplano ptimo

Fig. 14.3 The strong duality theorem. There is no duality gap

Figura 8.33: Expresin grfica del teorema de la dualidad fuerte . No hay gap de dualidad.
El teorema de la dualidad fuerte lo referimos al problema general
minimizar f .x/
x2Rn

sujeta a

h.x/ D 0
g.x/  0
x 2 ;

(4)

donde h W Rm ! Rn es afn, g W Rp ! Rn es convexa y  es convexo. La funcin dual de este problema es


.; / D Knf ff .x/ C Th.x/ C Tg.x/ W x 2 g;

(5)

y   D sup f.; / W  2 Rm ;  2 Rp ;   0g.


Un punto x que satisfaga todas las condiciones que se cumplen se dice regular si los vectores gradiente del
conjunto de condiciones activas en ese punto son linealmente independientes. Una funcin h.x/ es regular con
respecto a  si el conjunto C D fy W h.x/ D y para algn x 2 g de Rn contiene una bola abierta en torno
a 0; es decir, C contiene un conjunto de la forma fy W jyj < "g para algn " > 0. Esto viene a decir que
h.x/ puede hacerse 0 y variar arbitrariamente en torno a 0 en cualquier direccin. Esta condicin es similar a
la definicin de punto regular en el contexto de las condiciones de ptimo de primer orden.
Teorema 8.9 Teorema de la dualidad fuerte Supongamos que en el problema (4) h es regular con respecto a
 y que existe un punto x 2  en el que h.x/ D 0 y g.x/  0.
Supongamos que el problema tiene como solucin x  con un valor de la funcin objetivo f .x  / D f  .
Entonces, para todo  y todo   0 se cumple que
   f :
Adems, existen unos  y   0 tales que
.; / D f 
y por lo tanto   D f  . Los vectores  y  son los multiplicadores de Lagrange del problema.
41

8.1.1 Dualidad Lagrangiana


Es una forma de denominar lo que acabamos de exponer. La funcin de Lagrange del problema (4) escrito
as
minimizar f .x/
x2Rn

sujeta a

h.x/ D 0

(6)

g.x/  0

x 2 ;

es
La funcin de Lagrange dual es

Th.x/

L.x; ; / D f .x/

Tg.x/:

def

q.; / D Knf L.x; ; /:


x

Si las funciones h.x/ y g.x/ son convexas, con   0, la funcin de Lagrange es convexa y define una cota
inferior del valor ptimo de la funcin objetivo de (6). El problema dual de ste es
maximizar q.; /
sujeta a
  0;

que es siempre convexo.

8.1.2 Dualidad de Wolfe


Es ligeramente distinta de las anteriores. Es la que sirve de referencia a los mtodos de punto interior que se
ven en el curso. El problema dual es
max. L.x; ; /
s. a rx L.x; ; / D 0
  0:

8.1.3 Ejemplo
En el caso de un problema de Programacin Lineal en forma estndar
minimizar c T x
x2Rn

sujeta a

Ax D b
x  0;

T .Ax b/ T x, o

T
L.x; ; / D T b C c A T   x:

la funcin de Lagrange es L.x; ; / D c T x


Su problema dual

max. q.; / D Knf fL.x; ; /g D T b C Knfx


s. a   0:

AT 

T o
 x D

T b si c
1 si c

AT 
AT 

D0
0

Si c A T   0 el nfimo es claramente 1, por lo que hay que excluir del problema aquellos  para los
que se den esos casos. De acuerdo con ello, el problema dual queda
maximizar T b
s. a

AT 

 D 0;

  0:

El dual de Wolfe sera exactamente el mismo. El gap de dualidad es




c T x T b D c T x T Ax D x T c A T  D x T :
42

9 Enfoques de clculo diferencial, clculo de variaciones y principios a tener en


cuenta para estudiar el mtodo de los elementos finitos, FEM, para resolver
ecuaciones en derivadas parciales
Desde tiempos de C.F. Gauss, Alemania 1777-1855 y W. Thompson Irlanda, 1775-1833, la equivalencia
entre los problemas de ecuaciones en derivadas parciales con condiciones de contorno y los de clculo de
variaciones ha ocupado un puesto destacado en el anlisis matemtico. En un principio el esfuerzo se concentr
en los aspectos tericos de los problemas; posteriormente, dos fsicos, Lord Rayleigh John William Strutt,
Reino Unido 1842-1919 y Walther Ritz, Suiza 1878-1909, independientemente al parecer, concibieron la idea
de utilizar esa equivalencia para calcular numricamente soluciones de problemas habituales de fsica mediante
la sustitucin de los problemas de clculo de variaciones por otros ms simples de obtencin de extremos con
un nmero finito de parmetros por determinar.
Sus mtodos atrajeron pronto a ingenieros y fsicos los principios fsicos de la mecnica son ms sugestivos que las ecuaciones diferenciales y se empezaron a aplicar a muchos problemas cercanos. El resultado era
lgica consecuencia del esquema conceptual de cmo se tratan en anlisis matemtico y en muchos aspectos
de la vida cotidiana los problemas difciles: Un problema P con solucin S se reemplaza por otro ms o menos relacionado o prximo, Pn , ms simple de resolver, cuya solucin es Sn . Luego se mejora la aproximacin
Pn de P de tal forma que la solucin Sn , paso a paso, tienda a la deseada S . Lo esencial es escoger la sucesin
de aproximaciones Pn de una manera adecuada.
En la asignatura de matemticas para la ingeniera elctrica abordaremos uno de los problemas ms interesantes y con ms posibilidades de futuro que contemplan las aplicaciones de las matemticas para simular y
resolver muchos problemas de la vida cotidiana. En concreto modelos matemticos expresados en forma de
ecuaciones diferenciales e integrales que reproducen procesos y fenmenos complejos de la fsica y otras ciencias naturales y sociales cuyos orgenes y evolucin suelen estar distribuidos en el tiempo y en el espacio. Se
modelan de esta forma la propagacin del sonido o del calor, la electrosttica, la electrodinmica, la dinmica
de fluidos, la elasticidad, la mecnica cuntica, las emisiones de contaminantes, los fenmenos meteorolgicos,
la valoracin de opciones y derivados financieros y muchos otros. El enfoque para resolverlos de forma prctica
sigue exactamente el principio enunciado ms arriba.
La idea esencial que seguiremos en estas notas es la de convertir el problema con ecuaciones diferenciales, integrales o ecuaciones en derivadas parciales, suponiendo que tiene solucin con unas
determinadas caractersticas, en uno formulado en trminos de clculo de variaciones de funciones
continuas la minimizacin de un funcional para as caracterizar en qu condiciones se da una
solucin u ptimo del mismo. Luego se discretiza ese problema continuo con un nmero infinito
de grados de libertad mediante un problema discreto, o sistema de ecuaciones, con un nmero de
variables finito y ms fcil de resolver y se resuelve mediante alguna de las diversas tcnicas que
iremos presentando en el curso de la asignatura.
Cuando se empieza a trabajar y aprender mtodos numricos para resolver problemas matemticos el de
las diferencias finitas sigue ideas muy intuitivas: simplemente se aproxima una derivada de una curva en un
punto de ella por una lnea secante. Si se estudia el mtodo del volumen finito, tambin su idea es bastante
sencilla: cada elemento de volumen es simplemente un pequeo equilibrio del flujo o de fuerzas. El mtodo de
los elementos finitos sigue esa senda ms o menos, con alguna pequea modificacin.
La base matemtica para el mtodo de los elementos finitos se encuentra en el entorno de los espacios
de Hilbert. Un espacio de Hilbert es una manera de tratar una funcin como un vector, por lo que podemos
hacer algunos trucos de matemticas vectoriales con l. Recordemos que un vector es una serie de valores, o
escalares, multiplicados por un conjunto de vectores de una base ortogonal (como los vectores unitarios que
definen la direcciones x, y y z, o los i , j y k). Podemos utilizar una tcnica paralela para definir una funcin.
Primeramente seleccionamos un conjunto de funciones de base en vez de aquellos vectores (esas funciones
deben ser ortogonales entre s) y luego definimos la funcin original como una suma de unos coeficientes

43

multiplicados por las funciones de la base: de esta forma


uD

1
X

k k ;

kD1

donde cada una de las k es una funcin de la base.


El siguiente paso es convertir nuestra ecuacin diferencial en algo llamado su formulacin dbil. Esto se
hace bsicamente multiplicando por una funcin de prueba y luego integrando en el espacio. Sin entrar en
los detalles de momento, se trata de hacer lo mnimo necesario para convertir nuestra ecuacin diferencial en
algo en lo que podamos utilizar nuestras matemticas de espacios vectoriales. Esencialmente, donde exista una
forma de "producto interior", en nuestro caso con funciones como la de prueba en vez de vectores, y la solucin.
Este producto interior ser una integral y podremos usar integracin por partes para convertirlo en formatos ms
manejables.
Despus nos desharemos de alguna manera de la abstraccin empleada y comprobaremos que realmente
estamos tratando con un espacio vectorial de dimensin finita. As, los vectores funcin no son infinitos ni
estamos sumando infinitos trminos. Este proceso es lo que se entiende por discretizacin en las tcnicas de
los elementos finitos. La discretizacin que se utiliza est determinada
por una malla mesh , o retcula, y
FEA Fundamentals
FEA
Fundamentals
normalmente se emplean dos funciones de base a cada lado de un elemento de la malla (una retcula de 20  20
da 441
funciones
base nicas). Utilizaremos un nmero
finito de funciones
para representar la solucin de
Discretize
the domain
Define
the domain

MESH

Figura 9.34: Discretizacin de una pieza sencilla.


nuestra ecuacin diferencial, de esta manera
0

u D

n
X

k k :

kD1

La nica diferencia con la expresin similar anterior es el lmite superior del sumatorio.
El siguiente paso, con un cierto truco, es hacer que nuestra funcin de prueba sea una funcin de base. Tambin nos deberemos asegurar de que las funciones base no se superpongan. Esto asegura que son ortogonales
como pretendamos antes y nos permite aproximar ms fcilmente la solucin en el dominio de inters. Estas
funciones de base suelen ser polinomios (especialmente polinomios lineales o cuadrticos).
Despus de lo que parece se hacer el problema ms difcil agregando toda esta abstraccin y matemticas
para al final llegar a lo que hemos llegado, qu hemos conseguido realmente? Pues hemos convertido el
problema en una ecuacin matricial sencilla para as poderlo resolver por medio del lgebra matricial que
conocemos. Si el problema fuese lineal, simplemente tendremos que resolver la ecuacin algebraica Ax D b
a cuyo estudio tanto esfuerzo dedicaremos en el curso.
Para un problema relativamente simple com el de la ecuacin de Poisson Simon Denis Poisson, Francia,
1781-1840
@2 u
@2 u
u.x; y/ D 2 C 2 D f .x; y/
@x
@y
la matriz A es muy fcil de calcular y se denomina la matriz de rigidez en homenaje a los principios de las
tcnicas de elementos finitos en problemas de elasticidad. Esta matriz muy dispersa (con pocos coeficientes
distintos de cero) y diagonal dominante est formada por el producto interior de las funciones de base con
ellas mismas, multiplicadas si es el caso por la constante que aparezca en la ecuacin original. El vector solucin
44

de ese sistema se multiplica por el de las funciones de base y se obtiene la del problema original, o una que se
aproxima mucho a la misma.
Resumiendo, el procedimiento de resolucin del mtodo de los elementos finitos consta de las siguientes
fases u operaciones:
 Conversin del problema original de dimensin infinita, mediante las propiedades de los espacios de
Hilbert, en uno similar prximo en un espacio vectorial de dimensin finita de cara a estudiar la existencia
y unicidad de la solucin.
 Creacin de una formulacin dbil del problema original con la que podamos usar las herramientas de
producto interior y medida.
 Discretizacin del dominio de definicin del problema y eleccin de una base de funciones que sean
ortogonales entre si.
 Conversin de los productos interiores entre funciones de base en sistemas lineales de ecuaciones.
 Resolucin de ese sistema lineal resultante mediante tcnicas de matrices dispersas.

Las ventajas de este mtodo frente a otros son muchas en bastantes mbitos de la ingeniera, la ciencia y
la investigacin por lo que su extensin y precisin, as como los algoritmos que emplea, cada vez son ms
amplios, ambiciosos y potentes.
Para concretar con detalle
los pasos
Lesson
1 del mtodo, vamos a desarrollar el estudio de un problema concreto.

9.1 Solucin de unaLinear


ecuacin triangular
en derivadas parciales
elements
Consideraremos en lo que sigue el siguiente problema de una ecuacin en derivadas parciales elptica de
segundo orden con condiciones de contorno:
1

model problem
Theu.x;
y/ C cu.x; y/ D f .x; y/

dentro
de 
All along this course we will be working with a simple model
boundary
value problem,
which will allow us to put the emphasis on the numerical method rather than on the
u.x;
y/ problem
D g0 .x;
en inlaforthcoming
frontera lessons
D we
intricacies
of the
itself.y/
For some of the exercises and
will complicate things a little bit.
@n u.x;
y/ D g1 .x;
y/
en la frontera read
: it
In this
initial section there
is going to be a lot of new stuff. Take your time toN
carefully, because we will be using this material during the entire course.

Esta forma de formularlo se denomina forma fuerte.

The fsico
physical
domain
 La geometra del 1.1
entorno
esquemtico
en el que se desenvolver ser tan simple como la de la
The first thing we have to describe is the geometry (the physical setting of the problem).
figura 9.35, o unaYougeneralizacin
de ella. En este caso concreto es un subconjunto abierto  2 Rd
have a sketch of it in Figure 1.1.

Figure 1.1:
The domain
and the Dirichlet
Neumann boundaries
Figura 9.35:
Dominio
de definicin
 yandcondiciones
de contorno.
We are thus given a polygon in the plane R2 . We call this polygon . Its boundary

is a polgono
closed polygonal
. (There
much difference
if we suppose
there is
representado por un
en curve
el plano
R2is, not
pegado
o adherido
en that
su frontera
a la curva que define
, dividida sta en dos partes: la que define D , que materializan unas condiciones de contorno de
3
Dirichlet por Johann Peter Gustav Lejeune Dirichlet, Alemania 1805-1859 y la N , con condiciones
de contorno de Neumann por Karl Gottfried Neumann, Alemania 1832-1925. En trminos fsicos,
las condiciones de Dirichlet determinan unos posibles desplazamientos fsicos de esa frontera, mientras
que las de Neumann unas posibles tensiones mximas o mnimas.

 La ecuacin en derivadas parciales propiamente dicha, la primera en la formulacin, se denomina habitualmente ecuacin difusin-reaccin. El trmino que representa la difusin es u y el de reaccin cu,
cuando c > 0. La constante c es no negativa; en principio puede adoptar los valores 0 1.
45

 La funcin escalar u.x; y/ W R2 ! R, definida en el dominio , es la incgnita de este problema.

 La funcin f .x; y/ est definida en  y se puede considerar como una densidad superficial de fuerzas.

 Las dos funciones que expresan las condiciones de contorno, g0 .x; y/ y g1 .x; y/, estn definidas en dos
partes diferentes de la frontera. La funcin g0 deber ser continua; la g1 puede ser discontinua.
 El smbolo @n designa la derivada normal hacia afuera, es decir
@n u D ru  n;
donde n es el vector unidad hacia afuera en puntos de la frontera y ru es el gradiente de u. Supondremos que existe.

9.1.1 El problema en forma dbil o variacional


Siguiendo cada uno de los pasos de la estrategia enunciada para resolver este problema, vamos a formularlo
de una forma diferente de la original denominada forma dbil o forma variacional.
Para ello utilizaremos el teorema de Green por George Green, Reino Unido 1793-1841, a menudo
denominado primera frmula o identidad de Green, derivada del teorema de la divergencia, que no es sino una
forma de integracin por partes. Aplicado a nuestro caso dice que
Z
Z
Z
.u/ v C
.@n u/ v:
ru  rv D


La funcin v es una funcin de prueba, continua, en principio definida en  D  [ . En esa expresin


hay dos tipos de integrales: las dos del miembro de la izquierda son integrales de superficie, en el dominio
. La del derecho es una integral lineal en el borde o frontera . Hemos prescindido de los diferenciales
correspondientes para compactar la notacin. El resultado sera aplicable tambin a tres dimensiones: las dos
integrales de la izquierda seran de volumen; la de la derecha de superficie. El punto de la segunda integral del
@v
@v
miembro de la izquierda se refiere al producto interior de dos vectores, es decir ru  rv D @u
C @u
.
@x @x
@y @y
La identidad expresada es una consecuencia del resultado del teorema de la divergencia que dice que para un
subconjunto V 2 Rn en el caso de tres dimensiones V representa un volumen como el de la figura 9.36,
en principio compacto, de superficie o borde S continua a trozos (expresada por @V D S ), si F es un campo

Figura 9.36: Regin o volumen V acotada por la superficie o frontera S D @V con la normal a la superficie n.
vectorial con derivadas parciales de primer orden continuas definido en un entorno de V , se cumple que

.r  F/ d V D
.F  n/ dS:
V

Aplicado a una funcin escalar f W


! R y un vector constante c distinto de cero

c  rf d V C
f .r  c/ d V D
.cf /  d S;
Rn

donde d S expresa de forma compacta ndS .


Haciendo f D ru y c D v se tiene la expresin anterior de la primera identidad de Green.
Si sustituimos u D f cu en la expresin obtenida a partir de la identidad de Green en donde se integra
en  y que @n u D g1 en N , despus de reordenar un poco se llega a
Z
Z
Z
Z
Z
.@n u/ v:
ru  rv C c
uv D
fv C
g1 v C


46

Como no sabemos el valor de @n u en D imponemos que la funcin v sea cero en esa parte de la frontera o
borde: v D 0 en D . A partir de ah,
Z
Z
Z
Z
ru  rv C c
uv D
fv C
g1 v; si v D 0 en D :


La expresin del miembro de la izquierda es lineal en las funciones u y v. Es una forma bilineal de las variables
u y v. La de la derecha es lineal en v. Todava no hemos hecho uso de la condicin de Dirichlet en la frontera,
u D g0 en D .
La formulacin dbil del problema queda as:

Determinar una funcin u tal que


u D g0 en D Z
Z
Z


ru  rv C c

uv D

fv C

g1 v; para todo v tal que v D 0 en la frontera D :

En esta formulacin la condicin de Dirichlet desplazamientos dados se impone como una condicin
aparte que ha de cumplir la funcin de prueba v. Se denomina condicin esencial de borde o frontera. La
condicin de Neumann fuerzas normales aparece como una condicin de frontera natural dentro de la
formulacin del problema.
Como indicbamos anteriormente, la funcin de prueba v chequea la ecuacin que satisface u. Juega un
papel de funcin de ponderacin para comprobar el comportamiento medio de la ecuacin. En alguna referencia
interesante se la denomina desplazamiento virtual para enfatizar que no es una incognita sino algo utilizado para
formular el problema de esta manera: mediante desplazamientos virtuales de la realidad, si se llega a conocer.
9.1.2 Espacios de trabajo
Hasta ahora hemos dado por hecho que el contexto matemtico donde se desenvuelve este problema y las
formulaciones que estamos utilizando cumplen una serie de requisitos matemticos que permiten su existencia
y solucin. Vamos a formalizarlo un poco. El primer espacio que estamos utilizando13 es el espacio vectorial
de las funciones al cuadrado integrables en , es decir,
Z



2
2

L ./ D f W  ! R jf j < 1 :


Su estricta definicin requerira la introduccin de la integral de Lebesgue14 , la mtrica o medida deRLebesgue y


el espacio de Lebesgue por Henr Lon Lebesgue, Francia 1875-1941. Simplificadamente, si  f .x/ dx
1=p
R
es la integral de Lebesgue de f .x/ y se define la norma kf kLp ./ D  f p dx
, para 1  p < 1, los
espacios de Lebesgue son


Lp ./ D f .x/ W kf kLp ./ < 1 :

El segundo es el espacio de Sobolev por Sergi Lvvich Sobolv, Rusia 1908-1989. Es une espacio
vectorial de funciones dotado de una norma que es combinacin de normas Lp de la funcin y de sus derivadas
hasta un orden dado. Formalmente para dos dimensiones es



@u @u
1
2
2
H ./ D u 2 L ./
;
2 L ./ :
@x1 @x2

Las derivadas de este espacio se entienden en un sentido dbil15 que hagan que el espacio sea completo16 y por
13 Ya

introducido antes en estos apuntes.


generaliza la nocin de la integral de Riemann extendiendo el concepto de rea bajo una curva para incluir funciones discon-

14 Que

tinuas.

15 Una generalizacin del concepto de derivada a

de Lebesgue en un dominio dado  de Lp ./.


16 Si toda sucesin de Cauchy en l tiene lmite.

funciones no necesariamente derivables pero si integrables localmente en el sentido

47

lo tanto sea un espacio de Banach. La norma correspondiente de este espacio es


kuk1; D

Z

jruj2 C

juj2

1=2

Z
@u

D
@x

2 Z

@u

@x

!1=2
2 Z

C
juj2
;

denominada en ingeniera norma de energa. Las funciones que usan esta forma finita son funciones de energa
finita. Intuitivamente, un espacio de Sobolev es un espacio de funciones con derivadas de orden suficiente
para un dominio de aplicacin determinado y equipado con una norma que mida adecuadamente tamao y
regularidad en las funciones. Un subespacio de inters de ese espacio H 1 ./ es


H1D ./ D v 2 H 1 ./ jv D 0 en D :
Establecido todo este aparato matemtico, la formulacin dbil del problema original queda as:

Determinar una funcin u 2 H 1 ./ tal que


u
Z D g0 en D Z
Z
Z


ru  rv C c

uv D

fv C

g1 v; para todo v 2 H1D ./:

La condicin que se impone a la funcin de prueba, v 2 H1D ./, es la misma que


v 2 H 1 ./ tal que v D 0 en D ;
lo que quiere decir que v est en el mismo espacio de la funcin que se busca u pero satisface una versin
homognea de la condicin esencial de borde o frontera.
Los datos del problema estn en los siguientes espacios f 2 L2 ./, g1 2 L2 .N / y g0 2 H 1=2 .D /.
El segundo espacio restringe el dominio de las integrales en la lnea que marca N en vez de en . Que
g0 2 H 1=2 .D / quiere decir que existe al menos una funcin u0 2 H 1 ./ tal nque u0 D g0 en D .oDe
hecho, todas las dems que cumplen esta condicin pertenecen a u0 C H1D ./ D u0 C vjv 2 H1D ./ D


w 2 H 1 ./jw D g0 en D . Que g0 pertenezca a H 1=2 .D / significa que no se busca la solucin en el
conjunto vaco.

9.1.3 Discretizacin del problema en un subespacio de elementos finitos lineales


Como venimos anunciando, la resolucin del problema que estudiamos con el concurso de elementos finitos est basada en la aproximacin del espacio H 1 ./ mediante funciones polinomiales sencillas por tramos
o trozos.
Para conseguirlo se utiliza una particin del dominio de clculo  en subdominios, a los que se denomina
mallado. El ms sencillo es aquel en el que  es un intervalo de la recta real, por ejemplo el abierto .0; 1/, en
el que se tiene la particin 0 D x0 < x1 <    < xn D 1 dividida en subintervalos Ij D .xj 1 ; xj / de longitud
hj D xj xj 1 , j D 1; : : : ; n. Si h D mKax hj y Vh es el espacio lineal de funciones v tal que v 2 C 0 .0; 1/,
vjxi 1 ;xi es un polinomio lineal, i D 1; : : : ; n, perteneciente por tanto a P1 , y v.0/ D 0.
Para cada i D 1; : : : ; n se define la funcin i de tal forma que
(
1 si i D j
i .xj / D ij D
;
0 si i j
delta de Kronecker por Leopold Kronecker, Polonia 1823-Alemania 1891, segn se indica en la figura 9.37.
Se tiene que fi W 1  i  ng es una base de Vh . El conjunto fi g es una base nodal de Vh y fv.xi /g son los
valores nodales de una funcin v. Los puntos .xi / se denominan nodos o nudos.
0
Dada una funcin
Pn v 2 C .0; 1/, el interpolante, o funcin de interpolacin, vh 2 Vh de v se obtiene
mediante vh D i D1 v.xi /i como se aprecia en la figura 9.38. Si v 2 Vh ) v D vi .
Otra particin quizs la ms utilizada consiste en triangularizar un dominio de dos dimensiones, como
, en pequeos tringulos que lo cubran enteramente. En la figura 9.39 se ve la correspondiente al dominio con
el que venimos experimentando en estas notas.
48

0.4iii)Piecewise
Polynomial Spaces The Finite Element
v(0) = 0.
Method
We
will see later that S V . For each i = 1, .., n dene i by the require-

ment that i (xj ) = ij = the Kronecker delta, as shown in Fig. 0.1.


Let 0 = x0 < x1 < ... < xn = 1 be a partition of [0, 1], and let S be the
linear space ofi functions v such that
i) v C 0 ([0, 1])
ii) v|[xi1 ,xi ] is a linear polynomial, i = 1, ..., n, and
iii) v(0) = 0.
We will see later that S V . For each i = 1, .., n dene i by the requirexi
1 0.1.
as shown in Fig.
ment that i0(xj ) = ij = the Kronecker delta,

Vh

Figura 9.37: Funcin de base lineal por tramos.


Fig. 0.1. piecewise linear basis function i

(0.4.1) Lemma. {i : 1 i n} is a basis for S.


(0.4.2) Remark. {i } is called a nodal basisx for S, and {v(xi )} are the nodal
0
1
values of a function v. (The points {xi } arei called the nodes.)
n
Figura
mediante
vh de una funcin
basecilineal
Proof.
The9.38:
set Aproximacin
{i } is linearly
independent
since dei=1
i (xjpor
) =tramos.
0 implies
Fig.
0.1.
piecewise
linear
basis
function

i
cj = 0. To see that it spans S, consider the following:

Para simplificar se supone que la frontera o borde, , del dominio  es una curva poligonal. Si no lo es,
(0.4.1)
Lemma.
{iGiven
: 1 Lai vtriangularizacin
n}Cis0 ([0,
a basis
for
primero se
le aproxima
a un polgono.
en dividir  en
tringulos
(0.4.3)
Denition.
1]),consiste
the S.
interpolant
vIunconjunto
S of vde is

n
Th D K1determined
; : : : ; Km que no
se
solapen
y
que
solo
compartan
lados
completos,
o
lo
que
es
lo
mismo,
que
ningn
by vI : = i=1 v(xi )i .
vrtice de(0.4.2)
ningn tringulo
caiga
en
algn
lado
de
otro.
Se
cumplir
que
Remark. {i } is called a nodal basis for S, and {v(xi )} are the nodal
the nodes.)
values
of
a function
(The[
points
{xi } are called
Clearly, the
set {i }v.spans
the
 D S if K
D following
K1 [ K2   is[ true.
Km :

n
K2Thindependent since
Proof. The set {i } is linearly
i=1 ci i (xj ) = 0 implies


(0.4.4)
Lemma.
v

v
=
v
.
it spans
S, Iconsider
the following:
cj =V0.deTo
vj es lineal para todo K 2 T ; v D 0 en ,
El subespacio
H 1see
./that
es ahora
V D funciones
v 2 C./
h

donde vjK
2 P1 vserefiere
la funcin
restringida
Recordemos
P1endpoints,
es el espaciohence
de polinomios
on veach
[x0i1 ,axK.
zero atque
the
Proof.
vI isa linear
i ] and
(0.4.3)
Denition.
Given
v

C
([0,
1]),
the
interpolant
v

S
of
v is
I
lineales del
tipo be
a0 C
a1 x1 C a2 x2zero.
, donde los coeficientes a0 , a1 y a2 seran los parmetros
de cada
must
identically
tringulo.


n
v(x
)
.
determined
by vI : =la funcin
Los parmetros
que definirn
v
2
V
sern
los
valores
v.N
/
de
v
en
los
nodos
N
;
i
D
1; : : : ; M
i
i
i
i
h
i=1
de Th excluyendo
en los
pues vapproximation
D 0 en . Los valores
de los
de la triangularizacin
We will aquellos
now prove
thebordes
following
theorem
fornodos
the interpolant.
del dominio
son losthe
grados
que
determinan
un
elemento
de
V
.
Una
numeracin
de esos nodos
Clearly,
set de
{libertad
}
spans
S
if
the
following
is
true.
h
i
 Los nodos
 se indican mediante el vector xi , donde
para nuestro dominio de trabajo sera la de la figura 9.40.
Theorem.
Let h = max1in xi xi1 . Then
i D 1; : : :(0.4.5)
; M , el nmero
de nodos.
(0.4.4)
Lemma.
v S v = vI .
Si se fija un nodo del dominio y se le u
asocia
1 y 0 atodos los dems, existe una funcin nica
uel
I valor
E Ch u
i 2 Vh , Proof.
funcin de
base
tal on
que each [xi1 , xi ] and zero at the endpoints, hence
linear
v
vI deisnodo,
for
all
u

V
,
where
C
of h and u.
(
must be identically zero.is independent


1 si i D j
i .xj / D ij D
; i; j D 1; : : : ; M:
0 si i j

We will now prove the following approximation theorem for the interpolant.

El aspecto de una de estas funciones es el de la figura9.41. Si un tringulo


K no tiene a xi como uno de sus


(0.4.5) Theorem. Let h = max1in xi xi1 . Then


u uI E Ch u

for all u V , where C is independent of h and u.

Figura 9.39:
Triangularizacin
delofdominio
.
Figure
1.5: A triangulation

49x 2
K

14
10
5

14
10
5

15

11

6
2

15

11

16

12
7

18

16

12

18

1
1

17

17

4
4

13

13

99

Figura 9.40:
Numeracin
los nodos
del dominio .
Figure
1.7: Globalde
numbering
of nodes.
Figure 1.7: Global numbering of nodes.
i

xi

Figure 1.8: The graph of a nodal basis function: it looks like a camping tent.

Figura
9.41:
Grfica
funciones
base deit los
nodos
dominio
.
Figure 1.8:
The
graph de
of la
a nodal
basis de
function:
looks
like adel
camping
tent.
restricted to each triangle it is a polynomial (or smooth) function. Then

uh pues
H it()

uh(or
is continuous.
each triangle
a polynomial
smooth)
function.
Then es cero. El soporte por
vrtices, i es cerorestricted
en todo eltotringulo
elis valor
de la funcin
en todos
sus vrtices
tanto de i la envoltura del conjunto de1 puntos donde i no es cero es la misma que la unin de todos los
There is certain intuition
to be
why this result
true. If you take a derivative of
uh H
()had on
uh isiscontinuous.
tringulos que comparten
xi smooth
como vrtices.
Verobtain
figuraDirac
9.42.
a piecewise
function, you
distributions along the lines where there
1

are discontinuities. Dirac distributions are not functions and it does not make sense to

Theresee
is ifcertain
to be had
on why
this result
true.
If you takethea function
derivative of
the areintuition
square-integrable
or not.
Therefore,
if thereisare
discontinuities,
a piecewise
smooth
function,
you
obtain
Dirac
distributions
along
the
lines
where there
fails to have a square-integrable gradient.
are discontinuities. Dirac distributions are not functions and it does not make sense to
see if the are square-integrable or not. Therefore, if there are discontinuities, the function
nodes gradient.
fails to2.4
haveDirichlet
a square-integrable
So far we have taken into account the discrete version of the domain but not the partition
of its boundary into Dirichlet and Neumann sides. We first need some terminology. A
edge is nodes
an edge of a triangle that lies on D . Similarly a Neumann edge is an
2.4 Dirichlet
Dirichlet
edge of a triangle that is contained in N . The vertices of the Dirichlet edges are called
So farDirichlet
we have taken
into
account
the arise
discrete
version of
thethe
domain
but
notNeumann
the partition
nodes.
The
doubt may
in transitions
from
Dirichlet
to the
of its part
boundary
into Dirichlet
Neumann
some node.
terminology. A
of the boundary.
If a nodeand
belongs
to bothsides.
N andWe
Dfirst
, it isneed
a Dirichlet

Dirichlet edge
is an9.42:
edge of
a triangle
thatfunciones
Dbasis
.deSimilarly
Neumann
Figure
1.9: de
Supports
oflies
two on
nodal
functions
Figura
Soporte
dos
base deladominio
. edge is an
edge of a triangle that is contained in N . 15
The vertices of the Dirichlet edges are called
Dirichlet
nodes.
may arise
in transitions
Una funcin
cualquiera
uh 2The
Vh doubt
se representa
entonces
comofrom the Dirichlet to the Neumann
part of the boundary. If a node belongs to both N and D , it is a Dirichlet node.

uh D

M
X

j D1

M
X

uh .xj /j .xi / D 15 uh .xj /j i D


j D1

M
X

uh .xj /j :

j D1

El conjunto fi ; i D 1; : : : ; M g es una base de Vh .


Hasta ahora no hemos tenido en cuenta si los nodos de la frontera estn en el segmento de borde tipo Dirichlet
o Neumann. Si tenamos hasta ahora el espacio


1
1 to the
domain as depicted in Figure 1.1
Figure 1.10:H
Dirichlet
nodes corresponding
D ./ D v 2 H ./ v D 0; en D ;

ahora nos interesa

In truth, in parallel to what happens with how the Dirichlet and Neumann boundary

conditions
are treated in the weak formulation,
we will inherit two different discrete
VhD D Vh \ H1D ./ D vk 2 Vh vh D 0; en D :
entities:

Dirichlet
and son Dirichlet Dir y cules no, independientes, Ind. En el
La idea es llevar constancia
de qunodes,
nodos
Neumann edges.
caso del ejemplo que tratamos,
Let us now recall the space

Dir D f9;1 13; 14; 15;1 17; 18g


HD () = {v H () | v = 0

on D }.

Ind D f1; 2; 3; 4; 5; 6; 7; 8; 10; 11; 12; 16g :


We might be interested in the space
VhD = Vh H1D () = {v
h Vh | vh = 0,
50
16

on D }.

Entonces, un elemento de Vh se podra escribir como


X
X
uh D
uj j C
uj j ;
j 2Ind
j 2Dir
y uno de VhD as
uh D

uj D uh .xj /

uj j :

j 2Ind

9.1.4 Reformulacin del problema como un sistema de ecuaciones lineales


Recapitulando, el mtodo nos ha hecho llegar a la siguiente formulacin para determinar la funcin uh

Determinar una funcin uh 2 Vh tal que


uh .xj / D g0 .xj / 8j 2 Dir
Z
Z
Z
Z
ruh  ri C c
uh i D
f i C


g1 i ; 8i 2 Ind:

Para ello:
 Hemos convertido el espacio de Sobolev en el que buscamos la funcin solucin en uno de dimensin
finita, Vh . Es decir, hemos reducido el problema a calcular uh en los vrtices de una triangularizacin
los nodos y a un nmero finito de incgnitas.
 Hemos sustituido las condiciones tipo Dirichlet fijando condiciones a los nodos Dirichlet, lo que reduce
an ms el nmero de incgnitas: a los nodos independientes.
 Hemos reducido el espacio de prueba de H1D ./ a un subespacio discreto VhD , lo que reduce un
nmero infinito de pruebas en la formulacin dbil a un nmero finito de ecuaciones lineales.
Para obtener finalmente el sistema de ecuaciones lineales escribimos uh en trminos de las funciones de base
de los nodos:
X
X
uh D
uj j C
uj j :
j 2Ind
j 2Dir
Luego sustituimos en esta expresin las condiciones de Dirichlet discretizadas:
X
X
uj j C
g0 .xj /j :
uh D
j 2Ind
j 2Dir

Finalmente incorporamos esta expresin en la formulacin variacional discreta:


Z
Z
Z
Z
ruh  ri C c
uh i D
f i C
g 1 i ;


linealizando, teniendo en cuenta que


ruh D

j 2Ind

uj rj C

g0 .xj /rj

j 2Dir

y reordenando llegamos a
i Z
j 2Ind

rj  ri C c

j j uj D

f i C

i Z
j 2Dir

51

g1 i

rj  ri C c

j j g0 .xj /:

Este es un sistema de ecuaciones lineales con un nmero de ecuaciones igual al nmero de incgnitas (# Ind D
dim VhD ), que son precisamente los valores de la funcin uh en los nodos libres de la triangularizacin llevada
a cabo.
Hay dos matrices importantes en este sistema de ecuaciones, la matriz de rigideces,
Z
W ij D
rj  ri


y la matriz de masas
M ij D

j i :

Ambas
La de masas es definida positiva. La de rigideces semidefinida positiva. Si hacemos
R son simtricas.
R
bi D  f i C N g1 i , i 2 Ind, se llega a
!

W ij C cM ij uj D bi
j 2Ind

W ij C cM ij g0 .xj /;
j 2Dir

i 2 Ind:

Estas matrices poseen patrones de dispersidad muy pronunciados pues slo interactan nodos que estn unidos
entre si por lados de tringulos. Ello las hacen propicias para ordenaciones en torno a la diagonal principal.
Su manipulacin es sencilla y las operaciones necesarias para resolver los gigantescos sistemas de ecuaciones
lineales a que pueden dar lugar son perfectamente tratables por los ordenadores disponibles actualmente.

9.2 Algo sobre funcionales y clculo de variaciones


Un funcional es una funcin que tiene funciones como argumento a las que asigna un valor real. Es decir,
una funcin cuyo dominio es un conjunto de funciones. En la figura 9.43 se esquematiza la diferencia entre una
funcin ordinaria Chapter
y un funcional.
1: VARIATIONAL CALCULUS OVERVIEW
Input: argument x
(independent
variable)

Function
operator

Output: function
value y (dependent
variable)

y=y(x)=f(x)

(a)

FUNCIONES
Input 1: argument x
(independent
variable)

(b)

Functional
operator

Output: functional
value J (a scalar)

y=f(x)

J(y)=J(x,y)

Input 1: argument x
(independent
variable)

(c)

Input 2: function
y=y(x) (primary
dependent variable)

Input 2: function
y=y(x) (primary
dependent variable)

Functional
operator

y=f(x)

Input 3: derivative
of primary
dependent variable

Output: functional
value J (a scalar)

J(y)=J(x,y,y')

y'=dy/dx

FUNCIONALES

Figure 1.1. Block diagrams that illustrate key differences between functions and functionals in one dimension.

(a) de
An ordinary
function
y(x) = fla
(x)diferencia
of the independent
variable en
x; (b)una
a functional
J [y] = J (x,
y) of una funcin ordinaria
Figura 9.43: Diagrama
bloques
quey =ilustra
formal
dimensin
entre
the function y(x); (c) a functional J [y] = J (x, y, y  ) of the function y(x) and its derivative y  = dy/d x.
y un funcional. (a) Una funcin ordinaria y D y.x/ D f .x/ de una variable independiente x; (b) Un funcional
J.y/ D J.x; y/ 1.2.3.
de la Basic
funcin
y.x/; Un funcional J.y/ D J.x; y; y 0 / de la funcin y.x/ y su derivada
1D Functional
y 0 D dy=dx.

To keep things simple, in this Chapter we focus on one specific type of functional, called the basic
one-dimensional functional. It has the form (1.2), under additional restrictions:

El funcional bsico unidimensional lineal ms tpico tiene la forma


J.y/ D

b =
J [y]



F x, y(x), y  (x) ,
0

x = [a, b],

F ax; y.x/; y .x/ dx;

a b,

y(a) = ya ,

x D a; b; a  b;

y(b) = yb .

(1.3)

y.a/ D yOa ; y.b/ D yOb :

a
In words: the function y = f (x) is defined over the segment x [a, b], a b, of the real line.
Given x, y is assumed real and unique; that is, 52
y(x) is single-valued. Furthermore y(x) possesses
the appropriate smoothness so that y  (x), as well as the integral in (1.3), exist. That function must
satisfy the stated end conditions at x = a and x = b, at which ya = y(a) and yb = y(b) are given.3
Those boundary conditions will be called essential.

The basicfunctional (1.3) is historically interesting since it belongs to a class of problems that

En palabras, la funcin y D y.x/ est definida en el segmento x 2 a; b, a  b, de la recta real. Dado un


x, y.x/ se supone real y nico. Adems, y.x/ es continua y derivable por lo que y 0 .x/ existe al igual que
la integral enunciada. La funcin debe satisfacer en x D a y en x D b unas determinadas condiciones de
contorno: concretamente, yOa D y.a/ y yOb D y.b/.
As era cmo la palabra funcional fue utilizada inicialmente en el clculo de variaciones, donde el integrando
a ser minimizado deba ser un funcional, aplicada a una todava desconocida funcin que satisfaca solamente
una cierta condicin de contorno, y condiciones de derivabilidad.
Otro funcional lineal habitual es la funcin delta de Dirac por Paul Adrien Maurice Dirac, Reino Unido,
1902-1984
t f ./ D f .t /
Rb
que se puede escribir tambin como t f ./ D a f .x/.x t / dt.
Un problema de clculo de variaciones o problema variacional tpico sera el de encontrar la funcin y 2
a; b ! R que minimiza el funcional anterior, J.y/, con las condiciones de contorno indicadas.
En varios campos de la ingeniera, la fsica matemtica, el reconocimiento de imgenes y otros muchos, el
clculo de variaciones es un interesante problema matemtico consistente en buscar mximos y mnimos (o
ms generalmente extremos relativos) de funcionales continuos definidos sobre algn espacio funcional. Constituyen una generalizacin del clculo elemental de mximos y mnimos de funciones reales de una variable.
Muchos problemas de este tipo17 son fciles de formular pero sus soluciones implican a menudo, a su vez,
difciles procedimientos de clculo diferencial, los cuales generalmente suponen usar ecuaciones diferenciales
ordinarias Ordinary Differential Equations, as como las ecuaciones (diferenciales) en derivadas parciales
1.2 FUNCTIONALS VERSUS FUNCTIONS
Partial Differential Equations.
En la figura 9.44 se pueden ver algunos problemas clsicos de funcionales en una dimensin.
y

;;;;;
;;;;;
;;;;;
;;;;;

(a)

y=y(x)

y(a)=y^a

(b)
Arclength L

x=a

Constant
gravity g

Straight line

Area A

(c)

Cycloid

y(b)=y^

x=b

Parabola

x=b

x=a

x=b

x=a

Rb
Figura 9.44:
Ejemplos
clsicos defunctionals
funcionales:
debajo de
una(a)curva,
Figure
1.2. unidimensional
Canonical one-dimensional
used(a)
in rea
the examples
of q
?.
area under
a y.x/ dx; (b)
R b 1C.y 0 .x//2
Rbp
curve; (b) 0curve2arclength, (c) brachistochrone.
dx.
Longitud de un arco de curva, a 1 C .y .x// dx; (c) Curva braquistcrona, a
2gy
Example
1.1general,
. Area Under
Curve.
The areapueden
subtented
by y(x)
the real La
axis
is given
Por regla
no todas
las funciones
encajar
en unand
funcional.
figura
9.45by
ilustra algunos tipos

de funciones permitidas y otras no permitidas, grosso


 modo.
b
Si se considera un funcional general
A=
y(x) d x.
Z x2 a
I D in Figure
F .x; 1.1(b).
y; y 0 / dx
See Figure 1.2(a). This has the form illustrated

(1.4)

x1

Example
1.2una
. Curve
Length.
Thecon
length
of the continuas
curve y(x)hasta
between
x orden
[a, b]respecto
and satisfying
end
donde
F es
funcin
conocida
derivadas
segundo
a x, y the
y y 0given
. El valor
conditions
is
given
by
de I depender de la trayectoria de la funcin entre
1 ; y1 / y .x2 ; y2 /; es decir, depender de la funcin y.x/
 b .x

que se escoja.
1 + (y  )2 d x.
(1.5)
L=
Si se introduce a modo de prueba la familia de atrayectorias

in which the + sign of the square root is taken. See Figure 1.2(b). (If this L is uniquely defined by this integral
y.x/
Q
D y.x/ C ".x/;
the curve is said to be rectifiable.) This functional has the form illustrated in Figure 1.1(c), except that there
is no explicit
y; only
on its slope.
donde
" es undependence
parmetro yon
.x/
una funcin
derivable a la que se le pide que .x / D .x / D 0, resulta que
1

se pueden generar una infinidad de trayectorias para una .x/ dada sin ms que variar el parmetro ". Todas
Example 1.3. Brachistochrone. This is illustrated in Figure 1.2(c). A point-mass body is released at A at zero
17 Por ejemplo el de encontrar la curva de longitud ms corta que una dos puntos.
time.
It is constrained to move under the influence of constant gravity g acting along y and without friction,
along a curve y = y(x) that ends at B, which is lower than A. (The mass is pictured as a rolling disk in the
figure, but it is actually a sliding point no rotation53
is involved.) The curve y(x) is called the trajectory or
path. The traversal time taken by mass to go from A to B is given by the functional

 b
TAB =

1 + (y  )2

d x.

(1.6)

Chapter 1: VARIATIONAL CALCULUS OVERVIEW

(a)

(b)
1

1
2

A
y(a)=y^a

y(b)=y^b

y(a)=y^a

y(b)=y^b

3
4
5

x=b

x=a

x=b

x=a

Figure
1.3. Visualization
of function
admissibityenconcept
as regards(a)
(1.3):
(a) sample
admissible
Figura
9.45: Muestrario
de funciones
admisibles
un funcional:
Funciones
continuas,
C 1functions
, con un slo
y(x) over that satisfy: C 1 continuity (i.e., unique tangent at each point), and essential BC, and single valuedness;
valor para cada x y que cumplen las condiciones de contorno; (b) Inadmisibles: La 1 y la 3 tienen derivadas
(b) sample inadmissible functions that violate one or more of the foregoing conditions: curves 1 and 3 have
discontinuas;
la 2curve
es discontinua
y admite
varios
para and
un x;
la 45 admite
valores
para
corners,
2 is discontinuous,
curve
4 isvalores
multivalued,
curve
violates varios
the right
essential
BC.un x y la 5
no cumple las condiciones de contorno.

function
just a number. A function that is permissible as input to a functional is called
ellas pasanrather
por .xthan
1 ; y1 / y .x2 ; y2 /. Consideremos
Z x2
admissible. The set of suchZ functions
is the admissible
class with respect to the functional under
x2
0
Q
I D
F .x; y;
Q guidelines
yQ / dx D mayF be
.x; offered.
y C "; y 0 C "0 / dx
consideration. The following
general
x1

x1

Function Smoothness. AdmissibleQ functions are usually chosen to have the minimal smoothness for
Es evidente que los funcionales I y I alcanzarn el mismo valor extremo (valor mximo o mnimo) cuando
which
the integration over the problem domain makes sense. For example, if the functional has the
" D 0. Desarrollando, se tiene que
to ask
form (1.2) the presence of y  means that it is reasonable
!
! that y(x) have integrable derivatives.
2 IQ
 d IQ
"2 Requiring y(x) C 1 over the
d
For this to happen, it is sufficient
that
y
(x)
be
piecewise
continuous.
IQ D .IQ/"D0 C
C 
"C
d"
d "2
2
domain would be overkill but safe.
"D0
"D0
End
Prescribed
such asque
y(a) = ya , and y(b) = yb in (1.3), must be satisfied
Para Conditions.
que IQ sea extremo
cuando end
" D values,
0 es necesario
!
a priori. As previously noted, this kind of specification
is called an essential boundary condition.
d IQ
D 0:
Single Valuedness. This requirement is optional.
It is often stipulated a priori to simplify the
d"
"D0
formulation and analysis. But it must be abandoned for certain problems. For example, those that
Es decir que
Z 4x2 


involved closed curves or spirals.
@F d yQ
@F d yQ 0
C

dx

D 0:

@yQ d " is @intended


yQ 0 d " to model
Real or Complex Values. If thex1functional
a physical problem, the choice
"D0
0
0
should
be
obvious.
Else
it
is
a
fielders
choice
re
generality.
Dado que d y=d
Q " D , que d yQ =d " D  y que quitar las tildes de yQ y de yQ 0 en las derivadas de F es lo mismo
que hacer
0 segn se
requera ms
arriba, la
ecuacin
se puede reescribir as:
Figure
1.3" D
illustrates
admissible
function
classes
foranterior
the
 basicfunctional (1.3). Three requirements
Z x12 
@F the function must be continuous and possess
are laid down: (1) y(x) is real and C [a,@Fb], whence
C 0 0 dx D 0:
@y
@y
continuous first derivatives; (2) satisfy
BC at both ends; and (3) be single valued. All
x1 essential
curves
drawn
in Figure
1.3(a)trmino,
are admissible in this sense, whereas those in Figure 1.3(b) are not;
Integrando
por partes
el segundo
x2 Z
see figure legend as to why.


Z x2

x2 
@F
@F 0
 dx D 0 
0
@y
x1 @y of a Function
1.2.5. Variation and Extrema
x1

x1

d
dx

@F
@y 0

 dx:

Cuando
 D 0ofenvariation
los extremos
la primera expresin
del miembro
de la calculus
derecha de
ecuacin
seextension
hace cero.
The
concept
is fundamental
since it gives
variational
itsesta
name.
It is an
Sustituyendo lo que queda en la anterior se tiene que
of the well known concept of differential
calculus. This is briefly reviewed below.
 in standard


Z
x2

@F

@F

dx D
0: y(x) possesses unique derivative
Consider an ordinary 1D function y(x), where y and x0 arereal
and
@y
dx @y
x1

y (x) at each x in the problem domain x [a, b]. Change a given x bytto x + x. The function

Cualquiera que sea la funcin .x/ entre los puntos extremos, segn la frmula de Euler-Lagrange se tiene que
4

Sometimes single valuedness may be often restored


through@Fa parametric representation in non-Cartesian coordinates.
d @F
D0
This is often the case with isoperimetric problems.
0

dx @y

@y

18
que es la condicin que debe cumplir y.x/ para ser un
mximo o un mnimo: un extremo. Si en esta expresin
se sustituye F por su expresin F .x; y; y 0 / resulta una ecuacin diferencial de segundo orden en y.x/.
54

THEOREM 15.1 (Fundamental Lemma of the Calculus of Variations)


Suppose M (x) is a continuous function dened on the interval a x b. Suppose further
that for every continuous function, (x),
9.2.1 Proposiciones esenciales

b

(x)(x)dxSea
= 0.
Lema 9.1 Lema fundamental del Clculo deM
Variaciones
M.x/ una funcin continua definida en el
a
intervalo a  x  b. Supongamos que para cualquier funcin continua .x/ se tiene que
Then
Z b
M (x) =M.x/.x/
0 for alldxxD 0:[a, b].
a

Se cumple entonces que


M.x/ D 0 para todo x 2 a; b:

Proof Suppose M (x) is not zero at some point x0 (a, b). Suppose for deniteness that M (x0 ) > 0. Then by continuity there is a > 0 such that

D EMOSTRACIN . Supongamos que M.x/ no es cero en algn punto x0 2 .a; b/. Concretamente que M.x0 / >
0. Por la continuidad de M.x/, existe un > 0 tal que

M (x0 )
M (x0 )
< M (x) M (x0 ) <
for |x x0 | < with x [a, b].
2 M.x0 /
2 0/
M.x
< M.x/

M.x0 / <

para jx

x0 j < con x 2 a; b:

Thus, M (x) > M (x0 )/2 in that interval. Now choose (x) such that

En consecuencia, M.x/ > M.x0 /=2


en ese
figura 9.46,

0
(x) = >00

0 > 0
.x/ D
0

intervalo. Escojamos una funcin .x/ tal que, como se ve en la

if a x a1 = max(x0 , a)
1 D
0 b]; a/
ifsi a|xxx0 |a<
, mK
xax.x
[a,
x00j <
ifsi jx
min(x
+ ;
,xb)2=a;b1b x b.
si mKn.x0 C ; b/ D b1  x  b:

See the Figure 15.17. Then

M( x0 )
M( x0)
2

.x/

x 0

a
FIGURE 15.17

Se tiene entonces que b

0=

0D

x 0 +

Figura 9.46: Lema fundamental del Clculo de Variaciones.

M (x)(x)dx =

a
Z b
a

x0

 b1

M.x/.x/ dx D

M (x)(x)dx >

Za1b1
ai

 b1

1
M (x0 )
2
Z

1
M.x/.x/ dx > M.x0 /
2

(x)dx > 0,

ba1
1

.x/ dx > 0;

a1

lo cual es una contradiccin.


Si M.x0 / < 0 el argumento sera idntico sustituyendo M.x/ por M.x/. Si x0 D a o x0 D b la demostracin sera casi igual con pequeas modificaciones en la lnea argumental.
Corolario 9.2 El resultado del Lema 9.1 sigue siendo aplicable si
.a/ D .b/ D 0:

55

Corolario 9.3 Supngase que M.x/ es continua en el intervalo I D a; b y que f'n .x/g1
nD1 es un conjunto
de funciones base. Supngase adems que
Z

M.x/'n .x/ dx D 0 para n D 1; 2; : : :

Se cumple entonces que M.x/ D 0 para todo x 2 a; b.


Lema 9.4 Sea M.x/ una funcin continua definida en el intervalo a  x  b. Supongamos que para
cualquier funcin continua .x/, de derivada continua, se tiene que
Z

M.x/ 0 .x/ dx D 0

para .a/ D .b/ D 0. Se cumple entonces que


M.x/ D constante para todo x 2 a; b:
Lema 9.5 Sea M.x/ una funcin continua definida en el intervalo a  x  b. Supongamos que para
cualquier funcin continua .x/, de derivadas continuas al menos hasta segundo grado, se tiene que
Z

M.x/ 00 .x/ dx D 0

para .a/ D .b/ D 0 y  0 .a/ D  0 .b/ D 0. Se cumple entonces que


M.x/ D c0 C c1 x para todo x 2 a; b;
donde c0 y c1 son constantes.

10 Bibliografa
B ERTSEKAS , D.P. 2003. Convex Analysis and Optimization. Athena Scientific.
B OYD , S. Y VANDENBERGHE , L. 2004. Convex Optimization. Cambridge University Press.
F UENTE , J.L. 1998. Tcnicas de clculo para sistemas de ecuaciones, programacin lineal y programacin entera. Segunda edicin. Revert.
DE LA

G ANDER , M.J. Y WANNER , G. 2012. From Euler, Ritz, and Galerkin to Modern Computing. SIAM Review,
Vol. 54, No. 4. Society for Industrial and Applied Mathematics.
H ALMOS , P.R. 1974. Finite-Dimensional Vector Spaces. Springer Verlag.
K UHN , H.W. Y T UCKER , A.W. 1951. Nonlinear Programming. Proceedings of the Second Berkeley Symposium on Mathematical Statistics and Probability. University of California Press. Verlag.
L AY, D.C. 2012. lgebra lineal y sus aplicaciones. Cuarta edicin. Pearson educacin.
L UENBERGER , D.G. 1969. Optimization by Vector Space Methods. John Wiley and Sons.
L UENBERGER , D.G. Y Y E , Y. 2009. Linear and Nonlinear Programming. Springer Verlag.
N OCEDAL , J. Y W RIGHT, S.J. 2006. Numerical Optimization. Springer Verlag.
R IAZA , R. Y LVAREZ , M. 1996. Clculo infinitesimal. Vol. I. Sociedad de Amigos de la Escuela Tcnica
Superior de Ingenieros Industriales de Madrid.
R IAZA , R. Y LVAREZ , M. 1997. Clculo infinitesimal. Vol. II. Sociedad de Amigos de la Escuela Tcnica
Superior de Ingenieros Industriales de Madrid.
56

ROCKAFELLAR , R.T. 1970. Convex Analysis. Princeton University Press.


S AUER , T. 2013. Anlisis numrico. Segunda edicin. Pearson educacin.
S AYAS , F.J. 2015. A gentle introduction to the Finite Element Method.
W OLFE , P. 1961. A Duality Theorem for Non-Linear Programming. Quart. Appl. Math. 19, N 3.

57

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Fundamentos
de la

Ingeniera Matemtica y sus Algoritmos

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_fundamentos_2016.pdf

1/118

2/118

ndice


Introduccin y conceptos bsicos

Representacin de un nmero en formato estndar IEEE

Aritmtica en un ordenador

Evaluacin de errores

Clculo numrico con matrices

Producto de una matriz por un vector

Producto de dos matrices

Normas


Vectoriales

Matriciales

Introduccin

3/118

En nuestro quehacer diario, consciente e inconscientemente, realizamos muchas


operaciones numricas que confiamos ciegamente a los algoritmos numricos,
ordenadores y mquinas a nuestro alcance.

Como ingenieros1, en importante que conozcamos qu hacen y cmo esos


algoritmos, o qu procedimientos formales siguen, pues son la fuente de muchas
posibles mejoras, as como de problemas prcticos de interpretacin y precisin
de los resultados.

Calculemos, por ejemplo, el valor de un polinomio,


p.x/ D 2x 4 C 3x 3
en el punto x D 1=2.

Pues somos esencialmente los que los producimos.

3x 2 C 5x

1;

4/118

Supongamos que toda la informacin y los datos que se necesitan para hacer
esta operacin estn adecuadamente guardados en el ordenador.
Cules deberan ser?

De acuerdo con nuestros conocimientos de este momento, la primera forma que


se nos puede ocurrir para evaluar el polinomio en el punto dado procedera ms
o menos as:

p 21 D 2  12  21  12  12 C 3  12  12  12 3  21  12 C 5  21 1 D 54 .

El nmero total de multiplicaciones que realizamos es 10; el de sumas/restas, 4.

5/118

Una segunda forma podra consistir en hacer lo siguiente



1 2
1
1
 2 D 2 D 14 ! y guardarlo
2


1 2
1 3
1
D

! y guardarlo
2
2
2


1 4
1 3
1

D
! y guardarlo
2
2
2
y luego

1
2

D2


1 4
2

C3


1 3
2

3


1 2
2

C 5  21

1 D 45 .

El nmero total de multiplicaciones en este caso es 3, para las potencias de 12 ,


ms 4 despus. Las sumas y restas son las mismas.

Es evidente que si esto hay que hacerlo muchas veces, el ahorro en tiempo de
esta segunda forma de proceder puede ser muy significativo, no?

6/118

Se puede hacer mejor an? Consideremos el polinomio reescrito as:


p.x/ D
D
D
D


1 C x 5 3x C 3x 2 C 2x 3


2
1Cx 5Cx
3 C 3x C 2x




1Cx 5Cx
3 C x 3 C 2x


1Cx 5Cx

y evalumoslo de dentro hacia afuera

1
2



3Cx 3Cx2

1
2

 2; ms 3 D 4

1
2

 4; ms

3D

 . 1/; ms 5 D
1
2

 92 ; ms

9
2

1 D 45 :

7/118

Esta forma de actuar se conoce como regla de Horner, o multiplicacin


anidada, por William George Horner, Inglaterra, 1786-1837.

Necesita 4 multiplicaciones y 4 sumas. Si el polinomio es de grado d , se


necesitarn d multiplicaciones y d sumas.

Lo que acabamos de exponer es el paradigma de una de las cuestiones bsicas


que vamos a destacar recurrentemente en este curso:

8/118

Los ordenadores son muy rpidos haciendo cosas muy sencillas.

Con ellos, las cosas muy sencillas, sobre todo las que se repiten
indefinidamente, hay que hacerlas muy bien y eficazmente: ingeniera.

La mejor forma de hacer ciertas cosas y clculos no siempre es la ms obvia.


La mayora de las ideas fundamentales de la ciencia son
esencialmente sencillas y, por regla general, pueden ser
expresadas en un lenguaje comprensible para todos
Albert Einstein. 1879-1955.
En igualdad de condiciones la solucin ms sencilla es
probablemente la correcta
Guillermo de Ockham. 1285-1347.

Para terminar con estas consideraciones previas, cualquier polinomio como


c1 C c2x C c3x 2 C c4x 3 C c5x 4
se puede escribir as




c1 C x c2 C x c3 C x c4 C x.c5/
;
e incluso as

c1 C .x


r1/ c2 C .x


r2/ c3 C .x

r3/ c4 C .x

9/118



r4/.c5/
;

donde r1, r2, r3 y r4 son los que se conocen como puntos de base.

Este cdigoa de Matlab


hace el trabajo al que nos
hemos referido.

El primero de muchos del curso

function y=Horner(d,c,x,b)
% Con regla de Horner se evala el polinomio de grado d,
%
definido en el vector c, en el punto x (puede ser vector).
%
Entrada: c(d+1), coeficientes del polinomio: c1, c2,...;
%
x, punto (vector) en el que se evala el polinomio;
%
b, puntos base, si es el caso.
%
Salida: y, valor del polinomio en x
if nargin<4, b=zeros(d,1); end
y=c(d+1);
for i=d:-1:1
y = y.*(x-b(i))+c(i);
end
end

10/118

Hagmoslo funcionar de varias maneras en el escritorio de Matlab:


>> Horner(4,[-1 5 -3 3 2],1/2)
ans =
1.250000000000000
>> Horner(4,[-1 5 -3 3 2],1/2,[0 0 0 0])
ans =
1.250000000000000
>> Horner(4,[-1 5 -3 3 2],[-2 -1 0 1 2])
ans =
-15
-10
-1
6
53

Algunos conceptos bsicos


Nonlinear optimization: motivation, past and perspectives

11/118

History

(300 2BC)
Al-Khwarizmi
Un Euclid
algoritmo
es un conjunto
ordenado(783-850)
y finito de operaciones y reglas que
permite hallar la solucin de un problema, o realizar una actividad relativamente
compleja.



lgebra

Al-Khwarizmi (783-850)
'H:LNLSHGLDODHQFLFORSHGLDOLEUH

De Muhammad ibn Musa al-Khwarizmi, sabio persa considerado April


uno2009
de(Olgebra GHOiUDEHalabr
UHL
los30padres
)
/ 323 del lgebra (
que escribi entre los aos 800 y 825 la obra Quitab Al Jabr Al Mugabala,
donde se recoga el sistema de
PDWHPiWLFDTXHHVWXGLDODFRPELQDFLyQ
numeracin indio y el concepto de cero.
D FLHUWDV UHJODV 2ULJLQDOPHQWH HVRV

Philippe Toint (Namur)

12/118

La velocidad de los algoritmos para realizar operaciones numricas y sus


prestaciones y precisin dependen en gran medida de la exactitud con la que se
pueden representar los nmeros, datos y las operaciones en la mquina donde se
han de ejecutar.

Para disear algoritmos y codificarlos en un lenguaje que interprete la mquina


es aconsejable conocer cmo opera la aritmtica de esa mquina y los
parmetros esenciales de su sistema de numeracin.

Los ordenadores y calculadoras guardan informacin numrica y alfanumrica


que se les suministran mediante una aproximacin numrica, o cdigo, de los
mismos.

En general, lo hacen empaquetndolos en grupos de bits unidad bsica,


denominados bytes (grupos de 8 bits).

13/118

Los ordenadores tienen varias formas estndar de representar un dato numrico:





Formato entero sin decimales (integer) o


Formato de coma o punto flotante (real): nuestro formato
decimal3.

Adems del integer y el real, se gestionan otros tipos de datos:


char/string Para almacenar o manipular caracteres alfanumricos
logical Para designar variables o valores que slo admiten el 1 o el 0 o el
verdadero o falso
single/double Para almacenar variables o datos numricos en precisin
sencilla 4 bytes o doble 8 bytes. Lo habitual en Matlab es double
complex Para almacenar variables complejas, cuando no se quiere guardar la
parte real y la imaginaria por separado.
3

De origen indo-arbigo entre los siglos IV y VI, transmitido a Europa gracias a la Escuela de Kerala, India.

14/118

La representacin de un nmero entero en un ordenador en formato entero es


exacta, siempre y cuando su valor est comprendido dentro de los lmites que
admite la mquina.

En formato real slo es posible representar un conjunto finito de nmeros, F , de


la recta real (F  R), formado por elementos de la forma


dp
d1 d2
C 2 C    C p  e
f D

D 0; d1d2    dp  e
donde: es la base de numeracin, 0  di  1; i D 1; : : : ; p ;
p el nmero de dgitos significativos, o longitud de mantisa (precisin);
e el exponente, L (underflow)  e  U (overflow).

La ristra de dgitos d1, d2, : : :, dp se denomina mantisa.

15/118

Mquina

Precisin
Simple
IEEE st. 754-1985 normali. Doble
Extendida
Simple
Doble
IBM mainframe
Extendida
Simple
Cray (superordenador)
Doble
Calculadoras HP

2
2
2
16
16
16
2
2
10

p
24
53
64
6
14
28
48
96
12

L
U
126
127
1022 1023
16381 16384
64
63
64
63
64
63
8192 8191
16383 16384
499
499

Parmetros de los sistemas de numeracin de varias mquinas

16/118

Normalizacin


Un sistema de numeracin se dice normalizado si el primer dgito de la mantisa


es siempre distinto de cero al representar cualquier nmero que no es cero.
Ventajas: I. En binario el primer dgito es siempre 1, por lo que no es necesario
guardarlo. Cualquier nmero sera 1;bbb : : : bb  2p .
II. Una nica representacin de un nmero.

III. No se malgastan dgitos (ceros) a la izquierda del primero no


cero.


En un sistema normalizado un nmero distinto de cero f est acotado de la


siguiente manera:
L  jf j  U C1.1 p /:

17/118

El conjunto F de nmeros de una mquina representables exactamente no es


evidentemente infinito: tiene un nmero de elementos fijo igual a
2.

1/ p 1.U

L C 1/ C 1

2: dos opciones de signo.

: posibles valores por cada uno de los p


mantisa, incluyendo el cero.

1: posibles valores del dgito ms significativo de la mantisa.


1 dgitos restantes de la

L C 1 valores posibles del exponente.

Estos elementos no estn igualmente espaciados sobre la recta real sino en


potencias sucesivas de .


Si el nmero que se quiere representar es uno de estos elementos, se guardara


en su exactitud; si no, una aproximacin.

18/118

Ejemplo Si se trabaja en una mquina normalizada en la que D 2, p D 2


(realmente habra 3 dgitos) , L D 1 y U D 1, los 25 elementos del conjunto
F de esa mquina son los representados por muescas en azul en la recta de la
figura Ms ejemplos aqu.

3;5

2;5

1;5

0;5

0;5

1;5

El nmero ms grande positivo representable es


.1;11/2  21 D 2  1 C 1=2 C 1=22

2;5

D 2  .1 C 0;5 C 0;25/ D 3;510I

el ms pequeo en valor absoluto,


.1;00/2  2

D 0;510:

3;5

Desnormalizacin

19/118

Desnormalizacin

La normalizacin produce un vaco de nmeros en torno al 0. La


 La normalizacin produce un vaco de nmeros en torno al 0.
desnormalizacin,
que permite
hayacuando
ceros
en los primeros
dgitos
de la
La desnormalizacin
facilitaque
rellenarlo
el exponente
del nmero sea
el
mnimo,
permitiendocuando
que haya ceros
en los dgitos ms
de lael mnimo.
mantisa, facilita
rellenarlo
el exponente
del significativos
nmero sea
mantisa.

3;5

1;5

0;5

0;5

1;5

2;5

3;5

 En de
el sistema
de juguete
anterior,elel vaco
vaco central
se podra
rellenar con
En el sistema
juguete
anterior,
central
se podra
rellenar con
elementos cuya mantisa no empieza por 1. Se podran aadir 3 ms a cada lado
elementos cuya
mantisa no empieza por 1.
del cero, siendo el ms pequeo positivo representable el

.0;01/2  2

2;5

D .0;125/10.

Se podran aadir
3 ms a cada lado del cero, siendo el ms pequeo positivo
La desnormalizacin ampla el rango de nmeros representables, aunque la
representable el .0;01/2  2 1 D .0;125/10.
19/133

La desnormalizacin ampla el rango de nmeros representables, aunque la


precisin de esos de ms es menor que la general al tener menos dgitos no cero.
d

10

Sistema binario de numeracin

20/118

Es el sistema de numeracin con el que trabajan casi todas las mquinas de


clculo electrnicas a nuestra disposicin.

En este sistema, cualquier nmero se expresa

   b2b1b0;b 1b 2   

donde cada dgito binario, o bit, es 0 1.

En el sistema decimal, de base 10, el equivalente a ese nmero cualquiera sera


el resultado de
   b222 C b121 C b020 C b 12

C b 22

 :

El nmero 4 en base 10 sera en binario 1002 y 3=410 sera 0;112.

21/118

Para convertir cualquier nmero del sistema decimal al binario habra que hacer
lo siguiente:

Parte entera Se divide por 2 sucesivamente y se guardan los restos, 0 1,


de cada divisin.
Esos restos se ordenan desde el primero al ltimo y se disponen de derecha a
izquierda. El conjunto de dgitos obtenido es la representacin en binario.
Por ejemplo, con 53;7 hacemos
53  2 D 26 r
26  2 D 13 r
13  2 D 6 r
62D 3r
32D 1r
12D 0r

1
0
1
0
1
1:

El nmero 5310 es en binario 1101012.


Comprobando 1101012 D 25 C 24 C 22 C 20 D 32 C 16 C 4 C 1 D 5310.

22/118

Parte fraccionaria Se hace el proceso inverso: se multiplica la parte


fraccionaria por 2 y se guardan las partes enteras.
Al final se disponen los enteros obtenidos, sucesivamente, a la derecha de la
coma. Con 53;7:
0;7  2 D 0;4 C 1
0;4  2 D 0;8 C 0
0;8  2 D 0;6 C 1
0;6  2 D 0;2 C 1
0;2  2 D 0;4 C 0
0;4  2 D 0;8 C 0
:::
Se ve que el proceso llega un momento que se repite indefinidamente cada
cuatro pasos. Es decir,
0;7 D 0;101102:
En resumen, el nmero 53;710 es en binario 110101;101102.

Para convertir cualquier nmero de binario a decimal:

23/118

Parte entera Se suman las sucesivas potencias de 2. Por ejemplo,


101012 D 1  24 C 0  23 C 1  22 C 0  21 C 1  20 D 2110.

Parte fraccionaria Si es finita, se procede de forma similar, por ejemplo


 
1
1
1
1 1
1
11
0;10112 D C 3 C 4 D C C
:
D
2 2
2
2 8 16
16 10
Si es infinita, lo ms fcil es usar el desplazamiento por potencias de 2.
Por ejemplo, si se quiere convertir a base 10 el nmero x D 0;10112,
primero se multiplica por 24, lo que desplaza la coma cuatro posiciones a la
derecha; luego se resta el original:
24  x D 1011;1011

x D 0000;1011:

24/118

Restando
2

1  x D 10112 D 1110:

Luego se despeja x, quedando que x D 11=1510:

 Otro ejemplo distinto, x D 0;10101. Primero se multiplica por 22 :

y D 22  x D 10;101. Luego se procede como antes con la parte fraccionaria


z D 0;101:
23  z D 101;101
z D 000;101:

De aqu que, restando, 7z D 5. El resultado 22x D y D 2 C 5=7, por lo


que x D 2 2y D 19=2810.

25/118

Formatos habituales para presentar al usuario la informacin que un ordenador


guarda de un nmero en binario:
Decimal Binario Octal (base 8) Hexadecimal (base 16)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001

0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
21

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11

26/118

Por ejemplo,
>> format hex
>> 1
ans =
3ff0000000000000
>> 9.4
ans =
4022cccccccccccd
>> 1/0
ans =
7ff0000000000000
>> 0/0
ans =
fff8000000000000

27/118

Formato binario estndar de aritmtica en


coma flotante de IEEE
Precisin doble palabra de 64 bits y normalizado
63 62

52 51

Exponente

Mantisa

es el bit de signo: 0 para nmeros positivos; 1 los negativos.

El exponente (11 bits) no tiene bit de signo. Para que sea siempre positivo tiene
un sesgo, el nmero 1023 D 210 1. Cualquier exponente es 0  Exp  2047.

Cualquier dato numrico: . 1/S  2.Exp

1023/

 1;M ant i sa:

28/118

Si Exp D 2047 y M 0, el valor es NaN ("Not a number").

Si Exp D 2047 y M D 0, el valor es -Inf si S D 1; Inf, si S D 0.

Si Exp D 1 y M D 0, el valor es el ms pequeo representable: 2

Si Exp D 0 y M 0, valores desnormalizados, el valor es


. 1/S  2 1022  0;M ant i sa.

Si Exp D 0, M D 0 y S D 1, el valor es -0.

Si Exp D 0, M D 0 y S D 0, el valor es 0.

1022

29/118

En el caso de 1 D C1; 0000000000000000000000000000000000000000000000000000


codificacin interna es

2

, su

0 01111111111 0000000000000000000000000000000000000000000000000000
una vez se aade 1023 al exponente. Entonces 0011111111112 D 3FF16.


El siguiente nmero mayor que 1 con este formato estndar es


C1; 0000000000000000000000000000000000000000000000000001  20;
o 1 C 2 52. Interno 0 01111001011 0000000000000000000000000000000000000000000000000000
El exponente es 0011110010112 D 3CB16 D 97110. Es decir, 2971 1023 D 2 52.
Definicin Se denomina epsilon de una mquina, maq
K , a la distancia entre 1 y el

nmero ms pequeo mayor que uno del sistema de numeracin de esa mquina. Si es el
52
IEEE estndar de precisin doble, maq
:
K D2

>> format hex; 1


ans =
3ff0000000000000
>> 9.4
ans =
4022cccccccccccd
>> 1/0, 0/0
ans =
7ff0000000000000
ans =
fff8000000000000
>> eps
ans =
3cb0000000000000

Volviendo a lo anterior,

El nmero 9;4 D 1001;0110 se guarda as:

30/118

0 10000000010 0010 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101 D 4022C C C C C C C C C C CD.

La mantisa se ha troceado en grupos de 4 bits para hacerlos corresponder con el


formato hexadecimal. El exponente es 1023 C 3 D 1026 D .10000000010/2.
Aadiendo el bit de signo, los doce primeros bits, en hexadecimal, resultan
40216.
Al ajustar el nmero, se pierde algo, no?

31/118

Los otros resultados corroboran la representacin interna de 1=0 D 1 y


0=0 D NaN.

Juguemos un poco ms con estos conceptos mediante Matlab


>> 1+2^-52
ans =
1.000000000000000
>> 1+2^-53==1
ans =
1
>> 1+2^-52==1
ans =
0
>> 2^-53
ans =
1.110223024625157e-016
>> ans*2
ans =
2.220446049250313e-016
>> eps
ans =
2.220446049250313e-016

32/118

Para calcular el epsilon de una mquina se puede utilizar epsilon.m, un script


de Matlab, como el que sigue.
function eps=epsilon
eps=1;
while 1+eps~=1
eps=eps/2;
end
eps=eps*2;
end

Los resultados son:

>> eps1=epsilon
eps1 =
2.220446049250313e-016
>> eps
% El de Matlab
eps =
2.220446049250313e-016

33/118

Precisin sencilla palabra de 32 bits y normalizado


31 30
S

23 22

Exponente

Valores tpicos

Mantisa

Exp

Valor

11111111

00000100000000000000000

NaN

11111111

00100010001001010101010

NaN

11111111

00000000000000000000000

10000001

10100000000000000000000

10000000

00000000000000000000000

00000001

00000000000000000000000

00000000

10000000000000000000000

00000000

00000000000000000000001

00000000

00000000000000000000000

1
C1  2129 127  1;101 D 6; 5
C1  2128 127  1;0 D 2
C1  21 127  1;0 D 2 126
C1  2 126  0;1 D 2 127
C1  2 126  2 23 D 2 149

00000000

00000000000000000000000

10000001

10100000000000000000000

11111111

00000000000000000000000

-0

1  2129
1

127

 1;101 D

6; 5

IEEE precisin simple VS precisin doble


Precisin simple
dgitos significativos (p)
24 bits
longitud del exponente
8 bits
bits de informacin
32
emax
127
emi n
-126
valor ms grande normalizado 2127  1038
valor ms pequeo normalizado 2 126  10 38
maqui
21 24  10 7
K
na

Precisin doble
53 bits
11 bits
64
1023
-1022
21023  10308
2 1022  10 308
21 53  10 16

Precisin simple Precisin doble


Exp D 0
0

M D0
M 0 desnormalizados

0 < Exp < 255 0 < Exp < 2047 Exp D 255.s/ 2047.d/
potencias de 2
1

nmeros ordinarios

NaN

34/118

35/118

Los nmeros positivos ms grande y ms pequeo que Matlab puede


representar en precisin doble son:
fmi n
fmax

D2

D .1

fmi ndesnor: D 2

1022

D 2;225073858507201  10
53

1022 52

308

/  21024 D 1;7976931348623157  10308


D 4;940656458412465  10

324

Variable Precision Arithmetic


>> digits(35)
>> vpa((1-2^(-53))*2^1024)
ans =
1.7976931348623157081452742373170436*10^308
>> (1-2^(-53))*2^1024
ans =
Inf
>> 2^(-1022)
ans =
2.225073858507201e-308

36/118

Comprobamos utilizando realmax y realmin de Matlab.


>> realmin
ans =
2.225073858507201e-308
>> realmax
ans =
1.797693134862316e+308
>> realmax*2
ans =
Inf
>> realmin/2
ans =
1.112536929253601e-308
>> realmin/(2^52)
ans =
4.940656458412465e-324
>> ans/2
ans =
0
>> vpa(2^(-1028))
ans =
3.4766779039175021610784886208318814*10^(-310)

37/118

Codificacin o representacin de un nmero




Para ver cmo codifica el estndar IEEE un nmero, volvamos a


9;4 D .1001;0110/2.

En principio, en precisin doble, este nmero se ve as


C1; 0010110011001100110011001100110011001100110011001100 110 : : :  23;
con los primeros 52 bits de la mantisa encuadrados o encajados en el
compartimento reservado por la mquina para l.

38/118

Ahora bien, cmo se encaja adecuadamente una ristra infinita de decimales


binarios en el sistema de numeracin de IEEE?


Truncndola o cortndola? Es decir, abandonando o ignorando los que no


caben en esa caja.

Redondendola? En otras palabras, haciendo algo ms inteligente para que


se pierda la menor cantidad de informacin de ese nmero.

El modelo general de cmo un ordenador representa en coma flotante


(formato decimal) un nmero lo definen
el conjunto G D fx 2 R W m  jxj  M g [ f0g y la aplicacin f l./ W G ! F
tales que
f l.x/ D

el elemento c 2 F ms prximo a x , si se redondea;


el c 2 F ms cercano a x que satisfaga jcj  jxj, si se trunca.

39/118

El redondeo y truncamiento en una mquina ficticia que trabajase con D 10 y


con p D k sera:


Truncando, el nmero

x D C0;d1d2d3 : : : dk dkC1dkC2 : : :  10n


perdera los dgitos dkC1; : : : quedando C0;d1d2d3 : : : dk  10n.


Redondeando, se aadira 5  10n .kC1/ al nmero en cuestin y luego se


truncara.
Ejemplo Si p D 3 en una mquina, el nmero 0;3246 se representara con
0;324 truncando y con 0;325 redondeando.

El error de redondeo interno de una mquina es debido a ese truncamiento o


redondeo.

40/118

La tcnica o regla de redondeo al ms cercano de IEEE consiste en sumar


un 1 al bit nmero 52 si el 53 es 1, o no hacer nada redondear por lo bajo en
el 52 si el 53 es 0.

Excepcin: Si los bits que siguen al 52 son 10000 : : : (a medio camino entre el
valor superior e inferior) se redondea de tal manera que el 52 sea siempre 0.

Con este criterio el nmero 9;4 quedara as:


C1; 0010110011001100110011001100110011001100110011001101  23:
Se ha desechado la ristra 0;1100  2 52  23 D 0;0110  2
y se ha sumado 2 52  23 D 2 49 al redondear.

51

 23 D 0;4  2

48

41/118

En resumen

f l.9;4/ D 9;4 C 2
D 9;4 C 1

49

0;4  2
 49
0;8 2

D 9;4 C 0;2  2

49

48

Cometindose as un error de redondeo al guardarlo de 0;2  2


guardarlo! codificarlo, o almacenarlo, dentro de la mquina.

49

. Slo por

Definicin El error absoluto de la representacin x  del nmero x en un ordenador


es jx

x  j.

El error absoluto de la representacin de un nmero x en un ordenador en su


sistema de coma, o punto, flotante es jx f l.x/j.

42/118

Definicin El error relativo de la representacin x  del nmero x en un ordenador


es

jx

El error relativo de redondeo del sistema de numeracin IEEE, f l.x/, est


acotado de la siguiente manera
jx

x j
.
jxj

x j 1
 maq
K :
jxj
2

El redondeo afecta a la representacin de todos los resultados de las operaciones


pues f l.x/ D x.1 C /, jj < 21 maq
K .

43/118

ndice


Introduccin y Conceptos bsicos

Representacin de un nmero en formato estndar IEEE

Aritmtica en un ordenador

Evaluacin de errores

Clculo numrico con matrices

Producto de una matriz por un vector

Producto de dos matrices

Normas


Vectoriales

Matriciales

44/118

Aritmtica en un ordenador


Proceso para sumar los nmeros 3 y 14:


310 = 1;100  21 D 1;100  21024
1410 = 1;110  23 D 1;110  21026
Alineamiento
310 = 0;011  21026
1410 = 1;110  21026
Suma

1023
1023

1023
1023

0;011
1;110
10;001 ) 10;001  21026 1023
D 1;0001  21027 1023 D 100012 D 1710

45/118

OJO! con los casos extremos.


>> x=2^30
x =
1.073741824000000e+009
>> 2^-22
ans =
2.384185791015625e-07
>> x+2^-22==x
ans =
0
>> x+2^-23==x
ans =
1
>> 2^-23
ans =
1.192092895507813e-07

46/118

El sistema de numeracin, F , de un ordenador tiene definidas entre sus


elementos las operaciones aritmticas habituales. Dada la finitud de F son
operaciones aritmticas de precisin finita.

Si 2 designa cualquiera de las cuatro operaciones aritmticas elementales C,


 y , y ja2bj 2 G antes definido, el resultado de cualquier cmputo o
clculo en ordenador con ellas dar como resultado f l.a2b/.

Cualquier operacin aritmtica en ordenador cumple que


f l.a2b/ D .a2b/.1 C /
donde jj < 21 maq
K .

47/118

Si las operaciones aritmticas elementales en una mquina se representan por


, , y , el resultado de aplicarlas ser siempre:
a b D f l.f l.a/ C f l.b//I
a b D f l.f l.a/ f l.b//I
a b D f l.f l.a/  f l.b// y
a b D f l.f l.a/  f l.b//:

El error relativo de cualquiera de estas operaciones es


ja2b

f l.a2b/j 1
 maq
K :
ja2bj
2

48/118

Ejemplo En una mquina D 10, p D 3 y la representacin se hace


mediante truncamiento.


La operacin aritmtica .10

C 1/

f lf l.10

1 dar como resultado


C 1/

1 D 0:

El error relativo es 1 (el 100 %). Por el contrario,


f l10

C f l.1

1/ D 10 3;

resultado exacto.

La aritmtica de coma flotante, por consiguiente, no es asociativa:


.1 C =2/ C =2 D 1, pero 1 C .=2 C =2/ > 1.
Ojo! Tampoco es distributiva: .a C b/  c a  c C b  c.

49/118

Con Matlab (comentarios bienvenidos!)




f l.x/ D 1 si 1 < x  1 C M .

f l.x/ D 1 C 2m si 1 C m < x < 1 C 2m.


>> e = 1 - 3*(4/3 - 1)
e =
2.2204e-016

>> a = 0.0;
for i = 1:10
a = a + 0.1;
end
a == 1
ans =
0

50/118

>> b = 1e-16 + 1 - 1e-16;


c = 1e-16 - 1e-16 + 1;
b == c
ans =
0

>> (2^53 + 1) - 2^53


ans =
0
>> 1+2^53-2^53
ans =
0
>> 1+(2^53-2^53)
ans =
1

>> sin(pi)
ans =
1.2246e-016
>>

51/118

Recordemos el nmero 9; 4:

>> format long


>> x=9.4
x =
9.400000000000000
>> y=x-9
y =
0.400000000000000
>> z=y-0.4
z =
3.330669073875470e-016
>> 3*2^-53
ans =
3.330669073875470e-016

El error en la codificacin de 3;4 era 0;2  2 49. Cuando se le resta 9 el error


sigue siendo el mismo pues la representacin de este nmero es exacta. El
nmero 0;4 tiene un error de representacin de f l.0;4/ D 0;4 C 0;1  2 52, lo
que hace que el error final sea

49
52
52 4
0;2  2
0;1  2
D 0;1  2
2
1 D 3  2 53:

52/118

1
3

5
7

Ejemplo Supongamos que se quiere operar con los nmeros x D


en una mquina con D 10 y p D 5 que usa truncamiento.

La representacin en esa mquina de esos nmeros ser f l.x/ D 0,33333  100


y f l.y/ D 0,71428  100.

Los resultados de diversas operaciones y sus errores son:

eyD

Operacin Resultado Valor Real Error Absoluto Error Relativo


xy
y x
xy
yx

0,10476  101
0,38095  100
0,23809  100
0,21428  101

22=21
8=21
5=21
15=7

0,190  10
0,238  10
0,524  10
0,571  10

4
5
5
4

0,182  10
0,625  10
0,220  10
0,267  10

4
5
4
4

53/118

Como el error mximo relativo es 0;267  10 4, la aritmtica de ese ordenador


para estos clculos produce errores satisfactorios.

Usemos u D 0;714251, v D 98765;9 y w D 0;111111  10 4.




La representacin en la mquina de estos nmeros ser


f l.u/ D 0,71425  100, f l.v/ D 0,98765  105 y
f l.w/ D 0,11111  10 4.

Como muestra la tabla, y u produce un error absoluto pequeo pero un


error relativo bastante grande:

Operacin Resultado Valor Real Error Absoluto Error Relativo


y u
0,30000  10 4 0,34714  10 4 0,471  10 5
0,136
.y u/ w 0,27000  101 0,31243  101
0,424
0,136
.y u/ v 0,29629  101 0,34285  101
0,465
0,136
uv
0,98765  105 0,98766  105
0,161  101
0,163  10 4

54/118

La divisin posterior por w y multiplicacin por v amplifica el error absoluto


sin modificar el error relativo.

Por el contrario, la adicin del nmero grande v y el pequeo u produce un


error absoluto grande pero no un gran error relativo.

55/118

Evaluacin de diversos errores




Un algoritmo perfectamente diseado se puede utilizar en problemas mal


condicionados, en los cuales los errores tienden a crecer de una forma
incontrolada segn se llevan a cabo operaciones aritmticas.

La condicin de un problema es directamente proporcional a la sensibilidad de


los resultados a pequeas variaciones en los datos. Si la condicin es muy
grande, deben esperarse dificultades aunque los datos iniciales sean exactos,
pues los errores numricos tendern a amplificarse.

Tambin se pueden dar algoritmos inestables, que no tienen en cuenta esas


consideraciones a escala de operaciones individuales, u otras como vemos a
continuacin.

56/118

Error de cancelacin o prdida de relevancia


que debera dar 1.

Analicemos esta operacin,

El error de cancelacin, o de prdida de relevancia o significancia, se refiere a la


prdida de dgitos que conlleva la representacin final de ciertas operaciones
resta esencialmente entre nmeros de magnitud similar, o muy grandes y
muy pequeos, que dan un resultado con un nmero de dgitos representable
muy pequeo.

>> x=1.e-15; ((1+x)-1)/x


ans =
1.110223024625157e+000

57/118

Como sabemos, para llevar a cabo sumas y multiplicaciones, los nmeros son
primeramente convertidos a un formato de exponente comn. Si el
desplazamiento que ello conlleva en uno de los dos supera los dgitos
significativos que la mquina permite, se puede perder toda la informacin de
ese nmero, o introducir nueva errnea en el resultado final.
>> format long
>> a=0.483525656234498
a =
0.483525656234498
>> b=0.483525534699123
b =
0.483525534699123
>> a-b
ans =
1.215353749861592e-007

58/118

En el ejemplo de Matlab anterior, veamos qu pasa.


>> format long
>> x=1.e-15;
>> x
x =
1.000000000000000e-015
>> 1+x
ans =
1.000000000000001e+000
>> (1+x)-1
ans =
1.110223024625157e-015
>> 1+x
ans =
1.000000000000001e+000
>> ans-1
ans =
1.110223024625157e-015
>> ans/x
ans =
1.110223024625157e+000

59/118

Ejemplo Considrese la funcin f .x/ D .1 cos x/=x 2.


Si x D 1;2  10 5, el valor de cos x, redondeado a diez4 dgitos significativos, es
c D 0;9999999999
por lo que
1
La representacin interna de 1

c D 0;0000000001:

c slo posee un dgito real.

>> vpa(1-cos(0.000012),10)
ans =
.1e-9
>> vpa(1-cos(0.000012),30)
ans =
.71999999999136000000e-10

El valor con treinta dgitos es 0,999999999928000000000863999999.

60/118

El valor de la funcin es entonces


1

c
x2

10 10
D
1;44  10

10

D 0;6944 : : :

el cual es errneo pues 0  f .x/ < 1=2 para todo x 0.


>> vpa(1-cos(0.000012),10)/vpa(0.000012^2,10)
ans =
.69444444444444444444444444444444
>> vpa(1-cos(0.000012),50)/vpa(0.000012*0.000012,50)
ans =
.49999999999400000000002880000000
>>

61/118

Para evitar el error de cancelacin de este caso, como cos x D 1


es fcil ver que


1 sen.x=2/ 2
f .x/ D
:
2
x=2


2 sen2.x=2/,

Calculando f .x/ mediante esta frmula y aproximando sen.x=2/ con 10


dgitos significativos, el resultado es f .x/ D 0;5, el cual se aproxima al
valor exacto en 10 dgitos.
>> vpa(sin(0.000012/2)^2,10)/vpa((0.000012/2)^2,10)/2
ans =
.50000000000000000000000000000000

En general, no es buena prctica dar por buenos nmeros de magnitud muy


pequea resultado de una diferencia de nmeros mucho ms grandes.

Effect of rounding error on algorithms


62/118

Example:
two en
expressions
Representacin
el entorno for
de 0the
desame function:


sin2 x 2
1 x/
cos2 x
1 sen.x=2/
.1 cos
y , g.x/ g(x)
D =
:
f .x/ fD(x) = 2
2
2
x
x
x
2
x=2
1.001

f
g

0.999
0.01

0.01

results of cos x and sin x were rounded to 10 decimal digits; other


calculations are exact

63/118

Casustica de errores en algoritmos


Truncamiento de series


Un ejemplo clsico de algoritmo numrico es el del clculo de e x . La expresin


del desarrollo en serie de e x es:
x2 x3
e D1CxC
C
C 
2
3
x

Si se desea calcular e 5,5 mediante esta expresin en una mquina con D 10


y p D 5, los resultados que se obtienen son los siguientes:
e 5,5 D C1,0000 5,5000 C 15,125 27,730 C 38,129
41,942 C 38,446 30,208 C 20,768 12,692
C 6,9803 3,4902 C 1,5997   
D C0,0026363:

64/118

La suma de trminos se trunca despus de 25, pues los siguientes no aportan


dgitos significativos a la precisin del resultado.

El valor real de e 5,5 es 0,00408677. Como se puede comprobar, la diferencia


con 0,0026363 es muy importante: absoluta y relativamente.

El problema con esta forma de calcular e 5,5 surge de la suma y resta de


valores relativamente prximos en magnitud, con la consiguiente prdida de
dgitos significativos por cancelacin.
Una alternativa mejor es obtener el desarrollo en serie de e 5;5 y luego calcular el
recproco. La respuesta sera:
e

5;5

1
e 5;5

1
D 0;0040865:
1 C 5;5 C 15;125 C   

65/118

A continuacin se lista un programa en Matlab para el clculo de e x por


desarrollo en serie. Su objetivo es analizar los errores que se cometen y cundo
ocurren.
function ssum = expSeriesPlot(x,tol)
% Suma de n trminos de la serie exp**x
% Datos: x
= exponente del nmero e
%
tol = (opcional) tolerancia de la suma. Por defecto: tol = 5e-9
%
La suma termina cuando T_k/S_k < tol, donde T_k es el
%
trmino k-esimo y S_k la suma acumulada (con ese trmino).
if nargin < 2, tol=5e-9; end
term = 1; ssum = term; Eabs(1)=abs(ssum-exp(x)); k=1;
% Inicializar
fprintf(Aproximacin en serie de exp(%f)\n\n,x);
% Cabecera salida
fprintf( k
trmino k
suma
Error abs. serie\n);
fprintf(%3d %11.3e %11.3e %16.3e\n,1,x,ssum,Eabs(1));
while abs(term/ssum)>tol
% Bucle principal
k=k+1;
term = term*x/(k-1);
% Siguiente trmino de la serie
ssum = ssum + term;
Eabs(k) = abs(ssum-exp(x));
fprintf(%3d %11.3e %11.3e %16.3e\n,k,term,ssum,Eabs(k));
end
semilogy(1:k,Eabs,-); xlabel(Nmero de trminos); ylabel(Error absoluto);
fprintf(\nError de truncamiento despus de %d trminos: %11.3e\n\n,k,Eabs(k));
end

66/118

Los resultados numricos del clculo de e

10

se listan a continuacin.

>> expSeriesPlot(-10,5e-12)
Aproximacin en serie de exp(-10.000000)
k
1
2
3
.
.
47
48
49
50
51
52
53

trmino k
-1.000e+001
-1.000e+001
5.000e+001

suma
1.000e+000
-9.000e+000
4.100e+001

1.817e-012
-3.867e-013
8.055e-014
-1.644e-014
3.288e-015
-6.447e-016
1.240e-016

4.540e-005
4.540e-005
4.540e-005
4.540e-005
4.540e-005
4.540e-005
4.540e-005

Error abs. serie


1.000e+000
9.000e+000
4.100e+001

1.803e-013
2.063e-013
1.258e-013
1.422e-013
1.389e-013
1.396e-013
1.394e-013

Error de truncamiento despus de 53 trminos:


ans =
4.5400e-005

1.394e-013

El grfico del error absoluto respecto del nmero de trminos considerado en la


serie es el que sigue.

67/118

10

10

10

10
Error absoluto

10

10

10

10

10

12

10

14

10

10

20

30
Numero de terminos

40

50

60

Para k < 48 el error que se comete al evaluar la serie con la frmula lo


determina el truncamiento de la misma. A partir de k > 48 es el error de
redondeo interno el que evita que se pueda mejorar el resultado.

68/118

Este ejemplo pone de manifiesto la interdependencia entre los errores de


redondeo internos de la mquina y los errores debidos al truncamiento de series
en los algoritmos.

69/118

Solucin de una ecuacin cuadrtica




Desde el punto de vista terico, resolver la ecuacin cuadrtica


ax 2 C bx C c D 0 es un problema trivial. Desde el punto de vista numrico con
precisin finita, no tanto.

Como es sabido, si a, b y c son nmeros reales y a 0, las dos soluciones de la


ecuacin, x1 y x2, estn dadas por las expresiones
p
b C b 2 4ac
(1)
x1 D
2a
y
p
b
b 2 4ac
x2 D
:
(2)
2a

70/118

Veamos lo que ocurre al aplicar directamente estas frmulas en una mquina en


la que D 10, p D 8, L D 50 y U D 50.

Si a D 1, b D

105 y c D 1, las races autnticas de la ecuacin son


x1 D 99999;999990

y
x2 D 0;000010000000001:


Si se usan las expresiones (1) y (2) en la mquina apuntada, el resultado es


x1 D 100000;00
y
x2 D 0;0:

71/118

Al calcular x1 y x2 ha habido un error de cancelacin catastrfico, pues


f l.. 105/2

4/ D 1010:

La forma de evitarlo consiste en usar el signo de b para determinar cul de las


expresiones (1) o (2) producira menor error de cancelacin, y usarla para
calcular la raz de mayor valor absoluto, a partir de la frmula


p
2
4ac
b C signo.b/ b
:
x1 D
2a

Como ax 2 C bx C c D a.x x1/.x x2/, lo que implica que ax1x2 D c, la


otra raz se podra calcular usando la expresin
x2 D

c
:
ax1

72/118

Aplicando este criterio en el ejemplo apuntado se obtendran las races


x1 D 100000;00 y x2 D 0;00001: ambas buenas soluciones.

Mdulos interactivos en esta direccin.

73/118

Aproximacin de la derivada


De la definicin de derivada de una funcin f W R ! R en un punto x


f .x C h/
h!0
h

f 0.x/ D lKm

f .x/

se puede deducir la aproximacin por diferencias finitas


f 0.x/ 

f .x C h/
h

f .x/

Por el desarrollo en serie Taylor,5

74/118

f .x C h/ D f .x/ C f 0.x/h C f 00. /h2=2;


para algn  2 x; x C h. Es decir,

f 0.x/ D .f .x C h/

f .x// = h C f 00. /h=2:

Esta expresin nos dice que el error de la aproximacin por diferencias finitas,
resultado del truncamiento de esa frmula a partir del tercer trmino, estar
acotado pues por M h=2, donde M acota jf 00.t /j en un t cerca de x.

Suponiendo por otro lado que el error interno del clculo de la funcin es , el
error de redondeo interno de evaluar la derivada por la frmula de diferencias
finitas estar acotado por 2= h.
5

Formulado en 1715 por Brook Taylor, Reino Unido, 1685-1731.

75/118

El error total del clculo en la derivada est acotado en consecuencia por la


suma de los dos posibles componentes de error,
M h 2
C :
2
h
El primer trmino decrece, y el segundo se incrementa, al decrecer h

Haciendo la derivada de esta suma con respecto a h igual a cero, se obtiene que
la misma se minimiza cuando
p
h  2 =M :

Para la funcin f .x/ D sen.x/, en x D 1, tomando M D 1, el error total de la


aproximacin por diferencias finitas se representa en la figura. Su mnimo es
p
 10 8  .

76/118

10

10

10

10

total error
6

10

error

10

10

10

12

10

14

truncation error

10

rounding error

16

10

18

10

16

10

14

10

12

10

10

10

10

step size

10

10

10

10

77/118

El error de truncamiento en la aproximacin por diferencias finitas puede


reducirse usando la frmula centrada:
f 0.x/ 

f .x C h/

f .x
2h

h/

En trminos generales, los errores de redondeo tienden a prevalecer en los


clculos algebraicos de los algoritmos que llegan a una solucin en un nmero
de pasos finito, mientras que los de truncamiento sobresalen en los que se
utilizan derivadas, integrales, y no linealidades en general, que suele ser el caso
de los algoritmos de procesos infinitos o cuasi infinitos.

Otra suma de infinitos sumandos




78/118

Como es sabido
1
X
kD1

2
D 1;64493406684822640606569166266 : : :
D
6

Supongamos que no se conoce el resultado o que se desea calcularlo con un


ordenador.

Parece lgico codificar un bucle en k mediante el cual se sumen los trminos de


la serie hasta que el resultado no se vea alterado por la incorporacin de nuevos
dgitos.

En un ordenador personal, utilizando precisin sencilla, el valor que se obtiene a


partir de k D 4096 es 1;64472532.

79/118

El truncamiento que llevara a cabo este algoritmo hara que el resultado slo se
aproximase al exacto en cuatro dgitos, cuando lo esperable, de acuerdo con el
sistema de numeracin de la mquina, seran 6 dgitos mnimo. Qu pasa?

La respuesta est en la forma en que se efecta la suma: primero los nmeros


mayores y despus los ms pequeos.

En efecto, para k D 4096, se lleva a cabo la siguiente operacin: s C 4096 2.


El trmino 4096 2 D 2 24 y s  1;6.

Como ya hemos visto, la precisin sencilla utiliza una mantisa de 24 bits por lo
que 4096 2, frente a s  1;6, se sale de la ventana de valores que admite la
palabra de ordenador que ha de representar el resultado. Igual ocurrira con los
trminos sucesivos.

Una forma de remediar esto consiste en acumular primero la suma de los


trminos ms pequeos y luego la de los grandes, lo que requiere anticipar
cuntos trminos se necesitan.
function Suma_de_serie_1(j)
% Se simula suma 1/k^2 con infinitos sumandos
suma=0; i=j;
while i~=0
suma=suma+1/i/i;
i=i-1;
end
fprintf( Suma = %21.17f\n,suma);
end

Si se utilizan 1010, el valor que se obtiene con este cdigo de Matlab es


>> tic, Suma_de_serie_1(10000000000), toc
Suma =
1.64493406674822640
Elapsed time is 73.001613 seconds.
>>

es decir, el exacto con 10 dgitos significativos.

80/118

81/118

Analicemos esta variante del problema.


function suma = Suma_de_serie_3(i,j)
%
suma=i*0;
for i1=i:j, suma=suma+1/i1/i1; end
end
>> i=vpa(1,30)
i =
1.0
>> tic, Suma_de_serie_3(i,200000), toc
ans =
1.6449290668607264156390818334169
Elapsed time is 282.695168 seconds.
>>

82/118

Polinomio de Wilkinson

Toma el nombre de James Hardy Wilkinson, del National Physical Laboratory,


Reino Unido, 1919-1986. Tiene esta forma
w.x/ D .x

1/.x

2/    .x

20/:

Si se expande
w.x/Dx 20 210x 19 C 20615x 18 1256850x 17 C 53327946x 16 1672280820x 15 C
C40171771630x 14 756111184500x 13 C 11310276995381x 12
135585182899530x 11 C 1307535010540395x 10 10142299865511450x 9 C
C63030812099294896x 8 311333643161390640x 7 C
C1206647803780373360x 6 3599979517947607200x 5 C
C8037811822645051776x 4 12870931245150988800x 3 C
C13803759753640704000x 2 8752948036761600000xC
C2432902008176640000:
>> n = 20;
>> syms x
>> P20 = prod(x-(1:n))
P20 =
(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x - 8)*(x - 9)*(x - 10)*(x - 11)*
(x - 12)*(x - 13)*(x - 14)*(x - 15)*(x - 16)*(x - 17)*(x - 18)*(x - 19)*(x - 20)
>> P = expand(P20)
P =
x^20 - 210*x^19 + 20615*x^18 - 1256850*x^17 + 53327946*x^16 - 1672280820*x^15 +
40171771630*x^14 - 756111184500*x^13 + 11310276995381*x^12 - 135585182899530*x^11 +
1307535010540395*x^10 - 10142299865511450*x^9 + 63030812099294896*x^8 311333643161390640*x^7 + 1206647803780373360*x^6 - 3599979517947607200*x^5 +
8037811822645051776*x^4 - 12870931245150988800*x^3 + 13803759753640704000*x^2 8752948036761600000*x + 2432902008176640000

83/118

84/118

Veamos qu pasa.
function y=wilkpoly(x)
% Evalua en x el polinomio de Wilkinson
y=x^(20)-210*x^(19)+20615*x^(18)-1256850*x^(17)...
+53327946*x^(16)-1672280820*x^(15)+40171771630*x^(14)...
-756111184500*x^(13)+11310276995381*x^(12)...
-135585182899530*x^(11)+1307535010540395*x^(10);
y=y-10142299865511450*x^9+63030812099294896*x^8;
y=y-311333643161390640*x^7+1206647803780373360*x^6;
y=y-3599979517947607200*x^5+8037811822645051776*x^4;
y=y-12870931245150988800*x^3+ 13803759753640704000*x^2;
y=y-8752948036761600000*x+2432902008176640000;
end

>> fzero(@wilkpoly,16)
ans =
16.014680305804578
%
%
>> Z = sort(solve(P))
Z =
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Sorprendente?

85/118

ndice


Introduccin y Conceptos bsicos

Representacin de un nmero en formato estndar IEEE

Aritmtica en un ordenador

Evaluacin de errores

Clculo numrico con matrices

Producto de una matriz por un vector

Producto de dos matrices

Normas


Vectoriales

Matriciales

86/118

Clculo numrico con matrices




Las operaciones de clculo numrico con vectores y matrices:




productos de vectores por matrices y de dos matrices,

el clculo de normas de vectores y matrices,

la evaluacin del condicionamiento de sistemas de ecuaciones lineales,

son fundamentales en los mtodos y algoritmos que estudiamos y analizamos en


este curso.
Conocer cmo se llevan a cabo en un ordenador y optimizarlas es muy til

87/118

Producto de una matriz por un vector




Comencemos por y D Ax, donde A 2 R mn y x 2 R n.


Cada coeficiente del vector y se obtiene mediate esta frmula:
n
i

yi D

aij  xj :
j D1

Esta operacin se puede interpretar como:




Combinar linealmente los vectores columna de A;

Una serie de productos interiores de los vectores fila de A por x.

88/118

En forma de algoritmo, esta operacin se estructurara as:


 Producto y D Ax
Hacer y D 0
for i D 1 to m
for j D 1 to n
y.i / D y.i / C a.i; j /x.j /
end
end

Para ser factible, las dimensiones deben cumplir que


m  n 
n  1 D
m  1 :

89/118

En la zona de trabajo o pizarra de Matlab se hara as:


>> y=A*x

Programando el algoritmo anterior con las instrucciones que permite Matlab


se obtendra algo as:
[m n]=size(A);
y=zeros(m,1);
for i=1:m
for j=1:n
y(i)=y(i)+A(i,j)*x(j);
end
end

En este script (o guin) a seguir, el bucle con el ndice j materializa el


producto interior de la fila i de A por el vector x.

90/118

Tambin se podra hacer algo un poco ms sofisticado como lo que sigue.


function y = MatVecF(A,x)
[m n] = size(A);
y = zeros(m,1);
for i=1:m
y(i) = A(i,:)*x;
end
end

ste sera el algoritmo programado en su versin por filas: una sucesin de


productos interiores: los vectores fila de A, A(i,:), por el vector x.

91/118

El algoritmo por columnas materializa que la operacin Ax es equivalente a


efectuar una combinacin lineal de los vectores columna de A. Por ejemplo,
2 3
3
2
12  
17C28
7
y D Ax D 43 45
D 43  7 C 4  85
8
56
57C68
2 3
2 3 2 3
1
2
23
D 7 435 C 8 445 D 4535 :
5
6
83

Codificado para Matlab:

function y = MatVecC(A,x)
[m n] = size(A);
y = zeros(m,1);
for j=1:n
y = y + A(:,j)*x(j);
end
end

92/118

La operacin Ax conlleva realizar O.mn/ multiplicaciones e igual nmero de


sumas/restas.

El que consuma ms o menos tiempo de ordenador depender de cmo se realiza


la operacin y la forma de almacenar en la memoria del ordenador la matriz A.


Si la matriz se guarda por columnas (lo habitual por defecto), la operacin


en su forma por columnas requerir menos tiempo que la versin por filas,
pues los coeficientes a los que se accede estn contiguos en la memoria y se
pueden conseguir de una sola vez: una ristra de ellos: row, o rengln.

93/118

Para realizar la operacin y T D x T A, en vez de y D Ax, los programas


anteriores se convertiran en los que siguen.

function y=VecMatF(x,A)
[m n] = size(A);
y = zeros(1,n);
for j=1:m
y = y+x(j)*A(j,:);
end
end

function y=VecMatC(x,A)
[m n] = size(A);
y = zeros(1,n);
for j=1:n
y(j) = y(j)+x*A(:,j);
end
end

Producto de dos matrices




94/118

Si A 2 R mr y B 2 R rn son dos matrices, su producto, C 2 R mn D AB,


se calcula mediante esta frmula:
r
i

cij D

aik  bkj ;
kD1

para todo 1  i  m y 1  j  n. El algoritmo es el que sigue.


 Producto C D AB
Hacer C D 0
for j D 1 to n
for i D 1 to m
for k D 1 to r
c.i; j / D c.i; j / C a.i; k/  b.k; j /
end
end
end

a (i) is a row vector, b(j) is a column vector.




95/118

Cada coeficiente cij , es el resultado de un producto interior:


i

i
j

j
cij

r
a'(i )

function C = MatMatInt(A,B)
[m r] = size(A);
[r n] = size(B);
C = zeros(m,n);
for j=1:n
for i=1:m
C(i,j) = A(i,:)*B(:,j);
end
end
end

b( j )

cij

The inner product view of the matrixmatrix product is easier to


En
useMatlab:
for hand calculations.

AB = C


c(j) = Ab(j)

96/118

c(j) and
column
Ahora
bien,bcada
columna
j devectors.
la matriz C es el resultado de multiplicar la
(j) are
matriz A por el vector columna j -simo de B.
i
j

=
r
A

function C = MatMatVec(A,B)
[m r] = size(A);
[r n] = size(B);
C = zeros(m,n);
for j=1:n
C(:,j) = A*B(:,j);
end
end

b( j )

c( j )

The column view of the matrixmatrix product AB = C is


helpful because it shows the relationship between the columns of
A and the columns of C .

En Matlab:

Por ltimo, la matriz C tambin se puede ver como el resultado de sumar r


matrices de rango uno, cada una resultado del producto exterior de dos vectores.

97/118

Recordemos que el producto exterior de u y v es

Segn esto,

3
2
3
u1
u1 v1 u1 v2    u1 vn
6 u2 7
6 u2 v1 u2 v2    u2 vn 7
7
6 :
uvT D 6
v
v



v

D
:
:: : :
:: 7
n
4 ::: 5 1 2
4 ::
:
:
: 5
um
um v1 um v2    um vn
r
i

C D AB D

A.W; k/B.k; W/:


kD1

En Matlab:

function C = MatMatExte(A,B)
[m r] = size(A);
[r n] = size(B);
C = zeros(m,n);
for k=1:r
C = C + A(:,k)*B(k,:);
end
end

98/118

Todos estos mtodos realizan O.mnr/ multiplicaciones e igual nmero de


sumas/restas.

El procedimiento ms adecuado para programarlo en ordenador depender de


cmo se almacenan en l las matrices.

El ms eficaz suele ser el que denominbamos MatMatVec. Luego lo veremos


con un ejemplo.

Frmula de Strassen para multiplicar matrices

Desarrollada en 1969 por Volker Strassen, Alemania, 1936-. Se usa para


multiplicar dos matrices A y B cuadradas de dimensin 2p .

Se basa en una reordenacin inteligente de los clculos convencionales.

Si A y B son bloques 2  2, el producto es



 


C 11 C 12
A 11 A 12 B 11 B 12
D
C 21 C 22
A 21 A 22 B 21 B 22


A 11B 11 C A 12B 21 A 11B 12 C A 12B 22
D
:
A 21B 11 C A 22B 21 A 21B 12 C A 22B 22

Esta operacin necesita 8 multiplicaciones y 4 sumas en su forma tradicional.

99/118

100/118

Strassen reagrupa las operaciones de tal manera que slo se necesiten 7


multiplicaciones y 18 sumas. Haciendo
P1
P2
P3
P4
P5
P6
P7

D .A 11 C A 22/.B 11 C B 22/
D .A 21 C A 22/B 11
D A 11.B 12 B 22/
D A 22.B 21 B 11/
D .A 11 C A 12/B 22
D .A 21 A 11/.B 11 C B 12/
D .A 12 A 22/.B 21 C B 22/

C 11 D P 1 C P 4
C 12 D P 3 C P 5
C 21 D P 2 C P 4
C 22 D P 1 C P 3

P5 C P7
P 2 C P 6:

y luego

101/118

Generalizando, si las 7 multiplicaciones son de matrices m  m, como las


submatrices son m=2  m=2, se requieren


7 3
7 2
9 2
m multiplicaciones C
m .m 2/ C m sumas:
8
8
2


La operacin natural requerira m3 multiplicaciones y m2.m

1/ sumas.

Para un dimensin m suficientemente grande el procedimiento de Strassen


reduce las operaciones por un factor de alrededor de 7/8.

102/118

Si se aplica recursivamente la idea y se van dividiendo las submatrices en cuatro


bloques, cada unos de estos en otros cuatro y as sucesivamente, el
procedimiento mejorar sustancialmente el nmero total de operaciones que hay
que efectuar.

El orden de las matrices de menor tamao al que se puede aplicar esta idea es
nmi n D 16, pues con bloques ms reducidos el nmero de operaciones que se
realiza es mayor que el ordinario.

103/118

En Matlab, para matrices n  n, con n D 2p .


function C = strass(A,B)
% Calcula C=AxB mediante la frmula de Strassen
%
A,B matrices n x n; n potencia de 2.
%
n = length(A);
if n-2^(log2(n))~=0, error(n no es pot. de 2); end
if n <= 16
C = A*B;
else
m = n/2; u = 1:m; v = m+1:n;
P1 = strass(A(u,u)+A(v,v),B(u,u)+B(v,v));
P2 = strass(A(v,u)+A(v,v),B(u,u));
P3 = strass(A(u,u),B(u,v)-B(v,v));
P4 = strass(A(v,v),B(v,u)-B(u,u));
P5 = strass(A(u,u)+A(u,v),B(v,v));
P6 = strass(A(v,u)-A(u,u),B(u,u) + B(u,v));
P7 = strass(A(u,v)-A(v,v),B(v,u)+B(v,v));
C = [P1+P4-P5+P7 P3+P5; P2+P4 P1+P3-P2+P6];
end
end

104/118

Ejemplo Para verificar tiempos de clculo. Ejecutar el programa TiemposAxB:


>> TiemposAxB(256)
Error en Int: 7.105427e-014
Error en Exte: 1.705303e-013
Error en Vec: 1.705303e-013
Error en Strass: 7.531753e-013
Tiempos: Int: 0.374; Exte: 0.827; Vec:
>> TiemposAxB(512)
Error en Int: 1.136868e-013
Error en Exte: 3.694822e-013
Error en Vec: 3.694822e-013
Error en Strass: 3.041123e-012
Tiempos: Int: 1.607; Exte: 2.730; Vec:
>> TiemposAxB(1024)
Error en Int: 3.410605e-13
Error en Exte: 1.108447e-12
Error en Vec: 1.108447e-12
Error en Strass: 1.642775e-11
Tiempos: Int: 10.516; Exte: 17.906; Vec:
>> TiemposAxB(2048)
Error en Int: 5.684342e-13
Error en Exte: 3.069545e-12
Error en Vec: 3.069545e-12
Error en Strass: 7.560175e-11
Tiempos: Int: 90.000; Exte: 170.953; Vec:

0.016; Strass:

0.109; Matlab:

0.000

0.172; Strass:

0.640; Matlab:

0.062

0.625; Strass:

2.891; Matlab:

0.188

12.938; Strass: 17.234; Matlab:

Al doblar el tamao, los tiempos se multiplican  por 23.

0.750

105/118

ndice


Introduccin y Conceptos bsicos

Representacin de un nmero en formato estndar IEEE

Aritmtica en un ordenador

Evaluacin de errores

Clculo numrico con matrices

Producto de una matriz por un vector

Producto de dos matrices

Normas


Vectoriales

Matriciales

106/118

Normas
Vectoriales


Si en un espacio vectorial E sobre el cuerpo K (R o C ) se define una norma


vectorial como una aplicacin k  k W E ! R que verifica
1) kvk D 0 H) v D 0
2) kvk D jjkvk para

x 0 H) kxk > 0;
2 K y v 2 E;

3) ku C vk  kuk C kvk 8u; v 2 E;


se dice que E es un espacio vectorial normado.

del tringulo. Es una generalizacin del hecho de que un lado de u


la suma de los otros dos: ver figura. Una variante de esta regla es
107/118

ku

vk  kuk

kvk:

La condicin ku C vk  kuk C kvk se conoce como regla del tringulo.


v
uCv
u

Figura 3.1: Representacin grfica de la regla d

Es una generalizacin del hecho de que la longitud de un lado de un tringulo


espacio
Kn , para 1  p < 1, se tiene la familia
no puede ser mayor que la suma de En
lasel de
los vectorial
otros dos.


kxkp D jx1 j C    C jxn j

Una variante til es esta:


ku

1=

denominadas normas p de Hlder. Casos particulares lo constitu


p D 2:

vk  kuk

kvk:

kxk1 D
kxk2 D

n
X
i D1

jxi j

p
jx1 j2 C    C jxn j2

En el espacio vectorial Kn, para 1  p < 1, se tiene la familia de normas



1=p
kxkp D jx1jp C    C jxnjp
;

108/118

denominadas normas p de Hlder, o normas lp . Su formulacin se debe a Otto


Hlder, Alemania, 1859-1937.

Casos particulares muy utilizados corresponden a p D 1, p D 2 y p D 1:


kxk1 D

n
X
i D1

jxi j

kxk1 D mK
ax
jx j
q 1i n i
kxk2 D

jx1j2 C    C jxnj2

(norma eucldea en R n)

Cumplen, cualquiera que sea x 2 Kn, que kxk1  kxk2  kxk1  nkxk1.

Si el conjunto fx 2 R 2 W kxk  1g es el crculo unidad en R 2, sus formas


2
las normas
p son
estas:unidad en
i el para
conjunto
fx 2 Rvectoriales
W kxk 1,1g2,es1la ybola
cerrada
R2, su forma para las normas vectoriales 1, 2, 1, y p son estas.


x11 D
=
kxk

x22 D
=
kxk

2
i
2

i=1

|xijx
| ij

iD1

D1

q


2 2
|x11|j22+C|xjx
2 | 2=
jx
j

q
DxT xx T x

D1

x1
max
kxk
D1i2
mKax|xjx
=
i| i j D 1
1i2

xpp D
= jx
|x11|j
kxk
D1
a

1/p
p 1=p
+C|xjx
p
< p)
< 1/
2 | 2 j , (1 ;.1

pp

28/63

109/118

110/118

En el espacio C 0; 1 de funciones continuas del intervalo 0; 1 en C , son


normas
#1=p
"Z
1
jf .t /jp dt
kf kp D
0

kf k1 D mKax jf .t /j :
t20;1

En un espacio vectorial normado se define la distancia entre dos elementos u y


v mediante
d.u; v/ D ku vk :


Esta definicin convierte a cualquier espacio vectorial normado en un


espacio mtrico.

111/118

En un espacio eucldeo n-dimensional, expresado R n o En (espacio de Hilbert


de dimensin finita), el ngulo entre dos vectores cualesquiera x e y es

 T
x y
;
 D arc cos
kxkkyk
donde

xT y
D
;
kxkkyk

1    1:

Si los vectores son ortogonales: x T y D 0;

Vectores alineados:

Vectores opuestos:

Si forman un ngulo agudo:

x T y > 0;

ngulo obtuso:

x T y < 0;

 D =2;

x T y D kxkkyk;

xT y D

kxkkyk;

 D 0.

 D 0;

 D ;

D1

 < =2;

 > 0.

 > =2;

 < 0.

D

1.

Normas matriciales


112/118

Se define sobre R mn como una aplicacin k  k W R mn ! R que cumple:


1) kAk D 0 H) A D 0
2) kAk D jj  kAk
3) kA C Bk  kAk C kBk
4) kABk  kAk  kBk

Existen normas sobre el espacio R mn que no son normas matriciales pues no
cumplen la propiedad 4. As, si se define
kAk D mKax jaij j ;
1i;j n

h i
se satisfacen 1), 2) y 3); sin embargo, tomando A D B D 11 11 , es fcil ver
 
que kABk D 2 2 D 2 > kAk  kBk D 1, por lo que no se cumple 4).
22

113/118

Definicin Una norma matricial k  k sobre R mn se dice consistente con una
norma vectorial k  k0 sobre R n cuando para cada matriz A y cada vector x se cumple que
kAxk0  kAk  kxk0 :

Se demuestra que para toda norma matricial es posible construir una norma
vectorial consistente. Recprocamente, a toda norma vectorial sobre R n se le
puede asociar una norma matricial consistente.

Una norma matricial es una norma vectorial compatible con el producto.

114/118

Una norma matricial consistente con una cierta norma vectorial k  k se


construye mediante la definicin
kAk D

kAxk
sup
:
kxk
0x 2Rn

Esta norma matricial se dice inducida por la norma vectorial.

La norma matricial inducida por la norma eucldea de R n es la norma


espectral, norma eucldea o norma 2:
kAk2 D

sup
0x 2Rn

"

#1=2 q
x A Ax
T
D

.A
A/ D max .A/
max
xT x
T

donde  designa un valor propio de A y  un valor singular.

115/118

Las normas matriciales inducidas ms generales son


kAk1 D mKax

1j n

kAk1 D mKax

1i m

m
X

iD1
n
X

j D1

jaij j (columnas) y
jaij j (filas) :

Si k  k es la norma inducida por una cierta norma vectorial y k  k0 es una norma


matricial cualquiera consistente con esa norma vectorial, se cumple, para toda
matriz A, que kAk  kAk0.

116/118

Un ejemplo importante de norma matricial es la norma de Frobenius, por


Ferdinand Georg Frobenius, Alemania 1849-1917.

Se define como
kAk2F

1i;j n


aij2 D traza A H A ;

donde la traza de una matriz A de orden n es




La norma de Frobenius cumple que

Pn

i D1 ai i .

kABkF  kAkF  kBkF :




La norma espectral y la norma de Frobenius cumplen que


kAk2  kAkF :

Ejemplo El efecto que produce aplicar la transformacin lineal basada en la


matriz
 
12
AD
02
al crculo unidad, con las normas k  k1, k  k2 y k  k1 en R 2, es este.
[2, 2]T
[0, 1]T
norma11
norma

norma22
norma

norma1

norma

[1, 0]T

A1 = 4
[1, 0]T

A2 2,9208

A = 3

La aplicacin transforma el vector e 1 D 1; 0T en s mismo y


e 2 D 0; 1T en 2; 2T .

39/63

117/118

La aplicacin transforma el vector e 1 D 1; 0T en s mismo y e 2 D 0; 1T en


2; 2T .

Tomando la norma 1, el vector unitario que ms se amplifica al aplicarle la


transformacin es 0; 1T (o 0; 1T ), que pasa a ser 2; 2T . Su factor de
amplificacin, en trminos de la norma 1, es 4.

Tomando la norma 2, el vector unitario que ms se amplifica es el que se


representa en la figura con una recta discontinua. El factor de amplificacin es
2;9208.

Para la norma 1, igualmente, el vector unitario que ms se amplifica es el que


se representa tambin con la recta discontinua: 1; 1T , que pasa a transformarse
en 3; 2T . El factor de amplificacin correspondiente es en este caso 3 ya que


1; 1T D 1
1


3; 2T D 3:
1

118/118

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Resolucin de ecuaciones de una variable

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_reso_ecuaciones_2016.pdf

1/75

2/75

ndice


El problema


Mtodo de la biseccin

Iteracin de punto fijo

Velocidad de convergencia

Mtodo de Newton

Variantes del mtodo de Newton

Mtodos sin derivadas

3/75

El problema


En trminos matemticos,
dada f W R ! R; hallar un xN tal que f .x/
N D 0.
La funcin f se supone continua y derivable en algn conjunto abierto de R.

Los algoritmos que estudiamos son procedimientos iterativos en los que se


avanza progresivamente haca una solucin.

Se utilizar uno u otro dependiendo de la complejidad de evaluar la funcin y de


la disponibilidad de derivada, o de la dificultad de calcularla.

4/75

Mtodo de la Biseccin

Atribuido a Bernard Bolzano, Praga, Bohemia (hoy Rep. Checa), 1781-1848.

Idea: Si f es continua en un intervalo a; b en cuyos extremos cambia de


signo, f .a/f .b/ < 0, existir un c, a < c < b, en el que f .c/ D 0.
Reduciendo a; b se llegar a acotar el valor de c tanto como se desee.

Origen:

5/75

Teorema Del valor intermedio Si f W R ! R es una funcin continua en a; b y


f .a/  x  f .b/ o f .b/  x  f .a/, existe un c, a  c  b, donde f .c/ D x.

Mecnica del procedimiento:


I. Comenzar con unos u D f .a/ y v D f .b/, tales que uv < 0. Determinar
c D 21 .a C b/ y w D f .c/.


Si f .c/ D 0 se ha llegado a la solucin;

si no, se cumplir que wu < 0 o wv < 0.

II. Si wu < 0, la solucin estar en a; c; si wv < 0, en c; b.


III. Se estudia el nuevo intervalo donde est la raz, reducindolo secuencialmente en
dos mitades hasta que se estreche lo que se desee el intervalo de confinamiento
que contenga la solucin.
f (a)

f (a)
f (x )

f (c)
f (x )

Casos que se pueden presentar al comenzar

a
f (c)

b
f (b)

]
b
f (b)

6/75

Si el intervalo con que se empieza el proceso iterativo, a0; b0, contiene una
solucin r, usando como estimacin de sta c0 D .a0 C b0/=2, se tendr que
e0 D jr
En cualquier iteracin, ei D jr

c0 j 

ci j 

b0

bi ai
;
2

a0
2

i D 0; 1; 2; : : :

Teorema Al aplicar el mtodo de la biseccin a una funcin f W R ! R, continua en


un intervalo a; b, en el que f .a/f .b/ < 0, despus de n iteraciones, en las que se habrn
evaluado la funcin n C 2 veces, se habr obtenido un valor de la solucin cn tal que su
error
b a
jr cn j  nC1 ;
2
donde r es el valor real de la solucin.

Definicin Una solucin es correcta en p posiciones decimales si el error es menor que


0;5  10 p .

7/75

Esta function lleva a cabo el mtodo de la biseccin.


function sol=Bisec_0(fun,a,b,tol)
% Mtodo de la Biseccin para resolver f(x)=0
if nargin<4, tol=sqrt(eps); end
fa=fun(a); fb=fun(b);
if sign(fa)*sign(fb)>=0, error( El intervalo (a,b) no contiene la solucin\n), end
while abs(b-a)/2>tol
c=(a+b)/2;
fc = fun(c);
if fc==0, break, end
if sign(fc)*sign(fa)<0
b=c; fb=fc;
else
a=c; fa=fc;
% No es necesario hacer fa=fc;
end
fprintf( %17.15f %17.15f\n,a,b);
end
sol = (a+b)/2;
end

8/75

Ejemplo Resolvamos x sen.x/ 1 D 0 en 1  x  2 (radianes). Para ello,


suministramos los extremos del intervalo a; b y la propia funcin que resolver:
>> f=@(x) x*sin(x)-1;
>> Bisec_0(f,1,2}
Los resultados son los de esta tabla.
k

1
2
3
4
5
6
7
8
9
10
11
12

1,0000000000000
1,0000000000000
1,0000000000000
1,0625000000000
1,0937500000000
1,1093750000000
1,1093750000000
1,1132812500000
1,1132812500000
1,1132812500000
1,1137695312500
1,1140136718750

1,5000000000000
1,2500000000000
1,1250000000000
1,1250000000000
1,1250000000000
1,1250000000000
1,1171875000000
1,1171875000000
1,1152343750000
1,1142578125000
1,1142578125000
1,1142578125000

13
14
15
16
17
18
19
20
21
22
23
24
25

1,1141357421875
1,1141357421875
1,1141357421875
1,1141510009765
1,1141510009765
1,1141548156738
1,1141567230224
1,1141567230224
1.1141567230224
1.1141569614410
1.1141570806503
1.1141571402549
1.1141571402549

1,1142578125000
1,1141967773437
1,1141662597656
1,1141662597656
1,1141586303710
1,1141586303710
1,1141586303710
1,1141576766967
1.1141571998596
1.1141571998596
1.1141571998596
1.1141571998596
1.1141571700572

9/75

En la figura se representa cmo procede el mtodo para llegar a la solucin.

Intervalo inicial

Error hacia delante y error hacia atrs de un algoritmo

10/75

El proceso que se lleva a cabo para obtener la solucin de un problema


mediante un algoritmo de bucle abierto se esquematiza as:
Datos que
definen el !
problema

Proceso de
solucin o
algoritmo

! Solucin

El problema lo constituyen los datos que se proporcionan a esa funcin de


transferencia que es el algoritmo.
La solucin es la informacin que proporciona la salida.
En lo que analizamos aqu, el problema es una
ecuacin de una variable;
el algoritmo, cualquiera de los que estudiamos.

11/75

Definicin Si f .x/ es una funcin y r una raz de ella, f .r/ D 0, supongamos que
xa es una aproximacin de r obtenida por un algoritmo. El error hacia atrs del algoritmo
es jf .xa /j y el error hacia delante jr xa j.

El error hacia atrs est en el lado izquierdo del esquema anterior, o a la


entrada. Es la cantidad que tendra que cambiar el problema (la funcin) para
hacer que la ecuacin se equilibre con la aproximacin xa de la salida. Es
jf .xa /j.

El error hacia delante est en el lado derecho, o a la salida (solucin del


problema). Es la cantidad que tendra que cambiar la solucin aproximada para
que sea correcta, es decir, jr xa j.

8
D 0. Podemos comprobar que
Ejemplo Estudiemos x 3 2x 2 C 34 x 27
f .0/f .1/ D . 8=27/.1=27/ < 0. Apliquemos el mtodo de la biseccin.
>> f1=@(x) x^3-2*x^2+x*4/3-8/27;
>> xc=Bisec_0(f1,0,1)

Se obtiene lo siguiente:
>> xc=Bisec_0(f1,0,1)
0.500000000000000 1.000000000000000
0.500000000000000 0.750000000000000
0.625000000000000 0.750000000000000
0.625000000000000 0.687500000000000
0.656250000000000 0.687500000000000
0.656250000000000 0.671875000000000
0.664062500000000 0.671875000000000
0.664062500000000 0.667968750000000
0.666015625000000 0.667968750000000
0.666015625000000 0.666992187500000
0.666503906250000 0.666992187500000
0.666503906250000 0.666748046875000
0.666625976562500 0.666748046875000
0.666625976562500 0.666687011718750
0.666656494140625 0.666687011718750
0.666656494140625 0.666671752929688
xc =
0.666664123535156

12/75

>> xc=Bisec_0(f1,0,1,eps)
0.500000000000000 1.000000000000000
0.500000000000000 0.750000000000000
0.625000000000000 0.750000000000000
0.625000000000000 0.687500000000000
0.656250000000000 0.687500000000000
0.656250000000000 0.671875000000000
0.664062500000000 0.671875000000000
0.664062500000000 0.667968750000000
0.666015625000000 0.667968750000000
0.666015625000000 0.666992187500000
0.666503906250000 0.666992187500000
0.666503906250000 0.666748046875000
0.666625976562500 0.666748046875000
0.666625976562500 0.666687011718750
0.666656494140625 0.666687011718750
0.666656494140625 0.666671752929688
xc =
0.666664123535156

La raz es 0;6666666666666 : : :. Aunque se aumente la precisin, el proceso es


el mismo y slo consigue 6 dgitos significativos de la misma, por qu?

Lo que ocurre no es culpa del mtodo de la biseccin sino de la incapacidad de


la aritmtica de la mquina para calcular la funcin f con precisin suficiente
cerca de la raz.

Cualquier otro mtodo que se base en esta misma aritmtica de maquina estar
destinado al mismo fracaso.

13/75

1.3 Limits of Accuracy | 45

La razn se ve en la figura.

(a)

(b)

Si la aritmtica de la mquina muestra que la funcin es igual a cero en un valor


Figure 1.7 The shape of a function near a multiple root. (a) Plot of f (x) =
que no es una
raz, no hay manera de que el mtodo pueda recuperar esto.
x 3 2x 2 + 4/3x 8/27. (b) Magnication of (a), near the root r = 2/3. There are

14/75

El error hacia atrs es cercano a mq  2;2  10 16, mientras que el error hacia
delante es aproximadamente 10 5. Como el error hacia atrs no puede
disminuirse por debajo de un error relativo por debajo del psilon de la mquina,
tampoco es posible disminuir el error hacia delante.

Hay que destacar que este ejemplo es bastante especial pues la funcin tiene
una raz triple en r D 2=3.

3
8
2
4
f .x/ D x 3 2x 2 C
D x
:
3 27
3

Definicin Si una funcin continua y derivable m veces tiene en r una raz y 0 D


f .r/ D f 0 .r/ D    D f .m 1/ , pero f .m/ 0, se dice que f tiene una raz de multiplicidad
m en r. Una raz es simple si la multiplicidad es igual a uno y mltiple si es mayor que uno.

15/75

Iteracin de punto fijo

Observemos:

>> cos(1)
ans = 0.540302305868140
>> cos(ans)
ans = 0.857553215846393
>> cos(ans)
ans = 0.654289790497779
>> cos(ans)
ans = 0.793480358742566
>> cos(ans)
ans = 0.701368773622757
>> cos(ans)
ans = 0.763959682900654
>> cos(ans)
ans = 0.722102425026708
>> cos(ans)
ans = 0.750417761763761
>> cos(ans)
ans = 0.731404042422510
>> cos(ans)
ans = 0.744237354900557
>> cos(ans)
ans = 0.735604740436347
>> cos(ans)
ans = 0.741425086610109
>> cos(ans)
ans = 0.737506890513243
>> cos(ans)
ans = 0.740147335567876
>> cos(ans)
ans = 0.738369204122323

>> cos(ans)
ans = 0.739567202212256
>> cos(ans)
ans = 0.738760319874211
>> cos(ans)
ans = 0.739303892396906
>> cos(ans)
ans = 0.738937756715344
>> cos(ans)
ans = 0.739184399771494
>> cos(ans)
ans = 0.739018262427412
>> cos(ans)
ans = 0.739130176529671
>> cos(ans)
ans = 0.739054790746917
>> cos(ans)
ans = 0.739105571926536
>> cos(ans)
ans = 0.739071365298945
>> cos(ans)
ans = 0.739094407379091
>> cos(ans)
ans = 0.739078885994992
>>

16/75

La sucesin de puntos de iterar la funcin coseno parece que converge a un


punto r.
Definicin Un nmero real r es un punto fijo de f .x/ si f .r/ D r.

La iteracin de punto fijo sirve para resolver problemas de punto fijo f .x/ D x.
Se puede usar para resolver f .x/ D 0 si ste se puede expresar como g.x/ D x.
 Esquema general de la Iteracin de Punto Fijo
Dados Un x WD x0 y una t ol . Hacer f ound WD f al se
while (not f ound ) and (k < kmax )
Hacer xk WD f .xk 1 )
if (xk xk 1 < t ol ), f ound WD true , end

k WD k C 1
end

17/75

Este cdigo de Matlab hace el trabajo.


function xc=fpi(g,x0,k)
% fpi: Calcula la solucin de f(x)=x; it. punto fijo
% Input: inline function f, punto de partida x0,
%
nmero de iteraciones k
% Output: Solucin x
x(1)=x0;
for i=1:k
x(i+1)=g(x(i));
end
xc=x(k+1);
end

Para el caso de f .x/ D cos.x/, haciendo hasta treinta iteraciones, sera:


>> f=@(x)cos(x);
>> xc = fpi(f,1,15)
xc =
0.738369204122323
>> xc = fpi(f,1,30)
xc =
0.739087042695332

18/75

Ejemplo Resolvamos la ecuacin x 3 C x


formas con el formato g.x/ D x:
x 3;

xD1
en este caso g.x/ D 1
Tambin

1 D 0. Expresmosla de varias

x 3.
xD

p
3

x;

p
siendo aqu g.x/ D 3 1 x.
Si aadimos 2x 3 a los lados de la ecuacin, tambin,
3x 3 C x  1 D 2x 3
3x 2 C 1 x D 1 C 2x 3
1 C 2x 3
x D
1 C 3x 2
siendo g.x/ D .1 C 2x 3/=.1 C 3x 2/.

ving Equations
19/75

to the diagonal
y = x. geometras
This geometric
of a Fixed-Point
i ) across
 Enheight
esta g(x
figura
se pueden
ver las line
distintas
deillustration
las y D g.x/
y los
Iteration is called a cobweb diagram.

primeros pasos de la iteracin de punto fijo con ellas, partiendo de un mismo x0.
y

x2 x0 r

x1 1

x0 r x1 1
x2

x0 r

Figure 1.3 Geometric view of FPI. The xed point is the intersection of g(x) and the

diagonal line. Three examples of g(x) are shown together with the rst few steps of
La primera
diverge, la segunda converge y la tercera tambin converge, pero
FPI. (a) g(x) = 1 x3 (b) g(x) = (1 x)1/3 (c) g(x) = (1 + 2x3 )/(1 + 3x2 )
mucho ms rpidamente. Por qu?

In Figure 1.3(a), the path starts at x0 = 0.5, and moves up to the function and horizontal
to the point (0.875, 0.875) on the diagonal, which is (x1 , x1 ). Next, x1 should be substituted
 Aparentemente,
algo the
tiene
que
condone
ellofor
laxpendiente
de la funcin, g 0.x/,
into g(x). This is done
same
wayver
it was
0 , by moving vertically to the function.
0.3300, and after moving horizontally to move the y-value to an x-value,
This del
yields
x2 fijo.
cerca
punto
we continue the same way to get x3 , x4 , . . . . As we saw earlier, the result of FPI for this g(x)

20/75

Consideremos ahora la ecuacin


x3

sen.x/ D 0:

Al tratarse de una funcin senoidal, habr varios puntos para los cuales
f .x/ D 0. Calcularemos el ms prximo a x D 1.


Si seguimos una estrategia de punto fijo, buscaremos una funcin g W R ! R y


un xN tal que xN D g.x/,
N y aplicaremos un procedimiento iterativo a partir de la
relacin de recurrencia xkC1 D g.xk /.

Qu formas de x D g.x/, y por tanto relacin de recurrencia, se nos pueden


ocurrir para utilizar?

21/75

La primera podra ser x D


sera

p
3

sen.x/: La relacin de recurrencia correspondiente


xkC1 D

p
3

sen.xk /:

Si comenzamos el proceso iterativo desde x0 D 1 (radianes), se tendr que:


p
x1 D 3 sen.x0/ D 0;944
p
x2 D 3 sen.0;944/ D 0;932
p
x3 D 3 sen.0;932/ D 0;929
:::
La solucin converge a xN D 0;92862.

22/75

Tambin podemos hacer x D

sen.x/
,
x2

por lo que la relacin de recurrencia sera

xkC1 D

sen.xk /
:
xk2

Partiendo de x0 D 1, se obtienen los puntos


k
0
1
2
3
4
::
:

El proceso diverge.

xk
1; 000
0; 841
1; 053
0; 783
1; 149
::
:

Veamos geomtricamente qu ocurre en estos dos procesos:




El itinerario de la parte izquierda es el de xkC1 D

El que define

p
3

sen.xk /.

sen.xk /
xk2
genera lo que se denomina una tela de araa entre la recta y D x y la
funcin y D g.x/.
xkC1 D

23/75

Si se analiza el comportamiento de diversas relaciones de recurrencia se puede


constatar una relacin directa entre el comportamiento del proceso iterativo y
las pendientes de g en el entorno de x:
N
Si jg 0.x/j
N D v < 1 y el punto de partida est cerca de x,
N el proceso converge
linealmente a velocidad v.
Si jg 0.x/j
N > 1, diverge.


En el caso de xkC1 D

p
3

sen.xk /,

.sen.x//
g .x/ D
3
En xN  0;929, g 0.0;929/  0;23.
0

2=3

cos.x/:

Por el contrario, en xkC1 D sen.xk /=xk2 ,


cos.x/
x2
1;23.

g 0.x/ D
En xN  0;929, g 0.0;929/ 

sen.x/
:
x3

24/75

25/75

Definicin Sea ei el error en el paso i de un mtodo iterativo. Si


ei C1
lim
D S < 1;
i !1 ei
se dice que el mtodo converge linealmente con razn S.

Teorema

Si f W R ! R es una funcin continua y derivable, f .r/ D r y


S D jf .r/j < 1, la iteracin de punto fijo converge linealmente a r, con razn S, para
estimaciones iniciales lo suficientemente prximas a r.
0

Velocidad de convergencia

26/75


Definicin Sea una sucesin fxi g1
i D0 , xi 2 R, convergente a x . El orden de conver-

gencia de fxi g es el mximo de los nmeros no negativos r que satisface

jxi C1 x j
0  lim
< 1:
i!1 jxi
x  jr
El valor del lmite, , se conoce como razn, o constante de error asinttico.

Si r D 1, la sucesin se dice que converge linealmente; si r D 2, se dice que lo


hace cuadrticamente; si r D 3, cbicamente, etc.
Definicin Un mtodo iterativo xi C1 D f .xi /; i D 1; 2; : : :, que parte de un punto
x0 , se dice que tiene una velocidad de convergencia de orden r cuando la sucesin fxi g1
i D0
converge con orden r hacia la solucin x D f .x/.

jxi C1 x  j
limi!1 jxi x j

Si la convergencia es lineal y el valor de


convergencia se dice superlineal.

Ejemplo consideremos la sucesin escalar definida por

27/75

D es cero, la

xk D c 2 ;
donde c cumple 0  c < 1. La sucesin converge a cero. Calculemos su orden
de convergencia:
kC1
c2
jxkC1 0j
lim
D lim kC1 D 1:
2
k!1 jxk
k!1 c 2
0j
Es decir, converge cuadrticamente a 0.


La convergencia cuadrtica quiere decir, grosso modo, que en las proximidades


del lmite o solucin el nmero de dgitos significativos que aporta cada paso del
proceso al valor de la solucin es el doble que el anterior.

28/75

En la columna 2 de la tabla que sigue se pueden ver los distintos puntos de la


sucesin del primer ejemplo analizado para c D 0;99.
k
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

c2

.c D 0; 99/

0,9900000000000000
0,9801000000000000
0,9605960099999999
0,9227446944279201
0,8514577710948755
0,7249803359578534
0,5255964875255620
0,2762516676992083
0,0763149839065938
0,0058239767686636
0,0000339187054019
0,1150478576143195E-08
0,1323600954164474E-17
0,1751919485865107E-35
0,3069221884953861E-71
0,9420122979079730E-143
0,8873871694098596E-286

c2

.c D 2; 2/

2,200000000000000
1,483239697419133
1,217883285630907
1,103577494166543
1,050512967157732
1,024945348376065
1,012395845692812
1,006178833852518
1,003084659364561
1,001541142122759
1,000770274400054
1,000385063063246
1,000192513000995
1,000096251868287
1,000048124776146
1,000024062098581
1,000012030976918

1=k k
1,000000000000000
0,250000000000000
0,037037037037037
0,003906250000000
0,000320000000000
0,000021433470507
0,000001214265678
0,000000059604644
0,000000002581174
0,100000000000000E-10
0,350493899481392E-12
0,112156654784615E-13
0,330169095523011E-15
0,899927452978128E-17
0,228365826052116E-18
0,542101086242752E-20
0,120883864830239E-21

29/75

Consideremos la sucesin convergente a 1 que define,


k

xk D c 2 ;
con c  0.


Analicemos su orden de convergencia:


.kC1/

c2
jxkC1 1j
D lim
lim
k!1 c 2
k!1 jxk
1j
D lim

k!1

c 2 .kC1/

1
1
c2

.kC1/

c 2 .kC1/

C1

1
D
:
.kC1/
k!1 c 2
2
C1
 Converge linealmente: Esta convergencia significa que en cada iteracin se
aaden un nmero de dgitos constante a la solucin final; concretamente,
log10 dgitos por iteracin.
D lim

Analicemos por ltimo la sucesin que define


1
xk D k :
k


Converge a cero. En la columna 4 de la tabla se pueden ver los primeros


puntos de esta sucesin.

Estudiemos su orden de convergencia:


1
1
jxkC1j
.k C 1/kC1
lim
D lim
D lim 
kC1 D 0:
1
k!1 jxk j
k!1
k!1
1
k
1
C
k
k
k
Es decir, converge superlinealmente a cero.

La convergencia superlineal significa que cada iteracin aade un nmero


creciente de dgitos a la solucin final; concretamente r dgitos ms que la
iteracin precedente.

30/75

31/75

La siguiente tabla resume las diferencias entre varias velocidades de


convergencia.

k
1
2
3
4
5

Error
10
10
10
10
10

; 10
2
; 10
2
; 10
2
; 10
2
; 10

;10
4
;10
3
;10
4
;10
8
;10

; 10 5; : : :
6
; 10 8; : : :
5
; 10 8; : : :
8
; 10 16; : : :
24
;:::

Convergencia
Lineal, con D 10 1
Lineal, con D 10 2
Superlineal: entre lineal y cuadrtica
Cuadrtica
Cbica

La convergencia de una sucesin de vectores necesita de una funcin que los


convierta en un nmero.
Lo usual es usar algn tipo de norma.

Mtodo de Newton-Raphson


De acuerdo con todo lo expuesto hasta ahora:


Sera deseable disponer de una va sistemtica y fiable de construir un modelo
x D g.x/ para hallar la solucin xN de la ecuacin f .x/ D 0 comenzando
desde cualquier x0, prximo a la solucin, obviando que jg 0.x/j
N < 1.

Isaac Newton, Inglaterra, 1642-1727, la persona con una de las mentes ms


portentosas que ha dado la humanidad, fue el primero que ide esa va y la
forma de llevarla a la prctica sencillamente.

32/75

33/75

Su idea consiste en reemplazar la funcin f .x/ en cada punto del proceso


iterativo por el modelo de ella que define su recta tangente en ese punto
(linealizar la funcin en un punto).


En x D x1 la ecuacin de la recta tangente a f .x/ es


y D f .x1/ C f 0.x1/.x

x1/.

En x D x1, y D f .x1/ por lo que la ordenada de esta ecuacin es la misma


que la de f .
La pendiente de f en x1 es la misma que la de y: f 0.x1/.


El siguiente punto del proceso iterativo lo determina la solucin de


y.x/ D 0, es decir, dnde esa recta tangente corta al eje x:
0 D f .x1/ C f 0.x1/.x

x1/.

La solucin de esta ltima ecuacin es


x D x1

34/75

f .x1/
:
f 0.x1/

En la figura se describe este paso del proceso iterativo de Newton.

x2

x1

f (x)

La relacin general de recurrencia del mtodo de Newton, o Newton-Raphson


Joseph Raphson, Inglaterra, 1648-1715
para la solucin de la ecuacin f .x/ D 0 es
xkC1 D xk

f .xk /
.
f 0.xk /

35/75

Si aplicsemos el mtodo de Newton-Raphson al problema x 3


relacin de recurrencia sera:
xkC1 D xk

sen.x/ D 0, la

xk3 sen.xk /
:
3xk2 cos.xk /

Este es un cdigo de Matlab para resolver x 3


Newton.
function raiz=Newton(fun,x,tol)
%Newton para una variable
x0=0; if nargin<3, tol=eps^0.5; end
while abs(x-x0)>tol
x0=x;
[f df] = fun(x0);
x=x0-f/df;
fprintf( %18.15f\n, x);
end
raiz=x;
end

sen.x/ D 0 por el mtodo de

function [f df]=Newt_1(x)
f = x^3-sin(x);
if nargout<2, return, end
df = 3*x*x-cos(x);
end

Si se parte de x0 D 1;4, con

36/75

>> Newton(@Newt_1,1.4)

los puntos que se obtienen con ese cdigo son estos


xk
1,092024491974
0,958975041400
0,929997813651
0,928629313033
0,928626308746
0,928626308732

El grfico del proceso que lleva a la solucin es este:


Mtodo de Newton

2.5

1.5
f(x)

k
1
2
3
4
5
6

Solucin
0.5

32
0.5

0.6

0.7

0.8

0.9

1
1
x

1.1

0
1.2

1.3

1.4

1.5

37/75

Convergencia del mtodo de Newton


Teorema Sea la funcin f W R ! R contina y derivable, al menos dos veces, y un
r en el que f .r/ D 0. Si f 0 .r/ 0, el mtodo de Newton es local y cuadrticamente
convergente a r. El error ei en el paso i de su proceso, ei D jxi rj, satisface
ei C1
D M;
i !1 e 2
i
lim

donde M D

f 00 .r/
.
2f 0 .r/

El teorema garantiza la convergencia del mtodo de Newton slo si se inicia


desde un punto x0 aceptable.

38/75

El mtodo puede no funcionar si jx0

xj
N es grande:

Por ejemplo, considrese el problema clsico de hallar la solucin de


arctan.x/ D 0.

Partiendo de cualquier punto del intervalo [1,39, 1,40], el mtodo cicla


obtenindose x1 D x0, x2 D x0, x3 D x0, : : :

Si x0 < 1;39, el procedimiento converge; si x0 > 1;40, diverge. En la figura


se representan el por qu de esto.
f (x) = arctan(x)

x0

x0

39/75

El teorema anterior impone que f 0.r/ debe ser distinta de cero para que el
mtodo de Newton converja cuadrticamente a r.
Teorema Si una funcin f , continua y derivable m C 1 veces en a; b, tiene en r una
raz de multiplicidad m, el mtodo de Newton converge linealmente a r y el error en el paso
i , ei D jxi rj satisface
ei C1
m 1
lim
D
:
i !1 ei
m

40/75

Ejemplo Raz mltiple. Apliquemos Newton-Raphson a f1.x/ D x 2


y f2.x/ D x 2 2x C 1 D 0, partiendo de x0 D 2:
f1.x/ D x 2

2
1,25
1,025
1,0003048780488
1,0000000464611
1,0

El error es
m D 2.

e5
e4

1;03125 1
1;0625 1

f2.x/ D x 2

1D0

D 0;5 D

x0
x1
x2
x3
x4
x5
m 1
,
m

1D0

2x C 1 D 0

2
1,5
1,25
1,125
1,0625
1,03125

lo que verifica que la multiplicidad es

Teorema Si una funcin continua y derivable m C 1 veces en a; b tiene en r una raz


de multiplicidad m > 1, el mtodo de Newton modificado
xi C1 D xi

mf .xi /
f 0 .xi /

converge cuadrticamente a r.

Ejemplo Estudiar f .x/ D sen.x/ C x 2 cos.x/ x 2 x D 0. Partiendo de


x0 D 1, modificar el cdigo de antes para admitir races mltiples y resolverlo.
f .x/
f 0 .x/
f 00 .x/
f 000 .x/

D sen.x/ C x 2 cos.x/ x 2 x
D cos.x/ C 2x cos.x/ x 2 sen.x/ 2x 1
D
sen.x/ C 2 cos.x/ 4x sen.x/ x 2 cos.x/
D
cos.x/ 6 sen.x/ 6x cos.x/ C x 2 sen.x/

cada derivada se evala en 0. Como f 000.0/ D




1, sta es una raz triple.

Comparar
function raiz_Newton(fun,x,tol)
function raiz=Newton_multiple_modificado(fun,x,tol,m)

41/75

42/75

Variantes del mtodo de Newton-Raphson




La primeras resultan de incorporar algn mecanismo que impida que ocurran


alguno de los problemas apuntados.

Recordemos que la resolucin de la ecuacin de Newton no slo define un nuevo


punto del proceso iterativo, xkC1, sino una direccin, f 0.xk /, a lo largo de la
cual se da un paso igual a xkC1 xk :


Puede que ese paso sea bueno y la funcin f .x/ en el nuevo punto adquiera
un valor menor que el que tena en xk ; pero tambin puede que mayor y el
proceso diverja, siendo en cualquier caso buena la direccin calculada.

43/75

Intuitivamente, se puede incorporar un mecanismo de salvaguarda que permita


que, a lo largo de la direccin calculada, siempre disminuya el valor de la
funcin; en concreto,
Si el paso completo xkC1
jf .xkC1/j < jf .xk /j.

xk produce un aumento, disminuirlo hasta que

Ese posible mecanismo lo plasma el algoritmo que sigue.


f .xk /
f 0 .xk /
while .jf .xkC1 /j  jf .xk /j/ do
xkC1 C xk
xkC1
2

xkC1 D xk

end

44/75

xk+1
(xk+1 + xk )/2

xk
xk+1

En la figura se ilustra un caso de cmo el mecanismo apuntado salva las


dificultades que surgiran de aplicar el procedimiento de Newton sin l. El punto
0
xkC1
, que sera el que determinara el paso de Newton, no valdra. Tampoco
0
.xkC1
C xk /=2. S, por fin,
xkC1 D

xk C

0
xkC1
Cxk
2

Mtodo de Newton por diferencias finitas




45/75

Hasta ahora hemos supuesto que se conoce la expresin de la derivada de la


funcin f .x/. No siempre es as.


Bien porque su determinacin analtica es muy complicada la funcin f .x/


surge de un procedimiento experimental, por ejemplo, o,

Porque el usuario del mtodo no desea obtenerla.

En el mtodo de Newton por diferencias finitas se sustituye la derivada de la


funcin f .x/ por su definicin,
f .xk C h/
h!0
h

f 0 .xk / D lim

f .xk /

utilizando la frmula de recurrencia


xkC1 D xk

f .xk /
.f .xk C h/ f .xk //= h

46/75

Teorema Sea la funcin f W D ! R con dominio de definicin en un intervalo abierto


D y derivada continua en l. Supngase que, para todo x 2 D, jf 0 .x/j   para algn
 > 0. Si f .x/ D 0 tiene solucin xN 2 D, existen unas constantes positivas  y 0 tales
N < , la
que si fhk g es una sucesin de nmeros reales tales que 0 < jhk j  0 y si jx0 xj
sucesin fxk g que define
xkC1 D xk

f .xk /
;
ak

con ak D

f .xk C hk /
hk

f .xk /

; k D 0; 1; : : :

converge linealmente a x.
N Si limk!1 hk D 0, la convergencia es superlineal. Si existe alguna
constante c1 tal que jhk j  c1 jxk xj,
N o, de forma equivalente, una constante c2 tal que
jhk j  c2 jf .xk /j, la convergencia es cuadrtica. Si existe alguna constante c3 tal que
jhk j  c3 jxk xk 1 j, la convergencia es al menos cuadrtica cada dos pasos.

47/75

La eleccin de h es crtica para el buen funcionamiento del procedimiento: no


debe ser muy pequeo, de tal manera que
f l.xk C h/ f l.xk /
ni que, dado que f es continua y su derivada tambin, al evaluar la funcin en
dos puntos muy prximos, ocurra que
f l.f .xk C h// f l.f .xk //.

Una regla habitual es la de elegir


p
jhj D  mx.ftip x; jxk jg;
donde tip x indica la magnitud tpica de x y  es la precisin de la mquina en
la que se utiliza el correspondiente cdigo.

48/75

Para un problema bien escalado bastara hacer


jhj D

maq
K

Cuando existen problemas de precisin, tambin es posible recurrir a la


aproximacin de f 0.xk / dada por
ak D

f .xk C h/

f .xk
2h

h/

con h D

p
3

maq:
K :

OJO! El nmero de veces que se evala la funcin se duplica.

49/75

Ejemplo Calculemos la solucin de f .x/ D x 2 1, partiendo de x D 2,


mediante Newton y Newton por diferencias finitas.
function newt_x2_1
% Newton de x^2-1=0
x=2.0; x0=0.0;
fx=@(x)x^2-1;
derfx=@(x)2*x;
while abs(x-x0)>eps
x0=x;
x=x0-fx(x0)/derfx(x0);
fprintf( %18.15f\n,x)
end
end

function newt_x2_2
% Newton dif. finitas de x^2-1=0
x=2.0; x0=0.0; h=sqrt(eps);
fx=@(x)x^2-1;
while abs(x-x0)>eps
x0=x;
x=x0-fx(x0)/((fx(x0+h)-fx(x0))/h);
fprintf( %18.15f\n,x)
end
end

50/75

Los resultados obtenidos con uno y otro cdigo son los de las siguiente tabla.
Newton
1,250000000000000
1,025000000000000
1,000304878048780
1,000000046461147
1,000000000000001
1,000000000000000

Newton Dif. Fin.


x0
x1
x2
x3
x4
x5

1,250000000000000
1,025000001341105
1,000304878371890
1,000000046463329
1,000000000000001
1,000000000000000

Como se puede observar, son prcticamente los mismos.




En la prctica, si se acondicionan los parmetros convenientemente, el mtodo


de Newton y el de Newton por diferencias finitas funcionan casi igual.

51/75

Mtodo de Newton-Raphson relajado




Esta variante utiliza como direccin de bsqueda la misma en cada iteracin:


f 0.x0/.

f (x)

x3 x2 x1

x0

Si la pendiente de f en x0 difiere significativamente de la de f en la solucin,


la convergencia puede ser muy lenta o no existir.
La derivada de la funcin se puede evaluar cada n iteraciones.

52/75

Si se utiliza esta variante para resolver x 3 sen.x/ D 0, partiendo de x0 D 1;1,


los puntos del proceso que se obtienen son los de la tabla.
k

xk

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

1,100000000000000
1,000000000000000
0,950091669305211
0,936190919770347
0,931398691322275
0,929655744326761
0,929010358902363
0,928769834571150
0,928679981323918
0,928646384848608
0,928633818836375
0,928629118217882
0,928627359757290
0,928626701921047
0,928626455824360
0,928626363759310

La convergencia es bastante peor que la del mtodo de Newton.

53/75

El cdigo de Matlab que se ha utilizado es este.


x1=1.1; tol=sqrt(eps);
dx = 3*x1*x1-cos(x1); x2=1;
%
fx = @(x)x^3-sin(x);
% funcin
%
while abs(x2-x1)>tol
fprintf( %18.15f\n, x1);
x1=x2;
x2=x1-fx(x1)/dx;
end

54/75

Una variante interesante es la conocida como composite Newton, que evala la


derivada cada dos iteraciones.

function raiz=Newton_composite(fun,x,tol)
% Newton composite: misma derivada cada dos iteraciones
in=1; x1=0; x2=2;
if nargin<3, tol=eps^0.5; end
if nargin==2, x1=0; x2=x; end
while abs(x2-x1)>tol
x1=x2;
if in
[f df] = fun(x1); in = 0;
else
[f] = fun(x1); in = 1;
end
x2=x1-f/df;
fprintf(%18.15f\n, x2);
end
raiz=x2;
end

55/75

Si se resuelve x 3 sen.x/ D 0, partiendo de x0 D 1;4, los puntos del proceso


que se obtienen con
>> raiz=Newton_composite(@Newt_1,1.4)
son los que siguen.

>> raiz=Newton_composite(@Newt_1,1.4)
1.092024491973809
1.019398480362132
0.939380250610315
0.930994424066045
0.928635243248317
0.928626375994235
0.928626308731742
0.928626308731734
raiz =
0.928626308731734

56/75

Mtodo de Halley

Mtodo debido a Edmund Halley, Inglaterra, 1656-1742.

Su idea consiste en reemplazar la funcin f .x/ en cada punto del proceso


iterativo por su aproximacin por Taylor hasta segunda derivada en ese punto.


En x D x1 la aproximacin hasta segunda derivada de f .x/ es


0

y D f .x1 / C f .x1 /.x

00

x1 / C f .x1 /

.x

x1 /2
.
2

El siguiente punto del proceso iterativo lo determina la solucin de


y.x/ D 0, es decir, dnde esa funcin corta al eje x:
0

0 D f .x1 / C f .x1 /.x

00

x1 / C f .x1 /

.x

x1 /2
.
2

57/75

La solucin de esta ltima ecuacin es


x D x1 C

f 0 .x1 /

f 0 .x1 /2 2f .x1 /f 00 .x1 /


:
f 00 .x1 /

La relacin general de recurrencia del mtodo es esta:


xkC1 D xk

2f .xk /f 0.xk /
2f 0.xk /2

f .xk /f 00.xk /

Una variante muy similar es la de Chebyshev,


xkC1 D xk



f .xk /
f .xk /f 00 .xk /
1C
f 0 .xk /
2f 0 .xk /2

Pafnuty Lvovich Chebyshev,


Rusia, 1821-1894.

Una codificacin de este mtodo para resolver x C ln.x/ D 0 es la que sigue.


function HalleysMethod_log
%Halleys Method; caso particular f(x) = x + ln(x)
i = 1; p0 = 1; N = 100;
% initial conditions
error = 0.000000001;
% precision required
syms x
% Symbolic variables, functions, and expresions in Matlab
f(x) = x + log(x);
% The function we are root finding.
dx = diff(f);
% first and second derivatives of f(x)
ddx = diff(dx);
while i <= N
p = p0 - (f(p0)/dx(p0))*(1 - (f(p0)*ddx(p0)/dx(p0)^2))^(-1);
%Implementation of Halleys Method.
if (abs(p - p0)/abs(p)) < error
%stopping criterion when difference between iterations is below tolerance
fprintf(Solution is %15.13f; %3.0f iterations.\n, double(p),i)
return
end
i = i + 1;
p0 = p;
% update p0
fprintf(%15.13f; iteration %3.0f\n, double(p0),i)
end
fprintf(Solution did not coverage within %d iterations; required precision of %d \n, N, error)
end

>> tic, HalleysMethod_log, toc


0.6000000000000; iteration
2
0.5676852524497; iteration
3
0.5671434553266; iteration
4
0.5671432904098; iteration
5
Solution is 0.5671432904098;
5 iterations.
Elapsed time is 0.664269 seconds.

La ejecucin:

La convergencia del mtodo de Halley es cbica.

58/75

59/75

ndice


El problema


Mtodo de la biseccin

Iteracin de punto fijo

Velocidad de convergencia

Mtodo de Newton

Variantes del mtodo de Newton

Mtodos sin derivadas

60/75

Mtodos sin derivadas


Mtodo de la secante


Este mtodo utiliza como direccin de bsqueda, en vez de la que marca la


tangente en un punto, la que determina una recta secante a la funcin en dos
puntos sucesivos del proceso iterativo.

Si en una iteracin k del proceso la ecuacin de Newton es


xkC1 D xk

f .xk /
;
f 0.xk /

la idea es emplear, en vez de f 0.xk /,


f .xk /
xk

f .xk 1/
:
xk 1

La relacin de recurrencia del proceso iterativo queda


xkC1 D xk

xk 1
f .xk /.
f .xk 1/

La figura ilustra esta aproximacin.

f (x)

xk
f .xk /

61/75

xk+1

xk

xk1

El mtodo p
de la secante converge superlinealmente a la solucin con orden
D .1 C 5/=2 D 1; 618 la denominada razn urea. De hecho, si r es la
f 00.r/ 1
solucin, ei C1  2f 0.r/ ei .

Ejemplo


62/75

Resolvamos con este mtodo y Matlab la ecuacin x 3


function raiz=Newton_sec(fun,x,tol)
%Newton secante para una variable
x1=x; x2=x-0.1; if nargin<3, tol=eps^0.5; end
while abs(x2-x1)>tol
x0=x1; x1=x2;
[f df] = fun(x0,x1);
x2=x1-f/df;
fprintf( %18.15f\n, x2);
end
raiz=x2;
end

sen.x/ D 0.

function [f df]=Newt_sec_1(x0,x1)
fx = @(x)x^3-sin(x);
f = fx(x1);
if nargout<2, return, end
df = (fx(x1)-fx(x0))/(x1-x0);
end

La convergencia, con x0 D 1;4 y x1 D 1;4, y la instruccin de Matlab


>> Newton_sec(@Newt_sec_1,1.4) es esta:
k

xk

1
2
3
4
5
6
7

1,065107226548895
0,978070204938512
0,937387385189276
0,929273092828631
0,928635284046901
0,928626318027714
0,928626308731868

63/75

Mtodo de la falsa posicin




Conocido como Regula Falsi. Utiliza como direccin de bsqueda una recta
secante a la funcin en dos puntos sucesivos del proceso iterativo donde la
funcin toma valores de signo opuesto.

x4

x3

x2

f (x)

x1

La velocidad de convergencia es superlineal de orden 1,618: la razn urea de


nuevo.

64/75

En determinadas circunstancias desfavorables, tanto el mtodo de la secante


como el de la falsa posicin pueden presentar problemas de convergencia.

En la figura se representa un ejemplo de convergencia lenta.


x2
f (x)

x
x1 x3

Mtodo de Muller


65/75

Presentado en 1956.

David Eugene Muller, EE.UU., 1924-2008.

Utiliza una interpolacin cuadrtica de tres puntos anteriores del proceso


iterativo para extrapolar el nuevo punto del proceso.

f (x)

p(x)

x0

x1

x2

x3

El procedimiento aproxima a x0, x1 y x2 el polinomio


x2/2 C b.x

p.x/ D a.x

66/75

x2 / C c

que pasa por .x0; f .x0//, .x1; f .x1// y .x2; f .x2//.




Los parmetros a, b y c se determinan mediante estas condiciones:


x2 /2 C b.x0
x2 /2 C b.x1

f .x0 / D a.x0
f .x1 / D a.x1
f .x2 / D c:


x2 / C c;
x2 / C c

Resolviendo el sistema de 2 ecuaciones con 2 incgnitas


h.x x /2 .x x /i h i hf .x / f .x /i
0
2
0
2
0
2
a
D
b
.x
x /2
.x
x /
f .x / f .x /
1

se obtiene la expresin de los parmetros a y b:


 
a
D
b

1
.x0 x2 /.x1 x2 /.x0 x1 /

.x1
.x1

x2 /
x2 /2


.x0 x2 / f .x0 /
.x0 x2 /2 f .x1 /


f .x2 /
:
f .x2 /

67/75

Para determinar el nuevo punto del proceso se aplica la frmula


zD

2c
;
p
2
b b
4ac

escogindose el signo, de los dos posibles, que garantice el denominador ms


grande en valor absoluto:

Si b > 0, el signo positivo;

si b < 0, el negativo.

El nuevo punto x3 ser entonces


x3 D x2 C z:

68/75

Este cdigo de Matlab implementa el mtodo.


function Muller_2(fx,x0,x1,x2) % Mtodo de Muller
tol=eps(double);
fx0=fx(x0); fx1=fx(x1); fx2=fx(x2); iter=1;
while abs(fx2)>tol
c=fx2; d0=x0-x2; d1=x1-x2; det=d0*d1*(x0-x1);
b=(d0*d0*(fx1-fx2)-d1*d1*(fx0-fx2))/det;
a=(d1*(fx0-fx2)-d0*(fx1-fx2))/det;
di=sqrt(b*b-4*a*c);
isig=1; if b<0 isig=-1; end
z=(-2)*c/(b+isig*di);
x3=x2+z;
if abs(x3-x1)<abs(x3-x0)
u=x1; x1=x0; x0=u;
u=fx1; fx1=fx0; fx0=u;
end
if abs(x3-x2)<abs(x3-x1)
u=x2; x1=u;
u=fx2; fx1=u;
end
x2=x3; fx2=fx(x2);
if ~isreal(x2)
fprintf(%17.14f+%17.14fi %23.15f %4.0f\n,real(x2),imag(x2),fx2,iter);
else
fprintf(%17.15f %23.15e %4.0f\n,x2,fx2,iter);
end
iter=iter+1;
end
end

69/75

El proceso de convergencia de la resolucin de la ecuacin x 3


partiendo de x0 D 1;5, x1 D 1;2 y x2 D 1;0 con

sen.x/ D 0,

>> Muller_2(@Newt_1,1,1.2,1.5)
es el que expresa esta tabla.

xk

f .xk /

1
2
3
4
5

0,921801501077277
0,928699331903730
0,928626328365127
0,928626308731740
0,928626308731734

-1,342037938307839e-02
1,451947876007775e-04
3,903326339926849e-08
1,076916333886402e-14
-1,110223024625157e-16

Obsrvese que el nmero de iteraciones, para la precisin que se obtiene,


decrece apreciablemente comparndolo con el de otros mtodos.

70/75

Si se trata de calcular una de las races complejas de x 3 C x 2 C x C 1 con este


mtodo resultara lo que sigue.
>> Muller_2(@Muller_2_2,0,0.1,1)
-0.21428571428571+0.65595130066457i 0.668124392614188
-0.16304914264115+1.15401500391091i 0.178872980763637
0.03069686090353+0.97963558152672i-0.016395820078345
0.00106074539714+1.00049046815007i-0.003104663615609
-0.00000339553880+1.00000042898932i 0.000005933119030
-0.00000000004554+0.99999999997470i 0.000000000141669
-0.00000000000000+1.00000000000000i 0.000000000000000
>>c=[1 1 1 1];
>> roots(c)
ans =
-1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
>>

1
2
3
4
5
6
7

El mtodo de Brent


71/75

En su versin ms reciente fue formulado en 1973 por Richard Peirce Brent,


Australia, 1946-. Anteriormente, en la dcada de 1960, fue propuesto por
Dekker y Van Wijngaarden.
Richard Peirce Brent, Australia, 1946-.

Utiliza simultneamente el mtodos de la biseccin y el de Muller (o secante). Se


aplica a un intervalo a; b en cuyos extremos la funcin adopta signos distintos.

Sigue la pista a un punto xi que es el mejor en el sentido del error hacia atrs y
a un intervalo ai ; bi para la raz.

72/75

Se aplica una interpolacin cuadrtica de Lagrange inversa, es decir, no


y D p.x/ sino x D p.y/, a los tres puntos .f .xi /; xi /, .f .ai /; ai / y
.f .bi /; bi / con el fin de reemplazar uno de ellos con aquel nico donde
x D p.y D 0/.
1.5 Root-Finding without Derivatives | 65

Quadratic Interpolation method is attempted, and the result is used to replace one of xi , ai , bi
if
(1) these
backward
error improves
and (2) the del
bracketing
intervalde
is cut
at least incon
half. la
If not,
 En esta figura
compara
la geometra
mtodo
Muller
de
the Secant Method is attempted with the same goal. If it fails as well, a Bisection Method
interpolacin
inversa.
step iscuadrtica
taken, guaranteeing
that the uncertainty is cut at least in half.
y

xIQI
x0

x2 x
M

x1

Figure 1.13 Comparison of Mullers Method step with Inverse Quadratic Iteration
step. The former is determined by an interpolating parabola y = p(x); the latter, by an
interpolating parabola x = p(y).

la

73/75

Si el error hacia atrs mejora y el intervalo de confinamiento de la solucin se


reduce al menos a la mitad, el punto obtenido reemplaza a uno de los tres
vigentes.

Si no se cumplen los requisitos anteriores, se intenta el mtodo de la secante


con el mismo objetivo. Si tambin falla, se realiza un paso del mtodo de la
biseccin.

74/75

Este mtodo lo usa fzero de Matlab. Una implementacin interesante es esta.


function value = Brent (a,b,machep,t,f)
% Se calcula un c en [a,b] tal que f(c)=0.
%
%
En [a,b] debe darse un cambio de signo en f(x).
%
La precisin de la raz es 6*machep*abs(c)+2*t.
%
sa = a; sb = b; fa = f(sa); fb = f(sb);
c = sa; fc = fa; e = sb-sa; d = e;
while 1
if abs(fc)<abs(fb), sa=sb; sb=c; c=sa; fa=fb; fb=fc; fc=fa; end
tol = 2.0*machep*abs(sb) + t;
m = 0.5*(c-sb);
if abs(m)<=tol || fb==0.0, break, end
if abs(e)<tol || abs(fa)<=abs(fb)
e = m; d = e;
% Biseccin, decrece poco
else
s = fb/fa;
if sa==c, p=2.0*m*s; q=1.0-s;
% Interpolacin lineal
else
q = fa/fc; r = fb/fc;
% Interpolacin cuadrtica
p = s*(2.0*m*q*(q-r)-(sb-sa)*(r-1.0)); %
inversa
q = (q-1.0)*(r-1.0)*(s-1.0);
end
if 0.0<p, q=-q;
else
p=-p;
end
s = e; e = d;
if 2.0*p<3.0*m*q-abs(tol*q) && p<abs(0.5*s*q)
d = p/q;
% Interpolacin aceptada
else
e = m; d = e;
% Biseccin
end
end
sa = sb; fa = fb;
% Completa paso

if tol<abs(d), sb=sb+d;
% Nuevo punto
elseif 0.0<m
sb = sb + tol;
else
sb = sb - tol;
end
fb = f(sb);
if (0.0<fb&&0.0<fc) || (fb<=0.0&&fc<=0.0)
c = sa; fc = fa; e = sb-sa; d = e;
end
end
value = sb;
end

75/75

Probemos Brent y fzero con el problema anterior x 3

>> f1=@(x) x^3-2*x^2+x*4/3-8/27;


>> tic, x=Brent(0,1,eps,eps,f1), toc
x =
0.666670143350873
Elapsed time is 0.000297 seconds.

>> tic, fzero(f1,[0 1],optimset(Display,iter)), toc


Func-count
x
f(x)
Procedure
2
1
0.037037
initial
3
0.888889
0.0109739
interpolation
4
0.843776
0.00555553
interpolation
5
0.798619
0.00229748
interpolation
6
0.798619
0.00229748
bisection
7
0.755766
0.00070733
interpolation
8
0.737384
0.000353658
interpolation
9
0.71944
0.000146977
interpolation
10
0.71944
0.000146977
bisection
11
0.702418
4.56958e-05
interpolation
12
0.695012
2.27741e-05
interpolation
13
0.687828
9.47672e-06
interpolation
14
0.687828
9.47672e-06
bisection
15
0.681016
2.95457e-06
interpolation
16
0.67804
1.47117e-06
interpolation
17
0.675159
6.124e-07
interpolation
18
0.675159
6.124e-07
bisection
19
0.672426
1.91084e-07
interpolation
20
0.671232
9.51209e-08
interpolation
21
0.670075
3.95999e-08
interpolation
22
0.670075
3.95999e-08
bisection
23
0.668979
1.23591e-08
interpolation
24
0.668499
6.15183e-09
interpolation
25
0.668035
2.56116e-09
interpolation
26
0.668035
2.56116e-09
bisection
27
0.667595
7.99392e-10
interpolation
28
0.667402
3.97894e-10
interpolation
29
0.667216
1.65654e-10
interpolation
30
0.667216
1.65654e-10
bisection

2x 2 C 34 x

31
0.667039
5.17053e-11
32
0.666962
2.5736e-11
33
0.666887
1.07147e-11
34
0.666887
1.07147e-11
35
0.666816
3.34444e-12
36
0.666785
1.66456e-12
37
0.666755
6.93112e-13
38
0.666755
6.93112e-13
39
0.666727
2.16271e-13
40
0.666714
1.07692e-13
41
0.666702
4.4964e-14
42
0.666702
4.4964e-14
43
0.666691
1.39888e-14
44
0.666686
6.99441e-15
45
0.666681
2.88658e-15
46
0.666681
2.88658e-15
47
0.666676
9.99201e-16
48
0.666674
3.33067e-16
49
0.666673
3.33067e-16
50
0.666673
3.33067e-16
51
0.66667 -1.11022e-16
52
0.666671
1.11022e-16
53
0.66667
0
Zero found in the interval [0, 1]
ans =
0.666670143350873
Elapsed time is 0.193985 seconds.

8
27

D 0.

interpolation
interpolation
interpolation
bisection
interpolation
interpolation
interpolation
bisection
interpolation
interpolation
interpolation
bisection
interpolation
interpolation
interpolation
bisection
interpolation
interpolation
interpolation
bisection
interpolation
interpolation
bisection

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Sistemas de ecuaciones lineales


Mtodos directos de resolucin

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_sistemas_ecuaciones_lineales_2016.pdf

1/136

2/136

ndice
 El problema y consideraciones tericas
 Mtodos directos: Eliminacin de Gauss


Pivotacin

Algoritmo

Nmero de operaciones

Mtodo de Gauss-Jordan

 Condicionamiento de sistemas de ecuaciones lineales


 Errores en la eliminacin de Gauss
 Matlab y los sistemas de ecuaciones lineales
 Factorizacin LU
 Solucin de sistemas modificados
 Refinamiento iterativo
 Sistemas con matrices especiales

3/136

El problema y sus aspectos tericos




Se trata de obtener la solucin de un sistema de ecuaciones lineales como


a11x1 C a12x2 C    C a1nxn D b1
a21x1 C a22x2 C    C a2nxn D b2
:::
:::
:::
:::
am1x1 C am2x2 C    C amnxn D bm:
Hay que obtener el valor del vector x D x1; : : : ; xnT que hace que se cumplan
simultneamente todas las igualdades.

Los nmeros aij son los coeficientes del sistema y b D b1; : : : ; bmT el trmino
independiente.

4/136

Si se introducen las matrices


2
3
a11 a12    a1n
6
7
6 a21 a22    a2n 7
A D 6 :: ::
::: 7 ;
4 : :
5
am1 am2    amn

2 3
x1
6 7
6x 7
x D 6 ::2 7
4:5
xn

b1
6 7
6b 7
y b D 6 ::2 7 ;
4 : 5
xm

el sistema se puede representar de forma ms compacta por

Ax D b:


En general A 2 Rmn, x 2 Rn y b 2 Rm, pero tambin pueden pertenecer al


cuerpo de los nmeros complejos.

 Casos posibles de sistemas lineales, una vez ms

m = n de ecuaciones lineales:
Casos posibles de sistemas
m=n

m=n
m=n

rango(A) = m = n

rango(A) = m = n

m=n

rango(A) < n < m


rango(A) < n < m

rango(A) < m = n

rango(A) = m = n

rango(A) < m = n

1a

1b

1a

m>n

1b

m>n

m>n

rango(A) = n < m

rango(A) = n < m

m>n
m>n

m>n

rango(A) = n < m

rango(A) < n < m

2a

2b

2a

2b

m<n

m<n
rango(A) = m < n

m<n

rango(A) = m < n
rango(A) = m < n

3a

3a

5/136

m<n

m<n

rango(A) < m < n

rango(A) < m < n

m<n

rango(A) < m < n

3b

3b

5/101

6/136

Recordemos algunos resultados de la teora de lgebra lineal.


Teorema Compatibilidad de un sistema de ecuaciones lineales La ecuacin Ax D b
admite solucin si y slo si

rango.Ajb/ D rango.A/.

Corolario Si A mn tiene rango m, Ax D b siempre tiene solucin.


Teorema Si x 0 es una solucin de Ax D b, el conjunto de soluciones de la ecuacin
est dado por x 0 C ker.A/.

Corolario Una solucin de Ax D b es nica si y slo si ker.A/ D ;.

7/136

Teorema La ecuacin Ax D 0, A mn, n > m, siempre tiene una solucin no trivial.


Teorema Si A es una matriz cuadrada de orden n, las siguientes condiciones son
equivalentes:
1. rango.A/ D n.
2. ker.A/ D ;.

3. Los vectores columna de A son linealmente independientes.


4. Los vectores fila de A son linealmente independientes.
5. Existe una matriz de orden n, A 1 , tal que A 1 A D AA

DI

8/136

Objective: Find the temperature of an integrated circuit (IC)


Ejemplo Hay que modelizar el sistema de refrigeracin de una tarjeta
package mounted on a heat spreader. The system of equations is
electrnica para poder usar un reloj de impulsos con la mayor frecuencia de
obtained from a thermal resistive network model.
oscilacin posible.

Simplificadamente,
y matemtico deModel:
la figura en el
Physicaladoptamos
Model: el modelo fsico Mathematical
que se esquematiza un tiristor o un transistor montado en una placa disipadora
de calor.
aire
Q1
Qc

Tw

temperatura exterior Ta

R2

Q3
Tp

Q2

R3
a

Q4

R4
a

Q5

R5
a

9/136

Si el sistema necesita Qc watios de potencia y se supone un modelo resistivo del


flujo de aire entre los nudos del sistema, aplicando los principios de conservacin
de la energa se obtienen estas ecuaciones:
Q1 D

1
.Tc
R1

Tp /

Q4 D

1
.Tp
R4

Ta /

Q c D Q1 C Q3

Q2 D

1
.Tp
R2

Tw /

Q2 D

1
.Tw
R5

Ta /

Q1 D Q2 C Q4

Q3 D

1
.Tc
R3

Ta /

Se conocen Qc y Ta . Las resistencias se pueden conocer sabiendo el material de


las placas y sus propiedades.

Las incgnitas son entonces Q1, Q2, Q3, Q4, Tc , Tp y Tw .

Como hay siete ecuaciones, reagrupando las ecuaciones para aislar las incgnitas:

10/136

R1 Q1 Tc C T9
R2 Q2 Tp C Tw
R3 Q3 Tc
R4 Q4 Tp
R5 Q2 Tw
Q1 C Q3
Q1 Q2 Q4

En forma matricial, el sistema tiene la siguiente expresin:


2
32 3 2 3
R1 0 0 0
6 0 R2 0 0
6 0 0 R3 0
6 0 0 0 R4
6 0R 0 0
5
4
1 0 1 0
1 1 0 1

D0
D0
D Ta
D Ta
D Ta
D Qc
D 0:

1
0
1
0
0
0
0

1
1
0
1
0
0
0

0
Q1
17 6Q2 7
07 6Q3 7
07 6Q4 7
76 7
15 4 Tc 5
0
Tp
0
Tw

0
6 0 7
6 Ta 7
6 Ta 7
6 T7
4 a5
Qc
0

Los flujos de calor se obtendrn resolviendo este sistema.

En Matlab, si R1 D 100, R2 D 200, R3 D 50, R4 D 100, R5 D 300,


Ta D 50 y Qc D 25, en su zona de trabajo habra que hacer esto:
A=[100 0 0 0 -1 1 0; 0 200 0 0 0 -1 1; 0 0 50 0 -1 0 0;...
0 0 0 100 0 -1 0; 0 300 0 0 0 0 -1; 1 0 1 0 0 0 0;1 -1 0 -1 0 0 0]
A =
100
0
0
0
0
1
1

0
200
0
0
300
0
-1

0
0
50
0
0
1
0

0
0
0
100
0
0
-1

b=[0;0;-50;-50;-50;25;0]
b =
0
0
-50
-50
-50
25
0

>> x=A\b
x =
1.0e+003 *
0.00535714285714
0.00089285714286
0.01964285714286
0.00446428571429
1.03214285714286
0.49642857142857
0.31785714285714

-1
0
-1
0
0
0
0

1
-1
0
-1
0
0
0

0
1
0
0
-1
0
0

11/136

Analicemos geomtricamente el problema de resolver un sistema de dos


ecuaciones lineales con dos incgnitas:

12/136

a11x1 C a12x2 D b1
a21x1 C a22x2 D b2:


Cada una de las ecuaciones que componen el sistema representa una recta
en el espacio eucldeo de dimensin dos.
x2
a11 x 1 + a12 x 2 = b1

a21 x 1 + a22 x 2 = b2
x1

El proceso de obtener la solucin del sistema tiene como objeto determinar


las coordenadas del punto donde se cortan.

13/136

Expresin grfica de diversas formas que pueden adoptar los sistemas de


ecuaciones lineales.

Generalizando a Rn, la resolucin de un sistema de ecuaciones lineales consiste


en determinar las coordenadas
del(os) punto(s) de interseccin de los
www.FreeLibros.me
hiperplanos asociados a cada una de las ecuaciones.

x3 D

En R , por ejemplo, el sistema


2x2 C x3 D
2x2 8x3 D
4x1 C 5x2 C 9x3 D
x1

tiene por solucin, nica, x D 29; 16; 3T .

0
8
9

14/136
1RZ KDYLQJFOHDQHGRXWWKHFROXPQDERYH
HTXDWLRQDQGXVHLWWRHOLPLQDWHWKH "2x2
x3  WKHUHLVQRZQRDULWKPHWLFLQYROYLQJ x3
DQGREWDLQWKHV\VWHP
8

D 29
<x1
D 16
x2

:
x3 D 3

7KHZRUNLVHVVHQWLDOO\GRQH ,WVKRZVWKD
.29; 16; 3/ +RZHYHU VLQFHWKHUHDUHVRPDQ
WRFKHFNWKHZRUN 7RYHULI\WKDW .29; 16;
WKHOHIWVLGHRIWKHRULJLQDOV\VWHP DQGFRP
(29, 16, 3)

(DFKRIWKHRULJLQDOHTXDWLRQV
GHWHUPLQHVDSODQHLQWKUHH
GLPHQVLRQDOVSDFH 7KHSRLQW
.29; 16; 3/ OLHVLQDOOWKUHHSODQHV

.29/ " 2.16/ C .3/ D


2.16/ " 8.3/ D
"4.29/ C 5.16/ C 9.3/ D

7KHUHVXOWVDJUHHZLWKWKHULJKWVLGHRIWKH
RIWKHV\VWHP

El punto x D 29; 16; 3 est en los tres planos que definen las ecuaciones del
([DPSOHLOOXVWUDWHVKRZRSHUDWLRQVR
sistema.
>> A=[1 -2 1;0 2 -8;-4 5 9];
>> b=[0;8;-9];
>> A\b
ans =
29
16
3

RSHUDWLRQVRQWKHDSSURSULDWHURZVRIWKHDX
OLVWHGHDUOLHUFRUUHVSRQGWRWKHIROORZLQJRS

&-&.&/5"3: 308 01&3"5*0/4


 5HSODFHPHQW 5HSODFHRQHURZE\W
URZ

15/136

Geomtricamente, en el subespacio Im.A/, si se escribe el sistema de dos


ecuaciones con dos incgnitas de la forma
 
 
 
a11
a12
b
x1 C
x2 D 1 ;
a21
a22
b2
el problema es el de descomponer linealmente el vector b en los dos vectores
columna de la matriz de coeficientes.
 
b1
b2


a11
a21




a12
a22

En Rn el problema es el de la bsqueda de la descomposicin lineal de un vector


segn los n vectores de la base de Im.A/: los vectores columna de A.

16/136

ndice
 El problema; consideraciones tericas


Mtodos directos. Eliminacin de Gauss

 Condicionamiento de sistemas de ecuaciones lineales


 Errores en la eliminacin de Gauss
 Matlab y los sistemas de ecuaciones lineales
 Factorizacin LU
 Solucin de sistemas modificados
 Refinamiento iterativo
 Sistemas con matrices especiales

17/136

Mtodos directos. Eliminacin de Gauss




Los mtodos directos resuelven el problema en etapas, siendo el nmero de


stas fijo y funcin de la dimensin del problema.

El ms clsico es el debido a Gauss, quien lo aplic por primera vez en 1809 con
motivo de unos estudios sobre rbitas de cuerpos celestes.

Carl Friedrich Gauss, Alemania, 1777-1855

Supondremos que la matriz cuadrada A es de rango completo regular, por lo


tanto invertible, y que si eventualmente no lo es el procedimiento deber
detectarlo.

18/136

La mecnica del mtodo consiste en aplicar al sistema


9
a11x1 C a12x2 C    C a1nxn D b1 >
>
>
=
a21x1 C a22x2 C    C a2nxn D b2
:::
:::
:::
::: > Ax D b
>
>
an1x1 C an2x2 C    C annxn D bn ;
n

1 transformaciones lineales que lo conviertan en otro ms fcil de resolver.

Concretamente, en uno triangular superior de la forma


b10
b20

9
=

u11x1 C u12x2 C    C u1nxn D


u22x2 C    C u2nxn D
:::
:::
;
0
unnxn D bn;

U x D b0:

19/136

Un sistema triangular superior, siempre y cuando se satisfaga que


ui i 0;

i D 1; : : : ; n;

es fcilmente resoluble de manera recurrente mediante las frmulas


!
n
X
1
0
uki xi ;
k D 1; : : : ; n:
xk D
b
ukk k
i DkC1

Este proceso se conoce como sustitucin inversa.

20/136

En cada una de esas n


hay que llevar a cabo:

1 etapas, con otras tantas transformaciones lineales,

1. Una multiplicacin de una de las ecuaciones del sistema por un nmero


distinto de cero.
2. Una sustitucin de una ecuacin del sistema (o varias) por la que resulta de
sumarle otra multiplicada por un factor.
3. Una posible permutacin del orden en que aparecen en el sistema las
ecuaciones del mismo.

21/136

Ejemplo Se desea resolver el sistema


2x1 C x2
C 4x4 D
4x1 2x2 C 3x3 7x4 D
4x1 C x2
2x3 C 8x4 D
3x2 12x3
x4 D

Escrito en forma matricial,


2
2 1
6
6 4 2
AD6
4 4 1
0 3

2
9
2
2:

Ax D b, los distintos componentes son


2 3
2 3
3
x1
2
0 4
6 7
7
6 7
3 77
6x27
6 97
7; b D 6 7 y x D 6 7:
2 85
4x35
4 25
x4
12 1
2

22/136

Reconfiguremos inicialmente la matriz A, aadindole a su derecha la columna


b es decir,
del trmino independiente b, y llamemos a la nueva matriz A;
2
3
2 1 0 4 2
6
7
4
2
3
7
9
6
7
b D Ajb D 6
A
7:
4 4 1 2 8 25
0 3 12 1 2
Apliquemos ahora la mecnica del mtodo en 3 etapas.

Etapa 1


Comprobemos el valor del coeficiente aO 11 denominado pivote.


Si es distinto de cero, pivotando sobre l, hagamos cero los coeficientes de la
primera columna por debajo de ese aO 11.

Para ello, calculamos para cada fila 2; : : : ; n los factores o multiplicadores


ri D

i D 2; : : : ; n:

A continuacin, restamos de las filas i D 2; : : : ; n, la primera multiplicada por


ri . El resultado es que todos los coeficientes debajo de la diagonal principal de
la columna 1 se anularn.


b debajo de la primera fila se vern afectados


Los dems coeficientes de A
como indica esta expresin:

aO ij

aO i1
;
aO 11

23/136

aO ij

ri  aO 1j ;

i D 2; : : : ; nI j D 2; : : : ; n C 1:

En el ejemplo, los multiplicadores son


r2 D aO 21=aO 11 D 4=2 D 2
r3 D aO 31=aO 11 D 4=2 D 2
r4 D aO 41=aO 11 D 0=2 D 0:

24/136

b que cambian de valor son:


Los coeficientes de la matriz A
en la 2a fila:

en la 3a fila:

en la 4a fila:

aO 21
aO 22
aO 23
aO 24
aO 25
aO 31
aO 32
aO 33
aO 34
aO 35
aO 41
aO 42
aO 43
aO 44
aO 45

0
aO 22
aO 23
aO 24
aO 25
0
aO 32
aO 33
aO 34
aO 35
0
aO 42
aO 43
aO 44
aO 45

r2  aO 12
r2  aO 13
r2  aO 14
r2  aO 15

D
D
D
D

2C21D
3C20D
7C24D
9C22D

0
3
1
5I

r3  aO 12
r3  aO 13
r3  aO 14
r3  aO 15

D
D
D
D

1
2
8
2

21D
20D
24D
22D

1
2
0
2I

r3  aO 12
r4  aO 13
r4  aO 14
r4  aO 15

D
D
D
D

3
12
1
2

01D
00D
04D
02D

3
12
1
2:

b 1 , resultado de transformar A,
b es:
La nueva matriz A
2
3
2
0
b1 D 6
A
40
0

1
0
1
3

0
3
2
12

4
1
0
1

25/136

2
57
:
25
2

Obsrvese que se hubiese obtenido exactamente el mismo resultado de haber


b por la denominada transformacin de Gauss que define la
premultiplicado A
matriz triangular inferior unitaria
2
3
1000
6
7
6 2 1 0 07
L1 D 6
7;
4 2 0 1 05
0001
denominada matriz de transformacin de Gauss.

En efecto,

1
6 2
L1b
AD4
2
0

0
1
0
0

0
0
1
0

32
0
07 6
05 4
1

2
4
4
0

1
2
1
3

0
3
2
12

4
7
8
1

3 2
2
2
97 6 0
D
25 4 0
2
0

1
0
1
3

0
3
2
12

4
1
0
1

3
2
57
.
25
2

La matriz L1 tambin se puede escribir de la forma L1 D I

Su inversa es

2 3
1
607
7
y e1 D 6
405 :
0

3
0
6 27
7
D6
4 25
0
2

L1 1

e T1 , donde

26/136

1000
6
7
6 2 1 0 07
D6
7:
4 2 0 1 05
0001

La nica diferencia con L1 es el signo de los coeficientes de la primera columna


debajo de la diagonal principal.


b 1 D L1 A.
b
En resumen, A

27/136

Etapa 2


Hagamos cero los coeficientes debajo de la diagonal principal de la 2a columna


b 1.
de A

1
es cero, lo que nos
Al tratar de hacerlo, vemos que el coeficiente pivote aO 22
impide proceder como en la etapa anterior.

1
Comprobemos si algn coeficiente de la columna 2 por debajo de aO 22
no es 0:


Si no hay ninguno, esta columna es combinacin lineal de la primera y por


tanto la matriz es singular.

Si hay varios, escojamos el de mayor valor absoluto e intercambiemos la fila


de ese coeficiente con la segunda.

28/136

En el ejemplo, el coeficiente de mayor valor absoluto debajo de la diagonal


principal en la segunda columna, 3, se encuentra en la fila 4. Intercambiamos
esa fila 4 con la 2. Se obtendr
3
2
2 1 0 4 2
7
6
60 3 12 1 27
0
b
A1 D 6
7:
40 1 2 0 25
0 0 3 1 5
b 1 por la permutacin
Esto mismo se obtiene premultiplicando A
2
3
1000
6
7
60 0 0 17
P1 D 6
7:
40 0 1 05
0100

b 0 , es:
 Recapitulemos: la matriz con la que vamos a operar a continuacin, A
1

29/136

b
b 0 D P 1 L1 A:
A
1

Apliquemos a continuacin a la columna 2 la misma idea que a la columna 1 y


hagamos cero sus coeficientes 3 a n.

Los nuevos multiplicadores saldrn de la expresin


0

1
aO i2
ri D 10 ;
aO 22

i D 3; 4:

b 0 por debajo de la segunda


Los nuevos valores de los coeficientes de la matriz A
1
fila se obtendrn aplicando la expresin
0

aO ij1

aO ij1

1
ri  aO 2j
;

i D 3; 4I j D 3; : : : ; 5:

30/136

Los valores de los multiplicadores para el ejemplo son


0

1
1
r3 D aO 32
=aO 22
D 1=3 y

1
1
r4 D aO 42
=aO 22
D

b 0 resultante:
Los nuevos coeficientes de la matriz A
1
en la 3a fila:

en la 4a fila:

0:

1
aO 32
10
aO 33
10
aO 34
10
aO 35
0

1
aO 42
10
aO 43
10
aO 44
10
aO 45

0
10
aO 33
10
aO 34
10
aO 35

1
r3  aO 23
D
0
1
r3  aO 24
D
0
1
r3  aO 25
D

0
10
aO 43
10
aO 44
10
aO 45

1
r4  aO 23
D
0
1
r4  aO 24
D
10
r4  aO 25 D

2C
0C
2

1
3
1
3
1
3

 12 D
1 D
2 D

2
1=3
8=3I

3
1
5

0  12 D
01 D
02 D

3
1
5:

Al ser r4 D 0, los clculos para adaptar la cuarta fila podran haberse evitado.

31/136

La nueva matriz resultado de estas


2
2
6
60
b
A2 D 6
40
0

transformaciones es
3
2
1 0 4
7
3 12 1
27
7;
0 2 1=3 8=35
5
0 3 1

matriz que se expresa a partir de la inicial como


2
3
1
000
6
7
1 0 07
60
donde L2 D 6
7:
40 1=3 1 05
0
001

b 2 D L2 P 1 L1 A;
b
A

32/136

Etapa 3


Para conseguir transformar el sistema original en uno triangular superior slo


2
resta anular el coeficiente aO 43
.

2
es distinto de cero, luego procedemos
El coeficiente de la diagonal principal aO 33
a calcular el multiplicador r4:
2
2
r4 D aO 43
=aO 33
D 3=2:

b 2 por debajo de la tercera


Los nuevos valores de los coeficientes de la matriz A
fila se obtendrn aplicando la expresin

aO ij2

aO ij2

2
ri  aO 3j
;

i D 4I j D 4; 5:

33/136

En concreto, en la cuarta fila:


2
aO 43
2
aO 44
2
aO 45

0
2
aO 44
2
aO 45

2
r4  aO 34
D 1 23  13 D 1=2
2
r4  aO 35
D 5 C 32  83 D 1:

La nueva matriz resultado de estas


2
2
6
0
b3 D 6
A
6
40
0

transformaciones es
3
1 0 4
2
7
3 12 1
27
7:
0 2 1=3 8=35
0 0 1=2
1

34/136

b una serie
A este resultado se ha llegado despus de aplicar a la matriz inicial A
de transformaciones; concretamente:

donde

b 3 D L3 L2 P 1 L1 A;
b
A

2
3
10 0 0
6
7
60 1 0 07
L3 D 6
7:
40 0 1 05
0 0 3=2 1

En conclusin, la matriz original que defina el sistema, A, se puede transformar


b
en la triangular superior U aplicndole las mismas transformaciones que a A.
Es decir,
U D L3L2P 1L1A:

35/136

Como a b tambin se le han efectuado las mismas transformaciones llegndose


a b0, resolver el sistema de ecuaciones original es equivalente a resolver
U x D b0

En el ejemplo,

2
2
6
60
6
40
0

1
3
0
0

32 3 2
3
0 4
x1
2
76 7 6
7
12 17 6x27 6
27
76 7 D 6
7:
2 1=35 4x35 4 8=35
0 1=2
x4
1

36/136

La solucin se lleva a cabo mediante sustitucin inversa:


x4 D

2;

sustituyendo en la tercera ecuacin,


x3 D

8=3

. 2/.1=3/
D
2

1;

y, a su vez, hacindolo en la segunda,


x2 D


. 1/. 2/

. 12/. 1/
3

D 4:

Por ltimo, sustituyendo los valores de las variables ya calculados en la primera


ecuacin se obtiene
2 4. 2/ 1.4/
x1 D
D 3:
2

37/136

La solucin de nuestro ejemplo es pues


2 3 2
x1
6 7 6
6x27 6
6 7D6
4x35 4
x4

3
7
47
7:
15
2

38/136

Pivotacin


Veamos qu ocurre si resolvemos con el procedimiento estudiado



  
 
4
10 1
x1
1
D
;
1 1
x2
2

en una mquina terica con slo tres dgitos significativos que redondea.


Aplicando la mecnica apuntada, como 10 4 no es cero, en una primera etapa


ordinaria se obtendra una nueva matriz A 1 y un nuevo vector b1 as:




4
10
1
1
A1 D
y
b
D
:
1
0 1 104
2 104

39/136

Ahora bien, el nmero 1 104 D 9999 la mquina lo redondeara a


la misma forma procedera con 2 104. La solucin del sistema sera

104; de

104
D1
x2 D
104
1 x2
x1 D
D 0;
10 4
muy distinta de la real 0;99989999; 1;00010001T .


La eleccin del pivote, y su uso, adems de que el multiplicador no salga de un


posible ai i D 0, tambin tiene por objeto que ese multiplicador no tenga una
magnitud mucho mayor que 1 con el fin de aumentar la estabilidad numrica del
procedimiento,


Es por esto por lo que siempre se escoge el coeficiente pivote de mayor


magnitud de entre los de debajo de la diagonal principal.

40/136

Para el caso de este ltimo ejemplo, en la primera etapa en vez de operar sobre
la matriz anterior, como el valor absoluto del coeficiente a21 es mayor que el del
a11, se intercambiara la fila 1 con la 2, obtenindose


 
1
1
2
0
A0 D
y
b
D
:
10 4 1
1

Continuando con el procedimiento normal, despus de la primera etapa, se


llegar a




1
1
2
A 01 D
y b01 D
:
4
0 1 10
1 2  10 4
Por redondeos internos, la mquina representara
 
 
1
1
2
A 01 D
y b01 D
:
01
1

La solucin de este sistema de ecuaciones sera


   
x1
1
D
:
x2
1

41/136

0,9998
D 0,99989999
0,9999
x1 D 1,00010001:

Solucin mucho mejor que la anterior, pues la real es x2 D

La diferencia entre las dos formas de proceder anteriores es importante. En la


primera, al usar el multiplicador 104, el efecto de restar 104 veces la ecuacin
superior de la ecuacin inferior hace que la primera domine la ecuacin final.

Aunque al principio del proceso haba dos ecuaciones, o fuentes de informacin


independientes, actuando de la primera manera, despus de la primera
eliminacin quedan en esencia dos copias de la ecuacin superior pues la
inferior, a efectos prcticos, ha desaparecido. La solucin obtenida con esa
primera forma de actuar, como es lgico, no satisface la ecuacin inferior.
A este efecto se le conoce como dominancia.

42/136

El proceso descrito de intercambiar filas se denomina pivotacin parcial.

Su por qu radica en la aritmtica de precisin finita con la que trabajan todos


los ordenadores y en el hecho de que los factores o multiplicadores antes
introducidos son inversamente proporcionales al coeficiente pivote: si ste es
demasiado pequeo puede amplificar los errores de redondeo a lo largo del
proceso de solucin y favorecer la dominancia que se ha descrito.

Partial Pivoting

43/136

Una segunda estrategia de pivotacin es la pivotacin total. Consiste en buscar


en una etapa i no slo el coeficiente de mayor valor absoluto
en la columna
Full Pivoting
correspondiente,
en bytodo
que
porthetratar
de la matriz: el
To avoidsino
division
zero, lo
swap
thequeda
row having
zero pivot
with onejaof the
rows below it.
mKaxi kn; ij
n kj j.
Rows completed in
forward elimination.
0

Rows completed in
forward elimination.

Row with zero pivot


0 element

Rows to search for a


more favorable pivot
*
element.

Row with zero pivot eleme

Rows to search for a


more favorable pivot
element.

Columns to search for a more


favorable pivot element.

To minimize the eect of roundo, always choose the row that

La pivotacin
es lapivot
estrategia
parai.e.,minimizar
putstotal
the largest
element onptima
the diagonal,
nd ip sucherrores.

En la prctica, la pivotacin parcial produce buenos resultados y excelentes


prestaciones numricas por lo que rara vez se usa la total.

that |aip,i| = max(|ak,i |) for k = i, . . . , n

44/136

Algoritmo
 Resolucin de Ax D b

 Transformacin de la Matriz Aumentada Ajb


for i D 1 to n 1
Determinar ndice p 2 fi; i C 1; : : : ; ng tal que ja.p; i /j D mKaxi j n ja.j; i /j.
Intercambiar filas p e i .
for j D i C 1 to n
 D a.j; i /=a.i; i /
for k D i C 1 to n C 1
a.j; k/
a.j; k/   a.i; k/

end
end
end
 Sustitucin Inversa.
for j D n to01

x.j /

end

@b.j /

n
X

kDj C1

a.j; k/  x.k/A

a.j; j /

45/136

En cdigo de Matlab, para cualquier sistema.

function [x]=Gauss(A,b)
% Solucin de Ax=b mediante eliminacin de Gauss
n=size(A,1); x=zeros(n,1);
for i=1:n-1
% Transformacin matriz A en n-1 etapas
[p maxk]=max(abs(A(i:n,i)));
maxk=maxk+i-1;
if i~=maxk
A([i maxk],:)=A([maxk i],:);
b([i maxk]) =b([maxk i]);
end
j=i+1:n;
A(j,i)=A(j,i)/A(i,i);
A(j,j)=A(j,j)-A(j,i)*A(i,j);
b(j)=b(j)-b(i)*A(j,i);
end
for i=n:-1:1
% Sustitucin inversa
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end
end

46/136

Desde el punto de vista de la codificacin del algoritmo, conviene mejorar:




Que no es realmente necesario intercambiar las filas una vez elegido el


coeficiente pivote de cada etapa; basta con tener constancia en cada
momento dnde estn las filas que se intercambian.

Que tal como est estructurado el programa slo se podra resolver un


sistema el definido por el b dado y no, como es lo ms habitual, distintos
sistemas con la misma matriz A y diversos trminos independientes.

Lo primero se puede paliar mediante la introduccin de vector ndice, IPIV, de


dimensin el nmero de ecuaciones, inicializado a la posicin inicial en el
sistema de cada una de las ecuaciones; es decir,
2 3

47/136

1
627
6 7
IPIV D 63 7 :
4 ::: 5
n

Cuando haya que intercambiar dos filas en un etapa, no se har intercambiando


fsicamente los coeficientes de esas dos filas, sino las correspondientes de IPIV.

Si en una primera etapa hay se utilizar como pivote el de la cuarta fila,


2 3
4
627
6 7
637
IPIV D 61 7 :
6:7
4 :: 5
n

48/136

Si al final de un proceso de resolucin de un sistema de cinco ecuaciones con


cinco incgnitas, el vector puntero resultase
2 3
4
627
6 7
IPIV D 657 ;
415
3

la matriz A 0 que se obtendra no resultara ser estrictamente triangular superior.


Tendra la forma que sigue.

Para obtener Ax D b habra que aplicar esas mismas manipulaciones de filas a


b, o tenerlo en cuenta.

Para evitar el segundo inconveniente, habra que guardar adecuadamente la


informacin que definen los multiplicadores asociados a cada fila de cada etapa.

49/136

Los i 1 multiplicadores se pueden guardar en los lugares vacos o mejor


dicho, que se hacen cero que provocan las transformaciones que definen:
en la etapa i , debajo de la diagonal principal en la columna i .

En el ejemplo, con esta idea, al final del proceso:


2

6
6
AD6
4

Los multiplicadores eran

Ojo, verifiquemos:

3
2 1
0 4
7
2 3 12 17
7:
2 1=3
2 1=35
0 0 3=2 1=2

2, 2, 1=3 y 3=2.
>> I=eye(4); L1=I; L2=I; L3=I;
>> L1(2:3,1)=[-2 2]; L2(3,2)=1/3; L3(4,3)=3/2; P=I([1 4 3 2],:);
>> U=[2 1 0 4;0 -3 -12 -1;0 0 2 1/3; 0 0 0 1/2];
>> L=L1*P*L2*L3; L*U, A
ans =
2
1
0
4
-4
-2
3
-7
4
1
-2
8
0
-3
-12
-1
A =
2
1
0
4
-4
-2
3
-7
4
1
-2
8
0
-3
-12
-1

50/136

Nmero de operaciones del mtodo




Dos de los factores ms importantes que influyen en las prestaciones de un


algoritmo son:


Su estabilidad numrica ante los diversos errores.

La cantidad de tiempo necesaria para completar los clculos que conlleva.

Ambos factores dependen del nmero de operaciones aritmticas necesarias para


la aplicacin del algoritmo.

Los tiempos necesarios para realizar en un ordenador la multiplicacin y la


divisin de dos nmeros son aproximadamente iguales y considerablemente
mayores, en trminos relativos, que los requeridos para realizar la suma o
diferencia, que tambin son muy semejantes entre s.

51/136

La eliminacin de Gauss para resolver un sistema de ecuaciones lineales, en la


primera etapa, realiza las operaciones que se representan simblicamente en el
esquema que sigue.


     

0 2222
:: ::
:: :: :: ! :: ::
:: :: ::

0 2222

0 2222


El smbolo 2 designa los coeficientes de la matriz que se ven afectados en esa


etapa y que, en principio, son distintos de cero.

52/136

Si en la etapa i se est transformando una matriz n  n, las operaciones que en


ella se realizan son:
n
.n

divisiones para el clculo de los multiplicadores;


i C 1/ multiplicaciones y restas para modificar los coeficientes
de la matriz por debajo de la fila i que no estn en la
propia columna i.

i /.n

En cada etapa se efectan,


.n

i / C .n

i /.n

i C 1/ D .n

multiplicaciones y divisiones y
.n
sumas y restas.

i /.n

i C 1/

i /.n

i C 2/

En n

1 etapas de que consta el proceso, se harn


n 1
X
.n

i /.n

i D1

i C 2/ D .n C 2n/

n 1
X

i D1

D .n2 C 2n/.n

1/

.n

1/n.2n
C
6
2n3 C 3n2 5n
D
6

53/136

2.n C 1/

n 1
X
i D1

2.n C 1/

iC

.n

n 1
X

i2

i D1

1/n
2

1/

multiplicaciones y divisiones y
n 1
X
i D1

.n

i /.n

i C 1/ D .n C n/

n 1
X
i D1

D .n2 C n/.n
C
D

sumas y restas.

.n

n3

n
3

1
1/

1/n.2n
6

.2n C 1/

n 1
X
iD1

.2n C 1/
1/

iC

.n

n 1
X
i D1

1/n
2

i2

54/136

El comportamiento de estos valores para n grande tiende a


1 3
n.
3

El proceso de sustitucin inversa requiere .n i / multiplicaciones y .n


sumas, para cada trmino del sumatorio, y una resta y una divisin.


El nmero total de operaciones de todo el proceso es


1C

n 1
X

..n

i D1

n2 C n
i / C 1/ D
2

multiplicaciones y divisiones y
n 1
X
i D1

sumas y restas.

..n

1/ C 1/ D

n2

n
2

1/

55/136

Contando la totalidad de la transformacin de la matriz del sistema y la


sustitucin inversa, la eliminacin de Gauss requiere
2n3 C 3n2
6

5n

n2 C n
n3 C 2n2
C
D
2
3

multiplicaciones y divisiones y
n3

n
3

n2

n
2

2n3 C 3n2
D
6

5n

sumas y restas.


Para valores de n, estas expresiones tienden a


1 3
n  O.n3=3/
3
lo que refleja la importante magnitud del nmero de operaciones.

Aunque la cantidad n3=3 puede parecer muy grande, recordemos las frmulas de
Cramer para la solucin de sistemas:
2
3
a11    a1i 1 b1 a1iC1    a1n
6
7
det.B i /
6a21    a2i 1 b2 a2i C1    a2n 7
xi D
; donde B i D 6 ::
::: :::
:::
::: 7 :
4 :
5
det.A/
an1    ani 1 bn ani C1    ann

56/136

Mediante estas frmulas se requieren:


8
< .n C 1/ sumas,
.n C 2/ multiplicaciones y
:
n
divisiones.

Para diez ecuaciones con diez incgnitas se requerirn:


8
740 operaciones utilizando eliminacin de Gauss.
<
500.000.000 operaciones, aproximadamente, aplicando
:
las frmulas de Cramer.

57/136

Mtodo de Gauss-Jordan

Wilhelm Jordan, Alemania, 1842-1899.

Es una extensin natural de la eliminacin de Gauss para obtener A 1. Consiste


en hacer cero de cada columna de A no slo los coeficientes que estn debajo
de la diagonal sino tambin los de arriba.

Una etapa i de la eliminacin de Gauss estaba caracterizada por la matriz


Li D I
donde

0
::
:

7
6
6
7
6 i
i 7
i D 6ai C1 i =ai i 7
6
7
::
4
5
:
i
ani
=aii i

fila i C 1

i e Ti ;
2 3
0
6 ::: 7
6 7
6 7
y e i D 617
6:7
4 :: 5
0

fila i :

58/136

En la etapa i de este mtodo, la matriz de transformacin de Gauss-Jordan es


Ti D I
donde

3
i
a1i
=aii i
6 ::: 7
6
7
6
i 7
i D 6 1=ai i 7
6 : 7
4 :: 5
i
ani
=aii i

2 3
0
6 ::: 7
6 7
6 7
y e i D 617
6:7
4 :: 5
0

fila i :

Si se tiene en cuenta que A 0 D A y A n D I, se tendr que


Tn
y por tanto A

fila i

i e Ti ;

D Tn

1    T 2T 1A

D I;

1    T 2T 1:

Las multiplicaciones y divisiones, y sumas y restas, son O.n3=2/ .

Condicionamiento de sistemas

59/136

En un sentido general se dice que un problema o un algoritmo est bien


condicionado si pequeas perturbaciones en los parmetros que lo definen
producen pequeos cambios en los resultados.

Consideremos el ejemplo de una carga sujeta a una superficie firme mediante un


cable o una barra de hierro.


Aumentando la carga en pequeas cantidades el cable sufre unos pequeos


estiramientos proporcionales a los incrementos de esa carga.

Alcanzado el umbral de la zona de fluencia del material del cable,


incrementos muy pequeos de la carga suponen, proporcionalmente, grandes
estiramientos del cable.

Antes de este umbral, el problema estiramiento/carga se puede decir que


est bien condicionado; en la zona de fluencia el problema est mal
condicionado.

60/136

El condicionamiento de un sistema de ecuaciones lineales Ax D b lo


caracterizar la sensibilidad del vector solucin x a pequeos cambios, tanto en
el trmino de la derecha b, como en los coeficientes que definen la matriz A.

Como sabemos, el ordenador o mquina que resuelve Ax D b, al no trabajar


ms que con una precisin determinada, resolver una aproximacin
.A C A/x D b C b:


Si el algoritmo utilizado es estable y el sistema tambin, el resultado


obtenido debe ser muy parecido al real.

Si el sistema est mal condicionado, sin embargo, o el algoritmo no es


numricamente estable, la solucin puede diferir sustancialmente de la real.

61/136

Ejemplo Consideremos los dos sistemas de ecuaciones lineales



   
3
8 5 x1
Ax D b !
D
4 10 x2
14
y


   
0;66
3;34
xO 1
4
b xO D bO !
A
D
:
1;99 10;01 xO 2
12

La solucin de ambos es el vector 1; 1T .




Si introducimos una perturbacin b D 0,04; 0,06T en el trmino


independiente del primer sistema, su solucin pasar a ser 0,993; 0,9968T .

62/136

El cambio relativo en la norma eucldea del vector b es


kbk2
D
kbk2

0;042 C 0;062
q

32 C 142

 0,0050:

Por lo que respecta al vector solucin, ese cambio relativo en la norma eucldea
es
q
.1 0;993/2 C .1 0;9968/2
kxk2
q
D
 0;0054:
kxk2
2
2
1 C1

Como se puede ver, un pequeo cambio en el vector b induce un cambio


pequeo en el vector solucin.

63/136

Introduciendo el mismo cambio bO D 0,04; 0,06T en el trmino


O su solucin pasa a ser 6; 0T .
independiente del segundo sistema, b,
Es decir, un cambio relativo en la norma eucldea de bO igual a
q

0;042 C 0;062
q

42 C 122

D 0,0057;

produce un cambio en el vector solucin igual a:


q

52 C 12
2

1 C1

D 3,6055:

Evidentemente, el segundo sistema es mucho ms sensible a cambios en el


trmino independiente que el primero.

64/136

x2

x2

x1

x1

La figura representa a la izquierda el primer sistema; el segundo a la derecha.




Como se aprecia las dos rectas que representan las ecuaciones del primer
sistema se cortan ntidamente en el punto 1; 1T .

En el caso del segundo sistema, aun usando una resolucin grfica mayor,
apenas se diferencian las dos rectas y mucho menos dnde se cortan.

65/136

Estudiemos cmo cuantificar la sensibilidad de Ax D b a pequeas


modificaciones tanto en el trmino independiente como en los coeficientes de la
matriz de coeficientes.

Analicemos en primer lugar el caso de una modificacin b del trmino


independiente.

Veamos cmo se relaciona la solucin de


A.x C x/ D b C b
con la de
Ax D b:

Designemos por k  k cualquier norma vectorial y su norma matricial consistente


correspondiente.

66/136

De las igualdades
A.x C x/ D b C b

y Ax D b;

se obtiene, restando y despejando x, que


x D A 1b:


De la definicin de norma matricial consistente con una norma vectorial se tiene


que
kxk  kA 1k kbk
(1)
y que kbk  kAk kxk o, lo que es lo mismo, que
1
kAk

:
kxk
kbk

(2)

67/136

Combinando (1) y (2) se deduce que el error relativo, kxk=kxk, de la solucin


del sistema Ax D b al modificar el trmino independiente de b a b C b es
kbk
kxk
 kAk kA 1k
:
kxk
kbk

Definicin Sea kk una norma matricial consistente con una norma vectorial. Asociado

a esa norma, el nmero de condicin de una matriz invertible A, .A/, es:


.A/ D kAk kA 1 k:

El nmero de condicin de una matriz expresa lo cerca que


esa matriz est de la singularidad

68/136

Si los datos de un sistema Ax D b son exactos con la precisin de la mquina,


el error relativo de la solucin cumple que
jjx  xjj
 .A/:
jjxjj

El concepto de nmero de condicin de una matriz se generaliza a cualquier


matriz A (no necesariamente cuadrada) de rango completo mediante la
expresin
.A/ D kAk kA k;
donde A es la matriz pseudoinversa de la matriz A.

El nmero de condicin de una matriz A es un indicador del error de


amplificacin que produce en un vector x el someterlo a la transformacin que
define dicha matriz A.

69/136

Concretamente, si la esfera unidad se somete a esa transformacin el nmero de


condicin 2 asociado a la norma eucldea ser igual al cociente de las longitudes
de los semiejes mayor y menor del hiperelipsoide resultante de esa
transformacin.

Ax

Estudiemos la sensibilidad a pequeas perturbaciones en los coeficientes de A.

Comparemos la solucin de

70/136

Ax D b

y .A C A/.x C x/ D b:

De la segunda igualdad, como Ax D b, haciendo x D


resulta, despreciando el producto A  x, que

A 1A.x C x/

kxk  kA 1k kAk kxk:


Expresin que tambin se puede escribir como
kxk
kAk
 kA 1k kAk
:
kxk
kAk


As pues el error relativo que resulta de perturbar ligeramente los coeficientes de


la matriz del sistema Ax D b est tambin acotado en trminos del nmero de
condicin de la matriz A.

71/136

Teorema Para toda matriz A de rango completo:


1. Su nmero de condicin .A/  1.
2. .A/ D .A /.

3. .A/ D .A/ para todo escalar 0.

n .A/
, donde n y 1 son, respectivamente, los valores singulares mayor y
1 .A/
menor de la matriz A.
mKax ji .A/j
, si A es simtrica.
5. 2 .A/ D i
mKn ji .A/j

4. 2 .A/ D

6. 2 .A T A/ D 22 .A/.

7. Su nmero 2 .A/ D 1 si la matriz es la identidad o se trata de una matriz ortogonal.


8. Su nmero de condicin 2 .A/ es invariante frente a transformaciones ortogonales.

72/136

Las matrices con nmeros de condicin pequeos prximos a la unidad, se


dicen bien condicionadas; las que tienen nmeros de condicin altos, mal
condicionadas.

Los distintos nmeros de condicin de una matriz A 2 Rnn asociados con las
normas matriciales ms habituales cumplen que:
2.A/=n  1.A/  n 2.A/I
1.A/=n  2.A/  n 1.A/I
1.A/=n2  1.A/  n2 1.A/:

Volvamos al ejemplo que utilizbamos para concretar estos conceptos. La


matriz


8 5
AD
;
4 10
cuya inversa es

0;10 0;05
;
0;04 0;08

tiene un nmero de condicin 1.A/ D kAk1 kA 1k1 D 15  0,14 D 2,1.






0,66
3,34
bD
A
;
1,99 10,01

El de

cuya inversa es
b
A

250,25 83,5
;
49,75 16,5

b D kAk
b 1 kA
b 1 k1 D 13,35  300 D 4.005: tres rdenes de magnitud
es 1.A/
superior.

73/136

74/136

Un error que se comete con frecuencia es asimilar el concepto de nmero de


condicin de una matriz con el de su determinante y que, en ese sentido, a
mayor determinante, mayor nmero de condicin; nada ms lejos de la realidad.

Ejemplo 1 Sea A una matriz diagonal de orden 100 definida por


a11 D 1I

ai i D 0,1 2  i  100:

De esta matriz, kAk2 D 1 y kA 1k2 D 10.




El nmero de condicin 2.A/ D 10. Por el contrario, su determinante es


det.A/ D 1  .0; 1/99 D 10 99.

Ejemplo 2 Sea A una matriz bidiagonal de la forma


3
2

Su inversa es

6
6
6
4

12
6 12
6
6 1 2
6
::: :::
6
4
1
2
1

7
7
7
7:
7
25

4    . 2/n
2
. 2/n
::
1
:
::
:::
:
1

1
2

7
7
7:
5

Sus diversas normas son kAk1 D kAk1 D 3 y kA 1k1 D kA 1k1 D


D 1 C 2 C 4 C    C 2n 1 D 2n 1.

Sus nmeros de condicin, 1.A/ D 1.A/  3  2n. Su determinante, 1.

75/136

76/136

Clculo del nmero de condicin




Calcular directamente el nmero de condicin de una matriz es una tarea


numrica muy costosa: O.n3/.

No obstante, como .A/ es un buen diagnstico de las implicaciones que el uso


de esa matriz puede comportar en un proceso numrico, se puede realizar una
estimacin de su orden de magnitud.


Existen diversos buenos algoritmos para estimar el nmero de condicin de


una matriz en O.n2/ operaciones.

En Matlab lo estiman condest y rcond; lo calcula exactamente cond.

Siempre que se usa el operador n, Matlab usa rcond para comprobar la


condicin de la matriz afectada.

77/136

Errores en la eliminacin de Gauss




Conviene disponer de otros indicadores, adems del nmero de condicin de la


matriz A, para conocer la fuente de los posibles errores en la solucin de un
sistema de ecuaciones lineales mediante la eliminacin de Gauss.
Definicin Sea x a una solucin aproximada del sistema lineal Ax D b. El vector

residuo es r D b Ax a . El error hacia atrs de esa solucin es la norma del vector residuo,
kb Ax a k, y el error hacia delante kx x a k.

Si se tiene el sistema

78/136

x1 C x2 D 2
1;0001x1 C x2 D 2;0001

cuya solucin es 1; 1T , y queremos calcular los errores hacia atras y hacia


delante de la solucin aproximada 1; 3;0001, se tendr que,


Error hacia atrs:


b



2
Ax D
2;0001


2
D
2;0001




1
1
1
1;0001 1 3;00001

 
:
2;0001
0;0001
D
2
0;0001

Si utilizamos la norma infinito, por ejemplo, este error es 0;0001.




Error hacia delante


x

 
1
xa D
1

1
D
3;0001

Con el mismo tipo de norma, este error es 2;0001.

2
:
2;0001

which is 2.0001.

Figure 2.2 helps to clarify how there can be a small backward error and large forward
error at the same time. Even though the approximate root (1, 3.0001) is relatively far
from the exact root (1, 1), it nearly lies on both lines. This is possible because the two lines
are almost parallel. If the lines are far from parallel, the forward and backward errors will
be closer in magnitude.

La figura aclara cmo puede haber un error pequeo hacia atrs y uno grande
hacia delante al mismo tiempo.
y

1
2
1

Figure 2.2 The geometry behind Example 2.11. System (2.17) is represented by
the lines x2 = 2 x1 and x2 = 2.0001 1.0001x1 , which intersect at (1,1). The point
( 1, 3.0001) nearly misses lying on both lines and being a solution. The differences
between the lines is exaggerated in the gurethey are actually much closer.

El punto 1; 3;0001 est relativamente lejos de la solucin, pero cerca de


ambas rectas, pues
casi son paralelas.
Denote the residual by r = b Ax . The relative backward error of system Ax = b
a

is dened to be

||r||

,
El nmero de condicin 1.A/ D 40:004;0001.
||b||
and the relative forward error is
||x xa ||
.
||x||

79/136

El error relativo hacia atrs del sistema Ax D b es


El error relativo hacia delante,

kx

xak
.
kxk

krk
.
kbk

80/136

El factor de magnificacin o amplificacin del error para Ax D b es la razn de


los dos:
kx x a k
error relativo hacia delante
kx k
factor de amplificacin del error D
D kr k :
error realtivo hacia atrs
kbk

Para el sistema anterior, con normas infinito, el error relativo hacia atrs es
0;0001
 0;00005 D 0;005 %
2;0001
y el error relativo hacia adelante
2;0001
D 2;0001  200 %:
1

81/136

El factor de amplificacin del error es


kx x a k1
kx k1
kr k1
kbk1

D 2;0001=.0;0001=2;0001/ D 40004;0001:

El nmero de condicin de una matriz cuadrada es el factor de magnificacin


del error mximo posible para resolver Ax D b sobre todos los posibles b.

82/136

Matlab y los sistemas de ecuaciones lineales




Para resolver un sistema Ax D b con Matlab slo hay que hacer


x D Anb

Con el ejemplo que estamos manejando:


>> A=[2 1 0 4;-4 -2 3 -7;4 1 -2 8;0 -3 -12 -1];
>> b=[2;-9;2;2];
>> A\b
ans =
3.0000
4.0000
-1.0000
-2.0000

83/136

Utilizando el script Gauss que hemos presentado:


>> Gauss(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000

Utilizando otra utilidad de Matlab muy interesante:


>> linsolve(A,b)
ans =
3.0000
4.0000
-1.0000
-2.0000

84/136

ndice
 El problema; consideraciones tericas
 Eliminacin de Gauss
 Condicionamiento de sistemas de ecuaciones lineales
 Errores en la eliminacin de Gauss
 Matlab y los sistemas de ecuaciones lineales


Factorizacin LU

 Solucin de sistemas modificados


 Refinamiento iterativo
 Sistemas con matrices especiales

85/136

Factorizacin LU


El clculo de A D LU se conoce como factorizacin o descomposicin LU .




Si se tiene esta factorizacin, resolver Ax D b se convierte en dar solucin


a LU x D b a travs de dos sistemas de ecuaciones triangulares:
Ux D y

y Ly D b:

Esto es muy til cuando se requiere resolver sistemas de ecuaciones en los


que la matriz A es siempre la misma y slo cambia es el trmino
independiente.

La factorizacin LU y la eliminacin de Gauss

86/136

Una forma indirecta de conseguir esta factorizacin LU es la propia eliminacin


de Gauss.

En efecto, mediante unas permutaciones y unas transformaciones definidas por


matrices elementales triangulares inferiores el mtodo consegua:
Ln 1 P n

1    L1 P 1 A

D U:

De este proceso, haciendo


P D Pn 1    P1
y
L D P.Ln 1P n 1    L2P 2L1P 1/ 1;
se puede comprobar que se obtiene la factorizacin
PA D LU :

87/136

Existencia y unicidad de la factorizacin LU


Teorema Sea A una matriz cuadrada regular de orden n. Existe una matriz de permutacin P y dos matrices, una triangular inferior y otra triangular superior, L y U ,
respectivamente, tales que
PA D LU :
La matriz L tiene todos los coeficientes de la diagonal principal igual a 1.

Lema La matriz A admite una factorizacin LU si y slo si se cumple que det.A k /

0; k D 1; : : : ; n:

Teorema Si una matriz regular A de orden n admite una factorizacin A D LU ,

donde L es una matriz triangular inferior de coeficientes diagonales 1 y U una triangular


superior, esa factorizacin es nica.

88/136

Mtodos numricos directos para la obtencin de


factorizaciones LU
Mtodo de Crout. Versin LU 1

Prescott Durand Crout,


EE.UU., 1907-1984.

Supongamos que se desea obtener la factorizacin en la forma LU 1, donde U 1


designa una matriz triangular superior en la que todos los coeficientes de la
diagonal principal son 1.

89/136

Si la matriz A es de orden 3 y se quiere factorizarla de la forma


# "
#"
#
"
a11 a12 a13
a21 a22 a23
a31 a32 a33

l11 0 0
l21 l22 0
l31 l32 l33

1 u12 u13
0 1 u23 ;
0 0 1

usando las reglas de multiplicacin de matrices se obtendr:


1a col. de L: l11 D a11

l21 D a21
l31 D a31 I

l u D a12
2a fila de U : 11 12
l11 u13 D a13

! u1j D a1j = l11 ; j D 2; 3I

l u C l22 D a22
2a col. de L: 21 12
l31 u12 C l32 D a32

2a fila de U : l21 u13 C l22 u23 D a23

! li 2 D a i 2

li1 u12 ; i D 2; 3I

! u2j D .a2j

3a col. de L: l31 u13 C l32 u23 C l33 D a33

l21 u1j /= l22 ; j D 3I

! li 3 D a i 3

i 1
X

j D1

lij uj i ; i D 3:

90/136

En general, las frmulas de recurrencia que se pueden deducir de este proceso,


denominado factorizacin LU de Crout, son:
li1 D ai1;
u1j D a1j = l11;
k 1
X
li k D aik
lip upk ;
0

ukj D @akj

pD1

k 1
X

pD1

i D 1; 2; : : : ; n;
j > 1;

lkp upj A

i  k;


lkk ;

j > k:

91/136

El algoritmo de Crout para factorizar una matriz regular A

nn

D LU 1, es este.

 Factorizacin A D LU por algoritmo de Crout


for k D 1 to n
for i D k to n
k
X1
l.i; k/
a.i; k/
l.i; p/u.p; k/
pD1

end
for i D k C 1 0
to n
u.k; i /

end
end

En Matlab:

@a.k; i /

k
X1

pD1


l.k; p/u.p; i /A l.k; k/

function [L U]=LUCrout(a)
% Factorizacin LU por Crout
n=size(a,1); L=zeros(n); U=eye(n);
for k=1:n
i=k:n;
L(i,k)=a(i,k)-L(i,1:k-1)*U(1:k-1,k);
i=k+1:n; U(k,i)=(a(k,i)-L(k,1:k-1)*U(1:k-1,i))/L(k,k);
end
end

92/136

Ahora bien, como apuntbamos en la eliminacin de Gauss, se puede aprovechar


la estructura de la matriz A para guardar en ella las nuevas matrices L y U . El
mismo algoritmo quedara as.
function [L U]=Crout_1(A)
% Factorizacin LU por Crout
n=size(A,1);
for k=1:n
i=k:n;
A(i,k)=A(i,k)-A(i,1:k-1)*A(1:k-1,k);
i=k+1:n; A(k,i)=(A(k,i)-A(k,1:k-1)*A(1:k-1,i))/A(k,k);
end
L=tril(A,0); U=triu(A,1)+eye(n,n);
end

93/136

Factorizar

da como resultado

3
2
10 10 20
420 25 405
30 50 61

2
32
3
10
112
LU D 420 5 5 4 1 05 :
30 20 1
1

As:
>> A=[10 10 20;20 25 40;30 50 61];
>> [L,U]=Crout_1(A)
L =
10
0
0
20
5
0
30
20
1
U =
1
1
2
0
1
0
0
0
1
>>

Ejemplo Se desea factorizar en una mquina con cuatro dgitos significativos

Las operaciones en la mquina son:

3
0,001 2,000 3,000
A D 4-1,000 3,712 4,6235
-2,000 1,072 5,643
2

l11 D 0,001I
l21 D -1,000I
l31 D -2,000I


2,000
u12 D f l
D 2000I
 0,001 
3,000
u13 D f l
D 3000I
0,001
l22 D f l 3,712 C .1,000/.2000/ D 2004I
l32 D f l 1,072 C .2,000/.2000/ D 4001I


4,623 C .1,000/.3000/
u23 D f l
D 1,500 y
2004
l33 D f l5,643 C (2,000)(3,000) (4,001)(1,500) D 5,642:

Ojo! que el clculo de l33 conlleva la prdida de tres dgitos por redondeo: el
valor que debera dar es 5,922.

94/136

95/136

Pivotacin


El ejemplo pone de manifiesto que, aunque se sepa que una matriz no es


singular y que su factorizacin LU existe tericamente, los errores de redondeo
que se pueden producir al trabajar en una mquina pueden dar al traste con el
resultado.

Es aconsejable realizar pivotacin. Al final de un proceso con pivotacin se


obtendra
PA D LU
es decir, no la factorizacin LU de la matriz original sino de PA.

 Factorizacin A D LU por Crout con pivotacin parcial


for k D 1 to n
for i D k to n
k
X1
l.i; k/
a.i; k/
l.i; p/u.p; k/
pD1

end
Determinar ndice p 2 fk; k C 1; : : : ; ng tal que ja.p; i /j D mKaxi j n ja.j; i /j.
Intercambiar filas p y k.
for i D k C 1 0
to n
1

k
X1
@
A
l.k; p/u.p; i /
l.k; k/
u.k; i /
a.k; i /
pD1

end
end

function [L U p]=CroutP(a)
% Factorizacin LU por Crout con pivotacin
n=size(a,1); p=1:n;
for k=1:n
i=k:n; a(i,k)=a(i,k)-a(i,1:k-1)*a(1:k-1,k);
[r,m]=max(abs(a(k:n,k))); m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n; a(k,i)=(a(k,i)-a(k,1:k-1)*a(1:k-1,i))/a(k,k);
end
L=tril(a,0); U=triu(a,1)+eye(n,n);
end

96/136

97/136

Si se factoriza la matriz

2
3
10 10 20
420 25 405 ;
30 50 61

al final de este proceso, el vector IPVT./, que indica las pivotaciones realizadas,
es 3, 2, 1T .
>> A=[10 10 20;20 25 40;30 50 61];
>> [L U p]=CroutP(A)
L =
30.0000
0
0
20.0000
-8.3333
0
10.0000
-6.6667
0.2000
U =
1.0000
1.6667
2.0333
0
1.0000
0.0800
p =
3
2
1

98/136

La matriz PA realmente factorizada es


2
3 2
32
3
30 50 61
30
1 1;6667 2;0333
420 25 405 D 420 8;3333
54
1 0;08005 :
10 10 20
10 6;6667 0; 2
1

El algoritmo de Crout requiere O.n3=3/ multiplicaciones/divisiones y


sumas/restas para la factorizacin de la matriz.

99/136

Mtodo de Crout. Versin L1U




Si se quiere conseguir la factorizacin L1U de una matriz 3  3,


"
# "
#"
#
a11 a12 a13
a21 a22 a23
a31 a32 a33

1 0 0
l21 1 0
l31 l32 1

u11 u12 u13


0 u22 u23 ;
0 0 u33

operando:
1a fila de U : u11 D a11

u12 D a12
u13 D a13 I

l u D a21
1a col. de L: 21 11
l31 u11 D a31

! li1 D ai1 =u11 ; i D 2; 3I

l u C u22 D a22
2a fila de U : 21 12
l21 u13 C u32 D a23

2a col. de L: l31 u12 C l32 u22 D a32

! u2j D a2j
! li 2 D .ai 2

3a fila de U : l31 u13 C l32 u23 C u33 D a33

l21 u1j ; j D 2; 3I
li1 u12 /=u22 ; i D 3I

! u3j D a3j

j 1
X
i D1

l3i uij ; j D 3:

100/136

Las frmulas de recurrencia que se pueden deducir de este proceso son:


u1j D a1j ;
li1 D ai1=u11;
k 1
X
ukj D akj
lkp upj ;
0

li k D @aik

pD1

k 1
X

pD1

j D 1; 2; : : : ; n;
j > 1;
1

lip upk A

j  k;


ukk ;

i > k:

101/136

El algoritmo de Crout para factorizar una matriz regular A nn en la forma L1U
es el que sigue.

 Factorizacin A D L1 U por Crout sin pivotacin

for k D 1 to n
for j D k to n

u.k; j /

a.k; j /

k 1
X

l.k; p/u.p; j /

pD1

end
for i D k C 10to n

l.i; k/

end
end

@a.i; k/

k 1
X

pD1

l.i; p/u.p; k/A

u.k; k/

102/136

function [L,U]=Croutl1u(a)
% Factorizacin L1U por Crout
n=size(a,1);
for k=1:n-1
i=k+1:n;
a(i,k)=a(i,k)/a(k,k);
a(i,i)=a(i,i)-a(i,k)*a(k,i);
end
L=tril(a,-1)+eye(n,n); U=triu(a);
end

Su implementacin en Matlab:

El resultado con la matriz precedente es:


>> [L U]=Croutl1u(A)
L =
1
0
0
2
1
0
3
4
1
U =
10
10
20
0
5
0
0
0
1
>> L*U
ans =
10
10
20
20
25
40
30
50
61

103/136

La versin del algoritmo con pivotacin en Matlab es esta.

function [L,U,P]=CroutP1(a)
% Factorizacin L1U por Crout con pivotacin
n=size(a,1); p=1:n;
for k=1:n-1
[r,m]=max(abs(a(k:n,k)));
m=m+k-1;
if a(m,k)==0, continue, end
if k~=m, a([k m],:)=a([m k],:); p([k m])=p([m k]); end
i=k+1:n;
a(i,k)=a(i,k)/a(k,k);
a(i,i)=a(i,i)-a(i,k)*a(k,i);
end
L=tril(a,-1)+eye(n,n); U=triu(a); P=eye(n); P=P(p,:);
end

104/136

El resultado con este script para el ltimo ejemplo:


>> [L U P]=CroutP1(A);
>> L
L =
1.0000
0
0
0.6667
1.0000
0
0.3333
0.8000
1.0000
>> U
U =
30.0000
50.0000
61.0000
0
-8.3333
-0.6667
0
0
0.2000
>> P*L*U
ans =
10
10
20
20
25
40
30
50
61
>> norm(P*A-L*U)
ans =
0

105/136

Con los recursos de Matlab:


>> [L,U,P] = lu(A)
L =
1.0000
0
0.6667
1.0000
0.3333
0.8000
U =
30.0000
50.0000
0
-8.3333
0
0
P =
0
0
1
0
1
0
1
0
0
>> P*L*U
ans =
10
10
20
20
25
40
30
50
61
>> norm(P*A-L*U)
ans =
0

0
0
1.0000
61.0000
-0.6667
0.2000

106/136

Obtencin de la matriz inversa a partir de la


factorizacin LU


Si se designa por X la matriz inversa de A 2 Rnn, los n vectores columna de


X son los vectores solucin de los sistemas Ax i D e i , i D 1; : : : ; n.

Si suponemos que tenemos la factorizacin PA D LU , donde P es una matriz


de permutacin, para obtener la inversa de A hay que resolver los 2n sistemas
siguientes:
Ly i D Pe i ; U x i D y i ; i D 1; : : : ; n:
Es decir 2n sistemas de ecuaciones lineales con matrices triangulares en los que
slo cambian los trminos independientes.

Un programa para hacerlo en Matlab podra ser as:


function InvA = InvLU_1(A)
% Inversa de A a partir de su fact. LU
[m n]=size(A); InvA=zeros(m); b=zeros(m,1);
[L U P] = lu(A);
for i=1:m
b(i)
= 1;
InvA(:,i) = U\(L\(P*b));
b(i)
= 0;
end
end

Probemos:

>> A=rand(20);
>> max(max(A*InvLU_1(A)-eye(20)))
ans =
2.109423746787797e-015
>> A=rand(1000);
>> tic, max(max(A*InvLU_1(A)-eye(1000))), toc
ans =
5.251354906476990e-013
Elapsed time is 4.017733 seconds.
>> tic, max(max(A*inv(A)-eye(1000))), toc
ans =
5.207778652760453e-013
Elapsed time is 0.447034 seconds.
>> tic, max(max(A*(A\eye(1000))-eye(1000))), toc
ans =
3.934630399271555e-013
Elapsed time is 0.393214 seconds.

107/136

108/136

Matlab y la factorizacin LU


Para resolver Ax D b con Matlab, usando la factorizacin LU de A, se


utiliza [L U P]=lu(A) y luego se obtiene la solucin del sistema haciendo
x=U\(L\(P*b))

Apliquemos esta idea a uno de los ejemplos que manejamos:

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


>> b=[2;2;-2;-5];
>> [L U P]=lu(A)
L =
1.0000
0
0
0
0
1.0000
0
0
0
0
1.0000
0
0
0.3333
0.6667
1.0000
U =
2.0000
1.0000
0
4.0000
0
-3.0000 -12.0000
-1.0000
0
0
3.0000
1.0000
0
0
0
-0.3333
P =
1
0
0
0
0
1
0
0
0
0
0
1
0
0
1
0
>> x=U\(L\(P*b))
x =
3.0000
4.0000
-1.0000
-2.0000

109/136

Otra cuestin a tener muy en cuenta:


% Ensayo tiempos LU: Tiemp_LU.m
A=rand(200,200);
tic
for i=1:1000
b=rand(200,1);
x=A\b;
end
toc
Elapsed time is 0.828548 seconds
tic
[L U P] = lu(A);
for i=1:1000
b=rand(200,1);
x=U\(L\(P*b));
end
toc
Elapsed time is 0.089372 seconds

Copiar y pegar en el escritorio de Matlab. Por qu ocurre lo que sale?

110/136

111/136

ndice
 El problema; consideraciones tericas
 Eliminacin de Gauss
 Condicionamiento de sistemas de ecuaciones lineales
 Errores en la eliminacin de Gauss
 Matlab y los sistemas de ecuaciones lineales
 Factorizacin LU


Solucin de sistemas modificados

 Refinamiento iterativo
 Sistemas con matrices especiales

112/136

Solucin de sistemas modificados




Si en Ax D b se modifica el vector b pero no A, no es necesario rehacer la


factorizacin LU para resolver el nuevo sistema.

Si se modifica ligeramente la matriz A, por ejemplo el coeficiente (j; k), con lo


que A D A ej e Tk , puede que no sea necesario tampoco recalcular la
factorizacin en su totalidad.


La frmula de Sherman-Morrison-Woodbury proporciona la inversa de una


matriz en trminos de los vectores de una modificacin a la misma de rango
uno del tipo uvT :
 1
T
A uv
D
 1
A 1 C A 1 u 1 vT A 1 u vT A 1 :

113/136

Para resolver el nuevo sistema .A uvT /x D b, usando la frmula, se


obtendra
 1
T
b
x D A uv
 1
D A 1b C A 1u 1 vT A 1u vT A 1b;
operacin que podra hacerse por partes:
1. Resolviendo Az D u, obteniendo z.

2. Resolviendo Ay D b, obteniendo y.
3. Calculando x D y C ..vT y/=.1

vT z//z.

Como A ya est factorizada, este procedimiento requiere solo sustituciones


inversas y productos interiores; es decir O.n2/ operaciones frente a las O.n3=3/
de la factorizacin.

114/136

Ejemplo Consideremos la matriz


2
3 2
32
3
2 4 2
100
24 2
A D 4 4 9 35 D 4 2 1 05 40 1 15
2 3 7
111
00 4

a la que se le efecta una modificacin consistente en cambiar el coeficiente


(3,2) de -3 a -1.


En este caso

3
0
u D 4 05
2

con lo que la matriz resultante es A

2 3
0
y v D 415 ;
0

uvT .

115/136

Con la factorizacin LU de A, se resuelve Az D u y Ay D b, dando


2
3
2 3
3=2
1
z D 4 1=25 y y D 4 25 :
1=2
2

Por ltimo,

3
2
3 2 3
1
3=2
7
vT y
2
4 1=25 D 4 45 :
z D 4 25 C
xDyC
T
1 v z
1 1=2
2
1=2
0

116/136

Refinamiento iterativo


Formulado en la dcada de 1960 por James Hardy Wilkinson, del National


Physical Laboratory, Reino Unido, 1919-1986.

Supongamos que se tiene una solucin aproximada, x 0, del sistema de


ecuaciones lineales Ax D b, y sea y una correccin o mejora de la misma tal
que la solucin exacta, x, cumple que
x D x 0 C y:
Sustituyendo esta expresin en Ax D b se tiene que
Ay D b
donde r 0 es el vector de residuos.

Ax 0 D r 0;

117/136

Si este vector no cumple satisfactoriamente unos requisitos de precisin, se


puede resolver el sistema Ay D r 0 y hacer
x 1 D x 0 C y;
lo que har que la solucin se aproxime un poco ms a x que x 0.

Si es necesario, se calcula un nuevo vector de residuos, r 1 D b Ax 1 y se


continua el proceso hasta que la solucin se aproxime tanto como se quiera a la
esperada.

El vector de residuos debe calcularse con ms precisin que la usada para


calcular la solucin inicial.

Este script de Matlab lleva a cabo el proceso a mano.

% Script_Ref.m - Script de Refinamiento Iterativo


n=6;
format short
A=hilb(n);
b=A*ones(n,1);
pause
x=A\b

% Matriz de Hilbert (muy mal condicionada)


% Elegimos trmino independiente para sol. x=1.
% Solucin, evidentemente, =1

B=A;
% En B est A perturbada un poquito
B(6,1)=B(6,1)+1.e-06;
pause
x1=B\b
% Veamos la nueva solucin; difiere bastante
pause
xex=ones(n,1);
norm(xex-x1,2)
norm(xex-x,2)
pause

% Calculemos cunto
% Como magnitud calculemos la norma 2 de la desviaci.

res=b-A*x1;
x1=x1+B\res
norm(xex-x1,2)
pause

% Hagamos una iteracin del Refinamiento iterativo

res=b-A*x1;
format long
x1=x1+B\res
norm(xex-x1,2)
pause

% Hagamos otra iteracin del Refinamiento iterativo

res=b-A*x1;
x1=x1+B\res
norm(xex-x1,2)

% Hagamos otra iteracin del Refinamiento iterativo

118/136

119/136

ndice
 El problema; consideraciones tericas
 Eliminacin de Gauss
 Condicionamiento de sistemas de ecuaciones lineales
 Errores en la eliminacin de Gauss
 Matlab y los sistemas de ecuaciones lineales
 Factorizacin LU
 Solucin de sistemas modificados
 Refinamiento iterativo


Sistemas con matrices especiales

120/136

Sistemas con matrices especiales


Matrices simtricas
Factorizacin LDLT
Lema Si todas las submatrices principales de una matriz A 2 Rnn son regulares, existen
dos matrices triangulares inferiores unitarias nicas, L y M , y otra diagonal tambin nica,
D D diag.d1 ; : : : ; dn /, tales que A D LDM T .

Teorema Si A admite una factorizacin LDM T y es simtrica, L D M .

121/136

Para derivar unas frmulas de recurrencia, a partir de un ejemplo simblico de


orden 3,
2
3 2
32
32
3
a11 a12 a13
1 0 0
d11
1 l21 l31
4a21 a22 a235 D 4l21 1 05 4
5 40 1 l325 ;
d22
a31 a32 a33
l31 l32 1
d33
0 0 1
operando de acuerdo con las reglas de multiplicacin matricial se obtiene que
a11
a21
a31
a22
a32
a33

D
D
D
D
D
D

d11
l21d11
l31d11
2
l21
d11 C d22
l31l21d11 C l32d22
2
2
l31
d11 C l32
d22 C d33:

Generalizando se obtiene el algoritmo de la tabla.

122/136

 Factorizacin A D LDLT sin pivotacin


for k D 1 to n
k 1
X
d.k/
a.k; k/
a2 .k; p/d.p/
pD1

if d.k/ D 0 then stop


for i D k C 1 0
to n

a.i; k/

end
end

@a.i; k/

k 1
X

pD1

a.i; p/a.k; p/d.p/A

d.k/

Requiere O.n3=6/ multiplicaciones y divisiones y sumas y restas.

Si no se efectan pivotaciones, el procedimiento numrico puede fallar por la


posible presencia de coeficientes pivote muy pequeos, o por la acumulacin de
errores de redondeo o de cancelacin importantes.

Factorizacin de Cholesky

123/136

Debida a Andr Louis Cholesky, Francia, 1875-1918, comandante del ejrcito


durante la ocupacin internacional de Creta en 1906-09.

Una matriz es definida positiva si para todo x 0 se cumple que x TAx > 0.
Todos sus valores propios son positivos.

Las matrices simtricas definidas positivas admiten la descomposicin


A D GT G;
donde G es una matriz triangular superior con todos sus coeficientes de la
diagonal principal positivos.

124/136

Las matrices simtricas definidas positivas se presentan habitualmente en:




Problemas relacionados con el anlisis de sistemas elctricos de generacin y


transporte de energa.

Ajuste de funciones por mnimos cuadrados.

Anlisis de estructuras mecnicas.

En muchos procedimientos de optimizacin lineal y no lineal.

En general, en todas aquellas aplicaciones donde al modelizar un sistema, la


expresin x T Ax mide la energa presente, o disponible, o cualquier otra
magnitud fsica que slo admite cantidades positivas en un entorno determinado.

125/136

Lema Las submatrices principales de una matriz definida positiva son definidas positivas.

Teorema Si A es una matriz definida positiva de orden n, tiene una descomposicin


de la forma LDM T , siendo todos los coeficientes de la matriz diagonal D positivos.

Teorema Si A es una matriz simtrica definida positiva de orden n, existe una nica
matriz triangular superior, G , con todos sus coeficientes diagonales positivos, tal que A D
GT G.

Ver AQU el trabajo de Cholesky

Procedamos a simular el algoritmo con la descomposicin simblica de una


matriz 3  3.

Si se desea obtener la factorizacin


2
3 2
32
3
a11 a12 a13
g11 0 0
g11 g12 g13
4a12 a22 a235 D 4g12 g22 0 5 4 0 g22 g235 ;
a13 a23 a33
g13 g23 g33
0 0 g33

operando de acuerdo con las reglas de multiplicacin matricial se obtiene que:


a11
a12
a13
a22
a23
a33

D
D
D
D
D
D

2
g11
g11g12
g11g13
2
2
g12
C g22
g12g13 C g22g23
2
2
2
g13
C g23
C g33
:

126/136

127/136

Generalizando este proceso se obtiene el algoritmo que describe la tabla.


 Factorizacin de Cholesky A D G T G
for i D 1 to ns
g.i; i/

a.i; i/

i 1
X

g 2 .k; i/

kD1

for j D i C 1 to n
g.i; j /

a.i; j /

i 1
X

kD1

end
end

g.k; i/g.k; j /

!

g.i; i/

El algoritmo requiere O.n3=6/ operaciones de multiplicacin+divisin y de


suma+resta.

Este algoritmo en Matlab sera como sigue.

128/136

function G=Chols_1(A)
% Factorizacin de Cholesky
n=size(A,1);
for i=1:n, j=i+1:n;
A(i,i)=sqrt(A(i,i));
A(i,j)=A(i,j)/A(i,i);
A(j,j)=A(j,j)-A(i,j)*A(i,j);
end
G=triu(A);
end

La factorizacin de
2

51
4 12
20
00

20
0 05
41 !
13

>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0


>> G=Chols_1(A)
G =
2.2361
0.4472
-0.8944
0
1.3416
0.2981
0
0
1.7638
0
0
0
>> G=chol(A)
G =
2.2361
0.4472
-0.8944
0
1.3416
0.2981
0
0
1.7638
0
0
0

0 1 3];

0
0
0.5669
1.6366

0
0
0.5669
1.6366

129/136

Matlab y la factorizacin de Cholesky




Para resolver un sistema lineal de ecuaciones Ax D b con Matlab utilizando


la factorizacin de Cholesky hay que utilizar la funcin G=chol(A).

La solucin del sistema correspondiente se puede obtener, teniendo en cuenta


que se realiza A D G T G , haciendo
x=G\(G\b)

130/136

Para utilizar esta operacin con un ejemplo de los que estamos manejando,
habra que hacer algo parecido a lo que sigue.
>> A=[5 1 -2 0;1 2 0 0;-2 0 4 1;0 0 1 3];
>> b=[1;5;14;15];
>> G=chol(A)
G =
2.2361
0.4472
-0.8944
0
0
1.3416
0.2981
0
0
0
1.7638
0.5669
0
0
0
1.6366
>> x=G\(G\b)
x =
1.0000
2.0000
3.0000
4.0000

Matrices simtricas semidefinidas positivas




131/136

Una matriz A se dice semidefinida positiva, si para todo x 0, x T Ax  0.


Teorema Si A 2 Rnn es simtrica semidefinida positiva:
jaij j  .ai i C ajj /=2
p
jaij j  ai i ajj .i j /
mKax jaij j D mKax ai i
i;j

ai i D 0 ) aij D aj i D 0; j D 1; : : : ; n:

Si el algoritmo de Cholesky se aplica a una matriz semidefinida positiva y en un


paso akk es cero entonces aj k D 0; j D k; : : : n, por lo que no habra que hacer
nada ms en la columna k.


En la prctica, los errores de redondeo internos impiden los ceros exactos


por lo que se recurre a la pivotacin.

132/136

Pivotacin


Para mantener la simetra las pivotaciones han de ser simtricas: si se


intercambian dos filas tambin hay que intercambiar las columnas simtricas:
A
PAP T .

La pivotacin en Cholesky se lleva adelante as:


En cada etapa k del proceso se determina el coeficiente de mayor valor de
la diagonal principal, mKaxkj n ajj :


Si no es cero se intercambian las filas/columnas p y k, siempre y cuando


k p;

si es cero el resto de la matriz por factorizar sera nula y no se hara nada


ms.

133/136

El algoritmo de Cholesky con pivotacin para matrices semidefinidas positivas es:


 Factorizacin de Cholesky A D G T G con pivotacin
for i D 1 to n
Determinar ndice p 2 fi; i C 1; ng tal que ja.p; p/j D mKaxi j n fja.j; j /jg
if a.p; p/ > 0
Intercambiar
sfilas/columnas p y i .
g.i; i/

a.i; i/

i 1
X

g 2 .k; i/

kD1

for j D i C 1 to n
g.i; j /

a.i; j /

i 1
X

kD1

end
end
end

g.k; i/g.k; j /

!

g.i; i/

Matrices simtricas indefinidas




134/136

Una matriz A se dice indefinida si para algunos vectores x 0 la forma


cuadrtica x T Ax es positiva y para otros negativa. Para factorizarla se recurre
a pivotaciones de bloques en la diagonal
PAP T D LBLT
donde L es triangular inferior unitaria y B diagonal en bloques 1  1 2  2.

Los mtodos ms conocidos1 se citan a continuacin.


Mtodo
Parlett y Reid
Aasen
Bunch y Parlett
Bunch y Kaufman
1

Estrategia
Operaciones
T
T
PAP D LT L
O.n3 =3/
PAP T D LT LT
O.n3 =6/
PAP T D LBLT O.n3 =6/ C O.n3 =6/ comparaciones
PAP T D LBLT O.n3 =6/ C .n2 1/ comparaciones

El de James R. Bunch y Linda Kaufman, 1977,


en alguna de sus variantes, es el ms utilizado
por los cdigos profesionales y comerciales para factorizar matrices simtricas.

function [L,D,P,rho] = Diagpiv_1(A)


135/136
%DIAGPIV
Factorizacin de Pivotacin diagonal con pivotacin parcial.
%
Matriz de entrada, A (simtrica). Matrices de salida: permutacin P,
%
triangular inferior unitaria L, D matriz diagonal en bloques 1x1 o 2x2.
%
P*A*P = L*D*L.
%
Ref. J.R. Bunch and L. Kaufman, Some stable methods for calculating
%
inertia and solving symmetric linear systems, Math. Comp. 1977.
if norm(triu(A,1)-tril(A,-1),1), error(La matriz A debe ser simtrica.), end
n = max(size(A)); k = 1; pp = 1:n;
D = eye(n); L = eye(n);
if s == 1
% Bloque diagonal 1x1
normA = norm(A(:),inf); rho = normA;
D(k,k) = A(k,k); i = k+1:n;
alpha = (1 + sqrt(17))/8;
A(i,k) = A(i,k)/A(k,k);
while k < n
L(i,k) = A(i,k);
[lambda,r] = max( abs(A(k+1:n,k)) );
A(i,i) = A(i,i) - A(i,k) * A(k,i);
r = r(1) + k;
elseif s == 2
% Bloque diagonal 2x2
if lambda > 0
E = A(k:k+1,k:k+1);
swap = 0;
D(k:k+1,k:k+1) = E;
if abs(A(k,k))>=alpha*lambda
C = A(k+2:n,k:k+1);
s = 1;
temp = C/E;
else
L(k+2:n,k:k+1) = temp;
temp = A(k:n,r); temp(r-k+1) = 0;
A(k+2:n,k+2:n) = A(k+2:n,k+2:n) - temp*C;
sigma = norm(temp, inf);
end
if alpha*lambda^2 <= abs(A(k,k))*sigma
if k+s <= n
s = 1;
rho = max( rho, max(max(abs(A(k+s:n,k+s:n)))) );
elseif abs(A(r,r)) >= alpha*sigma
end
swap = 1;
else
% Nada, elemento en diagonal 0
m1 = k; m2 = r;
s = 1; D(k,k) = A(k,k);
s = 1;
end
else
k = k + s;
swap = 1;
if k == n, D(n,n) = A(n,n); break, end
m1 = k+1; m2 = r;
end
s = 2;
if nargout>=3, P = eye(n); P = P(pp,:); end
end
rho = rho/normA;
end
end
% ----if swap
A( [m1, m2],: ) = A( [m2, m1],: ); A( :,[m1, m2] ) = A( :,[m2, m1] );
L( [m1, m2],: ) = L( [m2, m1],: ); L( :,[m1, m2] ) = L( :,[m2, m1] );
pp( [m1, m2] ) = pp( [m2, m1] );
end
% -----

Con una matriz de Hankel, Hermann Hankel, Alemania, 1839-1873, funciona as:

136/136

>> A = gallery(ris,6)
A =
0.0909
0.1111
0.1429
0.1111
0.1429
0.2000
0.1429
0.2000
0.3333
0.2000
0.3333
1.0000
0.3333
1.0000
-1.0000
1.0000
-1.0000
-0.3333
>> cond(A)
ans =
2.2185
>> [L D P rho]=Diagpiv_1(A)
L =
1.0000
0
0
0
1.0000
0
-0.1760
0.2160
1.0000
-0.3143
0.1714
-1.1905
-0.1048
0.3429
0.2646
-0.9778
0.2000
-0.6173
D =
0.0909
1.0000
0
1.0000
-0.1111
0
0
0
-0.9216
0
0
0
0
0
0
0
0
0
P =
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
rho =
1.9264
>> max(max(L*D*L-P*A*P))
ans =
1.665334536937735e-016

0.2000
0.3333
1.0000
-1.0000
-0.3333
-0.2000

0.3333
1.0000
-1.0000
-0.3333
-0.2000
-0.1429

1.0000
-1.0000
-0.3333
-0.2000
-0.1429
-0.1111

0
0
0
1.0000
-0.6667
0.6222

0
0
0
0
1.0000
0

0
0
0
0
0
1.0000

0
0
0
1.7415
0
0

0
0
0
0
-0.8256
1.9264

0
0
0
0
1.9264
0.1284

0
1
0
0
0
0

>> eig(A)
ans =
-1.5708
-1.5705
-1.4438
0.7080
1.5622
1.5708

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Mnimos cuadrados lineales

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_mincua_lineal_2016.pdf

1/89

2/89

ndice
 Introduccin
 Fundamentos tericos


Sistemas incompatibles. Ecuaciones normales

Sistemas indeterminados

 Resolucin numrica del problema




Mtodo de Gram-Schmidt

Mtodo de Gram-Schmidt modificado

Factorizacin QR

Descomposicin numrica en valores singulares

Comparacin de los mtodos

 Matlab y la solucin de problemas de mnimos cuadrados

3/89

Introduccin


Muchos modelos matemticos modernos, especialmente aquellos que usan


tcnicas de estimacin y regresin, se han convertido en herramientas
fundamentales en la ciencia y la ingeniera.

Para conocer y controlar en tiempo real el estado y funcionamiento de diversos


sistemas de operacin, control y prediccin es necesario primero tomar medidas
adecuadamente de los mismos y posteriormente actuar.

Cualquier medida siempre est sujeta a errores, por pequeos que sean, por el
desajuste de la calibracin del aparato que la realiza, su propia imperfeccin, las
condiciones ambientales, las vibraciones, el envejecimiento de la maquinaria, etc.

4/89

Par mitigar el efecto de esos errores, aislarlos, identificarlos y filtrarlos se toma


un nmero de medidas de los parmetros que definen un sistema bastante
mayor del estrictamente necesario redundante.

La redundancia de medidas conduce normalmente, en los modelos matemticos


que determinan cmo se relacionan los parmetros y variables de
funcionamiento de un sistema, a sistemas de ecuaciones incompatibles: con
muchas ms ecuaciones que incgnitas.
La falta de suficientes medidas, lleva a sistemas indeterminados.

Para obtener la solucin ms probable que represente un sistema y que mejor se


aproxime a la ideal si no se diesen esos errores, se proyecta el problema en un
subespacio de menor dimensin para filtrar o aislar los datos irrelevantes.


La proyeccin ms comn es la ortogonal, que determina el mtodo de los


mnimos cuadrados (ver teorema de la proyeccin).

5/89

Casos posibles de sistemas lineales, una vez ms


 Casos posibles de sistemas lineales, una vez ms
m=n

m=n

m=n
m=n

rango(A) = m = n

rango(A) = m = n

m=n

rango(A) < n < m


rango(A) < n < m

rango(A) < m = n

rango(A) = m = n

rango(A) < m = n

1a

1b

1a

m>n
m>n

1b

m>n
m>n

rango(A) = n < m
rango(A) = n < m

m>n

m>n

rango(A) = n < m

rango(A) < n < m

2a

2b

2a

2b

m<n

m<n
rango(A) = m < n

m<n

rango(A) = m < n
rango(A) = m < n

3a

3a

m<n

m<n

rango(A) < m < n

rango(A) < m < n

m<n

rango(A) < m < n

3b

3b

=
5/101

'*/*5*0/

,I A LV m ! n DQG E LVLQ Rm  D OHDVWVTXDUHVVROXWLRQ RI A[ D E LV


VXFKWKDW
kE # AO[k % kE # A[k
6/89

IRUDOO [ LQ Rn 


Estudiaremos pues problemas sin solucin, en los que rango.Ajb/ rango.A/


pues b Im.A/.7KHPRVWLPSRUWDQWDVSHFWRIWKHOHDVWVTXDUHVSUREOHPLVWKDWQRPD
A[ ZLOOQHFHVVDULO\EHLQWKHFROXPQVSDFH
WKHYHFWRU
&RO A 6R
Si es posibleVHOHFW
determinar
una pseudosolucin
que cumpla un criterio concreto:
WR E 6HH)LJ 2IFRXUVH LI E
A[ WKHFORVHVWSRLQWLQ
por ejemplo,WKDWPDNHV
el de minimizar
la norma kAx &RO
bkA
2.
LQ &RO A WKHQ E LV A[ IRUVRPH [ DQGVXFKDQ [ LVDOHDVWVTXDUHVVROXW
b

b
a8

Ax

01234

a6

Im(A)

Ax

Ax

'*(63&  7KHYHFWRU E LVFORVHUWR AO[ WKDQ

WR A[ IRURWKHU [

7/89

Tambin problemas con muchas soluciones, de las que:





Se escoge aquella x cuya norma eucldea, kxk2, es mnima.

Se estudia otro tipo de solucin; por ejemplo:




Que minimice

m
X
T
aj x

j D1


Que minimice

mKax ajT x
j

bj

bj

8/89

El hecho de que se utilice el criterio de minimizar, de una manera u otra, la


norma eucldea raiz cuadrada positiva de la suma de los cuadrados de las
desviaciones entre dos vectores de valores reales es lo que da nombre a los
procedimientos para resolver esos problemas: mnimos cuadrados.

El problema lineal de mnimos cuadrados se plantea formalmente as:


Dada una matriz A 2 Rmn, de rango k  mKn.m; n/, y un vector b 2 Rm,
encontrar un vector x 2 Rn que minimice kAx bk2.

9/89

El ejemplo por excelencia de las tcnicas que estudiamos lo constituye el tratar


de ajustar a un conjunto de m pares de puntos .ti ; bi / una funcin f .x; t / de n
parmetros independientes x1; x2 : : : xn.


Los pares de puntos los pueden definir unas mediciones, bi , obtenidas en


unos tiempos, ti .

Si la funcin es lineal en x1; : : : ; xn se tiene un problema de mnimos


cuadrados lineales en el que,
si los n parmetros se disponen como los coeficientes de un vector
n-dimensional, x, y
los datos obtenidos, en otro vector m-dimensional b (usualmente
m  n),

se llega a una relacin de la forma Ax D b, donde A 2 Rmn, x 2 Rn y


b 2 Rm .

10/89

Ejemplo Supongamos que queremos ajustar al conjunto de pares de puntos


f.ti ; bi /g = f.1; 2/; .2; 3/; .3; 5/; .4; 6/g la funcin
f .x1; x2; x3; t / D x1 C x2t C x3t 2;
segn representa la figura.
b
f (x 1 , x 2 , x 3 , t ) = x 1+ x 2 t + x 3 t 2

5
4
3
2
1
1

Para los datos y parmetros de este ejemplo el sistema Ax D b es as:


2

1
61
6
41
1

1
2
3
4

1
47
7
95
16

2 3
x1
4x2 5
x3

2 3
2
637
7
D 6
455 :
6

x


Resolver este problema en la zona de trabajo de Matlab sera trivial:


>> Am=[1 1 1;1 2 4;1 3 9;1 4 16];
>> b=[2 3 5 6];
>> Am\b
ans =
0.50000000000000
1.40000000000000
-0.00000000000000

Con una tctica de ajuste por mnimos cuadrados, tambin con Matlab:
>> x=[1 2 3 4];
>> y=[2 3 5 6];
>> p=polyfit(x,y,2)
p =
-0.0000
1.4000

0.5000

11/89

12/89

Si se quiere profundizar un poco en el problema dibujando los datos y la funcin


ajustada, habra que hacer:
>> x1=linspace(0,5,150);
>> y1=polyval(p,x1);
>> plot(x,y,o,x1,y1,-)

Los resultados son los de la figura.


8

0.5

1.5

2.5

3.5

4.5

La lnea recta y D 0; 5 C 1; 4t, en verde, y los puntos a los que se ajusta, en


azul.

13/89

Otros muchos sistemas de la ciencia, ingeniera, economa, etc. recurren a


modelos de mnimos cuadrados.

14/89

Sistemas de prediccin a partir de datos masivos

15/89

Sistemas de navegacin
VOR, DME, ADF, RMI, MLS

16/89

Fundamentos tericos
Teorema

Descomposicin en valores singulares Si A 2 Rmn es una matriz de rango r, existen


matrices ortogonales U 2 Rmm y V 2 Rnn tales que
A D U V T ;
donde

2 Rmn y r D diag.1 , 2 ; : : : ; r /, con

(1)


r 0
D
;
0 0

1  2      r > 0:
Si las matrices U y V se escriben como
U D u1 ; : : : ; um

y V D v1 ; : : : ; vn ;

los ui y vi son los vectores singulares izquierdos y derechos, respectivamente, correspondientes a los valores
singulares i , i D 1; : : : ; r.

17/89

 1 
r 0
xDV
UTb
0 0

Teorema El vector
es la solucin del problema

minimizar
kAx bk2
x 2Rn
que hace mnima kxk2 , donde A 2 Rmn y rango.A/ D r  mKn.m; n/.

Definicin A la matriz


r 1 0
A DV
U T 2 Rnn
0 0

se la denomina matriz pseudoinversa o inversa generalizada Moore-Penrose de A.

18/89

De acuerdo con esa definicin, la solucin de mKnx 2Rn kAx

bk2 es

x D A b:


Adems, de acuerdo con el Teorema de la Proyeccin, se cumple que


b

a8

x ? ker.A/ y que Ax D P Im.A /b;


01234

a6

donde P Im.A /b es la proyeccin ortogonal de b sobre Im.A/, paralelamente a


ker.A T /.

Obsrvese que .A T / D .A /T ; en general,

19/89

.AB/ B A :

La matriz pseudoinversa satisface las denominadas condiciones de Penrose:


AA A
A AA
.AA /T
.A A/T

D
D
D
D

A
A
AA
A A:

Las frmulas para obtener las matrices de proyeccin ortogonal sobre los cuatro
subespacios fundamentales de A son
P Im.A / D AA
P ker.A T / D I AA
P Im.A T / D A A
P ker.A /

D I

AA

Dos casos de matriz pseudoinversa son fundamentales:


a) Si A 2 Rmn, m  n y rango.A/ D n,
A D .A T A/ 1A T :
b) Si A 2 Rmn, m  n y rango.A/ D m,
A D A T .AA T / 1:
a) es el problema de mnimos cuadrados resultante de un sistema de
ecuaciones incompatible, con matriz de rango completo.
b) es el de un sistema de ecuaciones compatible indeterminado con matriz
de rango completo: resuelve este problema:
minimizar kxk2;
x 2S

donde S D fx W Ax D bg:

20/89

Sistemas incompatibles. Ecuaciones normales




Si se tiene una ecuacin Ax D b, A 2 Rmn, que no tiene solucin pues


b Im.A/, se puede buscar una pseudosolucin, x, que acerque Ax lo ms
posible a b en el sentido de la k  k2, es decir,
mKn kAx
x 2Rn

bk2:

Teorema Sean X e Y dos espacios vectoriales de dimensiones finitas n y m sobre


el cuerpo R y A una transformacin lineal representada en dos bases de X e Y por la
matriz A. Para un vector dado b 2 Y , el vector x 2 X minimiza kAx bk2 si y slo si
A T Ax D A T b.
I D EMOSTRACIN . Sean Im.A/ D fAx W x 2 Rn g y ker.A/ D fx W Ax D 0g.
El complemento ortogonal del conjunto Im.A/ ser:
.Im.A//? D fr W r T z D 0; 8z 2 Im.A/g D fr W r T A D 0T g
D fr W A T r D 0g D ker.A T /:
O 2 , donde bO 2 Im.A/.
El problema planteado es obviamente equivalente a minimizar kb bk
O
Por el teorema de la proyeccin, b es un vector que minimiza la norma anterior si y slo si b bO 2
O D A T b A T Ax.
.Im.A//? ; es decir, si b bO 2 ker.A T /, o de forma equivalente, 0 D A T .b b/

21/89

22/89

La representacin geomtrica en tres dimensiones es esta.


b
r = b Ax (Im(A)) A T (b Ax ) = 0

Al sistema de ecuaciones que define la relacin

a2
a 2x 2

A TAx D A T b
Ax

a 1x 1
Im(A)

se le denomina ecuaciones normales.

a1

El vector de residuos, r D b Ax, es ortogonal a Im.A/ y a los vectores que


lo definen: a1 y a2. Es decir, se cumple que A T .Ax b/ D 0.

23/89

El vector solucin de las ecuaciones normales, x, es nico si A T A es invertible


(si y slo si la transformacin lineal A es inyectiva: rango.A/ D n); en este caso
x D .A T A/ 1A T b:

Si la matriz A T A es invertible,
rDb

Ax D .I

P Im.A //b;

donde P Im.A / D A.A T A/ 1A T es la matriz de proyeccin ortogonal sobre


Im.A/ paralelamente a ker.A T /.

24/89

Sistemas indeterminados


Si el sistema tiene ms de una solucin, siempre se puede calcular aquella de


menor norma eucldea.
Teorema Sean X e Y dos espacios vectoriales de dimensiones n y m sobre el cuerpo
R y A una transformacin lineal representada en dos bases de X e Y por la matriz A.
El vector x de norma eucldea mnima que satisface la ecuacin Ax D b es el dado por
x D A T z, donde z es una solucin de la ecuacin AA T z D b.

I D EMOSTRACIN . Si x 1 es una solucin de la ecuacin Ax D b, cualquier solucin de la misma se


puede expresar como x D x 1 C u, donde u 2 ker.A/; es decir, estar en la variedad lineal x 1 C ker.A/.
El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su
norma kxk2 es mnima y adems pertenece a .ker.A//? .
Como x 2 .ker.A//? , pertenecer a Im.A T /, es decir, se podr expresar como x D A T z para algn
z 2 Y . Como Ax D b, entonces
AA T z D b:

25/89

Cuando la matriz AA T es invertible, la solucin ptima es


x D A T .AA T / 1b:
La interpretacin geomtrica de este resultado en R3 se esquematiza as:

80123A

x7

0123A

x9

x7

u
x

26/89

Ejemplo Se quiere obtener la solucin


de norma eucldea mnima de la


 x1
ecuacin indeterminada 1 2
D 3.
x2

Cualquier solucin se podr expresar como x 1 C ker.A/, donde x 1 es cualquier



T
vector solucin (por ejemplo 1 1 ) y ker.A/ es el que se ve
en la figura.
75
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS

x2



Im.A T /

1.5
(3/5, 6/5) = x


(1, 1) = x 1

subespacio de soluciones
(3, 0)
1

x1



ker.A/


 La solucin que se busca es Figure 2.1 A minimum-norm solution.


 
  1
   

 1
3 1
1   1
0;6

La solucin que se busca es




x DA T AA


T

Se ve que est en Im.A T /.

 
  1
   
 1
3 1
1 
3=5
bD
3D
D
:
1 2
2
2
6=5
5 2
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS



Im.A T /

x2
1.5

(3/5, 6/5) = x


(1, 1) = x 1

subespacio de soluciones
(3, 0)
1

ker.A/


 La solucin que se busca es Figure 2.1

A minimum-norm solution.

x1



75

27/89

28/89

ndice
 Introduccin
 Fundamentos tericos

Sistemas incompatibles. Ecuaciones normales

Sistemas indeterminados

Resolucin numrica del problema




Mtodo de Gram-Schmidt

Mtodo de Gram-Schmidt modificado

Factorizacin QR

Descomposicin numrica en valores singulares

Comparacin de los mtodos

 Matlab y la solucin de problemas de mnimos cuadrados

29/89

Resolucin numrica del problema




Mediante las ecuaciones normales, con cualquiera de los mtodos estudiados


para sistemas con matriz cuadrada y simtrica:



A TAx D A T b, en el caso de que el sistema fuese incompatible, o a

AA Tz D b, cuando se diese un sistema indeterminado.

Los nmeros de condicin, 2, de AA T y A T A, son el cuadrado del de la


matriz A, por lo que si el problema originalmente no est bien condicionado, las
dificultades numricas pueden resultar insalvables al resolver el sistema
correspondiente.

30/89

Ejemplo Consideremos la matriz


2
3
1 1 1 1 1
6"
7
6
7
6
7
6 "
7
AD6
7:
"
6
7
6
7
4
" 5
"

El rango de A es 5, para " 0. La matriz


2
3
2
1C"
1
1
1
1
6 1
1 C "2
1
1
1 7
6
7
6
7
AT A D 6 1
1
1 C "2
1
1 7
6
7
1
1
1 C "2
1 5
4 1
1
1
1
1
1 C "2
tambin es de rango 5, para " 0.

31/89

El nmero de condicin 2.A T A/ D 2.A/2 D .5 C "2/="2.

Si " es mayor que la precisin de la mquina pero "2 no (por ejemplo, si


" D 0,5  10 5, "2 D 0,25  10 10 y la precisin de la mquina
 D 1,0  10 10), la representacin interna de la matriz A T A ser
2
3
1 1 1 1 1
61 1 1 1 17
6
7
6
7
61 1 1 1 17
6
7
41 1 1 1 15
1 1 1 1 1

por lo que, a efectos numricos en esa mquina, esta matriz ser singular y de
rango 1: las ecuaciones normales no serviran.

32/89

Otro aspecto importante que aconseja tener mucho cuidado al utilizar A T A


AA T , nace del hecho de que aun cuando la matriz original A tenga muchos
elementos cero, A T A o AA T pueden ser totalmente densas.

Un ejemplo sera

2
3
1 1 1 1
60
7
6
7
6
7
AD6 0
7;
6
7
0 5
4
0

2
1
6
61
AT A D 6
41
1

1
1
1
1

1
1
1
1

1
7
17
7:
15
1

33/89

Mtodo de Gram-Schmidt

Obtiene una base ortonormalizada del subespacio Im.A/.




Jorgen Pedersen Gram, Dinamarca,


1850-1916 y Erhard Schmidt, Alemania, 1876-1959.

Comienza normalizando el primer vector columna de la matriz, a1:


e 1 D a1=ka1k2.

A continuacin se sustrae del vector a2 su coeficiente en la direccin de e 1,


ha2je 1ie 1, resultando un vector ortogonal a e 1, el cual a su vez se
normaliza: : :
El proceso contina con los dems vectores columna de A.

El nmero de operaciones del mtodo es O.mn2/ sumas+restas y


multiplicaciones+divisiones y O.n/ races cuadradas.

Los diversos vectores ortonormales de la base de Im.A/ se obtienen as:


a1
I
ka1 k2
a2 ha2 je 1 ie 1
D
I
ka2 ha2 je 1 ie 1 k2
a3 ha3 je 1 ie 1 ha3 je 2 ie 2
D
I
ka3 ha3 je 1 ie 1 ha3 je 2 ie 2 k2
::
:

e1 D
e2
e3

a3

e3

a3
e2
e1

a 3 |e 1 e 1

e 1
e1

|
a3

a 3 a 3 |e 1 e 1 a 3 |e 2 e 2
a 3 |e 2 e 2

34/89

35/89

El algoritmo para una matriz general A mn es el siguiente.


 Ortogonalizacin de A por Gram-Schmidt
for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T  a.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j /  e.1 W m; i /
end

u.j; j /

v
uX
u m
t
e.k; j /2
kD1

e.1 W m; j /

end

e.1 W m; j /=u.j; j /

36/89

El algoritmo hace A D E U , donde E mn es la matriz de columnas e i y U nn


la matriz triangular superior de los productos interiores auxiliares uij .


Sustituyendo esta expresin de A en las ecuaciones normales,


A T Ax D A T b, resulta que
U T ET EU x D U T ET b
y, por fin, dado que E T E D I,
U x D E T b:
Un sistema triangular superior.

En condiciones adecuadas, por consiguiente, el mtodo de Gram-Schmidt podra


valer para resolver un problema lineal de mnimos cuadrados.

37/89

Gram-Schmidt modificado

John R. Rice, EE.UU. 1934-.

En la prctica se va perdiendo ortogonalidad en los vectores e i por errores


numricos y, especialmente, si alguno de los vectores columna aj est prximo
al subespacio generado por los vectores anteriores e 1; : : : ; ej 1.
Pj 1
En ese caso, los sumandos de la expresin aj
i D1 haj je i ie i pueden llegar a
ser muy pequeos, o muy distantes unos de otros pero con un resultado final
que puede ser muy pequeo, por lo que el error numrico que se va produciendo
es relativamente grande. Al dividir el resultado por su norma (tambin muy
pequea) los errores se amplificarn an ms.

38/89

En 1966 J.R. Rice modific el orden de las operaciones del mtodo haciendo
que en una etapa k en vez de sustraer del vector ak sus proyecciones sobre los
k 1 vectores e i ya calculados, el vector e k se hace igual a ak al principio y
luego se le van sustrayendo su proyeccin en e 1, pasando el resultado a ser el
nuevo e k , el cual se proyecta luego en e 2, y as sucesivamente en cada uno de
los k 1 e i anteriores.
El resultado es sustancialmente mejor numricamente.
 Algoritmo clsico de Gram-Schmidt
for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T  a.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j /  e.1 W m; i /
end
v
uX
u m
t
e.k; j /2
u.j; j /
kD1

e.1 W m; j /
end

e.1 W m; j /=u.j; j /

 Algoritmo modificado de Gram-Schmidt


for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T  e.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j /  e.1 W m; i /
end
v
uX
u m
t
e.k; j /2
u.j; j /
kD1

e.1 W m; j /
end

e.1 W m; j /=u.j; j /

39/89

La versin clsica y modificada en Matlab son estas.


function [x r2 e]=Grmsch_3(A,b)
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt modificado
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); u=triu(zeros(n,n));
for j=1:n
e(:,j)=A(:,j);
for i=1:j-1
u(i,j)=e(:,i)*e(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i);
end
u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j);
end
for i=n:-1:1
% Rx=b
x(i)=(e(:,i)*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end
r2=norm(abs(A*x-b),2)^2;
% Residuos^2
end

function [x r2 e]=Grmsch_2(A,b)
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt clsico
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); u=triu(zeros(n,n));
for j=1:n
e(:,j)=A(:,j);
for i=1:j-1
u(i,j)=e(:,i)*A(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i);
end
u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j);
end
for i=n:-1:1
% Rx=b
x(i)=(e(:,i)*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end
r2=norm(abs(A*x-b),2)^2;
% Residuos^2
end

40/89

El cara a cara del clsico y el modificado en un Matlab supercompacto es este.


function [Q, R] = gs_m(A)

function [Q, R] = gs_c(A)

[m, n] = size(A);
Q = zeros(m,n);
R = zeros(n);

[m, n] = size(A);
Q = zeros(m,n);
R = zeros(n);

for j=1:n
R(j,j) = norm(A(:,j));
Q(:,j) = A(:,j)/R(j,j);
R(j,j+1:n) = Q(:,j)*A(:,j+1:n);
A(:,j+1:n) = A(:,j+1:n) - Q(:,j)*R(j,j+1:n);
end

for j=1:n
R(1:j-1,j) = Q(:,1:j-1)*A(:,j);
temp = A(:,j) - Q(:,1:j-1)*R(1:j-1,j);
R(j,j) = norm(temp);
Q(:,j) = temp/R(j,j);
end

>> n=7; A=hilb(n);


>> [Q, R]=gs_c(A);
>> norm(Q*Q-eye(n))
ans =
0.156453367259543
>> [Q1, R]=gs_m(A);
>> norm(Q1*Q1-eye(n))
ans =
1.090139262380597e-009
>> cond(A)
ans =
4.753673562966472e+008

41/89

Si resolvemos el ejemplo inicial.


>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r2]=Grmsch_3(A,b)
% MODIFICADO
x =
0.5000
1.4000
-0.0000
r2 =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

42/89

% Script_GRSCH_1.m - Script de Ortogonalidad con Gram Schmidt clsico y modificado


format short
n=7; A=hilb(n);
% Matriz de Hilbert (muy mal condicionada)
cond(A), pause
b=A*ones(n,1);
% Trmino independiente para sol. x=1.
disp(Clsico:), [x r2 e]=Grmsch_2(A,b);
% Gram Schmidt clsico
x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
ortogonalidad=norm(e*e-eye(n)), pause

% Ortogonalidad real de la matriz e

disp(Modificado:), [x r2 e]=Grmsch_3(A,b);% Gram Schmidt modificado


x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
ortogonalidad=norm(e*e-eye(n))

% Ortogonalidad real de la matriz e

43/89

>> Script_GRSCH_1
ans = 4.7537e+08
Clsico:
x =
1.1983
-7.1874
81.7515
-318.3887
594.3144
-517.0744
172.5582
e =
0.8133
-0.5438
0.1991
0.4067
0.3033
-0.6886
0.2711
0.3939
-0.2071
0.2033
0.3817
0.1124
0.1627
0.3514
0.2915
0.1356
0.3202
0.3892
0.1162
0.2921
0.4407
ans = 870.8917
ortogonalidad = 0.6954
Modificado:
x =
1.0052
0.7926
3.0065
-6.8260
15.3845
-11.4559
5.0969
e =
0.8133
-0.5438
0.1991
0.4067
0.3033
-0.6886
0.2711
0.3939
-0.2071
0.2033
0.3817
0.1124
0.1627
0.3514
0.2915
0.1356
0.3202
0.3892
0.1162
0.2921
0.4407
ans = 21.0752
ortogonalidad = 1.9358e-08

-0.0551
0.4760
-0.4901
-0.4396
-0.1123
0.2309
0.5206

0.0120
-0.1974
0.6108
-0.2542
-0.4992
-0.1506
0.5013

-0.0020
0.0541
-0.3269
0.6411
-0.2022
-0.5418
0.3805

-0.0011
0.0298
-0.1579
0.1833
0.3445
-0.8078
0.4115

-0.0551
0.4760
-0.4901
-0.4396
-0.1123
0.2309
0.5206

0.0120
-0.1974
0.6108
-0.2542
-0.4992
-0.1506
0.5013

-0.0020
0.0541
-0.3269
0.6410
-0.2022
-0.5418
0.3805

0.0002
-0.0091
0.0907
-0.3626
0.6800
-0.5984
0.1995

44/89

Factorizacin QR


Las transformaciones ortogonales conservan la norma eucldea; esto es, si Qnn


es una matriz ortogonal y x un vector n-dimensional, se cumple que
kQxk2 D kxk2:
p
p
p
T
T
En efecto, kQxk2 D hQxjQxi D x Q Qx D x T x D kxk2:

Segn esto, si Q es una matriz ortogonal, al premultiplicar el vector Ax


por ella, su norma eucldea queda igual:
kQAx

Qbk2 D kQ.Ax

b/k2 D kAx

bk2:

La idea es usar transformaciones ortogonales para convertir el problema en otro


ms sencillo de resolver numricamente.

Si A 2 Rmn, m > n, b 2 Rm, rango.A/ D n y se han efectuado una serie de


transformaciones ortogonales que refleja un matriz ortogonal Q 2 Rmm tal que
 
R1
n
QA D R D
0 m n

45/89

y R 1 es triangular superior, si se hace


 
c
n
Qb D
;
d m n
entonces

kAx

bk2 D kQAx
D

kR 1x



R 1x c

Qbk2 D


d

ck22 C kdk22; para cualquier x 2 Rn.

46/89

La solucin de mKnx 2Rn kAx

bk2 ser aquella que haga mnimo

kR 1x

ck22 C kdk22:

Como kdk22 es constante, la solucin ser la que haga mnimo el otro


sumando: cuando R 1x D c .
Resolviendo este sistema por sustitucin inversa se llega a la solucin del
problema de mnimos cuadrados.

La suma de residuos al cuadrado ser kdk22 y el vector de residuos


 
0
r D QT
:
d

El proceso de reduccin de A a R se denomina factorizacin QR o


triangularizacin ortogonal.

47/89

Teorema Sea la matriz A 2 Rmn de rango n y su factorizacin A D QR. El factor

R tiene todos los elementos de su diagonal principal positivos y es igual al que resulta de
la factorizacin de Cholesky, G T G , de A T A.

I D EMOSTRACIN . Si rango.A/ D n, de acuerdo con un teorema anterior, la factorizacin de Cholesky


de A T A es nica.
El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su
norma kxk2 es mnima y adems pertenece a .ker.A//? .
Por otro lado,
 
h
i
R1
A T A D R T1 ; 0 QQT
D R T1 R 1 :
0

48/89

Transformaciones de Householder

Alston Scott Householder, EE.UU.,


1904-1993.

Definicin Se denomina transformacin o reflexin de Householder a una transformacin lineal de Rn en Rn caracterizada por una matriz H nn de Householder de la forma
H D I 2wwT donde w 2 Rn ; kwk2 D 1, es el vector de Householder.

Teorema Toda transformacin de Householder es simtrica y ortogonal.


I D EMOSTRACIN . Por definicin H T D I
adems wT w D kwk22 D 1,
HTH D H2

D
D

2.wwT /T D I

2.wT /T wT D I

.I 2wwT /.I 2wwT /


I 4wwT C 4w.wT w/wT D I:

2wwT D H . Como

49/89

Aplicar una transformacin de Householder a un vector cualquiera equivale a


obtener su reflejo respecto al subespacio .Im.w//?.
a

7 w 9a

0120w 445

Ha

7 w 9a

En efecto
H a D .I

2wwT /a D a

2wwT a D a

2.wT a/w:

El vector .wT a/w es la proyeccin de a sobre w; es decir, H a es igual al


vector a menos dos veces su proyeccin sobre w.

Lo esencial de estas transformaciones es su capacidad de hacer cero


determinados coeficientes de un vector dado modificarlo ortogonalmente:


Si x e y son dos vectores no nulos de igual norma eucldea y se hace


1
wD
.x y/;
kx yk2
entonces
.I 2wwT /x D y:

Comprobmoslo:


y
/T x
p x Ty
D
.I 2ww /x D x 2 p
.x y /T .x y /
.x y / .x y /
 T

x x yT x
= x 2 .x y /T .x y / .x y/
 T

x x yT x
= x 2 2.x T x y T x / .x y/ D y .
T

.x

Esto es as pues, al tener x e y la misma norma eucldea,


.x

y/T .x

y/ D x T x y T x x T y C y T y
D 2.x T x y T x/;

pues x T x D y T y y y T x D x T y.

50/89

51/89

Este resultado, geomtricamente, se deduce inmediatamente de la reflexin


antes mencionada.


El vector w es colineal con el vector x

Como x e y tienen la misma longitud, la reflexin de x respecto a


.Im.w//? es y.

y.

6
678

3
01203445
8

52/89

En un sistema Ax D b se pueden construir transformaciones de Householder


que anulen los coeficientes que se deseen de cada vector columna de A dejando
los dems como estaban.


La figura representa los cuatro pasos del proceso de reducir una matriz A 64
a una triangular superior R 64.

A0

2222
0 222
0 222
0 222
0 222
0 222
A1

2222
0
0 0
0 0
0 0
0 0
A2

2222
0
0 0 
0 0 0
0 0 0
0 0 0
A3

2222
0
0 0 
0 0 03
0 0 0 0
0 0 0 0
A4

La matriz A 1 resultara de la transformacin H 1A 0; la A 2 sera


H 2A 1 D H 2H 1A 0; y as cuatro veces.

A una matriz m  n se le aplicar una sucesin k D 1; : : : ; n de


transformaciones, cada una de las cuales ha de hacer cero los coeficientes
k C 1; : : : ; m del vector columna k.


Se pretende que la transformacin k-sima, H k , haga:



aik para i D 1; 2; : : : ; k 1
H k ak D y D
0 para i D k C 1; : : : ; m:
Los coeficientes del vector y debern ser:
y1
y2
yk
ykC1
ym

D a1k
D
::: a2k
q
2
2
2
C akC1k
C    C amk
D akk
D
::: 0
D 0:

OJO signos!

2
2
2
Como y12 C y22 C    C ym2 D a1k
C a2k
C    C amk
, jjyjj2 D jjak jj2.


La transformacin H k tendr como vector w D .ak

y/=kak

yk2.

53/89

El coeficiente k-simo de y puede adoptar dos signos. Para evitar errores de


cancelacin, se escoge el signo opuesto al del coeficiente k-simo de ak .

En esta figura hay dos posibilidades para transformar a en un vector de igual


magnitud con a2 D 0: convertirlo en y o y 0,

54/89

x2
w
w alt

y

a1 y

a1

a1 + y

x1

Con el criterio apuntado, la transformacin que hay que usar es la que define w,
que convierte a en y 0. Su primer coeficiente es w1 D a1 . y1/ D a1 C y1; el
segundo, el de a en x2.

La transformacin alternativa, walt convertira a a y: su primer coeficiente es


a1 y1; el segundo el mismo de w.

55/89

En definitiva, en la transformacin de Householder k-sima que se aplica a la


matriz A, los valores numricos del vector w son:
2
3
0
:::
6
7
6
7
6
7
1
6akk C s  signo.akk /7
wDp
6
7;
a
6
7
kC1k
2s.s C jakk j/ 6
7
:::
4
5
amk
q
2
2
2
C akC1k
C    C amk
.
donde s D akk

56/89

Caso numrico 1: Resolucin de Ax D b, A mn, m > n y rango


completo


Mediante transformaciones
la matriz A a una
h i de Householder sereduce

c
triangular superior R 1 y el vector b a otro d
0


La solucin de mKnx 2Rn kAx


sustitucin inversa.

bk2 sera la del sistema R 1x D c, por

La suma de residuos al cuadrado ser kdk22.

El algoritmo numrico completo es el que describe la tabla que sigue.

Resolucin de Ax D b por transf. de Householder

 Transformacin columnas de la Matriz A mn


for j D 1 to n
if mKa0
x fja.j; j /j; : : : ; ja.m;
j /jg D 0 then stop
1
v
uX
m
u
 D @t
a.k; j /2 A  signo.a.j; j //
kDj

w.j W m/

a.j W m; j /; w.j /

X
m
w 2 .k/; a.j; j /
w.j / C ; D 2
kDj

for l D j C 1 to n

a.j W m; l/
a.j W m; l/ w.j W m/  w T .j W m/  a.j W m; l/ 
end
 Transformacin del vector b.

b.j W m/
b.j W m/ w.j W m/  w T .j W m/  b.j W m/ 
end
 Resolucin del sistema Rx D b.
for j D n to01
1,
n
X
@b.j /
x.j /
a.j; k/  x.k/A
a.j; j /
kDj C1

end
 Residuos al cuadrado.
m
X
rescua
b 2 .k/
kDnC1

57/89

58/89

En Matlab, con la posibilidad de obtener Q y R:

function [x r2 Q R]=Qrdes_3(A,b)
% Resolucin de Ax=b mediante transformaciones de Householder; calcula Q y R
[m n]=size(A); x=zeros(n,1); Q=eye(m);
for j=1:n
w=Housv(A(j:m,j));
% Householder de a(j:m,j)
A(j:m,j:n)=A(j:m,j:n)-2*w*(w*A(j:m,j:n));
b(j:m)=b(j:m)-2*w*(w*b(j:m));
Qk=eye(m);
Qk(j:m,j:m)=eye(m+1-j)-2*(w*w);
Q=Qk*Q;
end
for i=n:-1:1
% Rx=b
x(i)=(b(i)-x(i+1:n)*A(i,i+1:n))/A(i,i);
end
r2=norm(b(n+1:m))^2;
% Residuos al cuadrado
R=triu(A); Q=Q;
% Matrices R y Q
end
function w = Housv(x)
% Transformacin de Householder del vector x.
m=max(abs(x)); w=x/m;
sw=1; if w(1)<0, sw=-1; end
w(1)=w(1)+sw*norm(w);
w=w/norm(w); w=w(:);
end

59/89

Si utilizamos este script para resolver el ejemplo.


>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r]=Qrdes_3(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

El vector de residuos,

6
6
rD6
4

3
0,1
7
0,37
7;
0,35
0,1

60/89

c
se puede obtener, si el algoritmo ha transformado b en d , sin ms que hacer:
 
0
r
d
for k D n to 1
r
H kr
end


El nmero de operaciones de este mtodo es:




O.mn2 n3=3/ sumas+restas y multiplicaciones+divisiones, para


transformar la matriz A en R;

n races cuadradas y las de la sustitucin inversa, O.n2=2/.

61/89

Caso numrico 2: Resolucin de Ax D b, A mn, n > m y rango


completo


Este problema, si tiene solucin, es indeterminado: tiene muchas.

La de menor norma eucldea se puede calcular mediante estos pasos:


Paso 1 Se aplica el algoritmo QR a la matriz A T , en vez de a A. Resultar
 
R
QT A T D
;
0
 
R
es decir, A T D Q
, donde Q es una matriz ortogonal n  n y R una
0
triangular superior m  m.

Paso 2 La matriz original A ser



A D R T ; 0T QT :

Si se sustituye en la ecuacin Ax D b, se tendr que


 T
 T
T
R ; 0 Q x D b:

Si se hace el cambio de variable z D QT x, la ltima ecuacin queda


 T

T
R ; 0 z D b:

Como zT z D .QT x/T .QT x/ D x T QT Qx D x T x, las normas


eucldeas de x y z sern iguales.
 zR 
 Estructurando el vector z en
z0 y b de igual manera, la solucin de
 T

R ; 0T z D b saldr de resolver


R T zR D bR ;

siendo los dems coeficientes del vector z, z0, nulos.

62/89

63/89

Paso 3 El vector solucin x que se busca resultar de deshacer el cambio de


variable introducido; es decir:
 
z
xDQ R :
0

64/89

Caso 3: Resolucin numrica de Ax D b, A mn, m > n m < n y


rango incompleto


Caso ms general que se puede dar en mnimos cuadrados de ecuaciones lineales.

Paso 1 Se transforma la matriz A mediante transformaciones de


Householder y permutaciones de columnas para llegar a:
r

0


mr

En cada etapa k se calcula la norma eucldea de ak , k; : : : ; n,


limitndose a sus coeficientes k; : : : ; m y se intercambia la columna k
con la de mayor norma.

65/89

Paso 2 Del Paso anterior se ha llegado a


QAP D R D


 
R 11 R 12
r
c
r
y Qb D
;
0 R 22
m r
d m r
r n r

donde kR 22k2  1kAk2. A partir de aqu hay dos opciones:





Que r D n (rango completo). La solucin sale de resolver R 11x D c.

Que r < n (rango incompleto).


Se construyen
unas
transformaciones




nn
ortogonales, Q1 , tales que R 11; R 12 Q1 D W ; 0 , donde W rr
es triangular superior.

Cmo hacer esto? Se acta sobre R 11, R 12T y se llega a b).


a)

66/89

b)

nr

Esto se hace en r etapas. En una de ellas, k, se premultiplica por una


transformacin de Householder que haga cero los elementos r C 1 a n de
la columna k y que deje inalterados del 1 al k 1 y del k C 1 a r.


0
0


0 0
0 0

0
0


0 0
0 0

0
0

0
0

El valo indica el elemento que se utiliza para definir cada


transformacin; los que se hacen cero con el signo .


0 0
0 0

67/89

Paso 3 De los dos pasos anteriores se tendr que


kAx


bk2 D k.QAP/.P T x/

Qbk2:

Ahora bien, .QAP/P T x se puede escribir .QAP/Q1QT1 P T x y


tambin,


 
W 0
c
QT1 P T x D
:
d
0 0
Si se hace QT1 P T x D y y se resuelve W y 1 D c, el vector solucin que
se busca, x, resultar de
 
y
x D PQ1 1 :
0

68/89

function [x r res]=Mincua_QR(A,b)
% Resolucin de Ax=b general mediante transformaciones de Householder
%
Posible rango incompleto r
[m n]=size(A); x=zeros(n,1); tol=sqrt(eps); W=zeros(n,m); ip=1:n; r=n;
for j=1:n
jm=j; c=0;
for k=j:n
h=norm(A(j:m,k));
if h>c, c=h; jm=k; end
end
if jm~=j, A(:,[j jm])=A(:,[jm j]); ip([j jm]) = ip([jm j]); end
if j==m, break, end
w=Housv(A(j:m,j));
% Householder de A(j:m,j); luego a A y b
A(j:m,j:n)=A(j:m,j:n)-2*w*(w*A(j:m,j:n)); b(j:m)=b(j:m)-2*w*(w*b(j:m));
end
for j=1:n
% Ver rango
if abs(A(j,j))<=tol, r=j-1; break, end
end
res=norm(b(r+1:m))^2; w1=zeros(r,n-r+1);
W(1:n,1:r)=A(1:r,1:n);
% Trasp. de A = W
if r~=n
for i=r:-1:1
w1(i,1:n-r+1)=Housv([W(i,i);W(r+1:n,i)]);
% Householder hacia W
W([i r+1:n],i:-1:1)=W([i r+1:n],i:-1:1)-2*w1(i,:)*(w1(i,:)*W([i r+1:n],i:-1:1));
end
end
for i=r:-1:1
% Resol. Wx=c
x(i)=(b(i)-x(i+1:r)*W(i+1:r,i))/W(i,i);
end
if r~=n
x(r+1:n)=0;
% Aplicar a x ultimas Householder hacia W
for i=1:r, x([i r+1:n])=x([i r+1:n])-2*w1(i,:)*(w1(i,:)*x([i r+1:n])); end
end
x(ip)=x(:);
% Deshacer perm. col.
end

Apliquemos este programa en una sesin de Matlab:


a=rand(200,4);
b=a*ones(4,1);
A=[a a(:,1)*2+a(:,2)*0.5 a(:,3)*2+a(:,4)*0.5 a(:,2)*2+a(:,3)*0.5];
size(A)
ans = 200
7
format long
[x r res]=Mincua_QR(A,b)
x =0.168704156479218
0.156479217603912
0.009779951100245
0.792176039119804
0.415647921760391
0.415647921760391
0.317848410757946
r = 4
res = 1.205973193713402e-029

>> x-pinv(A)*b
ans = 1.0e-015 *
-0.111022302462516
0.333066907387547
0.194289029309402
-0.333066907387547
0.166533453693773
-0.943689570931383
0.499600361081320

69/89

Si lo utilizamos para resolver el ejemplo.

>> A=[1 1 1;1 2 4;1 3 9;1 4 16]


A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r res]=Mincua_QR(A,b)
x =
0.500000000000000
1.400000000000000
0
r =
3
res =
0.200000000000001
>> A\b
ans =
0.5000
1.4000
-0.0000

70/89

71/89

Transformaciones de Givens

James Wallace Givens, EE.UU., 1910-1993.

Definicin Se denomina transformacin de Givens a una transformacin lineal ortogonal


de Rn en Rn caracterizada por una matriz
2
1
6 :::
6
6
1
6
6
6
G .i; j / D 6
6
6
6
6
6
4

donde c 2 C s 2 D 1.

s
::

:
c
1
::

:
1

7
7
7
7
7
7
7
7
7
7
7
7
5

i
j

72/89

Al aplicar a x 2 Rn una transformacin, o rotacin, de Givens,


G .i; j / W Rn ! Rn, con c D cos  y s D sen  , producir lo siguiente:
2

6
6
6
6
6
6
6
G .i; j /x D 6
6
6
6
6
6
4

x:1
::
xi 1
xi cos  C xj sen 
xiC1
::
:
xj 1
xi sen  C xj cos 
xj:C1
::
xn

3
7
7
7
7
7
7
7
7
7
7
7
7
7
5

Se rota el vector x un ngulo  en el subespacio que generan los vectores e i y


ej de Rn.

73/89

Para hacer cero alguno de los coeficientes i j de un vector x, concretamente


el j , se deber escoger un  tal que xi sen  C xj cos  D 0, es decir, habr
que hacer
xj
tan  D ;
xi
o, lo que es equivalente,
c D cos  D q x2 i 2
xi Cxj

s D sen  D

x
q j
:
xi2 Cxj2

Ejemplo En la figura se describe, en el espacio eucldeo tridimensional, la


rotacin del vector
2 3
1
x D 415
1
en el plano z

y para anular su tercer coeficiente.


z

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

1
...........................
.....
...
..
...
...
..
..
...
..
..
.
.
.
.
.
.
.
.
.
...........

x

74/89

75/89

Como el ngulo que hay que rotar x es 45, la matriz de Givens que hay que
utilizar es,
2
3
1
0
p0 7
6 p
G .2; 3/ D 40 p2=2 p2=25 :
0
2=2 2=2

El nuevo vector ser

2 3
1
p
G x D x 0 D 4 25 :
0
p
La norma eucldea de ste y del original es 3.

Mediante transformaciones de Givens se puede reducir la matriz de un problema


de mnimos cuadrados, en n etapas, a una triangular superior R. En cada una
de esas etapas, j , se haran cero, uno a uno, los coeficientes j C 1 a m.

Por ejemplo, las operaciones


necesarias
para transformar la matriz
2
3

76/89

2

AD4 







3
5



en

 
6 0 
RD4 0 0
0 0

22
0
A 1 D G .1; 2/A D 4 

2
5
60
A 3 D G .1; 4/A 2 D 4 0
0
2
5
60
A 5 D G .2; 4/A 4 D 4 0
0


7
 5,
0

son las que siguen.

2
3
2 2 3
2 2 5
4 0 2 2 5;
  ; A 2 D G .1; 3/A 1 D
0 2 2
 

5
5
0
0

5
27
60
2 5 ; A 4 D G .2; 3/A 3 D 4 0
2
0
3
2
5
5
57
60
5 ; A 6 D G .3; 4/A 5 D 4 0
0

5 5
2
2
2

  

5 5
0

5
5
0
0

7
5;

3
5
57
55 :
0

Los smbolos 2, y 5 indican que el coeficiente al que se hace referencia ha experimentado 1, 2 3 transformaciones
desde su valor inicial .

77/89

El algoritmo numrico completo es el que describe la tabla que sigue.


 Resolucin de Ax D b por transf. de Givens
 Transformacin de la Matriz A mn
for i D 1 to n
for k D i C 1 to m
 Hacer nulo el elemento .k; i /.
if a.k; i / 0 then
if ja.k; i /j  ja.i; i /j then p
t D a.i; i /=a.k; i /I s D 1= 1 C t 2 I c D s  t
else
p
t D a.k; i /=a.i; i /I c D 1= 1 C t 2 I s D c  t
end
a.i; i /
c  a.i; i / C s  a.k; i /
for j D i C 1 to n
aux D c  a.i; j / C s  a.k; j /; a.k; j /
s  a.i; j / C c  a.k; j /; a.i; j /
end
 Transformacin del vector b.
aux D c  b.i / C s  b.k/; b.k/
s  b.i / C c  b.k/; a.i /
aux
end
end
end
 Resolucin del sistema Rx D b.
for j D n to01
1,
n
X
@b.j /
x.j /
a.j; k/  x.k/A
a.j; j /
kDj C1

end
 Residuos al cuadrado.
m
X
rescua
b 2 .k/
kDnC1

aux

78/89

En Matlab:

function [x r2]=Givens(A,b)
% Resolucin de Ax=b mediante transformaciones de Givens
[m,n]=size(A); x=zeros(n,1);
for i=1:n
% Factorizacin de A
for k=i+1:m
if 1+abs(A(k,i))==1, continue, end
if abs(A(k,i))>=abs(A(i,i))
t=A(i,i)/A(k,i); s=1/sqrt(1+t*t);
c=s*t;
else
t=A(k,i)/A(i,i); c=1/sqrt(1+t*t);
s=c*t;
end
A(i,i)=c*A(i,i)+s*A(k,i);
q(i+1:n)=c*A(i,i+1:n)+s*A(k,i+1:n);
A(k,i+1:n)=-s*A(i,i+1:n)+c*A(k,i+1:n);
A(i,i+1:n)=q(i+1:n);
q1=c*b(i)+s*b(k);
% Transformar b
b(k)=-s*b(i)+c*b(k);
b(i)=q1;
end
end
for i=n:-1:1
% Sustitucin inversa
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end
r2=norm(b(n+1:m))^2;
% Residuos al cuadrado
end

>> A=[1 1 1;1 2 4;1 3 9;1 4 16]


A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x,r]=Givens(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

79/89

El nmero de operaciones que requiere este algoritmo para transformar A es


O.2mn2 2n3 =3/ sumas+restas y multiplicaciones+divisiones
O.mn=2/ races cuadradas y
O.n2 =2/ sumas+restas y multiplicaciones+divisiones para efectuar la sustitucin inversa.

Con precisiones semejantes Givens es el doble de caro que Householder.


Cundo utilizar Givens y Householder entonces?


La clave est en considerar la estructura de la matriz A del problema:


Si sta es densa, es decir, muchos de sus coeficientes son distintos de
cero, el mtodo de Householder es el ms aconsejable;
Si la estructura de A es dispersa, convendr centrarse en hacer cero
slo aquellos elementos no nulos en las columnas correspondientes, por
lo que, a priori, el mtodo de Givens deber ser ms ventajoso.

Transformaciones rpidas e Givens




80/89

La idea es conseguir velocidad de Householder con una M 2 Rmm tal que


MA D S

sea triangular superior y que M M T D D D diag.d1; : : : ; dm/.




Como D

1=2

M es ortogonal, se tiene que


 1

A D M 1S D D 1=2M
D 1=2S D M T D

es la factorizacin QR de A.

1=2

1=2





1
1 2
Si se eligen adecuadamente una matrices M 1 D 1
y M2 D
1 1
2 1
que cumplan que 1  i i  0, denominadas transformaciones rpidas de
Givens, una reordenacin de los clculos de la factorizacin puede conseguir el
efecto deseado de alcanzar el orden de magnitud en velocidad de las
transformaciones de Householder.

81/89

Por descomposicin en valores singulares




Existen diversos mtodos iterativos para calcular la descomposicin numrica en


valores singulares
A D U V T :

A partir de ella, la solucin de mKnx 2Rn kAx bk2 es


 1 
r 0
U T b:
xDV
0 0

Para cualquier matriz A mn, de rango completo o incompleto, la solucin del


problema de menor norma eucldea es
X uT b
i
xD
vi :
i
i 0

82/89

Ejemplo Utilizando la descomposicin U V T de A resolver


2

1
62
6
63
6
44
5

6
7
8
9
10

3
11 2 3
127
7 x1
4 5
137
7 x2 D
145 x3

15
x

2 3
5
657
6 7
657 :
6 7
455
5

La descomposicin es
A D U V T
" 0;3546
D

0;3987
0;4428
0;4870
0;5311

0;2017
0;5168
0;8320

0;6887
0;3756
0;0624
0;2507
0;5638
0;8903
0;2573
0;3757

0;5700
0;7455
0;1702
0;2966
0;0490
0;4082
0;8165
0;4082

0;1764
0;2235
0;3652
0;7652
0;4472

0;2096
0;3071
0;7985
0;1627
0;4445

# "35;1272
0
0
0
0

0
2;4654
0
0
0

0
0
0;0000
0
0

Como el valor singular 3 D 0, la solucin de norma eucldea mnima se


uT1 b
uT2 b
obtiene de x D
v1 C
v2
1
2
 0;2017
 0;8903  0;5
11;0709
0;0 :
0;5168 C 1;5606
0;2573 D
D 35;1272
2;4654
0;8320

0;3757

83/89

0;5

Este programa de Matlab resuelve el ejemplo llamando a svd() para obtener


la descomposicin en valores singulares de A.
function [x S r] = Svdre(a,b)
% Resolucin ||Ax-b|| mediante la desc. en valores singulares de A
[m,n] = size(a); tol=sqrt(eps); tmp=zeros(m); x=zeros(n,1);
[U S V]=svd(a); S=diag(S); r=0;
for j=1:n
if S(j)>=tol
r=r+1;
tmp(r)=dot(U(:,j),b)/S(j);
end
end
for j=1:r
x=x+tmp(j)*(V(:,j));
end
end

84/89

Comparacin de los diversos mtodos


Mtodo
Ecuaciones Normales
Transformaciones de Householder
Transformaciones de Givens
Mtodo de Gram Schmidt
Mtodo de Gram Schmidt Modificado
Mtodo de Golub-Reinsch (SVD)
Mtodo de Golub-Reinsch-Chan (SVD)

Operaciones
mn2
C
2
2

n3
6
n3
3
2 3
n
3

mn
2mn2
mn2
mn2
2mn2 C 4n3
mn2 C 17
n3
3

Los mtodos basados en transformaciones ortogonales son los ms precisos y


habituales.

El basado en SVD es el ms robusto, aunque ms caro.

85/89

Matlab y el problema de mnimos cuadrados




Para calibrar las posibilidades de Matlab con los problemas de mnimos


cuadrados, vamos a utilizarlo para ajustar a unos puntos la funcin
y D c1xe c2x
que se utiliza en prospeccin de hidrocarburos y minerales.

Como no disponemos de datos reales, vamos a generar unos sintticos haciendo


c1 D 5 y c2 D 3.

Generaremos 300 puntos y los perturbaremos con un ruido aleatorio normalizado


de media 0.

Utilizaremos como mtodos para obtener los parmetros c1 y c2, en un modelo


linealizado, con ayuda de las rutinas de Matlab:

86/89

El operador n

Las ecuaciones normales

La descomposicin QR

El mtodo de Gram-Schmidt

La descomposicin en valores singulares y

La matriz pseudoinversa,

Para linealizar el modelo original, haremos los cambios


v D ln.y=x/; u D x; D ln c1 y D c2;
resultando
v D u C :

87/89

El diary de Matlab:

>> x0=0.01;
>> x=linspace(x0,2,300);
>> y=5*x.*exp(-3*x);
>> yn=abs(y+0.05*(rand(size(x))-0.5));
>> v=log(yn./x);
>> x=x(:); v=v(:);
>> A=[ones(size(x)) x];
>> c=A\v
c =
1.6443
-3.0579
>> G=chol(A*A);
>> c1=G\(G\(A*v));
>> c1
c1 =
1.6443
-3.0579
>> [Q,R]=qr(A,0);
>> c2=R\(Q*v)
c2 =
1.6443
-3.0579
>> [Q,R]=gs_m(A);
>> c3=R\(Q*v)
c3 =
1.6443
-3.0579
>> format long
>> c4=pinv(A)*v
c4 =
1.64428682050583
-3.05786465731645
>> [U S V]=svd(A);
>> c5=V\(S\(U\v))
c5 =
1.64428682050583
-3.05786465731645

%primer punto de muestra


% 300 puntos
%nube de puntos
% + ruido: valores pos.
%cambio de variable
% Matriz del sistema
% Prim. respuesta: con \

% Ecuaciones normales

% Segunda respuesta
% Factorizacin QR

% Tercera respuesta
% Gram-Schmidt modi.

% Cuarta respuesta

% Matriz pseudoinversa
% Quinta respuesta
% Descomposicin val. sing.

% Sexta respuesta

function demoXexp(n)
% demoXexp
Ajuste datos sintticos a y = c(1)*x*exp(c(2)*x)
%
% Dato: n = (opcional) nmero de puntos sintticos a generar.
%
defecto=200
%
if nargin<1, n=200; end
x0=0.01;
x=linspace(x0,2,n);
y=5*x.*exp(-3*x);
yn=abs(y+0.05*(rand(size(x))-0.5));
v=log(yn./x);
x=x(:); v=v(:);
A=[ones(size(x)) x];
c=A\v;

% Construccin de los datos


%
%
con cambio de variable
%
%
para linealizar el
%
modelo
%

fprintf(Parmetros ajustados:\ncon A\\b:


exp(c(1)),c(2));

Un script.m con las instrucciones

c1 = %18.15f c2 = %18.15f\n,...

% --- Plot datos


xfit = linspace(min(x),max(x));
yfit = exp(c(1))*xfit.*exp(c(2)*xfit);
if n<30, s = v; else s = -; end
% Smbolo para datos originales
plot(x,y,s,x,yn,o,xfit,yfit,--);
xlabel(x);
ylabel(y); legend(original,+ruido,ajustado);
xmax = max(x);
ymax = max(y);
text(0.5*xmax,0.7*ymax,sprintf(c1 = %6.4f c2 = %6.4f,exp(c(1)),c(2)));
text(0.5*xmax,0.6*ymax,sprintf(%d puntos "sintticos",n));
% --- Plot funciones ajustadas
% Cholesky
G=chol(A*A);
c1=G\(G\(A*v));
fprintf(con chol(A\*A);
c1 = %18.15f c2 = %18.15f\n,exp(c1(1)),c1(2));
% Factorizacin QR
[Q,R]=qr(A,0);
c2=R\(Q*v);
fprintf(con [Q,R]=qr(A);

c1 = %18.15f c2 = %18.15f\n,exp(c2(1)),c2(2));

% Gram.Schmidt modificado
[Q,R]=gs_m(A);
c3=R\(Q*v);
fprintf(con [Q,R]=gr_m(A);

c1 = %18.15f c2 = %18.15f\n,exp(c3(1)),c3(2));

% Matriz pseudoinversa
c4=pinv(A)*v;
fprintf(con pinv(A)*b;

c1 = %18.15f c2 = %18.15f\n,exp(c4(1)),c4(2));

% Descomposicin en valores singulares


[U S V]=svd(A);
c5=V\(S\(U\v));
fprintf(con [U S V]=svd(A); c1 = %18.15f c2 = %18.15f\n,exp(c5(1)),c5(2));

88/89

89/89

Grfico con los 100 puntos sintticos, la funcin original y la ajustada.


0.7
original
+ruido
ajustado

0.6

0.5
c1 = 5.6363 c2 = 3.1949
0.4
100 puntos "sintticos"

0.3

0.2

0.1

0.2

0.4

0.6

0.8

1
x

1.2

1.4

1.6

1.8

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Funciones de interpolacin

y aproximacin

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_interpolacin_aproximacin_funciones_2016.pdf

1/59

2/59

ndice
 Introduccin

 Interpolacin polinmica


Polinomios de Lagrange

Polinomios de Newton

Polinomios Ortogonales

 Interpolacin polinmica por trozos




Interpolacin de Hermite

Splines cbicas

Curvas de Bzier

Piecewise Polynomial Interpolation


Mongkol JIRAVACHARADET

SURANAREE

3/59

INSTITUTE OF ENGINEERING

UNIVERSITY OF TECHNOLOGY

SCHOOL OF CIVIL ENGINEERING

Introduccin
Visual Interpolation

40

40

km/h
60 80 100 12
0
0
Why
Splines? 1120

kmh

0
4

== interpolation

80
100

20

60

11 12 1
10
2
9
3
4
8
7
5
6

Vehicle speed is approximately 49 km/h

truetype fonts, postscript,


metafonts
graphics surfaces
smooth surfaces are needed
how do we interpolate
smoothly a set of data?
keywords: Bezier Curves,
splines, B-splines, NURBS
basic tool: piecewise
interpolation

do we contain our interpolation?


T. Gambill (UIUC)
es
script (Adobe): rasterization on-the-fly. Fonts, etc are defined as

InterpolacinInterpolation
vs. aproximacin
o ajuste.
v.s. Curve
Fitting

4/59

 Interpolacin vs. aproximacin y ajuste.


yy

known
data
Datos conocidos
curve
fit aproximada
Funcin
interpolation
Interpolacin

x
x
Curve fitting:
fit function
data notuna
exactly
agree o el
 El ajuste,
en general,
busca &predecir
tendencia
comportamiento
de datospasses
de acuerdo
un modelo
Interpolation: function
exactlycon
through
known dado;
data
 En general,
la interpolacin, que la funcin, o funciones, a que de lugar incluya
todos loso datos
conocidos,
habitualmente
buenos.
la aproximacin
ajuste
busca predecir
una tendencia,
o el

8/83

comportamiento de datos, acorde con un modelo establecido;


Interpolation & Extrapolation

la interpolacin que la funcin, o funciones, a que de lugar incluya todos los


Interpolation approximate within the range of independent variable
datos conocidos,
habitualmente buenos.
a

10

Suppose we have a sequence of data points

La interpolacin tiene como


objeto la obtencin de
nuevos puntos de una
Coordinates x1 x2
xn
sucesin o conjunto de ellosFunction
conocido yque
yobedece
aynalgn patrn o tendencia
1
2
determinada.

I Try to plot a smooth curve (a continuous differentiable function)


Por lo general
busca obtener una funcin que se verifique en todos los puntos
connecting these discrete points.
conocidos y que permita calcular tantos nuevos como se desee.

 La interpolacin tiene como objeto la obtencin de nuevos puntos a


partir
del conocimiento
un conjunto
Interpolation
betweendedata
points discreto de ellos.

5/59

Por ejemplo, encontrar el valor de y para un x cualquiera en un experimento en


el que se han obtenido un conjunto de puntos .x; y/.

 Por
ejemplo,
encontrar
el valor during
de y an
para
un x cualquiera en un
Consider
a set of
xy data collected
experiment.
experimento
en el technique
que se han
obtenidoy at
unx conjunto
de puntos
We use interpolation
to estimate
where theres
no data.
.x; y/.
y

Datos
knownconocidos
data

La interpolacin se puede ver como lo inverso de la evaluacin de una funcin, en la que se pide un valor de y para
cada valor dado de x. En la interpolacin, dados esos puntos
y, calcular la funcin que pueda generarlos.

Cul is
esthe
el valor de
What
y que corresponde
a
corresponding
value
of
y for
este
x? this x ?

5/82

6/59

La aproximacin busca obtener una funcin que de resultados tan cercanos


como sea posible a los de otra, o a un conjunto de datos, no necesariamente
"pasando"por, o cumplindose para todos ellos.

Tambin, aproximar una funcin a otra para evitar tener que evaluar su
complicada expresin; por ejemplo la de la distribucin normal estndar,
1
N.x/ D p
2

y 2 =2

dy:

En muchos casos, obtener una funcin terica preestablecida que mejor se


ajusta a puntos empricos (ajustes por mnimos cuadrados).

Tambin, poder derivar o integrar valores dados en forma de tabla, hacer pasar
por datos discretos, o cerca de ellos, funciones continuas y derivables, : : :

Interpolacin numrica

7/59

Para obtener una funcin de interpolacin, f .x/, un primer enfoque consiste en


obtenerla mediante una combinacin lineal de un conjunto de funciones
estndar o funciones base.

Si se considera un conjunto de n funciones base, j , j D 1; : : : ; n, se pretende


que
n
X
f .x/ D
cj j .x/:
j D1

Las funciones base pueden ser diversas:




Polinomios, polinomios por trozos o porciones

Funciones racionales

Funciones trigonomtricas,

:::

El proceso de interpolar parte de un muestreo de una funcin, de un


experimento, etc. del que se tienen m datos a los que se quiere aproximar una
funcin.

Por experiencia, intuicin o inteligencia se escogen n funciones base j para


combinarlas y, mediante un proceso algebraico que desmenuzaremos, se llega a
un sistema de ecuaciones lineales de la forma
n
i

cj j .xi / D f .xi /;

i D 1; : : : ; m:

j D1

Este sistema:


Si m > n, lo normal es que sea incompatible y habra que resolverlo


mediante tcnicas de mnimos cuadrados.

Si m < n, el sistema tendr muchas soluciones.

Si m D n se puede determinar una nica funcin.

8/59

Comprobar, ejecutar y analizar qu se hace en Interpolacion_eje1.m

9/59

% Interpolacion_eje1.m
xdat = [1 5 10 30 50];
ydat = log(xdat);
plot(xdat,ydat, o)
hold on
pause
p = polyfit(xdat,ydat,2)
xvet=1:0.1:50;
plot(xvet,polyval(p,xvet))
hold on
pause
p = polyfit(xdat,ydat,4)
plot(xvet,polyval(p,xvet))

>> Interpolacion_eje1
p =
-0.0022
0.1802
p =
-0.0000
0.0017

0.3544
-0.0529

0.6705

-0.6192

30

40

-1

10

15

20

25

35

45

50

10/59

Clases EPFL: Position du problme

Interpolacin polinmica

11/59

Teorema Principal de la interpolacin polinmica Sean .x1; y1/, .x2; y2/, : : : ; .xn; yn/
n duplas de puntos con distintas xi . Existe un polinomio, y slo uno, P , de grado n
menor, que satisface P .xi / D yi , i D 1; : : : ; n.

1o

La polinmica es la forma ms extendida de interpolacin. En la expresin


n
X
j D1

cj j .xi / D f .xi /;

i D 1; : : : ; n;

como funciones base se escogen los monomios j .x/ D x j 1.




Da lugar a pn 1.x/ D c1 C c2x C c3x 2 C2    C cnx n


1 x1
61 x
del sistema lineal de Vandermonde Ac D 4 :: ::2
: :
1 xn

siendo
ci la solucin
3 2 3los 2
3
1

   x1n
c1
f .x1 /
6
7
n 17 6 7
:   x2: 5 4c:2 5 D 4f .x
2 /5.
:
::
::
::
::
   xnn 1
cn
f .xn /

12/59

Ejemplo Consideremos los precios de gas natural que siguen:


x 2007 2008 2009 2010 2011 2012
Ao
Precio y 133,5 132,2 138,7 141,5 137,6 144,2
year=[2007 2008 2009 2010 2011 2012];
precio=[133.5 132.2 138.7 141.5 137.6 144.2];
M = vander(year);
a = M\precio;
x=linspace(min(year),max(year));
p=polyval(a,x);
plot(year,precio ,o,x,p,-);

Copiar y pegar en Matlab. Luego usar Interpolacion_eje2.

13/59

% Interpolacion_eje2
year=[2007 2008 2009 2010 2011 2012];
precio=[133.5 132.2 138.7 141.5 137.6 144.2];
M = vander(year);
a = M\precio;
x=linspace(min(year),max(year));
p=polyval(a,x);
plot(year,precio ,o,x,p,-);
hold on
pause
x1 = 2007:1:2012;
y = interp1(year,precio,x1,linear);
plot(year,precio,o,x1,y,-)
hold on

>> Interpolacion_eje2
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.482181e-033.
> In Interpolacion_eje2 at 4

146

pause
144

ys = year-mean(year);
A = vander(ys);
a = A\precio;
ds = x - mean(year);
p = polyval(a,ds);
plot(year,precio,o,x,p,-);

142

140

138

136

134

132

130

128
2006

2006.5

2007

2007.5

2008

2008.5

2009

2009.5

2010

2010.5

2011

14/59

Polinomios de Lagrange

Joseph-Louis Lagrange, Turin, 1736-Pars,


1813.

Dados dos puntos .x1; y1/ y .x2; y2/, el polinomio lineal que los interpola es
p1.x/ D c1 C c2x;
siendo

y2 y1
y1 x 2 y2 x 1
y c2 D
:
x2 x1
x2 x1
Sustituyendo estas expresiones en la de p1.x/ y reordenndola queda
c1 D

p1.x/ D y1


x
x1

x2
x
C y2
x2
x2

x1
D y1l1.x/ C y2l2.x/:
x1

l1 y l2 son los polinomios de interpolacin de Lagrange de primer orden.

15/59

En general, para un conjunto de datos .xi ; yi /, i D 1; : : : ; n, las funciones base


de Lagrange en el cuerpo Pn 1 son
n
Y

lj .x/ D

kD1
kj
n
Y

.x

.xj

xk /
j D 1; : : : ; n:

;
xk /

kD1
kj

Cada una de las funciones lj .x/ son polinomios de grado n


(

lj .xi / D ij D

1 si i D j
0 si i j

1 y cumplen que

i; j D 1; : : : ; n:

x D 0 0;25 0;50 0;75 1T .

16/59

Funciones base de Lagrange para x=[0.00, 0.25, 0.50, 0.75, 1.00]


1.2

l2

l4

0.8

l3

0.6

l1

l5

lk(x)

0.4
0.2
0
0.2
0.4
0.6
0

0.1

0.2

0.3

0.4

0.5
x

0.6

0.7

0.8

0.9

15/83

Con esta base, la matriz que veamos antes para elaborar la interpolacin, A, ya
no es la de Vandermonde, sino la identidad, I, y el polinomio de interpolacin
a

10

pn 1.x/ D y1l1.x/ C y2l2.x/ C    C ynln.x/:

17/59

Cdigo de Matlab para obtener la interpolacin con polinomios de Lagrange


de unos puntos.
function [l,L]=lagrang_int(x,y)
% Calcula el polinomio de interpolacin de Lagrange
%
x e y vectores de datos, l coeficientes polinomio resultante
%
L polinomio base
N=length(x)-1; l=0;
for m=1:N+1
P=1;
for k=1:N+1
if k~=m, P=conv(P,poly(x(k)))/(x(m)-x(k)); end
end
L(m,:)=P;
% Polinomios de Lagrange base
l=l+y(m)*P;
% Coeficientes el polinomio resultante
end
end

% do_Lagrange_int.m
x = [-2 -1 1 2]; y=[-6 0 0 6];
l = lagrang_int(x,y);
xx = [-2:0.02:2]; yy = polyval(l,xx);
plot(xx,yy,b,x,y,o)

18/59

El resultado de ejecutar >>do_Lagrange_int es el de la figura.


6

6
2

1.5

0.5

0.5

1.5

Volvamos sobre el problema de los precios del gas natural.

19/59

% do_Lagrange_int_gas_1.m
year = [2007 2008 2009 2010 2011 2012];
precio= [133.5 132.2 138.7 141.5 137.6 144.2];
ys
= year-mean(year);
l
= lagrang_int(ys,precio)
x
= linspace(min(year),max(year),200);
ds
= x - mean(year);
p=polyval(l,ds); plot(year,precio ,o,x,p,-);

145

140

135

130
2007

2008

2009

2010

2011

2012

20/59

Polinomios de Newton


El polinomio de interpolacin de Newton tiene la forma


pn 1.x/ D c1 C c2.x x1/ C c3.x x1/.x x2/C
   C cn.x x1/.x x2/    .x xn 1/:

Las funciones base son


j 1

j .x/ D

.x

kD1

xk /;

j D 1; : : : ; n:

Para i < j , j .xi / D 0, por lo que la matriz A es triangular inferior, con


aij D j .xi /.

21/59

x D 0 0;50 1;00 1;50 2 .

Funciones base de Newton para x=[0.00, 0.50, 1.00, 1.50, 2.00]


3

2.5

Newk(x)

la figura
se las
venfunciones
las funciones
para 1;00 1;50 2T .
En la En
figura
se ven
basebase
paradexNewton
D 0 0;50
T

1.5

1
2

0.5

3

4

5

0.5
0

0.2

0.4

0.6

0.8

1
x

1.2

1.4

1.6

1.8

22/58

Ejemplo Calculemos el polinomio de interpolacin de Newton para los puntos


. 2; 27/, .0; 1/ y .1; 0/.

El sistema que hay que resolver es


2
1
0
0
41 x2 x1
0
1 x3 x1 .x3 x1/.x3

22/59

32 3 2 3
c1
y1
5 4c25 D 4y25 :
x2 /
c3
y3

Sustituyendo
2
32 3 2
3
1 0 0
c1
27
41 2 05 4c25 D 4 15 ;
1 3 3
c3
0
cuya solucin es c D 27 13
p.x/ D

4T . El polinomio es pues

27 C 13.x C 2/

4.x C 2/x:

23/59

El clculo polinomio de interpolacin de Newton se puede optimizar usando las


diferencias divididas.

Volviendo a la expresin matricial general anterior para un polinomio de segundo


grado,
2
32 3 2 3
1
0
0
c1
y1
41 x2 x1
5 4c25 D 4y25 ;
0
1 x3 x1 .x3 x1/.x3 x2/
c3
y3
si se sustrae de la segunda fila la primera, y de la tercera tambin la primera, se
tiene
2
32 3 2
3
1
0
0
c1
y1
40 x2 x1
5 4c25 D 4y2 y15 :
0
0 x3 x1 .x3 x1/.x3 x2/
c3
y3 y1

24/59

Si se divide la segunda fila por .x2

2
1
40
0

0
1
1

x1/ y la tercera por .x3


3
2
y1
7
6
32 3
7
6
0
c1
6 y2 y1 7
7
0 5 4c25 D 6
6 x2 x1 7 :
7
6
x 3 x2
c3
4y
y 5

De la segunda fila se obtiene que c2 D .y2




x3

x1

y1/=.x2

x1/ se llega a

x1/.

Se introducen ahora las diferencias divididas de primer orden


f x1; x2 

y2
x2

y1
x1

y f x1; x3 

y3
x3

y1
:
x1

25/59

Si se sustrae la tercera fila de la segunda se llega a


3
2
32 3 2
y1
1 0
0
c1
6
7
40 1
0 5 4c25 D 4
f x1; x2
5:
0 0 x3 x2
c3
f x1; x3 f x1; x2

Si se divide la tercera fila por x3 x2 se llega a


3
2
32 3 2
y1
1 0 0
c1
7
40 1 05 4c25 D 6
4 f x1; x2 5 ;
0 0 1
c3
f x1; x2; x3
donde
f x1; x2; x3 

f x1; x3
x3

f x1; x2
x2

no trivial

f x2; x3
x3

f x1; x2
:
x1

Lo no trivial
f x1 ; x3
x3

26/59

f x1 ; x2
x2

D
D

y3 y1
x3 x1

y2 y1
x2 x1

x3
y3 y2
x3 x2

x2
C

y2 y1
x3 x2

.x3

x1 /
.x3

y3 y1
x3 x1

x2 /.x3

.y2 y1 /.x3 x2 /
.x2 x1 /.x3 x2 /

x3

x1 /

.y2 y1 /.x2 x1 /
.x2 x1 /.x3 x2 /

x1

y3

y2 C y2

y3 y2
x3 x2

x3

y1

.x3

x2 /.x3

y2 y1
x2 x1

x1

y2 y1
x2 x1

x2 C x2

.x3
x1 /

f x2 ; x3
x3

f x1 ; x2
x1

Con estas frmulas de recurrencia, para un polinomio de segundo grado,


c1 D

f x1

c2 D

f x1; x2

y1
y2
x2

f x2; x3
c3 D f x1; x2; x3 D
x3


y2 y1
x2 x1

y1
x1
f x1; x2
D
x1

y3 y2
x3 x2

x3

En general
f xi ; : : : ; xj D

f xiC1; : : : ; xj
xj

f xi ; : : : ; xj 1
:
xi

y2 y1
x2 x1

x1

x1 /

27/59

Las diferencias divididas se pueden calcular en forma de tabla


x f 
x1 f x1

f ; 

f ; ; 

f ; ; ; 

f x1; x2
x2 f x2

f x1; x2; x3
f x2; x3

x3 f x3

f x2; x3; x4
f x3; x4

x4 f x4

f x1; x2; x3; x4

28/59

Ejemplo Calcular el polinomio de interpolacin de Newton de


x 1

3
2

0 2

y 3

13
4

5
3

La tabla de diferencias divididas es:


x
1

f 
3

3
2

13
4

5
3

f ;  f ; ;  f ; ; ; 
1
2
1
6
2
3

1
3
5
3

El polinomio es entonces
p3.x/ D 3 C 21 .x
D 3

29/59

1/ C 31 .x

10
16
x C x2
3
3

1/ x

3
2

2.x

1/ x

3
2

2x 3:

Este programa realiza la interpolacin de Newton.


function [n,DD]=Newton_int_1(x,y)
% Interpolacin con polinomios de Newton
%
Vectores de entrada x e y; salida: coeficientes en n y dif. en DD
N = length(x)-1;
DD = zeros(N+1,N+1); DD(1:N+1,1) = y(:);
for k=2:N+1
for m=1:N+2-k
DD(m,k)=(DD(m+1,k-1)-DD(m,k-1))/(x(m+k-1)-x(m)); % Diferencias divididas
end
end
a = DD(1,:); n = a(N+1);
for k=N:-1:1
n = [n a(k)] - [0 n*x(k)];
% n(x)*(x-x(k-1))+a_k-1
end
end

Ahora resolvamos un ejemplo cualquiera con este programa.

30/59

%do_newton_int_1.m
x=[-2 -1 1 2 4]; y=[-6 0 0 6 60];
% datos ordenados
[n,DD] = Newton_int_1(x,y)
n0
= lagrang_int(x,y)
% por comparar con Lagrange
x
= [1 2 4 -1 -2]; y=[0 6 60 0 -6];
% orden aleatorio datos
[n1,DD]= Newton_int_1(x,y)
xx = [-2: 0.02 : 4]; yy = polyval(n,xx);
clf, plot(xx,yy,b-,x,y,o)
% se dibuja ltimo caso

>> do_newton_int_1
n =
0
1
0
-1
0
DD =
-6
6
-2
1
0
0
0
2
1
0
0
6
7
0
0
6
27
0
0
0
60
0
0
0
0
n0 =
Columns 1 through 3
0.000000000000000
1.000000000000000
Columns 4 through 5
-1.000000000000000
0
n1 =
0
1
0
-1
0
DD =
0
6
7
1
0
6
27
5
1
0
60
12
1
0
0
0
6
0
0
0
-6
0
0
0
0

60

50

40

30

0.000000000000000

20

10

10
2

31/59

Resolvamos a mano el ejemplo anterior con la tabla.


>> x=[1 3/2 0 2];
>> y=[3 13/4 3 5/3];
>> [n DD]=Newton_int_1(x,y)
n =
Columns 1 through 3
-2.000000000000000
5.333333333333334
Column 4
3.000000000000000
DD =
Columns 1 through 3
3.000000000000000
0.500000000000000
3.250000000000000
0.166666666666667
3.000000000000000 -0.666666666666667
1.666666666666667
0
Column 4
-2.000000000000000
0
0
0

-3.333333333333334

0.333333333333333
-1.666666666666667
0
0

Polinomios Ortogonales

32/59

Otra base interesante para interpolacin es la de los polinomios ortogonales en


el espacio vectorial Pn.

El producto interior de dos polinomios hp; qi en el intervalo a; b se define


como
l
b

hp; qi D

p.x/q.x/!.x/ dx;

donde !.x/ es una funcin de prueba1 no negativa. Los polinomios son


ortogonales si hp; qi D 0.


Un conjunto de polinomios fpi g es ortonormal si


(

hpi ; pj i D
1

O de ponderacin.

1 para i D j

0 para i j:

Se puede usar cualquier procedimiento de ortogonalizacin, por ejemplo


Gram-Schmidt, para obtener una base ortonormal de un espacio de polinomios.

33/59

Andrien-Marie Legendre, Francia, 1752-1833.

Por ejemplo, si !.x/ D 1, y en el intervalo 1; 1 se aplica Gram-Schmidt a


los monomios 1, x, x 2, x 3; : : :, escalando los resultados para que pk .1/ D 1,
para cada k, se obtienen los polinomios de Legendre:
1; x; .3x 2
.35x 4

1/=2; .5x 3

3x/=2;

30x 2 C 3/8; .63x 5

70x 3 C 15x/=8; : : : ;

Los primeros n forman una base ortogonal de Pn 1. Su frmula general es



1 di  2
i
pi .x/ D i
.x
1/
:
i
2 i dx

34/59

En la figura se representan los seis primeros polinomios de Legendre.

Otros polinomios ortogonales conocidos:


Polinomio
Legendre
Chebyshev, primer tipo
Chebyshev, segundo tipo
Jacobi
Laguerre
Hermite

Smbolo

Intervalo

Pk
Tk
Uk
Jk
Lk
Hk

1; 1
1; 1
1; 1
1; 1
0; 1/
. 1; 1/

Funcin de peso

1
.1 x 2 / 1=2
.1 x 2 /1=2
.1 x/ .1 C x/ ; ; >
e x
2
e x

35/59

Los polinomios ortogonales tienen propiedades muy tiles para algoritmos


numricos. Satisfacen frmulas de recurrencia que los hacen fciles de generar y
evaluar:
pkC1.x/ D .k x C k /pk .x/ k pk 1.x/:
La de los polinomios de Legendre, por ejemplo, es

.k C 1/PkC1.x/ D .2k C 1/xPk .x/




kPk 1.x/:

Tambin se usan frecuentemente para aproximar por mnimos cuadrados


funciones mediante polinomios de cualquier grado, pues la ortogonalidad hace
que la matriz del sistema que se resuelve sea diagonal.

36/59

Pafnuty Lvovich Chebyshev, Rusia, 1821-1894.

Los polinomios de Chebyshev son otra familia de polinomios ortogonales muy


interesante. En su forma trigonomtrica se definen, para x 2 1; 1, por la
identidad
Tk .x/ D cos.k arc cos.x//
adems de que T0.x/ D 1 y T1.x/ D 1.

Su frmula de recurrencia de tres trminos es


Los primeros son,

TkC1.x/ D 2xTk .x/


1; x; 2x 2
8x 4

1; 4x 3

Tk 1.x/:

3x;

8x 2 C 1; 16x 5

20x 3 C 5x; : : : ;

37/59

Los cinco primeros los representa esta grfica.


Polinomios de Chebyshev

0.5

function p=chebypoly(n) %n es grado 0,1,2...


%
p=zeros(n+1,1);
p1=[1];
p2=[1 0];
if n==0, p=p1;
elseif n==1, p=p2;
else
for i=2:n
p =2*[p2 0]-[0 0 p1];
p1=p2;
p2=p;
end
end
end

-0.5

-1

-1

-0.8

-0.6

-0.4

-0.2

0
x

0.2

0.4

0.6

0.8

Su propiedad quizs ms interesante es la equialternancia, o equioscilacin, pues


los sucesivos puntos extremos tienen igual magnitud pero signo distinto, como
se aprecia en la figura.

38/59

En interpolacin polinmica de puntos de una funcin continua, el error mximo


en un intervalo se minimiza si se escogen como puntos de interpolacin las
races de los extremos de un polinomio de Chebyshev de grado adecuado: los
nudos o puntos de Chebyshev.

Los puntos de un polinomio de Chebyshev Tk son los k ceros o races de ese


polinomio, es decir,


2i 1
 ; i D 1; : : : ; k
xi D cos
2k
y los k C 1 puntos extremos (mximos y mnimos), incluidos los de los extremos
del intervalo, es decir
 
i
xi D cos
; i D 0; : : : ; k:
k

If we know a great deal about the function f , then we may be able to choose points so as to
reduce the error. If we dont have such information about the function, however, the best we can
 Los do
puntos
de Chebyshev
son
abcisaspoints
de los
puntos
igualmente
espaciados
is to reduce
the product (a).
Thelas
Chebyshev
effectively
minimize
the maximum
value of
2
the product
lo largo
de la (a).
semicircunferencia de radio 1 en R .
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Figure 1: Choosing Chebyshev Points

Recall Usando
the processpuntos
for selecting
points
over an
interval de
[a, b],
as shown in Figure 1:
Ejemplo
de Chebyshev
Chebyshev
como
abcisas
interpolacin,
1. Draw
the semicircle
[a, b] centered
at the 2midpoint ((a + b)/2).
interpolar
puntos
de la on
funcin
de Runge
2. To select N + 1 points, split the semicircle into N
1 arcs of equal length.

f .x/ D

en el
2

3. Project the arcs onto the x-axis, giving the1following


for each Chebyshev point xj
2
C 25xformula

(for j = 0, 1, . . . , N )
intervalo 1; 1.xj = a +2 b + b 2 a cos jN

Por Carl David Tolm Runge, Alemania, 1856-1927.1

39/59

Usando puntos igualmente espaciados en las abcisas fenmeno de Runge y de


Chebyshev, el resultado que se obtiene con polinomios de Newton es este.

40/59

1.2
1

1.5

0.8
1

0.6
0.4

0.5

0.2
0
0
0.5
1

0.5

El programa que se ha usado:

0.5

0.2
1

0.5

0.5

% Chebyshev_ejemplo_1.m
f = @(x)1./(1+25*x.^2); n = 11;
xe = linspace(-1,1,n);
xc = cos((2*(1:n)-1)*pi/2/n);
t = -1:.01:1;
c = Newton_int_1(xe,f(xe)); t1 = polyval(c,t);
subplot(121), plot(t,f(t),b,t,t1,r,xe,f(xe),o)
c = Newton_int_1(xc,f(xc)); t1 = polyval(c,t);
subplot(122), plot(t,f(t),b,t,t1,r,xc,f(xc),o)

41/59

Se puede probar que el polinomio de Chebyshev de grado n que mejor interpola


puntos de una funcin f .x/ usando puntos de Chebyshev es:
p.x/ D

1
nC1

nC1
X

f .xi / C

i D1

c0

n
i
kD1

2
nC1

nC1
X

!
Tk .xi /f .xi / Tk .x/:

i D1

ck

Para calcular el valor de ese p.x/ en determinados puntos se puede usar el


algoritmo de Clenshaw por Charles William Clenshaw, Reino Unido,
1926-2004, del NPL, una generalizacin de la regla de recurrencia de Horner:
n
X
kD0

donde

ck Tk .x/ D u0

xu1;

un D cn; un 1 D cn 1 C 2xun y
uj D cj C 2xuj C1 uj C2; j D n

2; n

1; : : : ; 0:

Los dos programas que siguen calculan ese polinomio y lo evalan para
determinados puntos.
function [c,x] = chebpol_int(fn,n)
x = cos((2*(1:n)-1)*pi/2/n);
y = fn(x);
T = [zeros(n,1) ones(n,1)];
c = [sum(y)/n zeros(1,n-1)];
a = 1;
for k = 2:n
T = [T(:,2) a*x.*T(:,2)-T(:,1)];
c(k) = sum(T(:,2).* y)*2/n;
a = 2;
end
end

function u = chebpol_clenshaw(c,x)
n = length(c);
u = c(n)*ones(size(x));
if n > 1
ujp1 = u;
u = c(n-1) + 2*x*c(n);
for j = n-2:-1:1
ujp2 = ujp1;
ujp1 = u;
u
= c(j)+2*x.*ujp1-ujp2;
end
u = u-x.*ujp1;
end
end

Si se utilizan con
>>
>>
>>
>>

f = @(x)1./(1+25*x.^2);
[c,x] = chebpol_int(f,11);
t = -1:.01:1;
plot(t,f(t),b,t,chebpol_clenshaw(c,t),r,x,f(x),ok)

42/59

43/59

Da como resultado:
1.2

0.8

0.6

0.4

0.2

0.2
1

0.8

0.6

0.4

0.2

que es la misma grfica de antes.




Aqu se pueden ver otras aproximaciones.

0.2

0.4

0.6

0.8

44/59

Interpolacin polinmica por trozos




Como hemos visto, algunas veces, al interpolar mediante un nico polinomio un


conjunto amplio de datos, se suelen producir resultados poco satisfactorios en
forma de oscilaciones.

Una mejora consiste en interpolar cada intervalo entre datos mediante un nico
polinomio u otra funcin.

La interpolacin ms simple es un segmento de lnea recta entre cada dos datos


o nudos.

Aqu se pueden ver algunos casos.

45/59

Interpolacin de Hermite

Charles Hermite, Francia, 1822-1901.

Esta interpolacin tiene en cuenta los valores de la funcin que aproximar por
interpolacin en puntos concretos y el de sus derivadas.

Cada tramo es un polinomio de tercer grado con primera derivada continua en


los extremos.

El nmero de ecuaciones que se aade as al sistema lineal que subyace en el


proceso es significativo.

Supongamos que se quiere aproximar f .x/ en el intervalo xi ; xd , mediante


interpolacin con un polinomio de tercer grado
p.x/ D a C b.x

xi / C c.x

xi /2 C d.x

xi /2.x

xd /;

y que f .xi / D yi , f .xd / D yd , p.xi / D yi , p.xd / D yd , p 0.xi / D si y


p 0.xd / D sd .


Necesitaremos calcular a, b, c y d .

La derivada del polinomio es


p 0.x/ D b C 2c.x xi / C d 2.x

Sustituyendo los valores conocidos se tiene que


a D yi

a C b.xd

b D si

b C 2c.xd

xi /.x

xd / C .x

xi / C c.xd
xi / C d.xd

xi / 2


xi /2 .

D yd

xi /2 D sd :

46/59

47/59

Escribiendo esto en
2
1
6
60
6
41 xi
0

forma matricial,
0
1
xd
1

32 3 2 3
0
0
a
yi
76 7 6 7
0
0
7 6 b 7 6 si 7
76 7 D 6 7:
.xd xi /2
0
5 4 c 5 4yd 5
2.xd xi / .xd xi /2
d
sd

Si se tienen n nudos o datos, har falta determinar 4.n


polinomios.

1/ parmetros de los

El que se requiera que interpolen esos n datos aade 2.n 1/ ecuaciones, pues
cada n 1 cbica debe verificar los valores en sus extremos.

El que tengan derivadas continuas aade otras n


punto de unin.

2 ecuaciones para cada

El total de ecuaciones es 3n
parmetros libres.

4, lo que deja 4.n

La interpolacin por tanto no es nica, por lo que se pueden fijar ms


condiciones para esos grados de libertad: monotonicidad, convexidad, etc.

La funcin que realiza esta aproximacin en Matlab es pchip. Una sesin de


trabajo con un ejemplo sencillo puede ser

1/

3n C 4 D n

48/59

1
0.8
0.6

>>
>>
>>
>>
>>
>>

x = -3:3;
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t);
plot(x,y,o,t,p,-)
legend(datos,pchip,3)

0.4
0.2
0
0.2
0.4
0.6
0.8
1
3

datos
pchip
2

49/59

Splines cbicas


Una spline es una curva definida mediante porciones de polinomios de grado k,


con continuidad hasta la derivada k 1.

Una spline cbica es un polinomio de tercer grado con continuidad hasta la


segunda derivada.

La idea de interpolar mediante splines es usar varias porciones de spline, cada


una correspondiente a un polinomio de grado bajo, para pasar a travs de varios
puntos.

Splines
Paul de Faget de Casteljau 1930French mathematician/physicist
1958-1992: Citron; unpublished work in 1958

Pierre Bezier 1910-1999


1933-1975: engineer at Renault
1960: beginning of CADCAM work, Bezier curves

Isaac Jacob Schoenberg 1903-1990


Born in Romania (Landaus son-in-law). To USA in 1930.
Chicago, Harvard, Princeton, Swarthmore, Colby
1941-1966: University of Pennsylvania
1943-1945: Army Ballistic Research Laboratory
1946: two papers on splines
1966-1973: U. of Wisconsin

Carl de Boor 1937Born in what became East Germany. To USA in 1959.


1960-1964: General Motors (grad student intern)
1962: first of many publications on splines
Purdue, Michigan
1972- U. of Wisconsin

50/59

BIC SPLINES
51/59

Splines represent an alternative approach to data interpolation. In polynomial interpolation, a single formula, given by a polynomial, is used to meet all data points. The idea of
splines is to use several formulas, each a low-degree polynomial, to pass through the data
 El ejemplo
ms simple es un spline lineal, en el que se conectan los puntos a
points.
The simplestsegmentos
example of a spline
is a linear spline, in which one connects the dotswith
interpolar mediante
de recta.
straight-line segments. Assume that we are given a set of data points (x1 , y1 ), . . . , (xn , yn )
with x1 < < xn . A linear spline consists of the n 1 line segments that are drawn
between neighboring pairs of points. Figure 3.12(a) shows a linear spline where, between
 En la figura
), the linear
ai +spline
bi x is cbica.
each se
neighboring
pairun
of points
(xi , yde
muestra
ejemplo
y elfunction
mismoy =
con
i ), (xspline
i+1 , yi+1lineal
drawn through the two points. The given data points in the gure are (1, 2), (2, 1), (4, 4),
and (5, 3), and the linear spline is given by
y

(a)

(b)

Figure 3.12 Splines through four data points. (a) Linear spline through (1,2), (2,1),
(4,4), and (5,3) consists of three linear polynomials given by (3.15). (b) Cubic spline

52/59

Como en el caso de Hermite, las splines cbicos para interpolar n puntos de una
funcin imponen 3n 4 condiciones, ms n 2 adicionales por requerirse la
continuidad de la segunda derivada.

Los dos grados de libertad adicionales se fijan si, por ejemplo,




Las primeras derivadas en los extremos izquierdo y derecho se fijan en


sendos valores.

Las segundas derivadas en los extremos son cero.

Las primeras y segundas derivadas en los extremos son iguales dos a dos, etc.

Ejemplo Estudiemos la interpolacin de tres puntos .x1; y1/, .x2; y2/ y


.x3; y3/. Los polinomios de los dos tramos podran ser

53/59

p1.x/ D 1 C 2x C 3x 2 C 4x 3
p2.x/ D 1 C 2x C 3x 2 C 4x 3:


Se necesitan 8 ecuaciones para determinar los parmetros.

El que las cbicas pasen por los puntos dados impone las siguientes condiciones
1 C 2x1 C 3x12 C 4x13
1 C 2x2 C 3x22 C 4x23
1 C 2x2 C 3x22 C 4x23
1 C 2x3 C 3x32 C 4x33

D
D
D
D

y1
y2
y2
y3 :

La continuidad de las primeras derivadas en x2 impone esta condicin


2 C 23x2 C 34x22 D 2 C 23x2 C 34x22:

La continuidad de las segundas derivadas en x2 impone esta otra

54/59

23 C 64x2 D 23 C 64x2:


Por definicin, se impone que las segundas derivadas en los extremos sean cero,
lo que hace que
23 C 64x1 D 0 y 23 C 64x3 D 0:

Todo en forma matricial queda


2
2
3
1 x1 x1
x1
2
3
1
x
x
2
60 0 20 x20
6
60 0 0 0
60 1 2x2 3x22
60 0 2 6x
2
4
0 0
2 6x1
0 0
0
0

0
0
1
1
0
0
0
0

0
0
x2
x3
1
0
0
0

0
0
x22
x32
2x2
2
0
2

32 3

0
1
07 62 7
x23 7 63 7
x33 7 64 7
3x22 7 61 7
76 7
6x2 5 42 5
0
3
6x3
4

2 3
D

Resolviendo este sistema se obtiene la solucin deseada.

y1
6yy27
6 37
6y47
607:
607
4 5
0
0

55/59

En Matlab esta funcin se realiza con spline, de C. de Boor.

Una sesin de trabajo para comparar los resultados con Hermite es la que sigue.
1.5

0.5

x = -3:3;
y = [-1 -1 -1 0 1 1 1];
t = -3:.01:3;
p = pchip(x,y,t);
s = spline(x,y,t);
plot(x,y,o,t,p,-,t,s,-.)
legend(datos,pchip,spline,4)

0.5

1.5
3

datos
pchip
spline
2

Curvas de Bzier

56/59

Dadas a conocer en los aos 60 del siglo XX a travs del trabajo de Pierre
Bzier en Renault y Paul de Faget de Casteljau en Citron.

Se pueden ver como splines que a partir de unos puntos de control, o polgono
de control, permiten al usuario controlar las pendientes en esos puntos y
modelizar curvas a voluntad, escalndolas sin lmite. Su aplicacin inicial era el
diseo de carroceras de automviles, barcos, hlices de barcos, etc.

Las funciones de base de las curvas de Bzier son los polinomios de Bernstein,
conocidos desde 1912.

Sergei Natanovich Bernstein,


Rusia, 1880-1968.

Polinomios de Bernstein en t 2 0; 1 para


las curvas de Bzier y0 D .1 t /3 , azul,
y1 D 3.1 t /2 t, verde, y2 D 3.1 t /t 2 ,
rojo y y3 D t 3 , cyan.

Una curva de Bzier lineal que pasa por dos puntos P0 D .x0; y0/ y
P1 D .x1; y1/ es la lnea recta
B.t/ D P0 C t.P1

P0 / D .1

t/P0 C tP1 ;

Curva de Bzier de grado 1

0  t  1:

Una curva de Bzier cuadrtica definida por tres puntos de control


P0 D .x0; y0/, P1 D .x1; y1/ y P2 D .x2; y2/ es la curva
B.t/ D .1

57/59

t/2 P0 C 2.1

t/t P1 C t 2 P2 ;

Curva de Bzier de grado 2

0  t  1:

Una cbica definida por cuatro puntos de control P0 D .x0; y0/, P1 D .x1; y1/,
P2 D .x2; y2/ y P3 D .x3; y3/ es la curva
B.t/ D .1

t/3 P0 C 3.1

t/2 tP1 C 3.1

t/t 2 P2 C 3t 2 P3 ;

Curva de Bzier de grado 3

Una de cuarto grado.

La curvas de Bzier se pueden conectar unas con otras con diversas


continuidades y ampliarse para definir superficies en 3D.

Bzier de grado 4

. De ms

0  t  1:

Bzier de grado 5

are splines
that allow
user.1;
to control
at the los
knots.de
In return fo
Ejemplo A partir Bzier
de loscurves
puntos
de inicio
y the
final
1/ y the
.2;slopes
2/, con
the extra freedom, the smoothness of the rst and second derivatives across the knot, whic
control .1; 3/ y .3; 3/,
vamosfeatures
a calcular
la curva
detheBzier
are automatic
of the cubic
splines of
previouscorrespondiente.
section, are no longer guaranteed
splines
appropriate
for casesparamtrica
where corners (discontinuous rst derivatives) an
Vamos a utilizar lasBzier
curvas
de are
Bzier
en forma
58/59

donde

En el caso que nos


curva es:

abrupt changes in curvature (discontinuous second derivatives) are occasionally needed.


Pierre Bzier
thecxidea
x.t/ Ddeveloped
x1 C bx t C
t 2 Cduring
dx t 3 his work for the Renault automobile com
2
pany. The same
by Paul de Casteljau, working fo
y.t/ idea
D y1was
C bydiscovered
t C cy t Cindependently
dy t 3 :
Citroen, a rival automobile company. It was considered an industrial secret by both com
panies, and the fact that both had developed the idea came to light only after Bzier pub
lished his research.
curve is a cornerstone of computer-aided design an
bxToday
D 3.x2thexBzier
1/
manufacturing. cx D 3.x3 x2 / bx
x1 Bzier
bx cx spline is determined by four points (x1 , y1
Each piece dof
x Dax4planar
by4D
y1rst
/
, y3.y
and last of the points are endpoints of the splin
(x2 , y2 ), (x3 , y3 ), (x
4 ). 2The
c
D
3.y
y
/
b
y
3
2
y
curve, and the middle two are control points, as shown in Figure 3.14. The curve leave
dy D y4 direction
y1 by(x2c
y : x1 , y2 y1 ) and ends at (x4 , y4 ) along the tangen
(x1 , y1 ) along the tangent
x , y y ). The equations that accomplish this are expressed as a para
direction (x
ocupa,
.x41 ; y1 /3D 4.1; 1/,3.x2 ; y2 / D .1; 3/, .x3 ; y3 / D .3; 3/ y .x4 ; y4 / D .2; 2/. La
metric curve (x(t), y(t)) for 0 t 1.
y
(x2, y2)

x.t/ D 1 C 6t 2 5t 3
y.t/ D 1 C 6t 6t 2 C t 3 :

(x3, y3)

(x4, y4)

(x1, y1)

B-splines (basis spline)

59/59

Se pueden comprender como una generalizacin reciente de la curvas de Bzier


con las ventajas de los splines y sin alguno de los problemas de aquellas.
Su formulacin se debe al trabajo de Isaac Jacob Schoenberg.

Las B-splines son curvas hechas con trozos polinmicos de grado p. Una curva
de Bzier frente a una B-spline con los mismos puntos de control es esta.
370

8 Polynomial Interpolation

Fig. 8.15. Comparison of a Bezier curve (left) and a parametric B-spline (right).
The vertices of the characteristic polygon are denoted by

Las B-splines pueden ser evaluadas de una manera numricamente estable por el
algoritmo de C. de Boor. Su extensin, las NURBS.

Fig. 8.16. Some parametric B-splines as functions of the number and positions
of the vertices of the characteristic polygon. Notice in the third gure (right) the
localization eects due to moving a single vertex

Non-uniform
rational
B-splines

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Funciones trigonomtricas de interpolacin

La Transformada de Fourier

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_interpolacion_trigonometrica_DFT_FFT_2016.pdf

1/39

2/39

ndice
 Introduccin

 Interpolacin trigonomtrica
 Nmeros complejos

 Transformada Discreta de Fourier


 Transformada Rpida de Fourier

 Interpolacin Trigonomtrica con la Trasformada Rpida de


Fourier

Introduccin


El procesamiento digital de seales, DSP, es uno de los ncleos bsicos de la


economa digital que viene desarrollndose tan rpidamente en nuestra
economa y sociedad desde hace aos.

Las funciones trigonomtricas, esencialmente a base de senos y cosenos, son


idneas para modelizar y tratar mediante interpolacin la informacin de
fenmenos cclicos o peridicos: seales acsticas, pticas, econmicas y
sociales. Esas funciones cumplen que

3/39

x.t / D x.t C T / D x.t C 2T / D    D x.t C nT /;


para un periodo T .


La representacin de una funcin continua o discreta mediante combinaciones


lineales de senos y cosenos permite descomponerla en su espacio de frecuencias
lo que ayuda en un anlisis ms preciso de algunos de sus parmetros o modelo.

De qu hablamos? Espectro de frecuencias VS tiempos.

Tambin:

4/39

5/39

Jean Baptiste Joseph Fourier, Francia,


1768-1830.

6/39

Estudiando cmo se transmite el calor, Fourier demostr que cualquier funcin


peridica y continua, C 0; 2, puede representarse como una suma infinita
(serie de Fourier) de polinomios trigonomtricos1 de la forma
a0
C
x.t / D
2

1
i
h

i
aj cos.2f0tj / C bj sen.2f0tj / ;

j D1

donde2 los aj y bj vienen dados por las frmulas de Euler:


2
aj D
T

2
bj D
T

x.t / cos.2f0tj / dt;

para j D 0; 1; : : :

x.t / sen.2f0tj / dt;

para j D 1; 2; : : :

1
2

Sinusoides.
f0 es la frecuencia fundamental, inversa del periodo T : f0 D 1=T .

7/39

Las funciones 1=2, sen.2f0tj /, cos.2f0tj /; j D 1; : : : constituyen una base


en un espacio vectorial de dimensin infinita3 de funciones ortogonales con
respecto al producto interior
Z 2
f .t /g.t / dt:
hf; gi D
0

Los aj y bj son los coeficientes de x.t / en dicha base.

Espacio de Hilbert

FOURIER ANALYSIS

8/39

siguiente
funcin
y.tfuncin
/ D Ay.t
C1Acos.!
t C 0t/.C  /.
 Veamos
la siguiente
/D
0C
0 C C10cos.!
FOURIER ANALYSIS
y(t)

iguiente funcin y.t / D A0 C C1 cos.!0t C  /.


C1

y(t) 2

C1

21

a0
T

1
0

A0

2
T
2
(a)

t, s
t, rad
t, s

2
2

t, rad

(a)

En sus tres componentes


21

A0
a0
B1 sin (0t)

10
A cos (0t)
b 1 sen(10t)
0
1

a0 D 1;7
C1 D 1
! D 2f D 2=T D 2=.1;5s/
Fase,  D =3 D 1;0472 radianes .0;25s/
Frec. fundamental, f D 1=T D 1=.1;5s/ D 0;6667 Hz

(b)

a 1 cos(0t)

a1 D 0;5
b1 D 0;866
y.t / D a0 C a1 cos.!0 t / C b1 sen.!0 t /

representa la1funcin . En este caso A0 D 1;7, C1 D 1, ! D 2f D 2=T D 2=.1;5s/


FIGURE
16.2.0;25s/. La frecuencia f D 1=T D 1=.1;5s/ D 0;6667 Hz.
3 D 1;0472
radianes
(a) A plot of the sinusoidal function y(t) = A 0 + C1 cos(0t + ). For this case, A0 = 1.7,
presin deCla1la=funcin
funcin
componentes:
/radians
D
C
A1 cos.!
COther
B12=.1;5s/
sen.!0 t/
1, 0 =. en
2/T
=tres
2/(1.5
and1;7
 =, /3
1.0472
(=
0 t /s).
epresenta
Ensus
este
caso
As),
Cy.t
1, A
!0=D
2f
D0.25
2=T
D
0 D
1 D
parameters
used
to describe
the curve are f
the D
frequency
f = 1=.1;5s/
0/(2), which
for this case
FIGURE
BD1 D
0;866
. 16.2
1;0472
radianes
.0;25s/
. La frecuencia
1=T D
D 0;6667
Hz.is

9/39

Decompo
composit
signal in
frequenc

Interpolacin trigonomtrica


10/39

Se trata de representar mediante un polinomio de grado m en 0; 2/ una


funcin peridica de la que se conocen n datos igualmente espaciados4 en ese
intervalo, fx0; x1; : : : ; xn 1g. Concretamente, as
m
m
X
a0 X
p.t / D
C
aj cos.jt / C
bj sen.jt /;
2
j D1
j D1

n
cumplindose en los puntos .0; x0/;

2
; x1
n

4
; x2
n

;:::;

2.n 1/
; xn 1
n

o
.

El grado m del polinomio depende del tamao de la muestra, n. Si n es par,


sera m D n=2; si es impar, m D .n 1/=2.

Para obtenerlo de la manera que conocemos habra que determinar 2m C 1


parmetros: a0, ai , bi , i D 1, : : : ; m.
4

Tren de impulsos.

11/39

Ejemplo Interpolemos
 4
 6 
a los datos
;
3
;
;
5
; 4 ;2
.0; 1/; 2
4
4
el polinomio
a0
a2
p.t / D
C a1 cos .1  t / C cos .2  t/ C
2
2
Cb1 sen .1  t/ C b2 sen .2  t/ :

Para obtener los coeficientes a0, a1, a2, b1 y b2 planteamos un sistema de


ecuaciones lineales del tipo Ax D b, en el que la matriz A es del tipo
Vandermonde, y b D 1; 3; 5; 2T .

12/39

El sistema que hay que resolver, en forma matricial,


21
1
1
0
2
2
 1


61
21
21
6 2 cos 1  21
cos
2

sen
1

sen
4
2
4
4
6
6 1 cos 1  22  1 cos 2  22  sen 1  22  sen
42
4
2
4
4



1
23 1
23
23
cos
1

cos
2

sen
1

sen
2
4
2
4
4

Simplificando resulta as
21
2

61
62
6
61
42
1
2

1
0
1
0

1
2
1
2
1
2
1
2

32 3 2
a0
00
6
7 6a17
6
1 07 6 7
7
7 6a27 D 6
6
7
6
0 07
5 4b1 5 4
10
b2

es
32 3 2
a0
0
6
7

21 7 6a1 7
2  4 76 7 6
7 6a27 D 6

76 7 6
2  22
5 4b1 5 4
4

2  23
b2
4

1
7
37
7:
55
2

1
7
37
7:
55
2

13/39

Resolviendo da

2 13
2 3
2
a0
6 7
6a 7 6 37
6 17 6 7
6 7 6 97
6a27 D 6 2 7 :
6 7 6 7
4b1 5 6 1 7
4 25
b2
0

El polinomio de interpolacin es entonces


p.t/ D 14 C 3 cos.t / 94 cos.2t / C 12 sen.t /.


Sustituyendo 0, =2,  y 3=2 en este polinomio se puede comprobar que se


consiguen los valores de la muestra.

Nmeros complejos


Los nmeros del cuerpopC de lo complejos


surgen para dar sentido a las races
p
a2 D a
1, para lo que se utiliza la unidad
de nmeros negativos,
p
imaginaria i D
1.

Cualquier complejo z D x C yi , donde x es la parte real e y la imaginaria


(ambas reales), se representa geomtricamente en el plano complejo as:


En su forma polar se5 escribe z D re i' D r cos ' C i sen ' , donde
p
r D x 2 C y 2 y ' D arctan.y=x/.
5

A e i' D cos ' C i sen ' se la conoce como identidad de Euler

14/39

La circunferencia de radio unidad en el plano complejo


es el Transform
lugar geomtrico
de
10.1 The Fourier
| 469
los nmeros complejos con r D 1.

15/39

e i= 1 + 0i

i
2

=i

i
e4

e0= 1 + 0i
x

Si se multiplican dos nmeros e i y e i de esa circunferencia,



i i

e 10.2
e Unit
D circle
cos in C
sen  plane.
cos Complex
C i sennumbers

Figure
thei complex
of the form ei for some

D cos  cos
sen
sen
circle.
C i sen  cos C sen cos  :
angle have magnitude
one
and lie
on the
unit
6 i.C /

Reordenando, e
D cos. C / C i sen. C /. Por tanto, el producto de dos
nmeros complejos en la circunferencia de radio
unidad es otro nmero de la
z = a + bi = rei ,
(10.1)
misma circunferencia cuyo ngulo es
la suma de los dos precedentes.
where r is the complex magnitude |z| = a 2 + b2 and = arctan b/a.
i
i plane corresponds
i e i to complex numbers of magnitude
The unit circle in the complex
6
Es interesante saber que cos  D e Ce
y sen  D i e
.
2
r = 1. To multiply together the two
numbers ei and2ei on the unit circle, we could convert

Los nmeros Moivre, z tales que z n

1 D 0, races n-simas de la unidad, por

16/39

Abraham de Moivre, Francia, 1667-1754

, tienen inters:
1 y 1.

En la recta de nmeros reales slo hay dos:

En el plano complejo
hay muchos. Por ejemplo, i es una raz cuarta de 1:
4
p
i4 D
1 D . 1/2 D 1.

Estn localizados en la circunferencia del plano complejo de radio la unidad:


forman los vrtices de un polgono regular de n lados con un vrtice en 1.


)LIWKURRWVRIXQLW\

L



Una raz n-sima de la unidad se denomina primitiva7 si no es una raz k-sima


para k < n. As, 1 es una raz segunda primitiva de la unidad y cuarta no
Roots of Unity
primitiva de ella.

17/39

For given integer n, we use notation

Es fcil vernque,
para una nicualquiera,
nmero complejo !n D e i2=n es
= cos(2/n)
sin(2/n) =ele2i/n
una raz
unidad (tambin lo es !n D e i2=n).
forn-sima
primitiveprimitiva
nth rootde
ofla
unity

En la figura
la context,
raz cuarta
debyla unidad
!4 D e
k
factorsseinve
this
areprimitiva
then given
n or
k k = 0, . .las
tres. Son,
!4k , k D 0; 1; 2; 3.
by en
. , npotencias
1
n ,general,

nth roots of unity, sometimes called twiddle

i2=4

y las otras

i = 43 = 41
....

42 = 42 =

...
....
..................
.... .......2/4
...
....
.
.. 1
1 ............................................................................................
...
....
....
....
..
..

= 40 = 44

i = 41 = 43

De otra manera, la raz n-sima de la unidad es primitiva, si slo si sus k-simas potencias, k D 0; 1; : : : ; n 1 son distintas. Las races cuartas
de 1 son: 1, 1, i , i . En el caso de 1 sus potencias de grado 0, 1, 2 y 3 son iguales; no es raz primitiva. Para i , se calcula que las potencias de grado
0, 1, 2, 3 son, respectivamente, 1, i , 1, i , distintas, luego i es una raz cuarta primitiva de 1.

18/39

Las !nk se denominan tambin factores twiddle. Mirar ms aqu.

Se puede verificar que la raz n-sima de la unidad, ! D e


cumple que

Tambin que

i2=n

, con n > 1,

1 C ! C ! 2 C ! 3 C    C ! n 1 D 0;
1 C ! 2 C ! 4 C ! 6 C    C ! 2.n 1/ D 0;
1 C ! 3 C ! 6 C ! 9 C    C ! 3.n 1/ D 0;
:::
1 C ! n 1 C ! .n 1/2 C ! .n 1/3 C    C ! .n 1/.n 1/ D 0:

1 C ! n C ! 2n C ! 3n C    C ! n.n

1/

D 1 C 1 C 1 C 1 C    C 1 D n:

Adems, si k es un nmero entero,


n 1
i
j D0

!jk D

n si k=n es entero,
0 en otro caso.

19/39

Transformada Discreta de Fourier




La interpolacin trigonomtrica que estamos estudiando se puede llevar a cabo


de forma eficaz usando la Transformada Discreta de Fourier y la Transformada
Rpida de Fourier.

Para un vector de coeficientes reales, x D x0; x1; : : : ; xn 1T , su Transformada


Discreta de Fourier, TDF, es el vector n-dimensional y D y0; y1; : : : ; yn 1T
tal que
n 1
1 X
xj ! j k ;
yk D p
n j D0
donde ! D e

i 2=n

20/39

En forma matricial, la definicin anterior dice que


3 2
y0
a0 C i b0
6 y1 7 6 a1 C i b1
6
7 6
6 y2 7 D 6 a2 C i b2
6 : 7 6
:::
4 :: 5 4
yn 1
an 1 C i bn
2

2 0 0
32
3
! !
!0    !0
x0
6! 0 ! 1
7
! 2    ! n 1 7 6 x1 7
6
6
7
7
4
2.n 1/ 7
7 6 x2 7 :
7 D p1 6! 0 ! 2
!



!
6
7
7
n6 :
:::
:::
::: 7
4 ::
5 4 ::: 5
5
2
xn 1
! 0 ! n 1 ! 2.n 1/    ! .n 1/
1
3

A la matriz simtrica
3
!0 !0
!0    !0
6! 0 ! 1
!2    !n 1 7
6
0
2
4
2.n 1/ 7
7
!
!
!



!
F n D p1n 6
6 :
:::
:::
::: 7
5
4 ::
2
! 0 ! n 1 ! 2.n 1/    ! .n 1/
2

se la denomina matriz de Fourier. Todas sus filas y columnas, excepto las


primeras, suman cero.

21/39

La inversa de la matriz de Fourier es

F n1

2
!0 !0
!0   
6! 0 ! 1
! 2  !
6
6
! 4  !
D p1n 6! 0 ! 2
6 ::
:::
:::
4 :
! 0 ! .n 1/ ! 2.n 1/    !

!0

.n 1/

7
7
2.n 1/ 7
7
7
:::
5
.n 1/2

y la Transformada Discreta de Fourier inversa de y es x D F n 1y.




Dado que un nmero complejo en la circunferencia unidad,


z D e i D cos  C i sen , tiene como recproco, su complejo conjugado,
e i D cos  i sen  , la inversa de la matriz F n ser la que tenga como
coeficientes los complejos conjugados los de F n, es decir

F n 1 D F n:

22/39

La matriz de Fourier es una matriz unitaria, F F D I, por lo que, recordemos,


al multiplicarla por cualquier vector, ste conserva su norma.

Aplicar la Transformada Discreta de Fourier requiere O.n2/ operaciones,


concretamente n2 multiplicaciones y n.n 1/ sumas; aplicar la inversa lo
mismo.

Ejemplo Calculemos la TDF del vector x D 1; 0; 1; 0T .


Sea en este caso ! la raz cuarta de la unidad, es decir ! D e i2=4 D e
D cos.=2/ i sen.=2/ D i . La trasformada es
2 3
y0
6y1 7
6 7D
4y2 5
y3

32
1 1 1 1
61 ! ! 2 ! 3 7 6
1
76
p 6
4 41 ! 2 ! 4 ! 6 5 4
1 !3 !6 !9

3
1
07
7D
15
0

2
32
1 1 1 1
6
6
i 1 i7
1 61
76
2 41 1 1 15 4
1 i 1 i

3 2 3
1
0
6 7
07
7 D 617 :
15 405
0
1

i=2

23/39

Si utilizamos la rutina de Matlab para hacer TDF, fft, hay que tener en
cuenta que su normalizacin es un poco diferente, y hay que usar
fft(x)/sqrt(n). Para la inversa ifft(y)*sqrt(n). En efecto:

>> x=[1 0 -1 0];


>> fft(x)
ans =
0
2
0
>> fft(x)/sqrt(4)
ans =
0
1
0
>> ifft(ans)*sqrt(4)
ans =
1
0
-1
>>

24/39

Una propiedad importante de la TDF es que si n es par y el vector


x D x0; x1; : : : ; xn 1T tienes todos sus coeficientes reales, los de su
transformado, y, son los siguientes, para por ejemplo n D 8,
2 3
2
3
x0
3
2
a0
6x17
y0
6 7 6a C i b 7
17
6x 7 6 1
6 ::: 7
2
7
6 7 6a C i b 7 6
27
6x 7 6 2
6y n 7
17
6 37 6
7 6
6 7 6a3 C i b37 6 y2 n 7
F 8 6x47 D 6
7 D 6 2 7:
6 7 6a4
7
7 6
6x57 6
7 6y n 17
6 7 6a3 i b3 7 6 2: 7
6x67 6
7 4 :: 5
6 7 4a2 i b2 5
4x75
y1
a1 i b1
x8

Transformada Rpida de Fourier




25/39

Como hemos visto, la TDF necesita O.n2/ operaciones.

James William Cooley, 1926 y John Tukey, 1915-2000.


EE.UU.

En 1965, Cooley y Tukey formularon uno de los algoritmos ms importantes del


Siglo XX. La Transformada Rpida de Fourier, FFT.

Este algoritmo sigue la estrategia del divide y vencers para hacer mucho ms
rpido la TDF. Requiere O.n log n/ operaciones.

Su aportacin ms significativa es haber convertido el tratamiento de seales de


lo analgico a lo digital, ampliando casi hasta el infinito su campo de aplicacin.

26/39

Si expresamos la TDF, F nx, de la forma


3
2
2
3
x0
y0
4 ::: 5 D p1 M n4 ::: 5 ;
n
xn 1
yn 1
donde

2
3
0
0
0
0
! !
!
 !
6! 0 ! 1
!2    !n 1 7
6
7
6! 0 ! 2
4
2.n 1/ 7
!
 !
Mn D 6
7;
6 :: ::
:::
::: 7
4 : :
5
2
! 0 ! n 1 ! 2.n 1/    ! .n 1/

veamos cmo calcular de forma recursiva el producto z D M nx.

27/39

i2=4

Empecemos simulando su mecnica con n D 4. Si ! D e


2 3 2
32 3
0 0 0 0
z0
x0
! ! ! !
6 7 6 0 1 2 37 6 7
6z17 6! ! ! ! 7 6x17
6 7 D 6 0 2 4 67 6 7 :
4z25 4! ! ! ! 5 4x25
z3
!0 !3 !6 !9
x3

Reordenando las operaciones de tal manera que los trminos pares aparezcan
primero se tiene que

z0 D ! 0x0 C ! 0x2 C ! 0 ! 0x1 C ! 0x3

0
2
1
0
2
z 1 D ! x0 C ! x2 C ! ! x1 C ! x3

z2 D ! 0x0 C ! 4x2 C ! 2 ! 0x1 C ! 4x3

0
6
3
0
6
z3 D ! x0 C ! x2 C ! ! x1 C ! x3 :

, la TDF es

28/39

Usando el hecho de que ! 4 D 1, las ecuaciones anteriores quedan




z 0 D ! 0 x0 C ! 0 x2 C ! 0 ! 0 x1 C ! 0 x3


0
2
1
0
2
z 1 D ! x0 C ! x2 C ! ! x1 C ! x3


z2 D ! 0x0 C ! 0x2 C ! 2 ! 0x1 C ! 0x3


0
2
3
0
2
z3 D ! x0 C ! x2 C ! ! x1 C ! x3 :

Los trminos entre parntesis en las primeras dos lneas se repiten en las dos
siguiente. Hagamos
u 0 D 0 x0 C 0 x2
u 1 D 0 x0 C 1 x2

v0 D 0x1 C 0x3
;
v1 D 0x1 C 1x3

donde  D ! 2, la segunda raz de la unidad.

29/39

Los vectores u D u0; u1 y v D v0; v1 son bsicamente


 
x
u D M2 0
x2
 
x
v D M2 1
x3
por lo que el original M 4x es
z0 D u0 C ! 0v0
z1 D u1 C ! 1v1
z2 D u0 C ! 2v0
z3 D u1 C ! 3v1:

La TDF.4/ original se ha transformado en un par de TDF.2/ ms algunas


p
pocas multiplicaciones y sumas. Si ignoramos el trmino 1= n una TDF.n/ se
puede reducir al clculo de dos TDF.n=2/ ms 2n 1 operaciones adicionales.

30/39

Interpolacin Trigonomtrica con la


Trasformada Rpida de Fourier


Dado un intervalo c; d y un nmero positivo n, definamos t D .d c/=n y


unos tj D c C jt, para j D 0; : : : ; n 1, igualmente espaciados en el
intervalo.

Para un vector dado x al que le aplicaremos la Transformada de Fourier, cada


uno de sus coeficientes, xj , lo interpretaremos como una medida de un conjunto
de ellas tomadas a una seal determinada en los tiempos tj .

31/39

Si y D F nx es la TDF de x, cada coeficiente xj vendr dado por la frmula


de la inversa de TDF:
i 2k.t

j
n 1
n 1
n 1
X
X
d c

1 X
1
e
j
xj D p
yk ! k D p
yk e i2kj=n D
yk p
n kD0
n kD0
n
kD0

c/

Q.t/

Esta expresin la podemos ver como la que materializa, mediante TDF, una
interpolacin de los puntos .tj ; xj / con funciones de base trigonomtricas

i 2k.tj c/
d c

p
n

k D 0; : : : ; n

con coeficientes, o pesos, yk D ak C i bk .

Del desarrollo de Q.t /, es decir,


1
Q.t / D p
n

n 1
i

32/39


2k.tj c/
2k.tj c/
.ak C i bk / cos
C i sen
;
d c
d c

kD0

si los xj son reales, la funcin trigonomtrica de orden n que interpola los


puntos .tj ; xj / es
1
Pn .t/ D p
n

n 1
i


2k.tj c/
ak cos
d c


2k.tj c/
bk sen
:
d c

kD0

Simplificando un poco ms esta frmula, si n es par, se llega a que


n

a0
2
Pn .t / D p C p
n
n

1
2
i


2k.tj c/
ak cos
d c


2k.tj c/
an =2
n.t c/
bk sen
C p cos
d c
d c
n

kD0

satisfaciendo Pn.tj / D xj , j D 0; : : : ; n

1.

33/39

Ejemplo Calculemos el polinomio trigonomtrico de interpolacin del vector


x D 1; 0; 1; 0T . El intervalo es 0; 1; t D 0; 1=4; 1=2; 3=4T .
La TDF de x es y D 0; 1; 0; 1T . Los coeficientes de la interpolacin son
ak C i bk D yk , por lo que a0 D a2 D 0, a1 D a3 D 1 y
b0 D b1 D b2 D b3 D 0.
Aplicando la frmula anterior, el polinomio trigonomtrico de interpolacin es:
 a2
a0
P4.t / D
C a1 cos 2 t b1 sen 2 t C cos 4 t D cos 2 t:
2
2

34/39

Ejemplo Obtengamos el polinomio trigonomtrico de interpolacin de


x D 2;2 2;8 6;1 3;9 0;0 1;1 0;6 1;1T en el intervalo 0; 1.
La Transformada de Fourier es

2
6
6
6
6
6
yD6
6
6
6
4

3
5;5154
1;0528 C 3;6195i 7
7
1;5910 1;1667i 7
7
0;5028 0;2695i 7
7:
0;7778
7
0;5028 C 0;2695i 7
7
1;5910 C 1;1667i 5
1;0528 3;6195i

Aplicando la frmula para obtener el polinomio, se tiene que


P8 .t/ D

1;0528
5;5154
p
p
p
cos 2 t 3;6195
sen 2 t
8
2
2
p
p
C 1;5910
cos 4 t C 1;1667
sen 4 t
2
2
0;5028
p
p
p
cos 6 t C 0;2695
sen 6 t 0;7778
2
2
8

1;95

0;7445 cos 2 t

cos 8 t

2;5594 sen 2 t

C1;125 cos 4 t C 0;825 sen 4 t

0;3555 cos 6 t C 0;1906 sen 6 t

0;275 cos 2 t:

35/39

El resultado se ve grficamente as:


2

-1

-2
y

-3

-4

-5

-6

-7

0.1

0.2

0.3

0.4

0.5
Tiempo

0.6

0.7

0.8

0.9

36/39

Una consecuencia prctica muy importante del hecho de que en el polinomio


trigonomtrico de interpolacin Pn.t / las funciones de base sean ortogonales es
que si m < n entonces
m

a0
2
Pm .t / D p C p
n
n

1
2
i


2k.tj c/
ak cos
d c


2k.tj c/
am =2
n.t c/
bk sen
C p cos
d c
d c
n

kD0

es la mejor aproximacin de mnimos cuadrados de orden m a los datos


.tj ; xj /; j D 0; : : : ; n 1.


Esto quiere decir que para el ejemplo anterior, los polinomios trigonomtricos de
interpolacin P4.t / y P6.t / sern
P4 .t/ D
P6 .t/ D

1;95

0;7445 cos 2 t

1;95

0;7445 cos 2 t

2;5594 sen 2 t C 1;125 cos 4 t


2;5594 sen 2 t

C1;125 cos 4 t C 0;825 sen 4 t

0;3555 cos 6 t:

37/39
1

-1

-2

-3

-4

-5

-6

-7

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

-1

-2

-3

-4

-5

-6

-7

Aplicaciones prcticas: Sonido, ruido, filtrado, ...

38/39

>> load handel


>> plot(y(1:256))
>> xp=dftfilter([0,1],y(1:256),64,256,256);
0.2

0.2

0.15

0.15

0.1

0.1

0.05

0.05

-0.05

-0.05

-0.1

-0.1

-0.15

-0.15

-0.2

-0.2

-0.25

50

100

150

>>
>>
>>
>>
>>

200

250

300

-0.25

50

100

sound(y,Fs)
xp=dftfilter([0,1],y,10000,73113,73113);
sound(xp,Fs)
xp=dftfilter([0,1],y,73112,73113,73113);
sound(xp,Fs)

150

200

250

300

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Mnimos cuadrados lineales

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_mincua_lineal_2016.pdf

1/89

2/89

ndice
 Introduccin
 Fundamentos tericos


Sistemas incompatibles. Ecuaciones normales

Sistemas indeterminados

 Resolucin numrica del problema




Mtodo de Gram-Schmidt

Mtodo de Gram-Schmidt modificado

Factorizacin QR

Descomposicin numrica en valores singulares

Comparacin de los mtodos

 Matlab y la solucin de problemas de mnimos cuadrados

3/89

Introduccin


Muchos modelos matemticos modernos, especialmente aquellos que usan


tcnicas de estimacin y regresin, se han convertido en herramientas
fundamentales en la ciencia y la ingeniera.

Para conocer y controlar en tiempo real el estado y funcionamiento de diversos


sistemas de operacin, control y prediccin es necesario primero tomar medidas
adecuadamente de los mismos y posteriormente actuar.

Cualquier medida siempre est sujeta a errores, por pequeos que sean, por el
desajuste de la calibracin del aparato que la realiza, su propia imperfeccin, las
condiciones ambientales, las vibraciones, el envejecimiento de la maquinaria, etc.

4/89

Par mitigar el efecto de esos errores, aislarlos, identificarlos y filtrarlos se toma


un nmero de medidas de los parmetros que definen un sistema bastante
mayor del estrictamente necesario redundante.

La redundancia de medidas conduce normalmente, en los modelos matemticos


que determinan cmo se relacionan los parmetros y variables de
funcionamiento de un sistema, a sistemas de ecuaciones incompatibles: con
muchas ms ecuaciones que incgnitas.
La falta de suficientes medidas, lleva a sistemas indeterminados.

Para obtener la solucin ms probable que represente un sistema y que mejor se


aproxime a la ideal si no se diesen esos errores, se proyecta el problema en un
subespacio de menor dimensin para filtrar o aislar los datos irrelevantes.


La proyeccin ms comn es la ortogonal, que determina el mtodo de los


mnimos cuadrados (ver teorema de la proyeccin).

5/89

Casos posibles de sistemas lineales, una vez ms


 Casos posibles de sistemas lineales, una vez ms
m=n

m=n

m=n
m=n

rango(A) = m = n

rango(A) = m = n

m=n

rango(A) < n < m


rango(A) < n < m

rango(A) < m = n

rango(A) = m = n

rango(A) < m = n

1a

1b

1a

m>n
m>n

1b

m>n
m>n

rango(A) = n < m
rango(A) = n < m

m>n

m>n

rango(A) = n < m

rango(A) < n < m

2a

2b

2a

2b

m<n

m<n
rango(A) = m < n

m<n

rango(A) = m < n
rango(A) = m < n

3a

3a

m<n

m<n

rango(A) < m < n

rango(A) < m < n

m<n

rango(A) < m < n

3b

3b

=
5/101

'*/*5*0/

,I A LV m ! n DQG E LVLQ Rm  D OHDVWVTXDUHVVROXWLRQ RI A[ D E LV


VXFKWKDW
kE # AO[k % kE # A[k
6/89

IRUDOO [ LQ Rn 


Estudiaremos pues problemas sin solucin, en los que rango.Ajb/ rango.A/


pues b Im.A/.7KHPRVWLPSRUWDQWDVSHFWRIWKHOHDVWVTXDUHVSUREOHPLVWKDWQRPD
A[ ZLOOQHFHVVDULO\EHLQWKHFROXPQVSDFH
WKHYHFWRU
&RO A 6R
Si es posibleVHOHFW
determinar
una pseudosolucin
que cumpla un criterio concreto:
WR E 6HH)LJ 2IFRXUVH LI E
A[ WKHFORVHVWSRLQWLQ
por ejemplo,WKDWPDNHV
el de minimizar
la norma kAx &RO
bkA
2.
LQ &RO A WKHQ E LV A[ IRUVRPH [ DQGVXFKDQ [ LVDOHDVWVTXDUHVVROXW
b

b
a8

Ax

01234

a6

Im(A)

Ax

Ax

'*(63&  7KHYHFWRU E LVFORVHUWR AO[ WKDQ

WR A[ IRURWKHU [

7/89

Tambin problemas con muchas soluciones, de las que:





Se escoge aquella x cuya norma eucldea, kxk2, es mnima.

Se estudia otro tipo de solucin; por ejemplo:




Que minimice

m
X
T
aj x

j D1


Que minimice

mKax ajT x
j

bj

bj

8/89

El hecho de que se utilice el criterio de minimizar, de una manera u otra, la


norma eucldea raiz cuadrada positiva de la suma de los cuadrados de las
desviaciones entre dos vectores de valores reales es lo que da nombre a los
procedimientos para resolver esos problemas: mnimos cuadrados.

El problema lineal de mnimos cuadrados se plantea formalmente as:


Dada una matriz A 2 Rmn, de rango k  mKn.m; n/, y un vector b 2 Rm,
encontrar un vector x 2 Rn que minimice kAx bk2.

9/89

El ejemplo por excelencia de las tcnicas que estudiamos lo constituye el tratar


de ajustar a un conjunto de m pares de puntos .ti ; bi / una funcin f .x; t / de n
parmetros independientes x1; x2 : : : xn.


Los pares de puntos los pueden definir unas mediciones, bi , obtenidas en


unos tiempos, ti .

Si la funcin es lineal en x1; : : : ; xn se tiene un problema de mnimos


cuadrados lineales en el que,
si los n parmetros se disponen como los coeficientes de un vector
n-dimensional, x, y
los datos obtenidos, en otro vector m-dimensional b (usualmente
m  n),

se llega a una relacin de la forma Ax D b, donde A 2 Rmn, x 2 Rn y


b 2 Rm .

10/89

Ejemplo Supongamos que queremos ajustar al conjunto de pares de puntos


f.ti ; bi /g = f.1; 2/; .2; 3/; .3; 5/; .4; 6/g la funcin
f .x1; x2; x3; t / D x1 C x2t C x3t 2;
segn representa la figura.
b
f (x 1 , x 2 , x 3 , t ) = x 1+ x 2 t + x 3 t 2

5
4
3
2
1
1

Para los datos y parmetros de este ejemplo el sistema Ax D b es as:


2

1
61
6
41
1

1
2
3
4

1
47
7
95
16

2 3
x1
4x2 5
x3

2 3
2
637
7
D 6
455 :
6

x


Resolver este problema en la zona de trabajo de Matlab sera trivial:


>> Am=[1 1 1;1 2 4;1 3 9;1 4 16];
>> b=[2 3 5 6];
>> Am\b
ans =
0.50000000000000
1.40000000000000
-0.00000000000000

Con una tctica de ajuste por mnimos cuadrados, tambin con Matlab:
>> x=[1 2 3 4];
>> y=[2 3 5 6];
>> p=polyfit(x,y,2)
p =
-0.0000
1.4000

0.5000

11/89

12/89

Si se quiere profundizar un poco en el problema dibujando los datos y la funcin


ajustada, habra que hacer:
>> x1=linspace(0,5,150);
>> y1=polyval(p,x1);
>> plot(x,y,o,x1,y1,-)

Los resultados son los de la figura.


8

0.5

1.5

2.5

3.5

4.5

La lnea recta y D 0; 5 C 1; 4t, en verde, y los puntos a los que se ajusta, en


azul.

13/89

Otros muchos sistemas de la ciencia, ingeniera, economa, etc. recurren a


modelos de mnimos cuadrados.

14/89

Sistemas de prediccin a partir de datos masivos

15/89

Sistemas de navegacin
VOR, DME, ADF, RMI, MLS

16/89

Fundamentos tericos
Teorema

Descomposicin en valores singulares Si A 2 Rmn es una matriz de rango r, existen


matrices ortogonales U 2 Rmm y V 2 Rnn tales que
A D U V T ;
donde

2 Rmn y r D diag.1 , 2 ; : : : ; r /, con

(1)


r 0
D
;
0 0

1  2      r > 0:
Si las matrices U y V se escriben como
U D u1 ; : : : ; um

y V D v1 ; : : : ; vn ;

los ui y vi son los vectores singulares izquierdos y derechos, respectivamente, correspondientes a los valores
singulares i , i D 1; : : : ; r.

17/89

 1 
r 0
xDV
UTb
0 0

Teorema El vector
es la solucin del problema

minimizar
kAx bk2
x 2Rn
que hace mnima kxk2 , donde A 2 Rmn y rango.A/ D r  mKn.m; n/.

Definicin A la matriz


r 1 0
A DV
U T 2 Rnn
0 0

se la denomina matriz pseudoinversa o inversa generalizada Moore-Penrose de A.

18/89

De acuerdo con esa definicin, la solucin de mKnx 2Rn kAx

bk2 es

x D A b:


Adems, de acuerdo con el Teorema de la Proyeccin, se cumple que


b

a8

x ? ker.A/ y que Ax D P Im.A /b;


01234

a6

donde P Im.A /b es la proyeccin ortogonal de b sobre Im.A/, paralelamente a


ker.A T /.

Obsrvese que .A T / D .A /T ; en general,

19/89

.AB/ B A :

La matriz pseudoinversa satisface las denominadas condiciones de Penrose:


AA A
A AA
.AA /T
.A A/T

D
D
D
D

A
A
AA
A A:

Las frmulas para obtener las matrices de proyeccin ortogonal sobre los cuatro
subespacios fundamentales de A son
P Im.A / D AA
P ker.A T / D I AA
P Im.A T / D A A
P ker.A /

D I

AA

Dos casos de matriz pseudoinversa son fundamentales:


a) Si A 2 Rmn, m  n y rango.A/ D n,
A D .A T A/ 1A T :
b) Si A 2 Rmn, m  n y rango.A/ D m,
A D A T .AA T / 1:
a) es el problema de mnimos cuadrados resultante de un sistema de
ecuaciones incompatible, con matriz de rango completo.
b) es el de un sistema de ecuaciones compatible indeterminado con matriz
de rango completo: resuelve este problema:
minimizar kxk2;
x 2S

donde S D fx W Ax D bg:

20/89

Sistemas incompatibles. Ecuaciones normales




Si se tiene una ecuacin Ax D b, A 2 Rmn, que no tiene solucin pues


b Im.A/, se puede buscar una pseudosolucin, x, que acerque Ax lo ms
posible a b en el sentido de la k  k2, es decir,
mKn kAx
x 2Rn

bk2:

Teorema Sean X e Y dos espacios vectoriales de dimensiones finitas n y m sobre


el cuerpo R y A una transformacin lineal representada en dos bases de X e Y por la
matriz A. Para un vector dado b 2 Y , el vector x 2 X minimiza kAx bk2 si y slo si
A T Ax D A T b.
I D EMOSTRACIN . Sean Im.A/ D fAx W x 2 Rn g y ker.A/ D fx W Ax D 0g.
El complemento ortogonal del conjunto Im.A/ ser:
.Im.A//? D fr W r T z D 0; 8z 2 Im.A/g D fr W r T A D 0T g
D fr W A T r D 0g D ker.A T /:
O 2 , donde bO 2 Im.A/.
El problema planteado es obviamente equivalente a minimizar kb bk
O
Por el teorema de la proyeccin, b es un vector que minimiza la norma anterior si y slo si b bO 2
O D A T b A T Ax.
.Im.A//? ; es decir, si b bO 2 ker.A T /, o de forma equivalente, 0 D A T .b b/

21/89

22/89

La representacin geomtrica en tres dimensiones es esta.


b
r = b Ax (Im(A)) A T (b Ax ) = 0

Al sistema de ecuaciones que define la relacin

a2
a 2x 2

A TAx D A T b
Ax

a 1x 1
Im(A)

se le denomina ecuaciones normales.

a1

El vector de residuos, r D b Ax, es ortogonal a Im.A/ y a los vectores que


lo definen: a1 y a2. Es decir, se cumple que A T .Ax b/ D 0.

23/89

El vector solucin de las ecuaciones normales, x, es nico si A T A es invertible


(si y slo si la transformacin lineal A es inyectiva: rango.A/ D n); en este caso
x D .A T A/ 1A T b:

Si la matriz A T A es invertible,
rDb

Ax D .I

P Im.A //b;

donde P Im.A / D A.A T A/ 1A T es la matriz de proyeccin ortogonal sobre


Im.A/ paralelamente a ker.A T /.

24/89

Sistemas indeterminados


Si el sistema tiene ms de una solucin, siempre se puede calcular aquella de


menor norma eucldea.
Teorema Sean X e Y dos espacios vectoriales de dimensiones n y m sobre el cuerpo
R y A una transformacin lineal representada en dos bases de X e Y por la matriz A.
El vector x de norma eucldea mnima que satisface la ecuacin Ax D b es el dado por
x D A T z, donde z es una solucin de la ecuacin AA T z D b.

I D EMOSTRACIN . Si x 1 es una solucin de la ecuacin Ax D b, cualquier solucin de la misma se


puede expresar como x D x 1 C u, donde u 2 ker.A/; es decir, estar en la variedad lineal x 1 C ker.A/.
El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su
norma kxk2 es mnima y adems pertenece a .ker.A//? .
Como x 2 .ker.A//? , pertenecer a Im.A T /, es decir, se podr expresar como x D A T z para algn
z 2 Y . Como Ax D b, entonces
AA T z D b:

25/89

Cuando la matriz AA T es invertible, la solucin ptima es


x D A T .AA T / 1b:
La interpretacin geomtrica de este resultado en R3 se esquematiza as:

80123A

x7

0123A

x9

x7

u
x

26/89

Ejemplo Se quiere obtener la solucin


de norma eucldea mnima de la


 x1
ecuacin indeterminada 1 2
D 3.
x2

Cualquier solucin se podr expresar como x 1 C ker.A/, donde x 1 es cualquier



T
vector solucin (por ejemplo 1 1 ) y ker.A/ es el que se ve
en la figura.
75
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS

x2



Im.A T /

1.5
(3/5, 6/5) = x


(1, 1) = x 1

subespacio de soluciones
(3, 0)
1

x1



ker.A/


 La solucin que se busca es Figure 2.1 A minimum-norm solution.


 
  1
   

 1
3 1
1   1
0;6

La solucin que se busca es




x DA T AA


T

Se ve que est en Im.A T /.

 
  1
   
 1
3 1
1 
3=5
bD
3D
D
:
1 2
2
2
6=5
5 2
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS



Im.A T /

x2
1.5

(3/5, 6/5) = x


(1, 1) = x 1

subespacio de soluciones
(3, 0)
1

ker.A/


 La solucin que se busca es Figure 2.1

A minimum-norm solution.

x1



75

27/89

28/89

ndice
 Introduccin
 Fundamentos tericos

Sistemas incompatibles. Ecuaciones normales

Sistemas indeterminados

Resolucin numrica del problema




Mtodo de Gram-Schmidt

Mtodo de Gram-Schmidt modificado

Factorizacin QR

Descomposicin numrica en valores singulares

Comparacin de los mtodos

 Matlab y la solucin de problemas de mnimos cuadrados

29/89

Resolucin numrica del problema




Mediante las ecuaciones normales, con cualquiera de los mtodos estudiados


para sistemas con matriz cuadrada y simtrica:



A TAx D A T b, en el caso de que el sistema fuese incompatible, o a

AA Tz D b, cuando se diese un sistema indeterminado.

Los nmeros de condicin, 2, de AA T y A T A, son el cuadrado del de la


matriz A, por lo que si el problema originalmente no est bien condicionado, las
dificultades numricas pueden resultar insalvables al resolver el sistema
correspondiente.

30/89

Ejemplo Consideremos la matriz


2
3
1 1 1 1 1
6"
7
6
7
6
7
6 "
7
AD6
7:
"
6
7
6
7
4
" 5
"

El rango de A es 5, para " 0. La matriz


2
3
2
1C"
1
1
1
1
6 1
1 C "2
1
1
1 7
6
7
6
7
AT A D 6 1
1
1 C "2
1
1 7
6
7
1
1
1 C "2
1 5
4 1
1
1
1
1
1 C "2
tambin es de rango 5, para " 0.

31/89

El nmero de condicin 2.A T A/ D 2.A/2 D .5 C "2/="2.

Si " es mayor que la precisin de la mquina pero "2 no (por ejemplo, si


" D 0,5  10 5, "2 D 0,25  10 10 y la precisin de la mquina
 D 1,0  10 10), la representacin interna de la matriz A T A ser
2
3
1 1 1 1 1
61 1 1 1 17
6
7
6
7
61 1 1 1 17
6
7
41 1 1 1 15
1 1 1 1 1

por lo que, a efectos numricos en esa mquina, esta matriz ser singular y de
rango 1: las ecuaciones normales no serviran.

32/89

Otro aspecto importante que aconseja tener mucho cuidado al utilizar A T A


AA T , nace del hecho de que aun cuando la matriz original A tenga muchos
elementos cero, A T A o AA T pueden ser totalmente densas.

Un ejemplo sera

2
3
1 1 1 1
60
7
6
7
6
7
AD6 0
7;
6
7
0 5
4
0

2
1
6
61
AT A D 6
41
1

1
1
1
1

1
1
1
1

1
7
17
7:
15
1

33/89

Mtodo de Gram-Schmidt

Obtiene una base ortonormalizada del subespacio Im.A/.




Jorgen Pedersen Gram, Dinamarca,


1850-1916 y Erhard Schmidt, Alemania, 1876-1959.

Comienza normalizando el primer vector columna de la matriz, a1:


e 1 D a1=ka1k2.

A continuacin se sustrae del vector a2 su coeficiente en la direccin de e 1,


ha2je 1ie 1, resultando un vector ortogonal a e 1, el cual a su vez se
normaliza: : :
El proceso contina con los dems vectores columna de A.

El nmero de operaciones del mtodo es O.mn2/ sumas+restas y


multiplicaciones+divisiones y O.n/ races cuadradas.

Los diversos vectores ortonormales de la base de Im.A/ se obtienen as:


a1
I
ka1 k2
a2 ha2 je 1 ie 1
D
I
ka2 ha2 je 1 ie 1 k2
a3 ha3 je 1 ie 1 ha3 je 2 ie 2
D
I
ka3 ha3 je 1 ie 1 ha3 je 2 ie 2 k2
::
:

e1 D
e2
e3

a3

e3

a3
e2
e1

a 3 |e 1 e 1

e 1
e1

|
a3

a 3 a 3 |e 1 e 1 a 3 |e 2 e 2
a 3 |e 2 e 2

34/89

35/89

El algoritmo para una matriz general A mn es el siguiente.


 Ortogonalizacin de A por Gram-Schmidt
for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T  a.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j /  e.1 W m; i /
end

u.j; j /

v
uX
u m
t
e.k; j /2
kD1

e.1 W m; j /

end

e.1 W m; j /=u.j; j /

36/89

El algoritmo hace A D E U , donde E mn es la matriz de columnas e i y U nn


la matriz triangular superior de los productos interiores auxiliares uij .


Sustituyendo esta expresin de A en las ecuaciones normales,


A T Ax D A T b, resulta que
U T ET EU x D U T ET b
y, por fin, dado que E T E D I,
U x D E T b:
Un sistema triangular superior.

En condiciones adecuadas, por consiguiente, el mtodo de Gram-Schmidt podra


valer para resolver un problema lineal de mnimos cuadrados.

37/89

Gram-Schmidt modificado

John R. Rice, EE.UU. 1934-.

En la prctica se va perdiendo ortogonalidad en los vectores e i por errores


numricos y, especialmente, si alguno de los vectores columna aj est prximo
al subespacio generado por los vectores anteriores e 1; : : : ; ej 1.
Pj 1
En ese caso, los sumandos de la expresin aj
i D1 haj je i ie i pueden llegar a
ser muy pequeos, o muy distantes unos de otros pero con un resultado final
que puede ser muy pequeo, por lo que el error numrico que se va produciendo
es relativamente grande. Al dividir el resultado por su norma (tambin muy
pequea) los errores se amplificarn an ms.

38/89

En 1966 J.R. Rice modific el orden de las operaciones del mtodo haciendo
que en una etapa k en vez de sustraer del vector ak sus proyecciones sobre los
k 1 vectores e i ya calculados, el vector e k se hace igual a ak al principio y
luego se le van sustrayendo su proyeccin en e 1, pasando el resultado a ser el
nuevo e k , el cual se proyecta luego en e 2, y as sucesivamente en cada uno de
los k 1 e i anteriores.
El resultado es sustancialmente mejor numricamente.
 Algoritmo clsico de Gram-Schmidt
for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T  a.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j /  e.1 W m; i /
end
v
uX
u m
t
e.k; j /2
u.j; j /
kD1

e.1 W m; j /
end

e.1 W m; j /=u.j; j /

 Algoritmo modificado de Gram-Schmidt


for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T  e.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j /  e.1 W m; i /
end
v
uX
u m
t
e.k; j /2
u.j; j /
kD1

e.1 W m; j /
end

e.1 W m; j /=u.j; j /

39/89

La versin clsica y modificada en Matlab son estas.


function [x r2 e]=Grmsch_3(A,b)
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt modificado
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); u=triu(zeros(n,n));
for j=1:n
e(:,j)=A(:,j);
for i=1:j-1
u(i,j)=e(:,i)*e(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i);
end
u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j);
end
for i=n:-1:1
% Rx=b
x(i)=(e(:,i)*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end
r2=norm(abs(A*x-b),2)^2;
% Residuos^2
end

function [x r2 e]=Grmsch_2(A,b)
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt clsico
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); u=triu(zeros(n,n));
for j=1:n
e(:,j)=A(:,j);
for i=1:j-1
u(i,j)=e(:,i)*A(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i);
end
u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j);
end
for i=n:-1:1
% Rx=b
x(i)=(e(:,i)*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end
r2=norm(abs(A*x-b),2)^2;
% Residuos^2
end

40/89

El cara a cara del clsico y el modificado en un Matlab supercompacto es este.


function [Q, R] = gs_m(A)

function [Q, R] = gs_c(A)

[m, n] = size(A);
Q = zeros(m,n);
R = zeros(n);

[m, n] = size(A);
Q = zeros(m,n);
R = zeros(n);

for j=1:n
R(j,j) = norm(A(:,j));
Q(:,j) = A(:,j)/R(j,j);
R(j,j+1:n) = Q(:,j)*A(:,j+1:n);
A(:,j+1:n) = A(:,j+1:n) - Q(:,j)*R(j,j+1:n);
end

for j=1:n
R(1:j-1,j) = Q(:,1:j-1)*A(:,j);
temp = A(:,j) - Q(:,1:j-1)*R(1:j-1,j);
R(j,j) = norm(temp);
Q(:,j) = temp/R(j,j);
end

>> n=7; A=hilb(n);


>> [Q, R]=gs_c(A);
>> norm(Q*Q-eye(n))
ans =
0.156453367259543
>> [Q1, R]=gs_m(A);
>> norm(Q1*Q1-eye(n))
ans =
1.090139262380597e-009
>> cond(A)
ans =
4.753673562966472e+008

41/89

Si resolvemos el ejemplo inicial.


>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r2]=Grmsch_3(A,b)
% MODIFICADO
x =
0.5000
1.4000
-0.0000
r2 =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

42/89

% Script_GRSCH_1.m - Script de Ortogonalidad con Gram Schmidt clsico y modificado


format short
n=7; A=hilb(n);
% Matriz de Hilbert (muy mal condicionada)
cond(A), pause
b=A*ones(n,1);
% Trmino independiente para sol. x=1.
disp(Clsico:), [x r2 e]=Grmsch_2(A,b);
% Gram Schmidt clsico
x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
ortogonalidad=norm(e*e-eye(n)), pause

% Ortogonalidad real de la matriz e

disp(Modificado:), [x r2 e]=Grmsch_3(A,b);% Gram Schmidt modificado


x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
ortogonalidad=norm(e*e-eye(n))

% Ortogonalidad real de la matriz e

43/89

>> Script_GRSCH_1
ans = 4.7537e+08
Clsico:
x =
1.1983
-7.1874
81.7515
-318.3887
594.3144
-517.0744
172.5582
e =
0.8133
-0.5438
0.1991
0.4067
0.3033
-0.6886
0.2711
0.3939
-0.2071
0.2033
0.3817
0.1124
0.1627
0.3514
0.2915
0.1356
0.3202
0.3892
0.1162
0.2921
0.4407
ans = 870.8917
ortogonalidad = 0.6954
Modificado:
x =
1.0052
0.7926
3.0065
-6.8260
15.3845
-11.4559
5.0969
e =
0.8133
-0.5438
0.1991
0.4067
0.3033
-0.6886
0.2711
0.3939
-0.2071
0.2033
0.3817
0.1124
0.1627
0.3514
0.2915
0.1356
0.3202
0.3892
0.1162
0.2921
0.4407
ans = 21.0752
ortogonalidad = 1.9358e-08

-0.0551
0.4760
-0.4901
-0.4396
-0.1123
0.2309
0.5206

0.0120
-0.1974
0.6108
-0.2542
-0.4992
-0.1506
0.5013

-0.0020
0.0541
-0.3269
0.6411
-0.2022
-0.5418
0.3805

-0.0011
0.0298
-0.1579
0.1833
0.3445
-0.8078
0.4115

-0.0551
0.4760
-0.4901
-0.4396
-0.1123
0.2309
0.5206

0.0120
-0.1974
0.6108
-0.2542
-0.4992
-0.1506
0.5013

-0.0020
0.0541
-0.3269
0.6410
-0.2022
-0.5418
0.3805

0.0002
-0.0091
0.0907
-0.3626
0.6800
-0.5984
0.1995

44/89

Factorizacin QR


Las transformaciones ortogonales conservan la norma eucldea; esto es, si Qnn


es una matriz ortogonal y x un vector n-dimensional, se cumple que
kQxk2 D kxk2:
p
p
p
T
T
En efecto, kQxk2 D hQxjQxi D x Q Qx D x T x D kxk2:

Segn esto, si Q es una matriz ortogonal, al premultiplicar el vector Ax


por ella, su norma eucldea queda igual:
kQAx

Qbk2 D kQ.Ax

b/k2 D kAx

bk2:

La idea es usar transformaciones ortogonales para convertir el problema en otro


ms sencillo de resolver numricamente.

Si A 2 Rmn, m > n, b 2 Rm, rango.A/ D n y se han efectuado una serie de


transformaciones ortogonales que refleja un matriz ortogonal Q 2 Rmm tal que
 
R1
n
QA D R D
0 m n

45/89

y R 1 es triangular superior, si se hace


 
c
n
Qb D
;
d m n
entonces

kAx

bk2 D kQAx
D

kR 1x



R 1x c

Qbk2 D


d

ck22 C kdk22; para cualquier x 2 Rn.

46/89

La solucin de mKnx 2Rn kAx

bk2 ser aquella que haga mnimo

kR 1x

ck22 C kdk22:

Como kdk22 es constante, la solucin ser la que haga mnimo el otro


sumando: cuando R 1x D c .
Resolviendo este sistema por sustitucin inversa se llega a la solucin del
problema de mnimos cuadrados.

La suma de residuos al cuadrado ser kdk22 y el vector de residuos


 
0
r D QT
:
d

El proceso de reduccin de A a R se denomina factorizacin QR o


triangularizacin ortogonal.

47/89

Teorema Sea la matriz A 2 Rmn de rango n y su factorizacin A D QR. El factor

R tiene todos los elementos de su diagonal principal positivos y es igual al que resulta de
la factorizacin de Cholesky, G T G , de A T A.

I D EMOSTRACIN . Si rango.A/ D n, de acuerdo con un teorema anterior, la factorizacin de Cholesky


de A T A es nica.
El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su
norma kxk2 es mnima y adems pertenece a .ker.A//? .
Por otro lado,
 
h
i
R1
A T A D R T1 ; 0 QQT
D R T1 R 1 :
0

48/89

Transformaciones de Householder

Alston Scott Householder, EE.UU.,


1904-1993.

Definicin Se denomina transformacin o reflexin de Householder a una transformacin lineal de Rn en Rn caracterizada por una matriz H nn de Householder de la forma
H D I 2wwT donde w 2 Rn ; kwk2 D 1, es el vector de Householder.

Teorema Toda transformacin de Householder es simtrica y ortogonal.


I D EMOSTRACIN . Por definicin H T D I
adems wT w D kwk22 D 1,
HTH D H2

D
D

2.wwT /T D I

2.wT /T wT D I

.I 2wwT /.I 2wwT /


I 4wwT C 4w.wT w/wT D I:

2wwT D H . Como

49/89

Aplicar una transformacin de Householder a un vector cualquiera equivale a


obtener su reflejo respecto al subespacio .Im.w//?.
a

7 w 9a

0120w 445

Ha

7 w 9a

En efecto
H a D .I

2wwT /a D a

2wwT a D a

2.wT a/w:

El vector .wT a/w es la proyeccin de a sobre w; es decir, H a es igual al


vector a menos dos veces su proyeccin sobre w.

Lo esencial de estas transformaciones es su capacidad de hacer cero


determinados coeficientes de un vector dado modificarlo ortogonalmente:


Si x e y son dos vectores no nulos de igual norma eucldea y se hace


1
wD
.x y/;
kx yk2
entonces
.I 2wwT /x D y:

Comprobmoslo:


y
/T x
p x Ty
D
.I 2ww /x D x 2 p
.x y /T .x y /
.x y / .x y /
 T

x x yT x
= x 2 .x y /T .x y / .x y/
 T

x x yT x
= x 2 2.x T x y T x / .x y/ D y .
T

.x

Esto es as pues, al tener x e y la misma norma eucldea,


.x

y/T .x

y/ D x T x y T x x T y C y T y
D 2.x T x y T x/;

pues x T x D y T y y y T x D x T y.

50/89

51/89

Este resultado, geomtricamente, se deduce inmediatamente de la reflexin


antes mencionada.


El vector w es colineal con el vector x

Como x e y tienen la misma longitud, la reflexin de x respecto a


.Im.w//? es y.

y.

6
678

3
01203445
8

52/89

En un sistema Ax D b se pueden construir transformaciones de Householder


que anulen los coeficientes que se deseen de cada vector columna de A dejando
los dems como estaban.


La figura representa los cuatro pasos del proceso de reducir una matriz A 64
a una triangular superior R 64.

A0

2222
0 222
0 222
0 222
0 222
0 222
A1

2222
0
0 0
0 0
0 0
0 0
A2

2222
0
0 0 
0 0 0
0 0 0
0 0 0
A3

2222
0
0 0 
0 0 03
0 0 0 0
0 0 0 0
A4

La matriz A 1 resultara de la transformacin H 1A 0; la A 2 sera


H 2A 1 D H 2H 1A 0; y as cuatro veces.

A una matriz m  n se le aplicar una sucesin k D 1; : : : ; n de


transformaciones, cada una de las cuales ha de hacer cero los coeficientes
k C 1; : : : ; m del vector columna k.


Se pretende que la transformacin k-sima, H k , haga:



aik para i D 1; 2; : : : ; k 1
H k ak D y D
0 para i D k C 1; : : : ; m:
Los coeficientes del vector y debern ser:
y1
y2
yk
ykC1
ym

D a1k
D
::: a2k
q
2
2
2
C akC1k
C    C amk
D akk
D
::: 0
D 0:

OJO signos!

2
2
2
Como y12 C y22 C    C ym2 D a1k
C a2k
C    C amk
, jjyjj2 D jjak jj2.


La transformacin H k tendr como vector w D .ak

y/=kak

yk2.

53/89

El coeficiente k-simo de y puede adoptar dos signos. Para evitar errores de


cancelacin, se escoge el signo opuesto al del coeficiente k-simo de ak .

En esta figura hay dos posibilidades para transformar a en un vector de igual


magnitud con a2 D 0: convertirlo en y o y 0,

54/89

x2
w
w alt

y

a1 y

a1

a1 + y

x1

Con el criterio apuntado, la transformacin que hay que usar es la que define w,
que convierte a en y 0. Su primer coeficiente es w1 D a1 . y1/ D a1 C y1; el
segundo, el de a en x2.

La transformacin alternativa, walt convertira a a y: su primer coeficiente es


a1 y1; el segundo el mismo de w.

55/89

En definitiva, en la transformacin de Householder k-sima que se aplica a la


matriz A, los valores numricos del vector w son:
2
3
0
:::
6
7
6
7
6
7
1
6akk C s  signo.akk /7
wDp
6
7;
a
6
7
kC1k
2s.s C jakk j/ 6
7
:::
4
5
amk
q
2
2
2
C akC1k
C    C amk
.
donde s D akk

56/89

Caso numrico 1: Resolucin de Ax D b, A mn, m > n y rango


completo


Mediante transformaciones
la matriz A a una
h i de Householder sereduce

c
triangular superior R 1 y el vector b a otro d
0


La solucin de mKnx 2Rn kAx


sustitucin inversa.

bk2 sera la del sistema R 1x D c, por

La suma de residuos al cuadrado ser kdk22.

El algoritmo numrico completo es el que describe la tabla que sigue.

Resolucin de Ax D b por transf. de Householder

 Transformacin columnas de la Matriz A mn


for j D 1 to n
if mKa0
x fja.j; j /j; : : : ; ja.m;
j /jg D 0 then stop
1
v
uX
m
u
 D @t
a.k; j /2 A  signo.a.j; j //
kDj

w.j W m/

a.j W m; j /; w.j /

X
m
w 2 .k/; a.j; j /
w.j / C ; D 2
kDj

for l D j C 1 to n

a.j W m; l/
a.j W m; l/ w.j W m/  w T .j W m/  a.j W m; l/ 
end
 Transformacin del vector b.

b.j W m/
b.j W m/ w.j W m/  w T .j W m/  b.j W m/ 
end
 Resolucin del sistema Rx D b.
for j D n to01
1,
n
X
@b.j /
x.j /
a.j; k/  x.k/A
a.j; j /
kDj C1

end
 Residuos al cuadrado.
m
X
rescua
b 2 .k/
kDnC1

57/89

58/89

En Matlab, con la posibilidad de obtener Q y R:

function [x r2 Q R]=Qrdes_3(A,b)
% Resolucin de Ax=b mediante transformaciones de Householder; calcula Q y R
[m n]=size(A); x=zeros(n,1); Q=eye(m);
for j=1:n
w=Housv(A(j:m,j));
% Householder de a(j:m,j)
A(j:m,j:n)=A(j:m,j:n)-2*w*(w*A(j:m,j:n));
b(j:m)=b(j:m)-2*w*(w*b(j:m));
Qk=eye(m);
Qk(j:m,j:m)=eye(m+1-j)-2*(w*w);
Q=Qk*Q;
end
for i=n:-1:1
% Rx=b
x(i)=(b(i)-x(i+1:n)*A(i,i+1:n))/A(i,i);
end
r2=norm(b(n+1:m))^2;
% Residuos al cuadrado
R=triu(A); Q=Q;
% Matrices R y Q
end
function w = Housv(x)
% Transformacin de Householder del vector x.
m=max(abs(x)); w=x/m;
sw=1; if w(1)<0, sw=-1; end
w(1)=w(1)+sw*norm(w);
w=w/norm(w); w=w(:);
end

59/89

Si utilizamos este script para resolver el ejemplo.


>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r]=Qrdes_3(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

El vector de residuos,

6
6
rD6
4

3
0,1
7
0,37
7;
0,35
0,1

60/89

c
se puede obtener, si el algoritmo ha transformado b en d , sin ms que hacer:
 
0
r
d
for k D n to 1
r
H kr
end


El nmero de operaciones de este mtodo es:




O.mn2 n3=3/ sumas+restas y multiplicaciones+divisiones, para


transformar la matriz A en R;

n races cuadradas y las de la sustitucin inversa, O.n2=2/.

61/89

Caso numrico 2: Resolucin de Ax D b, A mn, n > m y rango


completo


Este problema, si tiene solucin, es indeterminado: tiene muchas.

La de menor norma eucldea se puede calcular mediante estos pasos:


Paso 1 Se aplica el algoritmo QR a la matriz A T , en vez de a A. Resultar
 
R
QT A T D
;
0
 
R
es decir, A T D Q
, donde Q es una matriz ortogonal n  n y R una
0
triangular superior m  m.

Paso 2 La matriz original A ser



A D R T ; 0T QT :

Si se sustituye en la ecuacin Ax D b, se tendr que


 T
 T
T
R ; 0 Q x D b:

Si se hace el cambio de variable z D QT x, la ltima ecuacin queda


 T

T
R ; 0 z D b:

Como zT z D .QT x/T .QT x/ D x T QT Qx D x T x, las normas


eucldeas de x y z sern iguales.
 zR 
 Estructurando el vector z en
z0 y b de igual manera, la solucin de
 T

R ; 0T z D b saldr de resolver


R T zR D bR ;

siendo los dems coeficientes del vector z, z0, nulos.

62/89

63/89

Paso 3 El vector solucin x que se busca resultar de deshacer el cambio de


variable introducido; es decir:
 
z
xDQ R :
0

64/89

Caso 3: Resolucin numrica de Ax D b, A mn, m > n m < n y


rango incompleto


Caso ms general que se puede dar en mnimos cuadrados de ecuaciones lineales.

Paso 1 Se transforma la matriz A mediante transformaciones de


Householder y permutaciones de columnas para llegar a:
r

0


mr

En cada etapa k se calcula la norma eucldea de ak , k; : : : ; n,


limitndose a sus coeficientes k; : : : ; m y se intercambia la columna k
con la de mayor norma.

65/89

Paso 2 Del Paso anterior se ha llegado a


QAP D R D


 
R 11 R 12
r
c
r
y Qb D
;
0 R 22
m r
d m r
r n r

donde kR 22k2  1kAk2. A partir de aqu hay dos opciones:





Que r D n (rango completo). La solucin sale de resolver R 11x D c.

Que r < n (rango incompleto).


Se construyen
unas
transformaciones




nn
ortogonales, Q1 , tales que R 11; R 12 Q1 D W ; 0 , donde W rr
es triangular superior.

Cmo hacer esto? Se acta sobre R 11, R 12T y se llega a b).


a)

66/89

b)

nr

Esto se hace en r etapas. En una de ellas, k, se premultiplica por una


transformacin de Householder que haga cero los elementos r C 1 a n de
la columna k y que deje inalterados del 1 al k 1 y del k C 1 a r.


0
0


0 0
0 0

0
0


0 0
0 0

0
0

0
0

El valo indica el elemento que se utiliza para definir cada


transformacin; los que se hacen cero con el signo .


0 0
0 0

67/89

Paso 3 De los dos pasos anteriores se tendr que


kAx


bk2 D k.QAP/.P T x/

Qbk2:

Ahora bien, .QAP/P T x se puede escribir .QAP/Q1QT1 P T x y


tambin,


 
W 0
c
QT1 P T x D
:
d
0 0
Si se hace QT1 P T x D y y se resuelve W y 1 D c, el vector solucin que
se busca, x, resultar de
 
y
x D PQ1 1 :
0

68/89

function [x r res]=Mincua_QR(A,b)
% Resolucin de Ax=b general mediante transformaciones de Householder
%
Posible rango incompleto r
[m n]=size(A); x=zeros(n,1); tol=sqrt(eps); W=zeros(n,m); ip=1:n; r=n;
for j=1:n
jm=j; c=0;
for k=j:n
h=norm(A(j:m,k));
if h>c, c=h; jm=k; end
end
if jm~=j, A(:,[j jm])=A(:,[jm j]); ip([j jm]) = ip([jm j]); end
if j==m, break, end
w=Housv(A(j:m,j));
% Householder de A(j:m,j); luego a A y b
A(j:m,j:n)=A(j:m,j:n)-2*w*(w*A(j:m,j:n)); b(j:m)=b(j:m)-2*w*(w*b(j:m));
end
for j=1:n
% Ver rango
if abs(A(j,j))<=tol, r=j-1; break, end
end
res=norm(b(r+1:m))^2; w1=zeros(r,n-r+1);
W(1:n,1:r)=A(1:r,1:n);
% Trasp. de A = W
if r~=n
for i=r:-1:1
w1(i,1:n-r+1)=Housv([W(i,i);W(r+1:n,i)]);
% Householder hacia W
W([i r+1:n],i:-1:1)=W([i r+1:n],i:-1:1)-2*w1(i,:)*(w1(i,:)*W([i r+1:n],i:-1:1));
end
end
for i=r:-1:1
% Resol. Wx=c
x(i)=(b(i)-x(i+1:r)*W(i+1:r,i))/W(i,i);
end
if r~=n
x(r+1:n)=0;
% Aplicar a x ultimas Householder hacia W
for i=1:r, x([i r+1:n])=x([i r+1:n])-2*w1(i,:)*(w1(i,:)*x([i r+1:n])); end
end
x(ip)=x(:);
% Deshacer perm. col.
end

Apliquemos este programa en una sesin de Matlab:


a=rand(200,4);
b=a*ones(4,1);
A=[a a(:,1)*2+a(:,2)*0.5 a(:,3)*2+a(:,4)*0.5 a(:,2)*2+a(:,3)*0.5];
size(A)
ans = 200
7
format long
[x r res]=Mincua_QR(A,b)
x =0.168704156479218
0.156479217603912
0.009779951100245
0.792176039119804
0.415647921760391
0.415647921760391
0.317848410757946
r = 4
res = 1.205973193713402e-029

>> x-pinv(A)*b
ans = 1.0e-015 *
-0.111022302462516
0.333066907387547
0.194289029309402
-0.333066907387547
0.166533453693773
-0.943689570931383
0.499600361081320

69/89

Si lo utilizamos para resolver el ejemplo.

>> A=[1 1 1;1 2 4;1 3 9;1 4 16]


A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r res]=Mincua_QR(A,b)
x =
0.500000000000000
1.400000000000000
0
r =
3
res =
0.200000000000001
>> A\b
ans =
0.5000
1.4000
-0.0000

70/89

71/89

Transformaciones de Givens

James Wallace Givens, EE.UU., 1910-1993.

Definicin Se denomina transformacin de Givens a una transformacin lineal ortogonal


de Rn en Rn caracterizada por una matriz
2
1
6 :::
6
6
1
6
6
6
G .i; j / D 6
6
6
6
6
6
4

donde c 2 C s 2 D 1.

s
::

:
c
1
::

:
1

7
7
7
7
7
7
7
7
7
7
7
7
5

i
j

72/89

Al aplicar a x 2 Rn una transformacin, o rotacin, de Givens,


G .i; j / W Rn ! Rn, con c D cos  y s D sen  , producir lo siguiente:
2

6
6
6
6
6
6
6
G .i; j /x D 6
6
6
6
6
6
4

x:1
::
xi 1
xi cos  C xj sen 
xiC1
::
:
xj 1
xi sen  C xj cos 
xj:C1
::
xn

3
7
7
7
7
7
7
7
7
7
7
7
7
7
5

Se rota el vector x un ngulo  en el subespacio que generan los vectores e i y


ej de Rn.

73/89

Para hacer cero alguno de los coeficientes i j de un vector x, concretamente


el j , se deber escoger un  tal que xi sen  C xj cos  D 0, es decir, habr
que hacer
xj
tan  D ;
xi
o, lo que es equivalente,
c D cos  D q x2 i 2
xi Cxj

s D sen  D

x
q j
:
xi2 Cxj2

Ejemplo En la figura se describe, en el espacio eucldeo tridimensional, la


rotacin del vector
2 3
1
x D 415
1
en el plano z

y para anular su tercer coeficiente.


z

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

1
...........................
.....
...
..
...
...
..
..
...
..
..
.
.
.
.
.
.
.
.
.
...........

x

74/89

75/89

Como el ngulo que hay que rotar x es 45, la matriz de Givens que hay que
utilizar es,
2
3
1
0
p0 7
6 p
G .2; 3/ D 40 p2=2 p2=25 :
0
2=2 2=2

El nuevo vector ser

2 3
1
p
G x D x 0 D 4 25 :
0
p
La norma eucldea de ste y del original es 3.

Mediante transformaciones de Givens se puede reducir la matriz de un problema


de mnimos cuadrados, en n etapas, a una triangular superior R. En cada una
de esas etapas, j , se haran cero, uno a uno, los coeficientes j C 1 a m.

Por ejemplo, las operaciones


necesarias
para transformar la matriz
2
3

76/89

2

AD4 







3
5



en

 
6 0 
RD4 0 0
0 0

22
0
A 1 D G .1; 2/A D 4 

2
5
60
A 3 D G .1; 4/A 2 D 4 0
0
2
5
60
A 5 D G .2; 4/A 4 D 4 0
0


7
 5,
0

son las que siguen.

2
3
2 2 3
2 2 5
4 0 2 2 5;
  ; A 2 D G .1; 3/A 1 D
0 2 2
 

5
5
0
0

5
27
60
2 5 ; A 4 D G .2; 3/A 3 D 4 0
2
0
3
2
5
5
57
60
5 ; A 6 D G .3; 4/A 5 D 4 0
0

5 5
2
2
2

  

5 5
0

5
5
0
0

7
5;

3
5
57
55 :
0

Los smbolos 2, y 5 indican que el coeficiente al que se hace referencia ha experimentado 1, 2 3 transformaciones
desde su valor inicial .

77/89

El algoritmo numrico completo es el que describe la tabla que sigue.


 Resolucin de Ax D b por transf. de Givens
 Transformacin de la Matriz A mn
for i D 1 to n
for k D i C 1 to m
 Hacer nulo el elemento .k; i /.
if a.k; i / 0 then
if ja.k; i /j  ja.i; i /j then p
t D a.i; i /=a.k; i /I s D 1= 1 C t 2 I c D s  t
else
p
t D a.k; i /=a.i; i /I c D 1= 1 C t 2 I s D c  t
end
a.i; i /
c  a.i; i / C s  a.k; i /
for j D i C 1 to n
aux D c  a.i; j / C s  a.k; j /; a.k; j /
s  a.i; j / C c  a.k; j /; a.i; j /
end
 Transformacin del vector b.
aux D c  b.i / C s  b.k/; b.k/
s  b.i / C c  b.k/; a.i /
aux
end
end
end
 Resolucin del sistema Rx D b.
for j D n to01
1,
n
X
@b.j /
x.j /
a.j; k/  x.k/A
a.j; j /
kDj C1

end
 Residuos al cuadrado.
m
X
rescua
b 2 .k/
kDnC1

aux

78/89

En Matlab:

function [x r2]=Givens(A,b)
% Resolucin de Ax=b mediante transformaciones de Givens
[m,n]=size(A); x=zeros(n,1);
for i=1:n
% Factorizacin de A
for k=i+1:m
if 1+abs(A(k,i))==1, continue, end
if abs(A(k,i))>=abs(A(i,i))
t=A(i,i)/A(k,i); s=1/sqrt(1+t*t);
c=s*t;
else
t=A(k,i)/A(i,i); c=1/sqrt(1+t*t);
s=c*t;
end
A(i,i)=c*A(i,i)+s*A(k,i);
q(i+1:n)=c*A(i,i+1:n)+s*A(k,i+1:n);
A(k,i+1:n)=-s*A(i,i+1:n)+c*A(k,i+1:n);
A(i,i+1:n)=q(i+1:n);
q1=c*b(i)+s*b(k);
% Transformar b
b(k)=-s*b(i)+c*b(k);
b(i)=q1;
end
end
for i=n:-1:1
% Sustitucin inversa
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end
r2=norm(b(n+1:m))^2;
% Residuos al cuadrado
end

>> A=[1 1 1;1 2 4;1 3 9;1 4 16]


A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x,r]=Givens(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

79/89

El nmero de operaciones que requiere este algoritmo para transformar A es


O.2mn2 2n3 =3/ sumas+restas y multiplicaciones+divisiones
O.mn=2/ races cuadradas y
O.n2 =2/ sumas+restas y multiplicaciones+divisiones para efectuar la sustitucin inversa.

Con precisiones semejantes Givens es el doble de caro que Householder.


Cundo utilizar Givens y Householder entonces?


La clave est en considerar la estructura de la matriz A del problema:


Si sta es densa, es decir, muchos de sus coeficientes son distintos de
cero, el mtodo de Householder es el ms aconsejable;
Si la estructura de A es dispersa, convendr centrarse en hacer cero
slo aquellos elementos no nulos en las columnas correspondientes, por
lo que, a priori, el mtodo de Givens deber ser ms ventajoso.

Transformaciones rpidas e Givens




80/89

La idea es conseguir velocidad de Householder con una M 2 Rmm tal que


MA D S

sea triangular superior y que M M T D D D diag.d1; : : : ; dm/.




Como D

1=2

M es ortogonal, se tiene que


 1

A D M 1S D D 1=2M
D 1=2S D M T D

es la factorizacin QR de A.

1=2

1=2





1
1 2
Si se eligen adecuadamente una matrices M 1 D 1
y M2 D
1 1
2 1
que cumplan que 1  i i  0, denominadas transformaciones rpidas de
Givens, una reordenacin de los clculos de la factorizacin puede conseguir el
efecto deseado de alcanzar el orden de magnitud en velocidad de las
transformaciones de Householder.

81/89

Por descomposicin en valores singulares




Existen diversos mtodos iterativos para calcular la descomposicin numrica en


valores singulares
A D U V T :

A partir de ella, la solucin de mKnx 2Rn kAx bk2 es


 1 
r 0
U T b:
xDV
0 0

Para cualquier matriz A mn, de rango completo o incompleto, la solucin del


problema de menor norma eucldea es
X uT b
i
xD
vi :
i
i 0

82/89

Ejemplo Utilizando la descomposicin U V T de A resolver


2

1
62
6
63
6
44
5

6
7
8
9
10

3
11 2 3
127
7 x1
4 5
137
7 x2 D
145 x3

15
x

2 3
5
657
6 7
657 :
6 7
455
5

La descomposicin es
A D U V T
" 0;3546
D

0;3987
0;4428
0;4870
0;5311

0;2017
0;5168
0;8320

0;6887
0;3756
0;0624
0;2507
0;5638
0;8903
0;2573
0;3757

0;5700
0;7455
0;1702
0;2966
0;0490
0;4082
0;8165
0;4082

0;1764
0;2235
0;3652
0;7652
0;4472

0;2096
0;3071
0;7985
0;1627
0;4445

# "35;1272
0
0
0
0

0
2;4654
0
0
0

0
0
0;0000
0
0

Como el valor singular 3 D 0, la solucin de norma eucldea mnima se


uT1 b
uT2 b
obtiene de x D
v1 C
v2
1
2
 0;2017
 0;8903  0;5
11;0709
0;0 :
0;5168 C 1;5606
0;2573 D
D 35;1272
2;4654
0;8320

0;3757

83/89

0;5

Este programa de Matlab resuelve el ejemplo llamando a svd() para obtener


la descomposicin en valores singulares de A.
function [x S r] = Svdre(a,b)
% Resolucin ||Ax-b|| mediante la desc. en valores singulares de A
[m,n] = size(a); tol=sqrt(eps); tmp=zeros(m); x=zeros(n,1);
[U S V]=svd(a); S=diag(S); r=0;
for j=1:n
if S(j)>=tol
r=r+1;
tmp(r)=dot(U(:,j),b)/S(j);
end
end
for j=1:r
x=x+tmp(j)*(V(:,j));
end
end

84/89

Comparacin de los diversos mtodos


Mtodo
Ecuaciones Normales
Transformaciones de Householder
Transformaciones de Givens
Mtodo de Gram Schmidt
Mtodo de Gram Schmidt Modificado
Mtodo de Golub-Reinsch (SVD)
Mtodo de Golub-Reinsch-Chan (SVD)

Operaciones
mn2
C
2
2

n3
6
n3
3
2 3
n
3

mn
2mn2
mn2
mn2
2mn2 C 4n3
mn2 C 17
n3
3

Los mtodos basados en transformaciones ortogonales son los ms precisos y


habituales.

El basado en SVD es el ms robusto, aunque ms caro.

85/89

Matlab y el problema de mnimos cuadrados




Para calibrar las posibilidades de Matlab con los problemas de mnimos


cuadrados, vamos a utilizarlo para ajustar a unos puntos la funcin
y D c1xe c2x
que se utiliza en prospeccin de hidrocarburos y minerales.

Como no disponemos de datos reales, vamos a generar unos sintticos haciendo


c1 D 5 y c2 D 3.

Generaremos 300 puntos y los perturbaremos con un ruido aleatorio normalizado


de media 0.

Utilizaremos como mtodos para obtener los parmetros c1 y c2, en un modelo


linealizado, con ayuda de las rutinas de Matlab:

86/89

El operador n

Las ecuaciones normales

La descomposicin QR

El mtodo de Gram-Schmidt

La descomposicin en valores singulares y

La matriz pseudoinversa,

Para linealizar el modelo original, haremos los cambios


v D ln.y=x/; u D x; D ln c1 y D c2;
resultando
v D u C :

87/89

El diary de Matlab:

>> x0=0.01;
>> x=linspace(x0,2,300);
>> y=5*x.*exp(-3*x);
>> yn=abs(y+0.05*(rand(size(x))-0.5));
>> v=log(yn./x);
>> x=x(:); v=v(:);
>> A=[ones(size(x)) x];
>> c=A\v
c =
1.6443
-3.0579
>> G=chol(A*A);
>> c1=G\(G\(A*v));
>> c1
c1 =
1.6443
-3.0579
>> [Q,R]=qr(A,0);
>> c2=R\(Q*v)
c2 =
1.6443
-3.0579
>> [Q,R]=gs_m(A);
>> c3=R\(Q*v)
c3 =
1.6443
-3.0579
>> format long
>> c4=pinv(A)*v
c4 =
1.64428682050583
-3.05786465731645
>> [U S V]=svd(A);
>> c5=V\(S\(U\v))
c5 =
1.64428682050583
-3.05786465731645

%primer punto de muestra


% 300 puntos
%nube de puntos
% + ruido: valores pos.
%cambio de variable
% Matriz del sistema
% Prim. respuesta: con \

% Ecuaciones normales

% Segunda respuesta
% Factorizacin QR

% Tercera respuesta
% Gram-Schmidt modi.

% Cuarta respuesta

% Matriz pseudoinversa
% Quinta respuesta
% Descomposicin val. sing.

% Sexta respuesta

function demoXexp(n)
% demoXexp
Ajuste datos sintticos a y = c(1)*x*exp(c(2)*x)
%
% Dato: n = (opcional) nmero de puntos sintticos a generar.
%
defecto=200
%
if nargin<1, n=200; end
x0=0.01;
x=linspace(x0,2,n);
y=5*x.*exp(-3*x);
yn=abs(y+0.05*(rand(size(x))-0.5));
v=log(yn./x);
x=x(:); v=v(:);
A=[ones(size(x)) x];
c=A\v;

% Construccin de los datos


%
%
con cambio de variable
%
%
para linealizar el
%
modelo
%

fprintf(Parmetros ajustados:\ncon A\\b:


exp(c(1)),c(2));

Un script.m con las instrucciones

c1 = %18.15f c2 = %18.15f\n,...

% --- Plot datos


xfit = linspace(min(x),max(x));
yfit = exp(c(1))*xfit.*exp(c(2)*xfit);
if n<30, s = v; else s = -; end
% Smbolo para datos originales
plot(x,y,s,x,yn,o,xfit,yfit,--);
xlabel(x);
ylabel(y); legend(original,+ruido,ajustado);
xmax = max(x);
ymax = max(y);
text(0.5*xmax,0.7*ymax,sprintf(c1 = %6.4f c2 = %6.4f,exp(c(1)),c(2)));
text(0.5*xmax,0.6*ymax,sprintf(%d puntos "sintticos",n));
% --- Plot funciones ajustadas
% Cholesky
G=chol(A*A);
c1=G\(G\(A*v));
fprintf(con chol(A\*A);
c1 = %18.15f c2 = %18.15f\n,exp(c1(1)),c1(2));
% Factorizacin QR
[Q,R]=qr(A,0);
c2=R\(Q*v);
fprintf(con [Q,R]=qr(A);

c1 = %18.15f c2 = %18.15f\n,exp(c2(1)),c2(2));

% Gram.Schmidt modificado
[Q,R]=gs_m(A);
c3=R\(Q*v);
fprintf(con [Q,R]=gr_m(A);

c1 = %18.15f c2 = %18.15f\n,exp(c3(1)),c3(2));

% Matriz pseudoinversa
c4=pinv(A)*v;
fprintf(con pinv(A)*b;

c1 = %18.15f c2 = %18.15f\n,exp(c4(1)),c4(2));

% Descomposicin en valores singulares


[U S V]=svd(A);
c5=V\(S\(U\v));
fprintf(con [U S V]=svd(A); c1 = %18.15f c2 = %18.15f\n,exp(c5(1)),c5(2));

88/89

89/89

Grfico con los 100 puntos sintticos, la funcin original y la ajustada.


0.7
original
+ruido
ajustado

0.6

0.5
c1 = 5.6363 c2 = 3.1949
0.4
100 puntos "sintticos"

0.3

0.2

0.1

0.2

0.4

0.6

0.8

1
x

1.2

1.4

1.6

1.8

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Sistemas lineales de grandes dimensiones

Matrices dispersas
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_dispersa_2016.pdf

1/98

2/98

ndice


Matrices dispersas

Almacenamiento en ordenador de matrices dispersas

Operaciones algebraicas elementales con matrices dispersas

Solucin de grandes sistemas lineales de matriz dispersa

Matrices dispersas simtricas y eliminacin de Gauss




Nociones bsicas sobre grafos

Interpretacin mediante grafos de la eliminacin de Gauss

El algoritmo de grado mnimo

El algoritmo de Cuthill-McKee

Matrices dispersas no simtricas y eliminacin de Gauss

Mnimos cuadrados

3/98

Matrices dispersas


Muchos de los modelos matemticos que en la actualidad interpretan o simulan


fenmenos reales de diversa complejidad dan lugar a sistemas de ecuaciones de
gran tamao decenas, cientos de miles y millones de variables.

Las matrices de gran tamao a que dan lugar esos modelos se denominan
dispersas pues muchos de los coeficientes que las definen son cero y los que no
estn muy dispersos en su estructura.

En general, nosotros consideraremos dispersa a una matriz si teniendo pocos


coeficientes distintos de cero merece la pena manipularla mediante
procedimientos diseados con ese propsito.1
1

Algunos autores definen una matriz n  n como dispersa si el nmero de coeficientes no nulos es n C1 , donde < 1. La
C1
densidad sera n n2 D n 1 . Valores tpicos de ese parmetro suelen ser: D 0;2 para problemas de anlisis de sistemas elctricos
de generacin y transporte de energa; D 0;5 para matrices en banda asociadas a problemas de anlisis de estructuras; etc.

Ejemplos


4/98

A Sparse Matrix You Use9 Every Day

Una que usamos continuamente (ahora > 8  10 ).

5/98

PICTURES OF
FROM VARIOUS
Power Systems; BCSPWR07

Simulation of Computing Systems; GRE 1107

dierent structures

Thermal Simulation; SHERMAN2

Power Systems; BCSPWR07

0
200
400
600
800
1000
1200
1400
1600
0

200

400

600 800 1000 1200 1400 1600


bcspwr09; nz = 6511

Chemical Engineering; WEST0381

Economic Modelling; ORANI678

Simulation of Co

6/98

Chemical Engineering; WEST0381

Economic Modelling; ORANI678

7/98

8/98

Sitio web de referencia:

The University of Florida Sparse Matrix Collection

9/98

La ingeniera, estudio e investigacin de los modelos matemticos y sistemas de


ecuaciones con matrices dispersas abarca tres grandes reas:


Almacenamiento de las matrices en un ordenador.

Ordenacin de las ecuaciones del sistema con el fin de reducir el nmero


de coeficientes nuevos no nulos que se crean en la factorizacin de la matriz.

Implementacin ptima para matrices de grandes dimensiones de los


mtodos numricos generales ms avanzados para resolver sistemas de
ecuaciones tradicionales.

10/98

Almacenamiento en ordenador
Por coordenadas


Mediante un conjunto de triples, .aij , i , j /, que definen las coordenadas, o


informacin esencial, de cada coeficiente distinto de cero.

Ejemplo Se quiere almacenar segn este esquema


2
1
6
62
6
AD6
60
6
40
5

0
0
3
4
0

0
2
0
0
5

1
0
0
4
0

3
0
7
37
7
07
7$
7
05
6

Vector 1

ifi
ico
val

2 3

Coeficientes
4 5 6 7 8 9 10 11

1 1 2 2 2 3 4 4 5 5
1 4 1 3 5 2 2 4 1 3
1 -1 2 -2 3 -3 4 -4 5 -5

5
5
6

se definiran los tres vectores, ifi, ico y val: los dos primeros basta que sean
integer; val debe ser real.

Almacenamiento por filas o columnas




11/98

Es el ms extendido. En una matriz m  n define tres vectores:

val Debe contener todos los coeficientes distintos de cero de la matriz, fila a
fila, enumerados consecutivamente;

ico De la misma dimensin de val, con los subndices columna de los


coeficientes de val;

ia De dimensin m C 1, con las posiciones en val y ico del primer coeficiente


no nulo de cada fila de la matriz.
2

1
62
6
AD6
60
40
5

0
0
3
4
0

0
2
0
0
5

1
0
0
4
0

3
0
37
7
07
7$
05
6

Vector 1

ia
ic
va

2 3

Coeficientes
4 5 6 7 8 9 10 11

1 3 6 7 9 12
1 4 1 3 5 2 2 4 1 3
1 -1 2 -2 3 -3 4 -4 5 -5

5
6

La informacin de la fila r estar entre las posiciones ia(r) y ia(r C 1)-1 en


ico y val, excepto si ia(r C 1)=ia(r), en cuyo caso la fila r estara vaca.

12/98

La parte de un programa Matlab para recuperar en el vector


de una matriz podra ser:
vec = 0;
for ii=ia(i):ia(i+1)-1
vec(ico(ii))=val(ii);
end

Recuperar la columna k sera un poco ms complicado:


vec=0;
for j=1:m
for ii=ia(j):ia(j+1)-1
if ico(ii)==k vec(j)=val(ii), break
elseif ico(ii)>k break
end
end

vec() la fila i

Almacenamiento por perfil o envolvente


Definicin Si fi D mKnfj W aij 0g y li D mKaxfj W aij 0g, una matriz A mn

tiene un ancho de banda de filas w si


w D mKax1im wi ; wi D .li fi C 1/,
donde wi es el ancho de la fila i. La envolvente de A; Env.A/, es el conjunto Env.A/ D
f.i; j / W fi  j  li ; 1  i  mg.

Las matrices en banda son aquellas cuyos coeficientes estn contenidos en una
franja alrededor de su diagonal principal. Es de inters como dispersa, w  n.

Ejemplo La envolvente de la matriz


1
2
3
AD 4
5
6
7

2 1

6
6 
6
6
6
6
6
6
6
4

2 3 4 5
  
 0 
 0 
 0 
 
  0 0

7 3

7
7
7

7
7
7
7
  7
7
  5


es

Env.A/ D f.1; 1/; .1; 2/; .1; 3/; .1; 4/; .2; 1/; .2; 2/; .2; 3/; .2; 4/;
.3; 3/; .3; 4/; .3; 5/; .3; 6/; .4; 2/; .4; 3/; .4; 4/;
.5; 4/; .5; 5/; .5; 6/; .5; 7/;
.6; 2/; .6; 3/; .6; 4/; .6; 5/; .6; 6/; .6; 7/; .7; 7/g:

13/98

14/98

Este esquema guarda los coeficientes de la envolvente mediante tres vectores:

val Contiene todos los coeficientes de la envolvente;


ifa Con los ndices fi de cada fila i ;
ia De dimensin m C 1, si la matriz es m  n, con las posiciones en val del

primer coeficiente no nulo de las filas que se corresponden con el orden de


los coeficientes de ia.

Por ejemplo,
21 0
A

620
D6
40
0
0

3
0
4
0
0

2
0
6
0
0
0

0
0
0
4
3
0

0
0
7
07
05
1
6

Coeficientes
Vector 1 2 3 4 5 6 7 8 9 10 11 12

$ ia

ifa
val

1 4 6 7 10 12 13
11 32 4 5
1 0 -2 2 3 6 -4 0 4 3 1 6

Para recuperar una fila en Matlab:


vec = 0;
j
= 0;
for ii=ia(i):ia(i+1)-1
vec(ifa(i)+j)=val(ii);
j = j+1;
end

Definicin El ancho de banda (o de semibanda) de una matriz simtrica B 2 Rnn,

15/98

, se define como

D mKax1i n i ;
donde i es el ancho de la fila i .

i D i

fi ,

Ojo. Esta definicin slo se refiere al nmero de diagonales hay por encima y
debajo de la diagonal principal, sin considerar sta.

La envolvente de una matriz simtrica es Env.B/ D f.i; j / W fi  j  i; 1  i  ng.

Para guardar una matriz simtrica no sera necesario ifa. Por ejemplo,
3
2
B

10
6 23
4
0
0

2
4
0
3
0

3
0
6
0
0

0
3
0
1
8

0
0
7
05
8
3

Coeficientes
Vector 1 2 3 4 5 6 7 8 9 10

ib
1 4 7 8 10
val 10 2 3 4 0 3 6 1 8 3

Obsrvese que la dimensin de ib es n.

Si los anchos de banda son iguales, ib no sera necesario: slo val y i .

16/98

Operaciones algebraicas de matrices dispersas




El concepto estructura simblica de una matriz expresa la disposicin espacial


de los coeficientes distintos de cero en la matriz.

Producto interior de dos vectores




Calculemos el producto interior de dos vectores a y b,


hD

n
X

ai bi ;

i D1

almacenados como dispersos segn el esquema de filas.

Lo ms eficaz es definir un vector ip, de dimensin n, en el que se guardan los


punteros de los coeficientes no nulos de vala o valb.

17/98

Por ejemplo, si el vector a est definido por


Vector

Coeficientes
1 2 3 4

icoa 10 3 7 4
vala 0,2 0,3 0,4 -0,5

el vector ip, una vez


almacenados los punteros, quedara

Coeficientes
Vector 1 2 3 4 5 6 7 8 9 10 11   

ip

0 0 2 4 0 0 3 0 0 1 0 

a3 est en la posicin 2 de vala, a4 en la posicin 4, a7 en la 3, etc.




Con los coeficientes no nulos de b, se usa ip y, si es necesario, se


multiplican los coeficientes acumulando el resultado en h. Si b es
Vector

icob
valb

Coeficientes
1
2
3
5
4 10
0,6 0,7 0,5

el primer coeficiente no nulo de b es b5 D 0;6.

Ahora bien, ip(5)=0, por lo que a5b5 D 0, no siendo necesario efectuar


esta ltima operacin : : :

18/98

Estas ideas en Matlab daran lugar a:


ip = 0
for i=1:na
ip((icoa(i)) = i;
end
h = 0.0;
for i=1:nb
if ip(icob(i))~=0
h=h+vala(ip(icob(i)))*valb(i);
end
end

Hacer ip(   )=0 es costoso numricamente: es necesario realizar muchas


operaciones, aunque triviales, si n es grande.

Si un vector se multiplica por otros muchos (caso por ejemplo de productos de


matrices), evidentemente, slo es necesario inicializar ip a cero una vez.

19/98

Multiplicacin de matrices por vectores




Supondremos que el vector est almacenado en toda su extensin. Nos


interesamos en primer lugar por la operacin c D Ab, donde A 2 Rmn,
b 2 Rn y c 2 Rm .

Si c se guarda en toda su extensin y A segn el esquema por filas, para


realizar la operacin basta saber qu coeficientes son no nulos en cada fila de la
matriz A, multiplicarlos por el correspondiente de b y acumular el resultado.

En Matlab esto se podra hacer como sigue.


for i=1:m
iai=ia(i); iai1=ia(i+1)-1;
s = val(ia1:iai1)*b(ico(iai):ico(iai1));
c(i) = s;
end

Multiplicacin de un vector por una matriz




Queremos efectuar la operacin c T D bT A, donde A 2 Rmn, b 2 Rm y


c 2 Rn .

Consideremos el siguiente ejemplo simblico de este producto,




c1 D b1 a11 C b2 a21
a11 a12 a13
! c2 D b1a12 C b2a22
c1 c2 c3 D b1 b2 a a a
21

22

23

c3 D b1 a13 C b2 a23 :

Si la matriz est almacenada por filas, reescribamos las ecuaciones as:


c1
c2
c3

b1 a11
b1 a12
b1 a13

c1
c2
c3

c1 C b2 a21
c2 C b2 a22
c3 C b2 a23

c = 0;
for i=1:n
bi = b(i);
for ii=ia(i):ia(i+1)-1
j = ico(ii);
c(j) = c(j)+val(ii)*bi;
end
end

En este caso se puede acceder a los coeficientes secuencialmente por filas e ir


acumulando los resultados de las operaciones en los propios coeficientes de c.

20/98

21/98

Otras operaciones


Operaciones como la suma de matrices, la multiplicacin, la multiplicacin


A T A, etc. se pueden llevar a cabo muy eficazmente, en general, mediante dos
etapas: la simblica y la numrica:


La simblica determina, mediante vectores-puntero, esa estructura de


coeficientes no nulos de la matriz que ha de resultar de la operacin.

La numrica, los valores distintos de cero en las posiciones ya reservadas al


efecto en la etapa anterior.

22/98

Solucin de sistemas lineales de matriz


dispersa
Algoritmo general para resolver grandes sistemas lineales

Paso 1 Determinar la estructura simblica de A.


Paso 2 Obtener unas permutaciones P y Q tales que PAQ tenga una estructura de
dispersidad ptima.
Paso 3 Factorizar simblicamente la matriz PAQ y generar las estructuras de datos
y memoria necesarias para L y U .
Paso 4 Calcular numricamente LU D PAQ y c D Pb.
Paso 5 Resolver Lz D c, U y D z y, por fin, x D Qy.

Ordenacin de las ecuaciones

23/98

Al resolver un sistema de ecuaciones lineales de matriz dispersa, el orden en que


se disponen sus filas o columnas tiene una importancia fundamental.

Consideremos una matriz A, de estructura simblica simtrica, cuyo patrn de


coeficientes distintos de cero es el de la figura.

24/98

Si se utiliza la eliminacin de Gauss para resolver dicho sistema, en el transcurso


de dicha factorizacin se harn distintos de cero 46 coeficientes coeficientes
de relleno (fill-in en la literatura anglosajona): los que en la figura aparecen
sombreados.

25/98

Si las filas y las columnas del mismo sistema se reordenan de acuerdo con el
algoritmo
grado
mnimo
(que
obtiene de
unacuerdo
patrncon
de el
 Si de
las filas
y las
columnas
del estudiaremos)
mismo sistema sesereordenan
coeficientes
distintos
de cero
como
algoritmo
de grado
mnimo
(que este.
estudiaremos) se obtiene un patrn de
coeficientes distintos de cero como este.

 Si esta ltima matriz se factoriza tambin mediante eliminacin de Gauss, el

nmero de nuevos coeficientes distintos de cero que se crean en el proceso es


 Si esta ltima
cero. matriz se factoriza tambin mediante eliminacin de Gauss, el

nmero de nuevos coeficientes distintos de cero que se crean en el proceso es


cero.
42/126

26/98

Reordenar las matrices para reducir el nmero de coeficientes de relleno


presenta tres ventajas fundamentales:


Una disminucin del nmero de posiciones de memoria que se han de


reservar para los nuevos coeficientes que se harn distintos de cero en un
proceso de factorizacin.

Una disminucin del nmero de operaciones a realizar y, por lo tanto, el


tiempo total de clculo para factorizar la matriz y resolver el correspondiente
sistema.

Una mejora de la estabilidad numrica del proceso global de resolucin del


sistema al disminuir el nmero de coeficientes que habr que considerar y
por tanto disminuir la probabilidad de encontrar grandes diferencias entre
ellos, errores de cancelacin, etc.

27/98

El nmero de operaciones que habra que realizar para factorizar la matriz del
ejemplo mediante eliminacin de Gauss y luego resolver el sistema
correspondiente, si se operase con esta matriz como densa, como dispersa sin
reordenar filas y columnas y como si fuese dispersa reordenando filas y
columnas, sera el que sigue:
Matriz
Matriz
Matriz
Dispersa
Dispersa
Operacin
Densa sin Ordenar Ordenada
Factorizacin
1911
408
105
Sustitucin Inversa 196
94
48

Para lograr una ordenacin ptima es necesario considerar la estructura de la


matriz, cmo se almacena y el tipo de operaciones que se van a realizar.

28/98

Si las matrices son de estructura simtrica y se almacenan segn un esquema de


perfil o envolvente, tambin interesa poder disponer de un algoritmo de
ordenacin que compacte los coeficientes cerca de la diagonal principal.


Uno para ese propsito es el algoritmo de Cuthill-McKee que veremos ms


adelante.

El resultado de aplicarlo a una matriz simtrica 35  35 es este.

350

350

400

400

450

450

100

200
300
el = 7551

400

29/98

100

200
300
el = 24226

400

Tambin existen diversas formas de ordenar matrices dispersas de estructura


simblica no simtrica.


Entre las ms usadas estn las que ordenar la matriz A de tal forma que se
consiga una estructura triangular inferior en bloques del tipo que se indica
en la figura.
A11

A =

A21 A22
A31 A32 A33

30/98

Si de acuerdo con esta estructura tambin se dividen los vectores x y b de


Ax D b, el sistema se tratar mucho ms eficazmente resolviendo los
subsistemas
A i i x i D bi

i 1
i

A ij xj ;

i D 1; 2; 3:

j D1

Slo ser necesario factorizar las submatrices A i i pues los bloques o


submatrices A ij , i > j , slo se han de multiplicar por los subvectores xj .

Los nuevos coeficientes distintos de cero slo se podrn crear en esas


submatrices en la diagonal principal.

Si como ejemplo consideramos la matriz simtrica 16  16

la reordenacin triangular inferior en bloques que de ella se puede obtener es:

31/98

32/98

ndice
 Matrices dispersas

 Almacenamiento en ordenador de matrices dispersas

 Operaciones algebraicas elementales con matrices dispersas


 Solucin de grandes sistemas lineales de matriz dispersa
 Matrices dispersas simtricas y eliminacin de Gauss


Nociones bsicas sobre grafos

Interpretacin mediante grafos de la eliminacin de Gauss

El algoritmo de grado mnimo

El algoritmo de Cuthill-McKee

Matrices dispersas no simtricas y eliminacin de Gauss

Mnimos cuadrados

33/98

Matrices dispersas simtricas y eliminacin


de Gauss


La eliminacin de Gauss, u otra factorizacin, puede crear coeficientes no nulos


nuevos; para evitarlo lo ms posible hay que reordenar las filas y las columnas.

Si a la matriz de Ax D b se le aplican unas de permutaciones, representadas


por P, el sistema se puede reescribir,
P A P T Px D Pb;
pues P T P D I.

34/98

Haciendo y D Px y c D Pb, se tiene que


By D c;
donde B D PAP T es la matriz A reordenada.

La matriz B es tambin dispersa y simtrica.

Si A es definida positiva, lo mismo ocurre con B, etc.

Encontrar una P que produzca el menor relleno posible al factorizar B no es


fcil:


Si A es de orden n, el nmero posible de ordenaciones es n. Imposible


analizar todas si n es grande.

No existe ningn algoritmo que garantice la ordenacin ptima.

Si existen algoritmos heursticos para tratar de llegar a un resultado ptimo.

35/98

En las figuras que siguen se representan los patrones de coeficientes distintos de


cero de una matriz 480  480 antes y despus de factorizarla.

Las dos primeras representan la matriz sin reordenar y el resultado que


producira factorizarla de la forma LLT .
0

50

50

100

100

150

150

200

200

250

250

300

300

350

350

400

400

450

450

100

200
300
el = 7551

400

100

50

50

200
300
el = 30366

400

150

150

200

200

250

250

300

300

36/98

Estas dos, el mismo caso cuando se reordena la matriz original mediante el


algoritmo de grado mnimo.
350

350

400

400

450

450

100

200
300
el = 7551

400

50

50

100

100

150

150

200

200

250

250

300

300

350

350

400

400

450

450

100

200
300
el = 7551

400

100

200
300
el = 30366

400

100

200
300
el = 9196

400

37/98

Por ltimo, estas dos figuras representan la matriz reordenada mediante el


algoritmo de Cuthill-McKee y el factor L resultante.

Obsrvese que L tiene en el primer caso 30:366 coeficientes distintos de cero,


9:196 en el segundo y 24:226 en el tercero.

38/98

Elegir un buen mtodo de reordenacin de la


matriz es esencial

Demo de Matlab: Demo_sparse

Nociones bsicas sobre teora de grafos




39/98

Un grafo, G D .V; E/, es un par formado por un conjunto finito, V , de


elementos denominados nudos del grafo, y por otro tambin finito, E, de arcos.
1

10

8
5

9
2

11
4

5
3

Un arco es un par de nudos. Si los arcos de un grafo son ordenados, el grafo se


denomina digrafo o grafo dirigido; si no, grafo a secas o grafo no dirigido.

El grado de un nudo es el nmero de arcos que tienen uno de sus extremos en


ese nudo; o el nmero de nudos a l unidos.

40/98

Un grafo no dirigido se puede ver como un digrafo en el que si el arco


e D .u; v/ 2 E, tambin e 0 D .v; u/ 2 E.

Si e D .i; j / 2 E, este arco une un nudo de origen o cola i D t .e/ con otro de
destino, final o cabeza j D h.e/.

El nmero de elementos, o cardinal de V o E, se designa jV j o jEj.

Un grafo G D .V; E/ se dice numerado si existe una biyeccin W f1,


2; : : : ; jN jg ! V .

En lo sucesivo supondremos el grafo numerado.

A cualquier matriz cuadrada, A, se le puede asociar un grafo.

Si A es cuadrada de orden n, de estructura simblica simtrica, con todos sus


coeficientes diagonales distintos de cero, se define el grafo asociado a A,
G A D .V A; E A/, como el grafo no dirigido numerado de n nudos V A D fv1,
v2; : : : ; vng y arcos o aristas E A definidas de tal forma que
.vi ; vj / 2 E A , aij 0; aj i 0:

El que los coeficientes diagonales sean distintos de cero hace que no sea
necesario representar los bucles que unen cada nudo consigo mismo.

 En la figura se puede ver la estructura simblica simtrica de una matriz 11  11 y


su grafo asociado.

1
2
3
4
5
A= 6
7
8
9
10
11

1 2 3 4 5 6 7 8 9

10 11

10

9
2

11
4

5
3

El grafo asociado a una matriz simtrica permanece invariable, salvo la


numeracin de sus nudos, al aplicarle a dicha matriz una permutacin
simtrica.

41/98

Considrese el grafo siguiente:

42/98

3
2

4
1

7
6

Con esta numeracin, la matriz simblica asociada es:


1
2
3
4
5
6
7

2 1 2 3 4 5 6 7
      
6 
6
6

6
6

6
6
6

6
4




3
7
7
7
7
7:
7
7
7
7
5

Si en el grafo anterior la numeracin fuese

43/98

2
1

3
7

6
5

la matriz simblica asociada sera


1
2
3
4
5
6
7

2 1 2 3 4 5 6 7


6


6
6


6
6


6
6
6


6
4
 
      

3
7
7
7
7
7;
7
7
7
7
5

en la que no habra coeficientes de relleno al factorizarla.

44/98

Simulemos con Matlab la manipulacin de esta matriz (en


Demo_sparse_1.m).

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

A=eye(7);
A(1,:) = A(1,:) + ones(1,7)
A(:,1) = A(:,1) + ones(7,1)
spy(A)
[L U P] = lu(A);
spy(L)
r=amd(A);
% Ordenacin grado mnimo
spy(A(r,r))
[L U P] = lu(A(r,r));
spy(L)

% Demo_sparse_1.m
A=eye(7);
A(1,:) = A(1,:) + ones(1,7)
A(:,1) = A(:,1) + ones(7,1)
spy(A), pause
[L U P] = lu(A);
spy(L), pause
r=amd(A); % Ordenacin grado mnimo
spy(A(r,r)), pause
[L U P] = lu(A(r,r));
spy(L)

45/98

Un camino de un nudo u1 a otro umC1, es un conjunto ordenado de nudos fu1,


u2; : : : ; umC1g tal que ui y uiC1 son adyacentes para i D 1, 2; : : : ; m.
 La longitud de ese camino es m.

 El nudo inicial de un camino se suele denominar de partida; el final, de llegada.


 Un camino tambin se puede definir como un conjunto ordenado de m arcos .u1 ; u2 /,

.u2 ; u3 /; : : : ; .um ; umC1 /.

 Dos nudos dados, u y v , se dicen unidos por un camino, si existe un camino de u a v .


 Un camino es un ciclo cuando u1 D umC1 .
 La distancia, d.u; v/, entre dos nudos, u y v , es la longitud del camino ms corto entre ambos nudos.
 Dado un nudo u, a la mayor distancia entre ese nudo y cualquier otro del grafo se la denomina

excentricidad, e.u/, del nudo u.

 Un grafo se dice conexo si cada par de nudos distintos se puede unir por un camino; inconexo en cualquier

otro caso.

La mayor excentricidad de un grafo se denomina dimetro.

Un nudo perifrico es aquel cuya excentricidad es al dimetro.

En esta matriz y su grafo, los nudos 1 y 3 estn unidos por los caminos
f1, 10, 11, 3g y f1, 6, 9, 11, 3g, de longitudes 3 y 4.
1
2
3
4
5
A= 6
7
8
9
10
11

1 2 3 4 5 6 7 8 9

La distancia entre los nudos 1 y 3 es 3.

El camino f5, 8, 11, 3, 5g es un ciclo.

10 11

10

9
2

11
4

5
3

El dimetro de este grafo es 4. Los nudos perifricos: 1, 2, 4, 5 y 6. Su


excentricidad es igual a 4.

46/98

47/98

Un grafo conexo que no tiene ciclos se denomina rbol. En un rbol slo existe
un camino entre cualquier par de nudos.
8

12

19

10

17

18

11

14

16

13

15

20
6

Una matriz cuyo grafo asociado es un rbol se puede reordenar de forma que al
factorizarla mediante eliminacin de Gauss no experimente relleno alguno.

48/98

Interpretacin con grafos de la eliminacin de Gauss




Recordemos que:


Al comienzo de una etapa k del proceso de eliminacin de Gauss todos los


coeficientes distintos de cero debajo de la diagonal principal en las columnas
1, 2; : : : ; k 1 son cero.

En esta etapa k se determinan unos multiplicadores y se restan, de las filas


que tienen un elemento distinto de cero en la columna k debajo de la
diagonal principal, la fila k multiplicada por el multiplicador correspondiente.

Este proceder puede crear nuevos coeficientes distintos de cero en la


submatriz k C 1; : : : ; n.

Consideremos la submatriz activa en la etapa k: la de coeficientes aijk , donde i,


j  k.

49/98

Sea G k el grafo de eliminacin de esa submatriz activa:

Para obtener G kC1 a partir de G k , borrar en ste el nudo k y


aadir todos los nuevos arcos que sea posible entre nudos que sean
adyacentes a ese nudo k.

Los arcos que se aaden determinan qu coeficientes nuevos distintos de cero se


producirn en la matriz en un proceso de eliminacin de Gauss, o similar.

50/98

2 Apliquemos
3 4 5 6 7esta
8 idea
9 10 al
11 grafo

Etapa 1

1
2
3
4
5
A2 = 6
7
8
9
10
11

que sigue y a su matriz.

1 2 3

10

11

5
3

10 11

10

9
2

11
4

7
G2

5
3

Etapa 2

51/98

1
2
3
4
5
A3 = 6
7
8
9
10
11

1
2
3
4
5
A4 = 6
7
8
9
10
11

10 11

10

9
2

11
4

5
3

G3

Etapa 3
2

10 11

10

9
2

11
4

7
G4

5
3

Etapa : : :


52/98

Al final del proceso la matriz ser:


1 2 3 4 5 6 7 8 9 10 11

1
2
3
4
5
6
7
8
9
10
11


6  
7
6
7




6
7

6  
7
6
7





6
7
6
7



6
7
6
   7
6
  7
6
7
6    7
4
5



  

Los grafos de eliminacin permiten realizar, independientemente de los valores


numricos, una eliminacin de Gauss simblica y determinar qu nuevos
coeficientes distintos de cero cmo mximo se van a crear.


Reservando posiciones de memoria para esos nuevos coeficientes, se puede


realizar la eliminacin o factorizacin numrica como es habitual.

53/98

El algoritmo de GRADO MNIMO




Fue formulado por Tinney y Walker en 1967. Es el ms ms extendido y sencillo


para reducir el nmero de rellenos que produce la eliminacin de Gauss, u otra
similar, en una matriz de estructura simtrica.

La idea en que se basa es simple:


 Si en la etapa k de la factorizacin hay coeficientes no cero a la derecha de
la diagonal principal de la fila k, al sumar un mltiplo de esta fila a
cualquiera de las filas k C 1 a n lo normal es que se produzcan nuevos
coeficientes no nulos en esas filas.


Si se determina la fila ` de la submatriz activa con el menor nmero de


coeficientes distintos de cero y se intercambia con la k, al igual que las
columnas ` y k, el nmero de nuevos coeficientes distintos de cero en esa
submatriz ser mnimo.

54/98

El nombre de grado mnimo viene de que en el grafo de eliminacin G k , el


coeficiente de la diagonal principal en la fila k representar el nudo que est
unido al menor nmero de nudos.

Paso 1 Inicializacin. Hacer i

1.

Paso 2 Seleccin del nudo de grado mnimo. Seleccionar en el grafo de eliminacin


G k 1 D .V k 1 ; E k 1 / aquel nudo vk de grado mnimo.
Paso 3 Transformacin. Formar el nuevo grafo de eliminacin G k D .V k ; E k /
eliminando vk de G k 1 .

Paso 4 Bucle. Hacer i

i C 1. Si i > jV j, parar. Si no, ir al paso 2.

Algoritmo de Grado Mnimo

55/98

Para ilustrar el proceso del algoritmo, consideremos el grafo de la figura


asociado a una matriz simtrica 7  7.
a

c
b

En las dos tablas que siguen se describen las 7 etapas de que consta la
aplicacin del algoritmo de grado mnimo a este grafo.

Etapa 1 a 3

56/98

Etapa k

Grafo de Eliminaci
on Gk1
a

Nudo Seleccionado

Grado

c
b

e
f

57/98

Etapa 4 a 7
Etapa k

Grafo de Eliminaci
on Gk1

Nudo Seleccionado

Grado

f
g

1
0

b
4

e
g

f
b
5

f
6
7

f
g

58/98

Al final:
1
2
3
A= 4
5
6
7

2
5

El algoritmo de grado mnimo produce muy buenos resultados prcticos.

Cuando el grafo a reordenar sea un rbol, el resultado no producir coeficientes


de relleno al efectuar la factorizacin ulterior.

El algoritmo de grado mnimo no siempre da lugar a la ordenacin ptima:


aquella con el menor nmero de rellenos.
1
2
2
1

7
4

3
9

4
5
6
7
8
9

59/98

Si se aplica al grafo de la figura, el algoritmo elegir el nudo nmero 5 como el


inicial, lo que traer como consecuencia que se produzca un relleno posterior en
las posiciones .4; 6/ y .6; 4/.

Con la numeracin de la figura no se produciran rellenos.

60/98

El algoritmo de Cuthill-McKee


Fue formulado en 1969 por Elizabeth H. Cuthill y J. McKee. Su objetivo es que


los coeficientes distintos de cero estn lo ms cerca posible de la diagonal
principal.

Mecnica: Una vez numerado un nudo k, se numeran inmediatamente despus


los que estn unidos a l, no numerados previamente: los coeficientes distintos
de cero de la fila k estarn lo ms cerca posible de la diagonal.
Paso 1 Inicializacin. Seleccionar un nudo inicial r. Hacer v1

r.

Paso 2 Bucle. Para i D 1; : : : ; n, determinar todos los nudos adyacentes al vi no


numerados y numerarlos en orden creciente de grado a nudos no numerados.

61/98

Definicin Se dice que una matriz simtrica tiene un perfil montono si para todo k
y `, k < `, se cumple que lk  l` .

1 2 3 4 5 6 7








1 2 3 4 5 6 7








Perfil Montono

Perfil No Montono

Teorema La numeracin dada por el algoritmo de Cuthill-McKee conduce a un perfil


montono.

62/98

Ejemplo Apliquemos el algoritmo de Cuthill-McKee al grafo de la figura.

10

Empezando a numerar por el nudo a, en la figura de la derecha se puede ver la


numeracin final que se obtiene con el algoritmo.

Los nudos 5 y 6 podran invertir su numeracin segn el algoritmo. Se ha


escogido sta por estar el 5 antes en la pseudonumeracin inicial.

63/98

Con la numeracin obtenida, considerando slo la parte triangular inferior, los


coeficientes distintos de cero y ceros en la envolvente de la matriz asociada
sern los que siguen.
1
2
3
4
5
6
7
8
9
10

2 1

6 
6
6
6
6
6
6
6
6
6
6
6
6
6
4


 
  
 0
 0







0
0

9 10 3


 
0 0 
0   
  

7
7
7
7
7
7
7
7
7
7
7
7
7
7
5

El ancho de banda de esta matriz es 5. La envolvente tiene 33 coeficientes; 7 de


ellos cero.

64/98

Ahora bien, si se comienza a numerar el grafo por el nudo e, el resultado de


aplicar el algoritmo de Cuthill-McKee es el de la figura.

71

43

39

14

96

10
8

58

67

5
10

65/98

Los coeficientes distintos de cero y ceros son:


1
2
3
4
5
6
7
8
9
10

2 1

6 
6
6 
6
6 
6
6 
6
6 
6
6
6
6
6
4

2

0

0
0



0

0
0



0
0
0
0





0

0
0


0
0



9 10 3


0 
0 0 
0 0  

7
7
7
7
7
7
7
7
7
7
7
7
7
7
5

El ancho de banda de esta matriz es 6. El nmero de coeficientes de la


envolvente es 46; de ellos, 20 cero.

La eleccin del nudo inicial es una cuestin crtica.

66/98

Seleccin del nudo inicial




Normalmente, el mejor nudo de partida es uno perifrico. Obtengamos uno.


Paso 1 Inicializacin. Seleccionar un nudo arbitrario r.
Paso 2 Generar estructura de niveles. Construir la estructura de niveles del grafo
tomando como nudo raz el nudo r: L.r/ D fL0 .r/, L1 .r/; : : : ; L`.r/ .r/g.
Paso 3 Bucle. Escoger un nudo v en L`.r/ .r/ todava no tratado de grado mnimo:
a) Si e.v/ > e.r/, hacer r
v e ir al Paso 2.
b) Si e.v/  e.r/, escoger otro nudo de L`.r/ .r/ y volver al paso 3; si no
hay ms nudos, parar.

67/98

Comenzando por cualquier nudo, por ejemplo e, apliquemos este procedimiento


al ejemplo: las tres etapas de que consta estn la figura.
2
a

1
b

1
c

1 d

2 f

h
2

i
1

j
1

0
a
g 2

1
b

2
c

3 d

3 f

h
4

i
3

j
3

4
a
g 3

3
b

3
c

1 d

3 f

h
0

i
1

j
2

g 3

Los nmeros al lado de los nudos del grafo indican su excentricidad tomando
como raz el que se indica como 0.

Obsrvese que del resultado del algoritmo se desprende que tanto el nudo a
como el h podran utilizarse como nudos de partida pues tienen la misma
excentricidad: 4.

68/98

El algoritmo inverso de Cuthill-McKee


Reduccin de la envolvente de una matriz dispersa simtrica


En 1971 George descubri que utilizando el algoritmo de Cuthill-McKee, pero


invirtiendo el orden de la numeracin final, se consegua una matriz con el
mismo ancho de banda pero con una envolvente con un nmero de coeficientes
menor o igual.
Teorema Sea A una matriz cuyo perfil es montono. El nmero de coeficientes de
Env.A/, numerando el grafo asociado a A de acuerdo con el resultado obtenido de aplicar
el algoritmo inverso de Cuthill-McKee, es a lo sumo el mismo que el de la matriz asociada
al grafo numerado de acuerdo con el resultado del algoritmo ordinario de Cuthill-McKee.

Ejemplo Considrese el grafo que venimos manejando.

69/98

g
c

e
a

d
f

Si se reordena con el algoritmo de Cuthill-McKee dara:


1
2
3
A= 4
5
6
7

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

1
3

7
2

6
5

70/98

Por el contrario, utilizando el algoritmo de Cuthill-McKee inverso, se conseguira


el efecto siguiente.

1
2
3
A= 4
5
6
7

7
5

1
6

2
3

Como se puede observar, desaparecen todos los ceros que aparecan antes,
ahorrndose las correspondientes posiciones de memoria para guardarlos.

71/98

Si al grafo que se utilizaba para introducir el algoritmo de Cuthill-McKee, se le


aplicada el algoritmo inverso, el resultado que se obtiene es el que describe la
figura.

1
2
3
4
5
6
7
8
9
10

1 2 3 4 5 6 7 8 9 10

0 0

10

En este caso el ancho de banda sigue siendo 5 y la Env.A/ pasa a ser 29, de los
que slo 3 son cero.

72/98

Matrices dispersas no simtricas


y eliminacin de Gauss


Tambin aqu, para evitar nuevos coeficientes de relleno, en un proceso similar


al de eliminacin de Gauss de la matriz A, se efecta una reordenacin de filas
y columnas.


Si al sistema Ax D b se le aplican unas permutaciones a la izquierda y a la


derecha, representadas por las matrices de permutacin P y Q, y el sistema
original se reescribe
P A Q QT x D Pb;
donde QT Q D I, haciendo y D QT x y c D Pb, se tiene que,
By D c;
donde B D PAQ es la matriz A reordenada.

El objetivo de estas manipulaciones es:




Que B tenga una dispersidad mejor que la de A;

que su factorizacin sea numricamente estable; y

que el nmero de coeficiente de rellenos introducidos por la factorizacin o


eliminacin de Gauss sea el menor posible.

Si A no tiene ninguna estructura especial, siempre se pude reordenar en forma


triangular inferior en bloques,
2
32 3 2 3
A 11
x1
b1
6
76 7 6 7
6A 21 A 22
7 6x 2 7 6b2 7
6 ::
7 6 :: 7 D 6 :: 7 ;
:::
4 :
54 : 5 4 : 5
A n1 A n2    A nn
xn
bn
donde los A ij son matrices, siendo las A i i cuadradas de orden ni :
Pn
i D1 ni D n.

73/98

74/98

Ejemplo El sistema que se ilustra a continuacin, sin ordenar y reordenado.

75/98

Nociones bsicas sobre grafos dirigidos




Un grafo, G D .V; E/, es un par formado por un conjunto finito de elementos,


V , denominados nudos del grafo, y por otro tambin finito, E, de arcos. Un
arco es un par de nudos. Si los arcos son ordenados, el grafo se denomina
digrafo o grafo dirigido.

Si e D .i; j / 2 E, este arco une un nudo de origen i con otro de destino o final
j ; sale o parte de i y llega o entra en j .

El nmero de elementos, o cardinal de V o E, se designa jV j o jEj.

Un grafo G D .V; E/ se dice numerado si existe una biyeccin W f1,


2; : : : ; jN jg ! V . Siempre que hablemos de un grafo dirigido se supondr
numerado.

76/98

El grado de entrada o llegada de un nudo es el nmero de nudos que a l llegan;


el grado de salida, el nmero de nudos que salen.

Si .u ! v/ es un arco, el nudo v se dice adyacente al u.

Un camino dirigido, es un conjunto ordenado de nudos fu1, u2, : : : ; umC1g tal


que ui C1 es adyacente a ui , i D 1, 2; : : : ; m. Su longitud es m.

Un ciclo de un digrafo, o ciclo dirigido, es un camino, con al menos dos arcos,


que sale y llega al mismo nudo.

Si en un digrafo el nudo v es accesible desde u, la distancia desde u a v es la


longitud del camino ms corto de u a v (la distancia desde v a u puede ser
distinta o incluso indefinida).

Un digrafo se dice conexo si lo es el grafo no dirigido que se obtiene al suprimir


las direcciones en los arcos del digrafo.

77/98

A cualquier matriz general, A, n  n, se le puede asociar un digrafo de n nudos




En dicho digrafo G A D .V A; E A/, los arcos E A son tales que


.vi ; vj / 2 E A , aij 0:

A cualquier coeficiente diagonal ai i 0 tambin le corresponde un arco que


parte y llega a vi . Cuando todos son no nulos transversal completo, no se
representan. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 2

2 6

3 6
4

4 6

5

5 6


6
6 6

se puede ver
una
matriz 78 6
6

6
8

15  15 y su digrafo
aso- 9 6

9
10 6

11 6

10
12 6

6
11
13 6

12
14

15

13

14
15
1

 En la figura

no simtrica
ciado.

2 3 4 5 6 7 8 9 101112131415

3



7



7
7



7
7


7


7
7
 

7
7

7


7
7



 7

 7
7

7


7
7

  


 5

 

12

13

10

11

14

15

78/98

10

11

12

13

14

15

Los nudos 6, 7 y 9 son adyacentes al nudo 8; si W D f8, 13g, Adj.W / D f6,


7,19,2 12,
grado
3 14g;
4 5 el
6 nudo
7 8 5
9 tiene
10 11 un
12 13
14 15de entrada de 2 y de salida de 1; el nudo

4 es accesible desde el 8.

1 2 3


1 2  

2 6  

3 6


6

4 6

5 6

6 6
6

6
7

8 6
6

9 6

10 6

11 6

12 6

13 6

14

15

4 5 6 7 8





 


  




9 10 11 12 13 14 15

7
7
7

7
7
7
7
7
7
7

7
 
7
7
7
 

7


7

7
7
7
  


 5

 

12

13

10

11

14

15

Si a una matriz se le efectan permutaciones simtricas, en su


digrafo slo se modifica la numeracin de los nudos.

79/98

Eliminacin de Gauss en matrices no simtricas




Con digrafos. En una etapa k el digrafo de eliminacin se forma eliminando del


de la fase k 1 el nudo vk , todos los arcos que a l llegan o de l parten, y
aadiendo un arco .u ! w/ cuando existe un camino dirigido fu, v, wg.

En
la primera etapa en este digrafo, el grafo de eliminacin se obtiene quitando
6 7 8 9 10 11 12 13 14 15

el nudo 1 y aadiendo el arco .5 ! 2/, segn se indica.

2
3
4
5
6
7
8
9

10
11
12
13
14
15

1 2 3 4 5 6 7 8 9 101112131415
2
3


6 
7
6
7


6
7
6
7


6
7

6
7

6
7
6
7

7
6

7
6
 
6
7

6
7


6
7
6
7

6
7
6
7

 7
6
6
 7

6
7
6

 7
6
7
6
7

  

6
7
4
5






12

13

10

11

14

15

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

1 2 3 4 5 6 7 8 9 101112131415
3

6  
7
6
7
6
 

7
6
7


6
7
6
7

6 
7
6
7

7
6
7
6
 
6
7
6
7
  
6
7
6
7
 
6
7
6
7
 
 7
6
6

7
6
7
6
    7
6
7
6
    7
6
7
4

 5
 
2

80/98

Obtencin de un transversal completo




Cualquier matriz regular A se puede reordenar mediante permutaciones no


simtricas de tal forma que PAQ tenga un transversal completo.


Si la matriz es singular esto puede no cumplirse.

Con transversal completo, puede reordenarse mediante permutaciones simtricas


para conseguir una estructura triangular inferior en bloques:


Si esa estructura de bloques existe, se dice que A es una matriz reducible.

Si una matriz no tiene transversal completo pero puede reordenarse de tal


forma que entonces s lo tenga, y as reordenada es reducible, se dice
birreducible.

Para conseguir triangularizar por bloques una matriz A dispersa cualquiera se


procede en dos fases:

81/98

Fase 1. Encontrando un transversal completo de esa matriz.


Fase 2. Reordenando el resultado de la fase 1 mediante permutaciones
simtricas.

Algoritmo de Hall


Este algoritmo, M. Hall (1956), requiere n etapas en cada una de las cuales se
coloca un coeficiente distinto de cero si no lo est ya en la correspondiente
posicin de la diagonal principal.

Supongamos que se han realizado k etapas y que los primeros k coeficientes de


la diagonal principal son ya distintos de cero.

82/98

En la etapa k C 1 podr ocurrir:


a) Que akC1 kC1 0 con lo que se finaliza esta etapa.

b) Que akC1 kC1 D 0, pero que exista un coeficiente distinto de cero en la


submatriz activa:


Realizando los intercambios de filas y columnas necesarios se puede llevar


ese coeficiente a la posicin .k C 1; k C 1/.
Los coeficientes de subndices 1 a k no deben verse afectados por estos
intercambios: los k primeros coeficientes de la diagonal principal seguirn
siendo distintos de cero.

c) Que slo existan coeficientes cero en la submatriz activa:




Mediante el trazado de un camino creciente se puede conseguir colocar


un coeficiente distinto de cero en akC1 kC1. Si no se encuentra ese
camino, la matriz ser singular.

El trazado de un camino creciente comienza, en una etapa k C 1, en el


coeficiente .k C 1; k C 1/:

83/98

Contina por la fila k C 1 hasta que se encuentra con un coeficiente distinto


de cero, en una columna ` (tal columna debe existir pues de lo contrario
todos los coeficientes de la fila k C 1 sern cero y la matriz, por tanto,
singular);

De aqu al coeficiente .`; `/ a lo largo de la columna `;

A continuacin, por la fila ` hasta hallar un coeficiente distinto de cero, por


ejemplo en la columna m, etc.

Este camino no puede atravesar una misma fila o columna ms de una vez y,
por tanto, tampoco un mismo coeficiente de la diagonal principal.

Terminar en un coeficiente distinto de cero en la submatriz que definen las filas


1 a k y las columnas k C 1 a n.

Para aclarar el procedimiento, consideremos una matriz simblica 12  12 y el


procedimiento descrito es su etapa 9.

84/98

1 2 3 4 5 6 7 8 9 10 11 12

7
8

9
10
11
12

Esta etapa 9 comienza en la posicin .9; 9/.

La submatriz de coeficientes 9 a 12 son todos cero por lo que se trata de trazar


un camino creciente.

ste comienza en la posicin .9; 9/, sigue por la fila 9 hasta encontrar el coeficiente distinto de cero de la columna 5;
85/98
contina por la columna 5 hasta encontrar el correspondiente coeficiente distinto de cero de la diagonal principal; sigue por
la fila 5 hasta encontrar el coeficiente distinto de cero de la columna 2; contina por la columna 2 hasta encontrar el
coeficiente distinto de cero de la diagonal principal en la fila 2; sigue por la fila 2 hasta encontrar el coeficiente distinto de
cero de la columna 4; contina por la columna 4 hasta alcanzar el coeficiente distinto de cero de la diagonal principal en la
fila 4; sigue por la fila 4 hasta encontrar el coeficiente distinto de cero de la columna 7; contina por la columna 7 hasta
alcanzar el coeficiente distinto de cero de la diagonal principal en la fila 7; sigue por la fila 7 encontrndose que el nico
coeficiente distinto de cero de esta fila est en la columna 5 que ya se ha visitado; esto obliga a borrar las filas 7 y 4 del
camino (no de la lista de posiciones ya visitadas) y reemprender la marcha all donde se abandon en la fila 2.
Por la fila 2 se llega hasta la columna 6 donde est el siguiente coeficiente distinto de cero; contina en la columna 6 hasta
la diagonal principal en la fila 6; sigue por esa fila 6 hasta llegar al coeficiente distinto de cero de la columna 1; contina por
la columna 1 hasta alcanzar el coeficiente distinto de cero de la diagonal principal en la fila 1; sigue por la fila 1, parndose
al llegar al primer coeficiente distinto de cero que encuentra en la columna 12 por estar en la submatriz que nos interesa.
El camino es pues
f9; 5; 2; 6; 1; 12g:
Encontrado el camino, se efectan los siguientes intercambios de filas
la
la
la
la
la
la

fila
fila
fila
fila
fila
fila

9
5
2
6
1
12

con
con
con
con
con
con

la
la
la
la
la
la

5I
2I
6I
1I
12 y
9:

que trasladan el coeficiente distinto de cero .1; 12/ a la posicin .9; 12/.
Por ltimo se intercambian las columnas 9 y 12.
Si el coeficiente .6; 1/ fuese cero, hubisemos encontrado que las filas 9, 5, 2, 4, 7 y 6 tienen coeficientes distintos de cero
slo en las columnas 5, 2, 4, 7 y 6, lo que significara que la matriz es singular.

86/98

Permutaciones simtricas para obtener una estructura


triangular en bloques


Obtenido un transversal completo, la siguiente fase para llegar a una matriz


triangular en bloques consiste en encontrar otra permutacin que haga
2
3
B 11
6
7
6B 21 B 22
7
6 ::
7;
:::
4 :
5
B n1 B n2    B nn
donde cada bloque diagonal, B i i , no se pueda reducir ms.

Los algoritmos para conseguir este propsito se basan en encontrar los ciclos
fuertemente conexos en el digrafo asociado.

87/98

Si existiesen dos de estos ciclos fuertes y se renumerasen los nudos de tal forma
que los del primero fuesen los nudos 1 al k y los del segundo k C 1 al n, se
obtendra una matriz triangular inferior en dos bloques, el primero con k
columnas y el segundo con n k.
5

En el grafo dirigido de la figura existen dos ciclos fuertes, el formado por los
nudos 1 y 2 y el que definen 3, 4 y 5. La estructura simblica en 2 bloques de
su matriz asociada es
 
 
:
  
 



88/98

Matrices dispersas generales: eliminacin de Gauss




Si el sistema no presenta una estructura de dispersidad especial y tampoco


interesa triangularizarla por bloques, la forma ms general de abordar su
resolucin consiste en utilizar directamente la eliminacin de Gauss teniendo en
cuenta que esa matriz es dispersa.

Para llevarla a cabo se usa el criterio de Markowitz, por Harry Max Markowitz,
EE.UU. 1927-. Premio Nobel de economa de 1990.

Lo formul en 1957 y consiste2 en factorizar la matriz mediante eliminacin de


Gauss con pivotacin, escogiendo como elemento pivote en una etapa k uno aijk
de A que sea numricamente aceptable y que minimice

89/98

.rik

1/.cjk

1/;

donde rik es el nmero de coeficientes no cero en la fila i de la submatriz activa


y cjk los no ceros en la columna j .


En la figura se ilustra la situacin para el caso en que n D 7 y k D 3.


1

1
1

rT

Obsrvese que es ms conveniente usar .rik 1/.cjk 1/


que rik cjk pues de esta manera se fuerza a que se elija un
k
coeficiente aij
tal que en su fila o columna slo exista l
como coeficiente distinto de cero.

La estrategia resultante es similar a la de grado mnimo.

90/98

ndice


Matrices dispersas

Almacenamiento en ordenador de matrices dispersas

Operaciones algebraicas elementales con matrices dispersas

Solucin de grandes sistemas lineales de matriz dispersa

Matrices dispersas simtricas y eliminacin de Gauss

Matrices dispersas no simtricas y eliminacin de Gauss

Mnimos cuadrados

91/98

Problemas de mnimos cuadrados de grandes


dimensiones


Son problemas de mnimos cuadrados lineales,


kAx
minimizar
x 2Rn

bk2

en los que la matriz A es de grandes dimensiones y dispersa.

92/98

Las ecuaciones normales




De las ecuaciones normales


minimizar
kAx
x 2Rn

bk2 A T .Ax

b/ D 0

si suponemos A es de rango completo, A T A es simtrica y definida positiva.


Teorema Supngase que no se producen errores numricos de cancelacin en el clculo
de A T A, entonces,

A T A j k 0 , aij 0 y ai k 0
para al menos una fila i D 1, 2; : : : ; m.

Este resultado permite saber dnde se producirn coeficientes de relleno al


obtener A T A.

93/98

Paso 1 Determinar la estructura simblica de A T A.


Paso 2 Determinar una permutacin de columnas Q tal que el factor de Cholesky de
QT A T AQ tenga una estructura dispersa buena.
Paso 3 Factorizar simblicamente por Cholesky QT A T AQ y generar las estructuras
de datos y memoria necesarias para G .
Paso 4 Calcular numricamente B D QT A T AQ y c D QT A T b; almacenar B en
la estructura de datos correspondiente a G .
Paso 5 Calcular numricamente la factorizacin de Cholesky G T G de B. Resolver
G T z D c, G y D z y, por fin, x D Qy.

Algoritmo bsico para mnimos cuadrados de matriz dispersa

94/98

Transformaciones ortogonales_Mtodo de George-Heath




Recordemos que:


Un conjunto de transformaciones ortogonales, representadas por


Q 2 Rmm, puede reducir A 2 Rmn (que supondremos de rango n) y
b 2 Rm de la forma
 
 
R1
c
QA D
y Qb D
;
0
d
donde R 1 2 Rnn es una matriz triangular superior y c 2 Rn.

La solucin del problema de mnimos cuadrados se obtiene de R 1x D c; la


suma de residuos al cuadrado es kdk22.

95/98

El algoritmo de George y Heath [1980] procesa las filas de A secuencialmente


con esta mecnica.
1. R i 1 designa la matriz triangular superior que se obtiene despus de procesar
las filas aT1 ; : : : ; aTi 1 .
Al procesar la fila aTi D ai1 , ai 2 ; : : : ; ai n se buscan de izquierda a derecha los
coeficientes distintos de cero.
Para cada aij 0, i > j , se define una transformacin de Givens que involucre
a la fila j de R i 1 y anule aij .


Procediendo as se pueden crear nuevos coeficientes distintos de cero en


R i 1 y en la fila aTi .

2. Si al tratar la fila i, al llegar al coeficiente j.j < i/ ste no es cero y rjj D 0,


la fila j en R i 1 todava no se ha visto afectada por ninguna rotacin y debe
ser toda cero:


Lo que resulta de la fila i debe insertarse en la fila j .

96/98

Un ejemplo de este proceso actuando sobre los coeficientes de la fila 9 de una


matriz 9  8 es el que sigue.


0  0 0 
0  0
 0  0
0

0 0
0 0
0 
0 0
0 0
0
 0

 0

Los smbolos designan los coeficientes involucrados en la eliminacin de aT9 .


Los que se crean de relleno en R 8 y aT9 durante la eliminacin se designan
mediante .


Obsrvese que los tres ltimos coeficientes de la fila 9, una vez anulados del 1 al
5, reemplazan a los de la fila 6, que eran 0.

Ordenacin de filas


97/98

El nmero de operaciones del proceso descrito depende tambin del orden de las
filas. Por ejemplo, las matrices
3
    
6
7
6
7
6 ::
7
6:
7
6
7
6
7
6
7
A D 6
7
6
7
6
7

6
7
6
7

6
7
4
5


2

9
>
>
=
>
>
;
9
>
>
>
>
=
>
>
>
>
;

3

6
7
6
7
6 ::
7
6:
7
6
7
6
7
6
7
PA D 6    7
6
7
6
7

6
7
6
7

6
7
4
5


2

y
n

9
>
>
=
>
>
;
9
>
>
>
>
=

>
>
>
>
;

requieren O.mn2/ y O.n2/ operaciones, respectivamente, para reducirlas.




Para reordenar las filas se puede aplicar este algoritmo:


Si el ndice de columna del ltimo coeficiente distinto de cero de la fila aTi es `i y el
primero fi , ordenar primero las filas cuyos ndices fi , i D 1, 2; : : : cumplan que fi  fk
si i < k y luego, para cada grupo de filas tales que fi D k, k D 1; : : : ; mKaxi fi , ordenar
las filas segn `i crecientes.

98/98

Con las consideraciones anteriores, el algoritmo de ortogonalizacin de George y


Heath para mnimos cuadrados queda as:
Paso 1 Llevar a cabo los Pasos 1 a 3 del Algoritmo bsico anterior.
Paso 2 Determinar una permutacin de filas P tal que las filas de PAQ tengan
unos ndices de columnas `i crecientes.
Paso 3 Calcular numricamente R 1 y c procesando las filas de PAQ, Pb
mediante transformaciones de Givens.
Paso 3 Resolver Ry D c. Hacer x D Qy.

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Sistemas de ecuaciones lineales

Mtodos iterativos de resolucin

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_itera_2016.pdf

1/103

2/103

ndice


Introduccin

Mtodo de Jacobi

Mtodo de Gauss-Seidel

Mtodos de relajacin

Mtodos iterativos y matrices dispersas

Mtodos de direccin de descenso (minimizacin)




Obtencin de direcciones de descenso

Mtodo de los gradientes conjugados

Mtodos de proyeccin en subespacios de Krylov

Comparacin numrica de los mtodos

Introduccin


3/103

Los procedimientos iterativos siguen un esquema de trabajo como el que sigue


 Algoritmo iterativo para la resolucin de Ax D b
Dados Un x D x .0/ y una t ol, hacer k D 1 y sol D f al se
while (not sol) and (k < kmax )

Obtener nueva solucin x D x .k/ ,

if (x .k/
end

x .k

1/

k DkC1

< t ol), sol D true, FIN

Parten de un punto ms o menos cercano a la solucin y convergen a ella en


una sucesin de puntos ms o menos extensa.


Una forma iterativa busca acercarse a la solucin mediante operaciones sencillas


en cada paso: productos de matrices por vectores o similares.

El mtodo converger si limk!1 x .k/ D x o el error e .k/ D x .k/ x tiende a


cero. El acercarse a la solucin, lo medir una mtrica como jjb Axjj.

4/103

La forma ms simple de proceso iterativo es la que define la recurrencia


x .kC1/ D M x .k/ C N b
donde M y N se escogen para que en un punto dado x solucin de Ax D b,
x D M x C N b:
Si A es invertible, se debe cumplir que .I M /A 1b D N b o A 1 D .I M / 1 N .

El mtodo iterativo se denomina estacionario, o de punto fijo, si M y N son


constantes en el proceso. Se escoge una M sencilla o con M 1 fcil de obtener.

Si se divide A as, A D I .I A/, el sistema queda .I


posible sencilla ley de recurrencia1 de punto fijo sera
x .k/ D .I A/ x .k 1/ C b
1

Esquema de Richardson.

.I

A// x D b. Una

5/103

Mtodo de Jacobi

Carl Gustav Jacobi, Alemania


(Prusia), 1804-1851.

Formulado hacia 1845. Supongamos que se desea resolver el sistema de


ecuaciones lineales
a11 x1 C a12 x2 C a13 x3 D b1
a21 x1 C a22 x2 C a23 x3 D b2
a31 x1 C a32 x2 C a33 x3 D b3 :

Admitiendo que los coeficientes a11, a22 y a33 son distintos de cero, se puede
despejar de la primera ecuacin la incgnita x1, de la segunda x2 y x3 de la
tercera, resultando lo que sigue.
x1 D

x2 D
x3 D

1
.b
a11 1
1
.b
a22 2
1
.b
a33 3

a12 x2

a13 x3 /

a21 x1

a23 x3 /

a31 x1

a32 x2 /:

6/103

Estas expresiones sugieren emplear como mtodo iterativo el que definen las
siguientes relaciones de recurrencia:
.kC1/
x1
.kC1/
x2
.kC1/
x3


D
b1

1
D a22 b2

1
D a33 b3
1
a11

.k/
a12 x2

.k/
a13 x3

.k/
a21 x1

.k/
a23 x3

.k/
a31 x1

.k/
a32 x2





Su generalizacin es el mtodo de Jacobi para un sistema n  n es


.kC1/

xi

1
ai i

bi

n
X
j D1

j i

.k/

aij xj

i D 1; : : : ; n:

Si se divide la matriz A de la forma A D


2
a11 0   
6 0 a22   
6 : : :
DD6
6 :: :: : :
4 0 0    an
0 0 

L C D C U , donde

3
2
0
0
0  0
6 a21
0 7
0  0
6 :
:: 7
::
::
7
6
: 7 ; L D 6 ::
:
:
5
4
0
a
a



0
1n 1
n 11 n 12
0 ann
an1 an2    an n
0
0
::
:

el esquema iterativo en forma matricial es

.L C U / x

x .kC1/ D D

3
0
07
:: 7
:7
7
05
10

.k/

0 a12    a1 n
6 0 0    a2 n
6: :
::
U D6
:
6 :: ::
40 0    0
0 0  0

C D 1b

Matriz de Jacobi

Si los ai i , i D 1; : : : ; n son todos positivos D es invertible y


J D D 1.L C U /
es la matriz de Jacobi.

7/103

3
a1 n
1 a2n 7
:: 7
: 7
7;
an 1 n 5
0
1

Algoritmo de Jacobi:

8/103

while kx .kC1/ x .k/ k1 =kx .kC1/ k1 > T ol do


for i D 1 to n

x.i /

1
b.i /
a.i; i /

end

n
X
j D1

a.i; j /x.j /

j i

end

Su cdigo en Matlab, en dos formatos:


function [x k]=Jacobi_2(A,b)
% Resuelve Ax=b por Jacobi
n=size(A,1); x=zeros(n,1); y=x; sm=1; k=0;
while sm>=0.001
k=k+1;
for i=1:n
j = [1:i-1 i+1:n];
y(i)=(b(i)-A(i,j)*x(j))/A(i,i);
end
sm=max(abs(x-y))/max(abs(y));
x=y;
end
end

function [x k]=Jacobi_NEW_1(A,b)
% Resuelve Ax=b por Jacobi (compacto)
n=length(b); x=zeros(n,1); k=0; sm=1;
d=diag(A);
r=A-diag(d);
while sm>0.001
y = (b-r*x)./d;
sm=max(abs(x-y))/max(abs(y));
x = y;
k = k+1;
end
end

9/103

Ejemplo Resolvamos este sistema de ecuaciones lineales:


10x1
x2 C 2x3
x1 C 11x2
x3 C 3x4
2x1
x2 C 10x3
x4
3x2
x3 C 8x4

D
D
D
D

6
25
11
15:

Partiendo de x .0/ D 0; 0; 0; 0T , aplicando la relacin de recurrencia se tendr:


.1/

x1

.1/

x2

.1/

x3

.1/

x4

D
D
D

1 .0/
x
10 2
1 .0/
x
11 1
1 .0/
x
5 1

1 .0/
x
10 2
3 .0/
x
8 2

C
C

1 .0/
x
5 3
1 .0/
x
11 3

1 .0/
x
8 3

3 .0/
x
11 4
1 .0/
x
10 4

3
5
25
11
11
10
15
8

D
D
D
D

0,6000
2,2727
1,1000
1,8750:

Las iteraciones que siguen se generan de forma similar:


0

.k/

0,0000

0,6000

1,0473

0,9326

1,0152

0,9997

.k/

0,0000

2,2727

1,7159

2,0533

1,9537

2,0004

x3

.k/

0,0000

-1,1000

-0,8052

-1,0493

-0,9681

-1,0009

.k/
x4

0,0000

1,8750

0,8852

1,1309

0,9739

1,0006

k
x1
x2

10/103



El criterio de llegada al ptimo puede ser cualquiera; aqu hemos forzado a que
.k/

.k 1/
x
x
1
3


<
10
:
x .k/
1

En k D 9 se cumple que

kx .9/ x .8/k1
8,0  10
D
kx .9/k1
2,0004

D 0;0003999 < 10 3:

11/103

Utilizando el cdigo Jacobi_2.m para resolver el ejemplo:


>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];
>> b=[6;25;-11;15];
>> [x k]=Jacobi_2(A,b)
x =
0.9997
2.0004
-1.0004
1.0006
k =
9

En nueve iteraciones se satisface el criterio elegido con una milsima de


precisin.

12/103

Ejemplo Resolvamos con el algoritmo de Jacobi el sistema


10x1 C
x2 D 11
2x1 C 10x2 D 12
partiendo del punto x .0/ D 0; 0T .

Los puntos que se generan en el proceso iterativo son los de la tabla que sigue.
0

.k/

0,0000

1,1000

0,9800

1,0020

0,9996

1,00004

.k/

0,0000

1,2000

0,9800

1,0040

0,9996

1,00008

k
x1
x2

La solucin exacta es 1; 1T .

13/103

Resolvamos tambin con Jacobi este nuevo sistema


x1 C 10x2 D 11
10x1 C 2x2 D 12
cuya solucin es tambin 1; 1T .

Partiendo de x .0/ D 0; 0T , los primeros puntos que se generan son:


0

.k/

0,0000

11

-49

501

-2499

25001

.k/

0,0000

-49

251

-2499

12501

k
x1
x2

El proceso diverge.

14/103

Definicin Se dice que una matriz A nn, (compleja o real), es de diagonal estrictamente
dominante por filas cuando cumple P
que
jai i j > j i jaij j; i D 1; : : : ; n:
Se define anlogamente la matriz de diagonal dominante por columnas.

Teorema Si en el sistema Ax D b la matriz A es de diagonal estrictamente dominante

y regular, para todo b y toda estimacin inicial x .0/ el mtodo iterativo de Jacobi converge
a su nica solucin.

La dominancia diagonal estricta es slo una condicin suficiente. El mtodo


puede converger an en su ausencia.

15/103

Mtodo Gauss-Seidel

Carl Friedrich Gauss, Alemania, 1777-1855 y Phillip


Ludwig von Seidel, Alemania, 1821-1896.

El mtodo2, tambin estacionario, de Carl Friedrich Gauss, Alemania,


1777-1855, y , calcula en una iteracin cada coeficiente de la solucin utilizando
el valor de aquellos ya calculados en esa misma iteracin que se necesitan.

Volviendo a un sistema simblico de tres ecuaciones,


a11x1 C a12x2 C a13x3 D b1
a21x1 C a22x2 C a23x3 D b2
a31x1 C a32x2 C a33x3 D b3;
suponiendo que a11, a22 y a33 no son cero, el esquema iterativo es el que sigue.
2

Lo introdujo Gauss en 1823 y lo perfeccion Seidel (alumno de Jacobi), as como el anlisis de su convergencia, en 1874

16/103

.kC1/
x1
.kC1/
x2
.kC1/
x3


D
b1

1
D a22 b2

1
D a33 b3
1
a11

.k/
a12x2

.k/
a13x3

.kC1/
a21x1

.k/
a23x3

.kC1/
a31x1

.kC1/
a32x2

La relacin de recurrencia general para un sistema n  n es la siguiente:


.kC1/

xi

1 @
bi
ai i

i 1
X

j D1

.kC1/

aij xj

n
X

j Di C1

.k/
aij xj A ; i D 1; : : : ; n:

17/103

Descomponiendo de nuevo la matriz A como en el mtodo de Jacobi, en forma


matricial el mtodo de Gauss-Seidel sigue esta frmula
x .kC1/ D .D

L/


U x .k/ C b

A la matriz
G D .D
se la denomina matriz de Gauss-Seidel.

L/ 1U

El algoritmo de Gauss-Seidel es este.

18/103

while kx .kC1/ x .k/ k1 =kx .kC1/ k1 > T ol do


for i D 1 to n
0
i 1
X
1 @
x.i /
b.i /
a.i; j /x.j /
a.i; i /
j D1

end

n
X

j Di C1

a.i; j /x.j /A

end

En Matlab:
function [x k]=Gauss_Seidel_1_1(A,b)
% Resolucin por Gauss-Seidel
n=size(A,1); x=zeros(n,1); sm=1; k=0;
while sm>0.001
k=k+1; sm=0;
for i=1:n
j=[1:i-1 i+1:n];
xi=(b(i)-A(i,j)*x(j))/A(i,i);
sm=max(abs(x(i)-xi),sm);
x(i)=xi;
end
sm=sm/max(abs(x));
end
end

function [x k]=Gauss_Seidel_NEW(A,b)
% Resolucin por Gauss-Seidel (compacto)
D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1);
n=size(A,1); x=zeros(n,1); k=0; sm=1;
while sm>0.001
y = (D-L)\(U*x + b);
sm=norm(abs(y-x),inf); k=k+1;
x = y;
end
end

19/103

Ejemplo Resolvamos por Gauss-Seidel el sistema lineal anterior:


10x1
x2 C 2x3
D
x1 C 11x2
x3 C 3x4 D
2x1
x2 C 10x3
x4 D
3x2
x3 C 8x4 D

6
25
11
15:

Aplicando la relacin general de recurrencia de Gauss-Seidel a este caso,


partiendo del punto inicial x .0/ D 0; 0; 0; 0T , se tiene
.1/

x1

.1/

x2

.1/

x3

.1/

x4

D
D
D

1 .0/
x
10 2
1 .1/
x
11 1
1 .1/
x
5 1

1 .1/
x
10 2
3 .1/
x
8 2

C
C

1 .0/
x
5 3
1 .0/
x
11 3

1 .1/
x
8 3

3 .0/
x
11 4
1 .0/
x
10 4

3
5
25
11
11
10
15
8

D
D
D
D

0,6000
2,3273
0,9873
0,8789:

20/103

Las iteraciones que se generan son las de la tabla.


0

x1

.k/

0,0000

0,6000

1,0302

1,0066

1,0009

1,0001

.k/
x2
.k/
x3
.k/
x4

0,0000

2,3273

2,0369

2,0036

2,0003

2,0000

0,0000

-0,9873

-1,0145

-1,0025

-1,0003

-1,0000

0,0000

0,8789

0,9843

0,9984

0,9998

0,9999

Obsrvese que con este mtodo el problema, con el mismo criterio de


convergencia, necesita 5 iteraciones; el de Jacobi lo haca en 9.

21/103

Utilicemos el fichero Gauss_Seidel_1_1.m para resolver el ejemplo.


>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];
>> b=[6;25;-11;15];
>> [x k]=Gauss_Seidel_NEW(A,b)
x =
1.0001
2.0000
-1.0000
1.0000
k =
5

En cinco iteraciones efectivamente converge, con el criterio elegido, con una


milsima de precisin.

Proposicin Si la matriz A es de diagonal estrictamente dominante se cumple que


kG k1  kJ k1 .

Teorema El mtodo de GaussSeidel para resolver Ax D b converge a su solucin si

la matriz de coeficientes es de diagonal estrictamente dominante.

Teorema El esquema iterativo


x .kC1/ D M x .k/ C N b
es convergente si y slo si el radio espectral de M es menor que 1. En ese caso la sucesin
x .k/ converge a la solucin de la ecuacin x D M x C N b.

Teorema El mtodo iterativo de GaussSeidel es convergente para todo sistema de


ecuaciones cuya matriz de coeficientes es simtrica y definida positiva.

Teorema Si A es una matriz simtrica y definida positiva el mtodo iterativo de Jacobi


es convergente si y slo si 2D

A es definida positiva.

22/103

Mtodos de relajacin

23/103

Recordando lo que vimos al principio de este tema, si se trata de resolver


Ax D b, haciendo A D I .I A/ el sistema queda .I .I A// x D b.
Simplificando la notacin, una ley de recurrencia sera x k D .I A/ x k 1 C b.

Si el vector residuos r k 1 D b Ax k 1, x k D x k
recurrente, x k D x 0 C r 0 C r 1 C    C r k 1:

Los mtodos de Jacobi y Gauss-Seidel se pueden generalizar escribiendo sus


.k/
.kC1/
.k/
D xi C ri ; i D 1; : : : ; n:
relaciones de recurrencia de esta forma xi
Vistos as, estos dos procedimientos llegan a la solucin mediante unos pasos,
en cada uno de los cuales se mejora la solucin una cantidad r .k/.


En el mtodo de

En Gauss-Seidel,

C r k 1; de forma

Pn
.k/
bi
.k/
j D1 aij xj
Jacobi, ri D
.
ai i
Pi 1
.kC1/ Pn
.k/
bi
.k/
j Di aij xj
j D1 aij xj
ri D
:
ai i

24/103

Los mtodos de relajacin estacionarios tambin buscan mejorar las


prestaciones de convergencia en cada iteracin potenciando la relacin de
recurrencia mediante un factor !,
.kC1/

xi

.k/

D xi

.k/

C !ri ; i D 1; : : : ; n

de tal forma que se avance un paso ms amplio, ! > 1, o ms corto, ! < 1,


segn convenga al problema que se resuelve.


Al ! se le conoce como parmetro de relajacin.

25/103

Mtodo SOR


Aunque a Jacobi se le puede aplicar esta idea, el ms conocido quizs es el


mtodo SOR, Successive Overrelaxation sobrerrelajacin sucesiva. Resulta de
aplicar la idea indicada al mtodo de Gauss-Seidel.

Su relacin de recurrencia es:


0
! @
.kC1/
xi
D
bi
ai i
C.1

i 1
X

.kC1/

aij xj

j D1

.k/

n
X

j DiC1

!/xi ; i D 1; : : : ; n:

.k/
aij xj A C

Aumentado o disminuyendo el valor de ! se puede mejorar la convergencia.

26/103

Si se descompone una vez ms A D D


mtodo SOR en forma matricial es
x .kC1/ D .D

!L/

..1

U , el esquema iterativo del

!/D C !U / x .k/ C ! .D

La matriz que caracteriza el mtodo es


G .!/ D .D

!L/

..1

!/D C !U /

!L/

b:

El esquema del algoritmo SOR es el que sigue.


while kx .kC1/ x .k/ k1 =kx .kC1/ k1 > T ol do
for i D 1 to n
0
i 1
X
! @
x.i /
b.i /
a.i; j /x.j /
a.i; i /
j D1

end

27/103

n
X

j Di C1

a.i; j /x.j /A C .1

!/x.i /

end

En Matlab:
function [x k]=SOR(A,b,w)
% Resolucin por SOR
n=size(A,1); x=zeros(n,1); sm=1; k=0;
if nargin<3 w=1.25; end
while sm>=0.0001
k=k+1; sm=0;
for i=1:n
j=[1:i-1 i+1:n];
su=b(i)-A(i,j)*x(j);
xi=(1-w)*x(i)+w*su/A(i,i);
sm=max(abs(x(i)-xi),sm);
x(i)=xi;
end
sm=sm/max(abs(x));
end
end

function [x, error, iter] = sor_1(A, b, w, tol)


% Resolucin por SOR (compacto)
if nargin<5, tol=sqrt(eps); end
n=size(A,1); x=zeros(n,1);
r = b - A*x; error = norm(r); iter=0;
if error<tol, return, end
b = w * b;
M = w * tril(A,-1) + diag(diag(A));
N = -w * triu(A,1) + (1.0 - w) * diag(diag(A));
while error>=tol
x_1 = x;
x
= M \ ( N*x + b );
error = norm(x - x_1)/norm(x);
iter = iter+1;
end
end

28/103

Ejemplo Resolvamos por el mtodo SOR el sistema de ecuaciones lineales


4x1 C 3x2
D
3x1 C 4x2
x3 D
x2 C 4x3 D

24
30
24:

Aplicando la relacin general de recurrencia del mtodo, partiendo del punto


inicial x .0/ D 1; 1; 1T , con ! D 1;25, se obtienen los resultados de la
siguiente tabla.
k

.k/
x1
.k/
x2
.k/
x3

1,0000

6,3125

2,6223

3,1333

2,9570

3,0037

2,9963

3,0000

1,0000

3,5195

3,9585

4,0102

4,0074

4,0029

4,0009

4,0002

1,0000

-6,6501

-4,6004

-5,0966

-4,9734

-5,0057

-4,9982

-5,0003

29/103

Juguemos un poco con el parmetro de relajacin.


>> A=[4 3 0;3 4 -1;0 -1 4];
>> b=[24;30;-24];
>> [x error iter]=sor_1(A,b,1)
x =
3.0000
4.0000
-5.0000
error =
9.6306e-09
iter =
36
>> [x error iter]=sor_1(A,b,1.25)
x =
3.0000
4.0000
-5.0000
error =
1.4007e-08
iter =
15

>> [x error iter]=sor_1(A,b,1.5)


x =
3.0000
4.0000
-5.0000
error =
1.0722e-08
iter =
28
>> [x error iter]=sor_1(A,b,2.25)
x =
-Inf
Inf
NaN
error =
NaN
iter =
3165

30/103

Desde el mismo punto de partida con ! D 2,25, los resultados son:


k

x1.k/
x2.k/
x3.k/

1,0000
1,0000
1,0000

10,5625 3,0588
1,3328 -10,8367 12,2136
-1,6367 4,9442 13,4344
8,7895 -7,5608
-15,6706 8,8695 -17,0300 12,7316 -33,6674

10,9919 18,5938
-11,1607 11,9961
22,3064 -34,6352

El proceso diverge.
Teorema Ostrowski-Reich Para un sistema de ecuaciones con matriz simtrica y definida
positiva, el mtodo iterativo de relajacin SOR converge si y slo si el parmetro de relajacin
cumple que 0 < ! < 2.

Mtodo SSOR

31/103

Cuando A es simtrica, el mtodo Symmetric Successive Overrelaxation


sobrerrelajacin sucesiva simtrica combina dos pasos del SOR de tal manera
que la matriz de cada iteracin es similar a una simtrica.

Cada paso est compuesto de uno SOR hacia adelante seguido de otro SOR
hacia atrs.

Si se descompone una vez ms A D D


mtodo SSOR en forma matricial es
x .kC1/ D B 1B 2x .k/ C !.2
donde B 1 D .D

!U /

.!L C .1

!/ .D

U , el esquema iterativo del


!U /

!/D/ y B 2 D .D

D .D

!L/

!L/

.!U C .1

b
!/D/.

La matriz B 2 es la de SOR y B 1 es igual con los papeles de L y U invertidos.

32/103

Una codificacin en Matlab podra se esta:


function [sol, it, res] = SSOR_1(A,b,x0,omega)
% Mtodo estacionario SSOR
n = size(A,1); tol = sqrt(eps); maxit = 1500;
it = 1; flag = 1; tmp = x0; sol = zeros(n,1);
% Matrices necesarias
L = tril(A,-1); D = diag(diag(A));
% Productos matriciales iniciales
DomegaL = D+omega*L; DL = (1-omega)*D-omega*L;
M_inv_b = DomegaL\(D*(DomegaL\b));
M_inv_b = (omega*(2-omega))*M_inv_b;
while it <= maxit && flag == 1
sol = DomegaL\(DL*(DomegaL\(DL*tmp)));
sol = sol+M_inv_b; res = norm(A*sol-b);
fprintf(residuo(%4.0f) = %17.10e \n, it, res);
if res<=tol || norm(sol-tmp)/norm(sol)<=tol
flag = 0;
else
tmp = sol;
it = it + 1;
end
end
end

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


>> b=[24;30;-24];
>> [sol, it, residual] = SSOR_1( A, b, zeros(3,1), 1)
residuo(
1) = 4.0173269739e+00
residuo(
2) = 2.0847794045e+00
residuo( 33) =
residuo( 34) =
sol =
3.0000
4.0000
-5.0000
it =
34
residual =
1.8013e-07

2.9935544173e-07
1.8013146669e-07

Este mtodo, o su matriz de iteracin, se usa principalmente en la actualidad


como precondicionador de otros iterativos.

Mtodos estacionarios para matrices dispersas




Por qu emplear mtodos iterativos, en vez de los directos, si aquellos son


aproximados y pueden requerir muchos pasos?

Existen dos razones primordiales:

33/103

En un paso de los procedimientos iterativos se efectan slo una pequea


fraccin de las operaciones
que hacen los directos. La factorizacin LU

necesita O n3=3 operaciones mientras que el mtodo de Jacobi, por
iteracin, slo n. Si se parte de un punto prximo a la solucin se puede
llegar a sta en un tiempo corto.

Si la matriz de coeficientes del problema tiene muy pocos coeficientes


distintos de cero, la factorizacin LU puede causar que muchos se hagan
distintos de cero en los factores. El mtodo de Jacobi, por el contrario, si es
adecuado aplicarlo, puede sacar mucha ventaja de esa estructura de
dispersidad en problemas de gran tamao, pues no factoriza la matriz.

34/103

Ejemplo Vamos a resolver un sistema lineal de hasta 1:000:000 de ecuaciones


en el que la matriz tiene esta estructura:
2

6
6
6
6
6
6
6
AD6
6
6
6
6
6
6
4

3
1
0
0
0
0
0
0
0

1
3
1
0
0
0
0
0

0
1
3
1
0
0
0

0
0
1
3
1
0

1
2

1
2

1
2

0
0

0
0
0

1
2

0
0
0
1
3
1
0
0
0
0

0
0
0
0
1
3
1
0
0
0

0
0
0

0
0

1
2

1
2

0
0
0
1
3
1
0

0
0
0
0
0
1
3
1

0
1
3
1
0
0

1
2

1
2

07
7
07
7
07
7
07
7
07
7
07
7
07
7
15
3

El vector b D 2;5; 1;5 : : : 1;5; 1;0; 1;0; 1;5 : : : 1;5; 2;5. Hay n
repeticiones de 1;5 y 2 repeticiones de 1;0.

Utilizaremos Jacobi.

Utilizaremos los siguientes cdigos:


function [a,b] = sparsesetup_J(n)
% Sparse matrix setup
% Input: n = tamao de la matriz
% Output: sparse matrix a, r.h.s. b e = ones(n,1); n2 = n/2;
a = spdiags([-e 3*e -e],-1:1,n,n);
% Coeficientes de A en diagonales
c = spdiags([e/2],0,n,n); c=fliplr(c);
% Coeficientes en contradiagonal
a = a+c;
a(n2+1,n2)=-1; a(n2,n2+1)=-1;
% Centro de contradiagonal
b = zeros(n,1);
% Vector b
b(1)=2.5; b(n)=2.5; b(2:n-1)=1.5; b(n2:n2+1)=1;
end

function x = jacobi_S_1(a,b)
% Jacobi para matriz dispersa
% Inputs: Matriz A y vector b
% Output: solucin x n=length(b);
d=diag(a);
% diagonal de A
r=a-diag(d);
% A sin diagonal principal
x=zeros(n,1); k=0; sm=1; % Vector x de partida
while sm>0.00001
% iteraciones de Jacobi
y=(b-r*x)./d;
sm=max(abs(x-y))/max(abs(y)); k=k+1;
x = y;
end
end

35/103

36/103

Si los probamos:
>> n=100000;
>> [a,b]=sparsesetup_J(n);
>> tic; [a,b]=sparsesetup_J(n); toc
Elapsed time is 0.053800 seconds.
>> tic; x=jacobi_S_1(a,b); toc
Elapsed time is 0.056983 seconds.
>> n=1000000;
% Un milln
>> [a,b]=sparsesetup_J(n);
>> tic; x=jacobi_S_1(a,b); toc
Elapsed time is 0.786218 seconds.
>> norm(abs(x-ones(n,1)))
ans =
1.4450e-05
>> n=10000000;
% Diez millones
>> [a,b]=sparsesetup_J(n);
>> tic; x=jacobi_S_1(a,b); toc
Elapsed time is 8.002969 seconds.
>> norm(abs(x-ones(n,1)))
ans =
1.4450e-05
>> n=40000000;
% Cuarenta millones
>> tic; [a,b]=sparsesetup_J(n); toc
Elapsed time is 25.589597 seconds.
>> tic; x=jacobi_S_1(a,b); toc
Elapsed time is 32.461714 seconds.
>> norm(abs(x-ones(n,1)))
ans =
1.4450e-05

37/103

ndice


Introduccin

Mtodo de Jacobi

Mtodo de Gauss-Seidel

Mtodos de relajacin

Mtodos de direccin de descenso




Obtencin de direcciones de descenso

Mtodo de los gradientes conjugados

Mtodos de proyeccin en subespacios de Krylov

Comparacin numrica de los mtodos

38/103

Mtodos no estacionarios. De direccin


de descenso
Teorema Sea A una matriz simtrica definida positiva. La solucin de la ecuacin
Ax D b es el vector para el cual la forma cuadrtica
1
Q.x/ D x T Ax
2

bT x

alcanza su mnimo.

En consonancia, se puede resolver Ax D b mediante cualquier mtodo que


obtenga el mnimo3 de funciones como Q.x/.

El valor de la funcin cuadrtica en ese mnimo, solucin de Ax D b, es Q.x  / D

1 T
b A 1 b.
2

39/103

La condicin necesaria de alcanzar un mnimo


2
@f .x/
6 @x
6
1
6
6 @f .x/
6
rf .x/ D 6 @x
6 :2
6 ::
6
4 @f .x/
@xn

en x es
3
7
7
7
7
7
7 D 0:
7
7
7
5

En nuestro problema, dado que A es simtrica,


1
1
Q0.x/ D A T x C Ax
2
2

bD

que es lo que queremos encontrar.





1 T
A CA x
2

Como A es definida positiva ese mnimo es nico.

b D Ax

b D 0;

40/103

El por qu de la unicidad. Como A es simtrica, consideremos un punto x que


satisfaga Ax D b, y que por lo tanto minimice la funcin Q.x/, y un pequeo
desplazamiento, d , desde ese punto en cualquier direccin. Se tiene que
Q.x C d/ D

1
2

.x C d/T A .x C d/

1 T
x Ax
2

1 T
x Ax
2

bT .x C d/

C d T Ax C 21 d T Ad

bT x

bT x C d T b C 12 d T Ad

bT d
bT d

D Q.x/ C 12 d T Ad:

Como A es definida positiva, 12 d T Ad es positivo para todo d 0 y por


consiguiente cualquier punto mnimamente alejado del mnimo dar un valor de
la funcin superior: el punto x es el nico mnimo.

41/103

Consideremos la forma cuadrtica


 
1
3
2
x1
Q.x/ D x1 x2T
2 6 x2
2

 
x
8T 1
x2

42/103

Las lneas, curvas o contornos de nivel de la funcin, en torno a su mnimo,


2
2T , son los de la figura.
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-4

-3

-2

-1

El vector gradiente, rQ.x/, de la funcin en diversos puntos en torno al


mnimo se ve as.

43/103

4
3
2
1
0
-1
-2
-3
-4
-5
-6
-4

-3

-2

-1

El gradiente siempre apunta en la direccin de mxima pendiente, hacia arriba,


y es ortogonal a las lneas de nivel.

Como la matriz de esta funcin cuadrtica es definida positiva, tiene un mnimo


nico.

e pueden dar otros casos:




Se pueden dar otros casos:

The Quadratic Form

(a)

544/103
(b)

; <1

; <1

Q.x/
.

x

x22

Q.x/
.

x22

x1

11

(c)

(d)

; <1

x22

; <1

Q.x/
.

x

11

x22

Q.x/
.

x1

Figure 5: (a) Quadratic form for a positive-definite matrix. (b) For a negative-definite matrix. (c) For a
En (a)
la matriz A es definida positiva, en (b) definida negativa, en (c)
singular (and positive-indefinite) matrix. A line that runs through the bottom of the valley is the set of
 En (a) la matriz A es definida positiva, en (b) definida negativa, en (c)
solutions. (d)positiva
For an indefinite
matrix. Because
the solution
is a saddle point, Steepest Descent and CG
emidefinida
(singular)
y en (d)
indefinida.

semidefinida
positiva
(singular)
(d) matrix
indefinida.
will
not work. In three
dimensions
or higher,yaen
singular
can also have a saddle.

45/103

Algoritmo general de direccin de descenso paraMtodos


minimizar
f W Rn !deR:descenso
de direccin
4 Siguen

un procedimiento iterativo que hace descender la funcin

; ense
sucesivos puntos k del proceso mediant
f .xf
Dados Un x WD x .0/ y una t ol . Hacer ff.x
ound
k / al
kC1 / < WD

el clculo de una direccin de descenso en la que moverse con es

while (not f ound ) and (k < kmax )objetivo.


Calcular direccin de descenso p .k/ xk
if (p no existe) or (t ol )

pk
pk

f ound WD true
else

xkx+1
4 Se

diferencian unos
 de otros en la forma de calcular p.

WD amplitud del paso a dar x .k/ ; p.k/


x .kC1/ WD x .k/ C p .k/

end

10

end

Los mtodos de descenso se diferencian unos de otros en la forma de


calcular la direccin p.k/.

46/103

La amplitud de paso ptima en cada punto se determina minimizando Q.x/


a lo largo de la direccin p.k/:

.k/
.k/
mKn Q x C p
:

q()

Q(x (k ) )

x (k )

x (k ) + k p (k )

47/103

Este problema de optimizacin en una nica variable, , puede resolverse


explcitamente para funciones cuadrticas: Suprimiendo superndices, se tiene
que
q./ D Q.x C p/ D
D
D

1
.x C p/T A.x C p/ bT .x C p/
2
1 T
x Ax C p T Ax C 12 2 p T Ap p T b
2
1 T
p Ap 2 C p T .Ax b/ C 21 x T .Ax
2

bT x
2b/:

La forma q./ se minimiza cuando q 0./ D 0. Como la matriz A es definida


positiva, p T Ap > 0, el que q 0./ D 0 se da cuando
D

p .k/

T

b

.k/ T

Ax .k/
Ap .k/

Obtencin de direcciones de descenso

48/103

Relajacin de una variable




Se usan como direcciones de descenso los vectores unitarios e 1; : : : ; e n; e 1; : : :


Es decir,
p.0/ D e 1;

p.1/ D e 2;

:::

p.n

1/

D e n;

p.n/ D e 1; : : :

En la expresin anterior de con estas direcciones e Ti Ae i D ai i y


P
e Ti .Ax b/ D jnD1 aij xj bi . En una iteracin k, el siguiente punto x .kC1/
estar dado por
0
1
n
1 @X
.k/
.kC1/
.k/
.k/
x
D x C k e i D x
aij xj
bi A e i ;
ai i j D1
expresin idntica a la de mtodo de Gauss-Seidel.

Relajacin SOR


49/103

La convergencia de un mtodo de descenso x .kC1/ D x .k/Ck p.k/ con la


direccin y paso de Gauss-Seidel puede mejorarse si se le aade un parmetro de
relajacin !. La amplitud de paso ser
k D ! O k ;
donde O k es el que hace mnimo Q.x/ D 12 x T Ax

bT x a lo largo de p .k/.


El valor de la funcin cuadrtica (simtrica) Q x .k/ C ! O k p.k/ es menor que
Q x .k/ , siempre y cuando 0 < ! < 2, como vimos, y ahora visualizamos.
Q(x (k ) )

x (k )

Q(x (k ) + 2
p (k ) )

x (k) +
(k ) p (k )

x (k ) + 2
(k ) p (k )

50/103

Mxima pendiente


Sea la funcin f W Rn ! R continua y derivable en algn conjunto abierto de


Rn. Su aproximacin en x por desarrollo en serie de Taylor es

f .x C p/ D f .x/ C rf .x/T p C O kpk2 :
donde rf .x/ D g es el gradiente de la funcin en x.

Si de lo que se trata, alrededor de x, es determinar una direccin p a lo largo


de la cual la funcin decrece, se deber cumplir que
rf .x/T p < 0
Esto es as cuando el gradiente y la direccin forman un ngulo  tal que

<   .
2

f .x / f .x Cp /
rf .x /T p
El descenso relativo de la funcin en p es
D
D
kp k
kp k
krf .x/k cos  , donde  es el ngulo que forman p y rf .x/.
Ser mximo cuando  D .

La direccin de mximo descenso ser entonces la opuesta del gradiente,


pD

La que se denomina direccin de mxima pendiente.




El mtodo de la mxima pendiente lo introdujo el ingeniero y matemtico


francs A.L.Cauchy en 1847.

Augustin Louis Cauchy, Francia 1789-1857.

51/103

En la funcin cuadrtica de referencia Q x , la direccin de mxima


pendiente en x .k/ es


p.k/ D rQ x .k/ D
Ax .k/ b D r .k/:
.k/

52/103

donde r .k/ es el vector de residuos.

La frmula de recurrencia que se obtiene4 es entonces


x .kC1/ D x .k/ C k r .k/

El valor de k que minimiza Q.x/ a lo largo de la mxima pendiente es


(sustituyendo en la frmula general que vimos la direccin por r .k/)
T
.r .k// r .k/
k D .k/ T
.r / Ar .k/

Si A es diagonal, sus coeficientes iguales a uno y k D 1, la frmula de recurrencia define una iteracin del
mtodo de Jacobi.
4

53/103

La convergencia del mtodo de la mxima pendiente para minimizar una funcin


x .kC1/ x 
A / 1 < 1.
cuadrtica es al menos lineal y se cumple que kkx .k/ x kk  2..A
/C1
2

Cuanto ms grande sea 2.A/ ms lenta5 la convergencia.

Convergencia lenta en funciones con un perfil dado es esto. El ir dando bandazos


en el valle hacia la solucin, en una funcin relativamente mal condicionada.

x(0)

Recurdese que si A es simtrica y definida positiva 2 .A/ D


propio dominante) y n el menor.
5

1
,
n

donde 1 es el valor propio mayor (valor

El algoritmo y un script de Matlab son los que siguen.


x .0/

0I r .0/
bI k D 1




while r .k/ > "kbk2 do
2

T
k
r .k 1/ r .k
x .k/

end

x .k

1/

r .k/
r .k
k
kC1

1/

1/

C k r .k

k Ar .k

r .k

1/

1/

T

Ar .k

1/

1/

function [x,j]=Steep(A,b,x0)
% Mxima pendiente para resolver Ax=b
if nargin<3, x0=zeros(length(b),1); end
j=0; x=x0; r=b-A*x; d=r*r; tol=sqrt(eps)*norm(b);
while sqrt(d)>tol
j=j+1;
v=A*r;
alpha=d/(r*v);
x=x+alpha*r;
r=r-alpha*v;
d=r*r;
end
end

54/103

55/103

Resolvamos uno de los ejemplos anteriores:


>> A=[10 -1 2 0;
-1 11 -1 3;
2 -1 10 -1;
0 3 -1 8];
>> b=[6;25;-11;15];
>> [x k]=Steep(A,b)
x =
1.0000
2.0000
-1.0000
1.0000
k =
19

Hace ms iteraciones pero la precisin es ms elevada: 

.

56/103

Retomemos la forma cuadrtica


 
1
3
2
x1
Q.x/ D x1 x2T
2 6 x2
2
>> A=[3 2;2 6];
>> b=[2;-8];
>> [x k]=Steep(A,b)
x =
2.0000
-2.0000
k =
31

Muchas iteraciones desde 0 0T .

 
x
8T 1
x2

57/103

Calculemos los valores y vectores propios de A:

>> [v lambda]=eig(A)
v =
-0.8944
0.4472
0.4472
0.8944
lambda =
2.0000
0
0
7.0000

es decir, los vectores propios son 2 1T y 1 2T .

58/103

Los vectores propios de A estn orientados como los ejes del paraboloide que
conforma la funcin cuadrtica. Cada valor propio es proporcional a la
inclinacinde
pendiente
deA laestn
funcin
encomo
la direccin
de su correspondiente
Losla
vectores
propios de
orientados
los ejes del paraboloide
que
conforma la funcin cuadrtica. Cada valor propio es proporcional a la
vector propio.
inclinacin de la pendiente de la funcin en la direccin de su correspondiente
2
vector propio.
4

x2

-4

-2

x11

7
-2

-4

-6

66/110

The eigenvectors of are directed along the axes of the


paraboloid
defined
by the quadratic form
. Each eigen1
2
3






59/103

Para obtener el mnimo de Q.x/ partamos ahora de sendos puntos ms alejados


del ptimo en las direcciones de los vectores propios: concretamente de
2 0T y 6 6T .
>> [x k]=Steep(A,b,[-2;0])
x =
2
-2
k =
1

>> [x k]=Steep(A,b,[6;6])
x =
2
-2
k =
1

El procedimiento converge en una sola iteracin.


Si todos los valores propios fuesen iguales el procedimiento convergera en una
iteracin.


Se puede ensayar con otros puntos ms o menos alejados en esas direcciones y


el resultado ser el mismo.

Partamos ahora del punto 2


2T . Ocurre lo que parcialmente se ve en la
figura.
Partamos ahora del punto 2
2T . Ocurre lo que parcialmente se ve en la
x2
(a)
figura.
(b)

60/103

2
-2

-4


"

x .0/0

-2

*


"

x

0
x2 -2.5
-5

-6
.k/

!#"

Q x

C k r

140
120
100
80
60
40
20



2.5

-4



150
100 Q.x/
50
0

x1

.k/

%$&'#"(

x2

(c)

x11

(d)

4
2
-4

-2

)

-2

0.2 0.4 0.6

-2.5

2.5



"

.1/
1

x
6 11

-4
-6
66/102

61/103

El camino hacia el ptimo es el que indica la figura.

El camino hacia el ptimo es el que indica la figura.

61/97

x2

-4

-2

)

"

0
x .0/

-2

x

-4

-6

The method of Steepest Descent.


a

x1

62/103

Mtodo de los gradientes conjugados


Definicin Dos vectores p y q que cumplen
p T Aq D 0
son ortogonales con respecto al producto interior de A, hxjAyi D x T Ay, definido por la
matriz A, dicindose de ellos que son conjugados respecto a A, A conjugados e incluso A
ortogonales.

Proposicin Sea A una matriz simtrica definida positiva. Si p.0/, p.1/; : : : ; p.k/ son
vectores A conjugados, son linealmente independientes.

Si A D I, la conjugacin es equivalente a la ortogonalidad tradicional.

63/103

Teorema De las Direcciones Conjugadas Si A 2 Rnn es una matriz simtrica definida


positiva y p.0/ , p .1/ ; : : : ; p .n 1/ son A conjugados, para todo x .0/ 2 Rn , la sucesin de
vectores que define la expresin
x .kC1/ D x .k/ C k p .k/ ;
donde
k D

T
Ax .k/ p .k/
;
T
p .k/ Ap .k/

converge a la solucin exacta de Ax D b en no ms de n iteraciones.

Es decir, tericamente, los mtodos basados en el clculo de direcciones


conjugadas son mtodos directos aunque se usen como iterativos.

pkT A(xk x0 )  0,

and therefore
Si en la funcin cuadrtica
que estudiamos ahora,

64/103

pkT A(x x0 )  pkT A(x xk )  pkT (b Axk )  pkT rk .

1

Q.x/ D x T Ax bT x
2 of the properties of conjugate directions. If the matrix
There is a simple interpretation

By comparing this relation with (5.7) and (5.8), we nd that k  k , giving the result.

A in (5.2) is diagonal, the contours of the function () are ellipses whose axes are aligned
with the coordinate directions, as illustrated in Figure 5.1. We can nd the minimizer of this
function by performing one-dimensional minimizations along the coordinate directions

A es diagonal, los contornos de la funcin son elipses cuyos ejes estn alineados
con los ejes coordenados.
e2

x*

x0

x1
e1

Figure 5.1 Successive minimizations along the coordinate directions nd the


minimizer of a quadratic with a diagonal Hessian in n iterations.

El mnimo de la funcin se puede encontrar sin ms que minimizar primero a lo


largo de e 1 y luego de e 2.

65/103

Cmo obtener direcciones conjugadas




Lo mejor: los vectores propios de A. Su clculo es muy costoso.

Lo ms eficaz, mediante el mtodo de los gradientes conjugados, propuesto en


1952 por M.R. Hestenes y E. Stiefel, Suiza, 1909-1978.

M.R. Hestenes, Estados Unidos, 1906-1991 y E. Stiefel,


Suiza, 1909-1978.

En l se generan una sucesin de direcciones A conjugadas que sean prximas a


la de mxima6 pendiente.
6

El negativo del gradiente:

gD

.Ax

b/ D b

Ax D r, vector de residuos.

66/103

Se empieza con la de mxima pendiente, p.0/ D r .0/. Las siguientes, p .k/, sern
las que resulten de una combinacin de r .k/ y la direccin previa, p.k 1/, es
decir
p .k/ D r .k/ C k p.k 1/;
de tal forma que p.k/ y p.k

1/

sean A conjugadas: p.k/ Ap.k

Trabajando un poco en esa condicin, se cumple que


k D

p .k


1/ T

Ar .k/

p .k


1/ T

Ap .k

1/

1/

D 0.

67/103

El despliegue iterativo tiene esta forma.


Escoger un x .0/ . Hacer p .0/ D r .0/ D b

Ax .0/

for k D 0, 1, : : :
T

T
k D r .k/ p .k/ p .k/ Ap.k/
x .kC1/ D x .k/ C k p .k/

r .kC1/ D r .k/ C k Ap .k/


T

T
k D
p .k/ Ar .kC1/ p .k/ Ap .k/

end

p .kC1/ D r .kC1/ C k p .k/

El primer paso es el de la mxima pendiente.

El procedimiento slo requiere productos de matrices por vectores y de vectores


entre s.

Teorema

Sea A una matriz n  n simtrica definida positiva y xO la solucin de la ecuacin Ax D b.


Los vectores p generados por el algoritmo de los gradientes conjugados son A conjugados, es decir,
T
p .k/ Ap .j / D 0;
0  j < k;
k D 1; : : : ; n 1,
.k/
.k/
O De esta manera, x .m/ D xO para algn m  n. Adems los
siendo p 0 a menos que sea x D x.
T
vectores residuo r .j / D b Ax .j / satisfacen r .k/ r .j / D 0; 0  j < k; k D 1; : : : ; n 1; es decir, son
ortogonales.
.k/

Teorema

Sean p .0/ , p .1/ ; : : : ; p .n 1/ los vectores de direccin que genera el


dientes conjugados y r .0/ , r .1/ ; : : : ; r .n 1/ los vectores residuo. Se cumple que
Ap .i / 2 p .0/ p .1/ : : : p .iC1/
i D 0; : : : ; n
 ;
.i /
.0/ .1/
.i /
r
2
p
p
:
:
:
p
;
i D 0; : : : ; n
 .0/ .1/

 .0/

i .0/
.i /
.0/
p p ::: p
D p Ap : : : A p 
D r .0/ Ar .0/ : : : A i r .0/ ;
i D 0; : : : ; n
.0/
Es decir, generan el subespacio de Krylov Ki C1 .A; p /.

algoritmo de los gra2I


1I
1:

Teorema Si A tiene slo m valores propios distintos el mtodo de los gradientes conjugados converge
en un mximo de m iteraciones.
Teorema

El punto obtenido en la iteracin k del mtodo de los gradientes conjugados cumple que


x



x

donde kxkA D x Ax y 2 D

1
n


x .k/
A


x .k/

p


2 1 k


x .0/
 2 p
x
A
2 C 1
p
k

2 1
p


 2 2 p
x .0/ ;
x
2
2 C 1

es el nmero de condicin 2 de A.

68/103

Los dos primeros resultados son fundamentales para entender geomtricamente


el mtodo de los gradientes conjugados.

Los vectores p y residuo r de cada iteracin no son ortogonales entre si. Los
residuos de una iteracin son siempre ortogonales a los residuos y a los vectores
p de las previas. Los p son A ortogonales. Al comienzo el vector p coincide
con el vector de residuos. En tres dimensiones:

69/103

Los vectores p y de residuos r forman bases ortogonales en los sucesivos


subespacios de Krylov que se generan en el proceso iterativo.

70/103

Ejemplo Se trata de resolver Ax D b, donde




 
2 0
4
AD
y bD
:
0 3
1

71/103

La lneas de nivel del paraboloide elptico f .x1; x2/ D z y el ptimo se ven as.
4

-1

-2

-3

-4
-2

-1

72/103

La mecnica del proceder de los gradientes conjugados para este ejemplo es sta:
1. Desde el punto x .0/ D 1 se determina la curva de nivel de la funcin
1 .0/T
x
Ax .0/ bT x .0/
2 2
 2
.0/
.0/
.0/
3
D x1
C 2 x2
4x1

f .x .0// D

La constante ser

.0/

x2 D cte:

2;5.

2. Se traza la tangente en x .0/ a esta elipse y su normal en este punto p.0/:


 
1
p .0/ D
:
1
Lo que es lo mismo, la primera direccin es la de mxima pendiente:
b Ax D 2; 2T .

73/103

-1

-2

-3

-4
-2

-1

3. Se calcula el 1 ptimo: el punto medio, x .1/, del segmento de recta que va


desde x .0/ hasta el punto donde p .0/ corta a esa elipse: x .1/ D 1;8 0;2T .
4

-1

-2

-3

-4
-2

-1

4. Desde x .1/ se determina la nueva elipse:


 2 3  2
.1/
.1/
.1/
x2
f .x / D x1
C
2

74/103

.1/

4x1

.1/

x2 D

4;1:

5. En x .1/ se calcula la direccin p.1/ que es A conjugada con respecto a p .0/.


Esta direccin pasar por el centro de la nueva elipse uniendo el punto x .1/
con el diametralmente opuesto por el que se podra trazar una tangente a
esta elipse que fuese paralela a p .0/.
La nueva direccin es
 
3
p .1/ D
:
2
4

-1

-2

-3

-4
-2

-1

6. Comprobar que p


.1/ T

Ap.0/ D 0

2
3; 2
0

es inmediato:
 
0
1
D 0:
3
1

75/103

Tambin, de la frmula de recurrencia:


 
 
0;42 C 0;42
k
0;4
2
.1/
.1/
.0/
:
D
p D r C p D
C
y
0;4
2
k 1
22 C 22
 
  
  
0;4
2
0;48
3
De aqu que p.1/ D
C 0;04
D

.
0;4
2
0;32
2
4

-1

-2

-3

-4
-2

-1

7. Se determina el punto medio, x .2/, de ese dimetro. La solucin del


problema es este nuevo punto:


2
x .2/ D
:
1=3
x2

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


. ...... ..
......
.. ....
.
.
.
.....
...
....
(0) . ..
x ...
....
...
...
.
.
..
...
..
...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...
...
p(0)
... x(2) .....
...
..
.
.
...
.
...
..... p(1) .......
.
.
.
(1) ...............
.
...
x
.
..
...
.
1
2
3
.
.
....
...
.....
.
....
.....
.....
....
.
.
.
.
.
...... ...
... ..... ...... ...... ...... .....

x1

76/103

Implementacin prctica de los gradientes conjugados




77/103

Los errores inherentes a la implementacin en ordenador del mtodo hacen que


se pierda la ortogonalidad de los vectores residuo:
La propiedad de que el mtodo converge en un nmero fijo de pasos no se
cumple por ello en la prctica estrictamente, por lo que el mtodo de los
gradientes conjugados se considera un mtodo iterativo.

La implementacin ms habitual para ahorrar operaciones es esta.


x .0/
0I r .0/
b Ax .0/ I 0
p
while k >   0 do
k
kC1
w
Ap.k 1/
T

k 1 p.k 1/ w
x .k/
r .k/

x .k
r .k

1/

1/

C p.k
w

end

.k/
k
r .k/
r

k k 1
p.k/
r .k/ C p.k

1/

1/

r .0/ r .0/ I k D 0I p.0/

r .0/

function [x k]=CGr(A,b,x0)
% Gradientes Conjugados
if nargin<3, x0=zeros(length(b),1); end
k=0; x=x0; r=b-A*x; d=r*r; p=r; tol=sqrt(eps)*d;
while d>tol
k=k+1;
v=A*p;
alpha=d/(p*v);
x=x+alpha*p;
r=r-alpha*v;
beta=d; d=r*r;
beta=d/beta;
p=r+beta*p;
end
end

78/103

Para resolver uno de los ejemplos una vez ms:


>> A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8];
>> b=[6;25;-11;15];
>> [x k]=CGr(A,b,zeros(4,1))
x =
1.0000
2.0000
-1.0000
1.0000
k =
4

El nmero de iteraciones respecto al mtodo de la mxima pendiente es de 4


frente a las 19 de aqul.

79/103

Los puntos del proceso iterativo que se obtienen para resolver


4x1
x2
x4
x1 C 4x2
x3
x5
x2 C 4x3
x6
x1
C 4x4
x5
x2
x4 C 4x5
x6
x3
x5 C 4x6

son estos

D
D
D
D
D
D

x1.k/
x2.k/
x3.k/
x4.k/
x5.k/
x6.k/

0,000000
0,000000
0,000000
0,000000
0,000000
0,000000

0,000000
1,069915
0,000000
1,283898
-0,427966
1,283898

1,022376
1,686452
1,022376
2,060920
0,831099
2,060920

0,990783
1,991635
0,990783
2,005324
1,011825
2,005324

1,000000
2,000000
1,000000
2,000000
1,000000
2,000000

0
5
0
6
2
6

80/103

Si tambin se resuelve con ese cdigo el problema que ha permitido ilustrar


geomtricamente el mtodo, el resultado que se obtiene es el que sigue.

1
2

1.800000
2.000000

2.000000e-01
3.333333e-01

2.000000
4.800000e-01

-2.000000
3.200000e-01

Las dos ltimas columnas indican los coeficientes 1 y 2 del vector p.k/.
Coinciden en direccin (y en magnitud) con las que se obtuvieron a mano:
   
  

1
2
3
0;48
p.0/ D

p.1/ D

:
1
2
2
0;32

Mtodo de los gradientes conjugados con precondicionado




Q con mejor nmero de condicin.


El precondicionado sustituye A por otra A
Para ello se introduce un cambio de variable xQ D C x, donde C es regular y
fcil de invertir.
La forma cuadrtica Q.x/ quedara
1
Q D xQ T C
Q.x/
2

AC

xQ

T
Q
b x:

Si se resuelve mediante gradientes conjugados el correspondiente sistema,



C T AC 1 xQ D C T b;

la solucin original se obtendra sin ms que hacer x D C




Q
x.

Si A es simtrica, la mejor C posible es A 1=2, pues en ese caso



Q D A 1=2 T AA 1=2 D A 1=2A 1=2A 1=2A 1=2 D I  I D I:
A

81/103

82/103

En la implementacin prctica, la diferencia con y sin precondicionado es la


resolucin en cada iteracin el sistema M z D r, donde M D C T C .
x .0/

0I r .0/

Ax .0/ I 0
T

Resolver M d D r .0/ ; n
r .0/ d
p
while k >   0 do
w
Ad
k
n =d T w
x .kC1/
x .k/ C k d
.kC1/
r
r .k/ k w
Resolver M s D r .kC1/

r .0/ r .0/ I k D 0

end

o
n ; n
r .kC1/ s
kC1
n =o
d
s C kC1 d
kC1
n
k
kC1

Curiosidad: NVIDIA developer zone

function [k tol x]=PCGr(A,b,x0,M)


% Gradientes Conjugados con precondicionado M
k=0; x=x0; r=b-A*x; tol=eps*norm(b)
d=M\r; dn=r*d;
while dn>tol
w=A*d;
alpha=dn/(d*w);
x=x+alpha*d;
r=r-alpha*w;
if mod(k,50)==0, r=b-A*x; end
s=M\r;
do=dn; dn=r*s;
beta=dn/do;
d=s+beta*d;
k=k+1;
end
end

83/103

Hagamos unas pequeas comprobaciones.


>> A=rand(400);
>> A=A+A;
>> B=A*A;
>> b=B*ones(400,1);
>> [k tol]=PCGr(B,b,zeros(400,1),eye(400))
k =
740
tol =
7.1453e-010
>> [k tol]=PCGr(B,b,zeros(400,1),A)
k =
1
tol =
7.1453e-010

% Matriz simtrica
% Vector solucin de unos
% Se resuelve sin precondicionado

% Con precondicionado perfecto

84/103

Mtodos de subespacios de Krylov

Alekxey Krylov,
Rusia 1863-1945.

Si para resolver Ax D b, se hace A D I .I A/ el sistema queda


.I .I A// x D b. Una ley de recurrencia sera x k D .I A/ x k 1 C b.

Segn ella si el vector residuos es r k 1 D b Ax k 1, x k D x k


De forma recurrente x k D x 0 C r 0 C r 1 C    C r k 1:

De b Ax k D b Ax k 1 Ar k 1 te obtiene que r k D .I A/r k 1 y as


x k D x 0 C r 0 C .I A/r 0 C    C .I A/k 1r 0 D x0 C pk 1.A/ r0


k 1
D x 0 C r 0 Ar 0 : : : A r 0 c D x 0 C x ad :

C r k 1.

p olin

. en
A

En resumen, todo punto del proceso iterativo x k se puede expresar como la


solucin de partida x 0 ms una combinacin lineal de los vectores columna que


definen el subespacio de Krylov Kk .A; r 0/ D Gen r 0; Ar 0; A 2r 0; : : : ; A k 1r 0 .

Los mtodos de proyeccin en subespacios de Krylov (no estacionarios) mejoran


una estimacin inicial de la solucin proyectndola, en cada iteracin k, en el
subespacio de Krylov generado por el vector residual inicial y sus k 1
sucesivos productos por la matriz A.

En ese Kk .A; r 0/, segn el enfoque, calculan una mejor, x k , que cumpla:

85/103

1. El valor x k 2 x 0 C Kk .A; r 0/ tal que r k D b Ax k satisfaga r k ?AKk .


Se consigue haciendo mKn kAx k bk2 en Kk .A; r 0/.
Si A es simtrica los algoritmos se denominan MINRES y SYMMLQ; si
no GMRES.
2. El valor x k 2 x 0 C Kk .A; r 0/ tal que r k D b Ax k satisfaga7 r k ?Kk .
Como r k D b Ax k D A .x k x/ D Ae k , eso equivale a Ae k ?Kk .
Si A es simtrica los algoritmos se denominan FOM; si es SDP CG.
3. Otros: Biortogonalizacin, Gradiente Biconjugado, : : : con subespacio de
proyeccin Kk .A T ; r 0/, etc.
7

Condicin de Galerkin.

Como al multiplicar una matriz por un vector ste tiende a orientarse en la


direccin del vector propio dominante de esa matriz, en un subespacio de Krylov
los vectores de base tienden a una direccin comn cuando k es grande.

Obtener una buena base de ese subespacio necesitar del mejor mtodo para
ortogonalizar los vectores correspondientes.

86/103

Mtodos GMRES para matrices no simtricas


 Algoritmo del residuo mnimo generalizado GMRES 

Escoger un x 0 cualquiera; r 0 D b Ax 0
q 1 D r 0 = kr 0 k2
for k D 1; 2; : : :
 Algoritmo de Arnoldi 
y D Aq k
for j D 1 to k
hj k D qjH y
y D y hj k qj
end
hkC1;k D kyk2
if hkC1;k D 0, stop, end
q kC1 D y= hkC1;k


Resolver minimizarc k 2Rk H c k kr 0 k2 0 0 : : : 0T 2
x k D Qk c k C x 0
end

Su esquema general8 es:

Se basa en obtener en cada iteracin una base ortonormalizada de Gen fr 0;


Ar 0; A 2r 0; : : : ; A k r 0 mediante una especializacin de Gram-Schmidt: el
algoritmo de Arnoldi por Walter Edwin Arnoldi, EE.UU., 1917-1995.
8

De Generalized Minimal Residual Method.

87/103

Comienza con q 1 D r 0=kr 0k2 como base de K1.A; r 0/. La base se conforma
en el ciclo interior del algoritmo: en9 la iteracin k se obtendra AQk D QkC1H k ,
es decir,

88/103

6
7 6
6
7 6
7 6
q



q
A6
k 7 D 6 q 1    q k q kC1
6 1
4
5 4

32
h11 h12
6
7 6 h21 h22
76
76
h32
76
54




:::

h1k
h2k
h3k
::
:
hkC1;k

3
7
7
7
7
7
5

donde Qk abarca el subespacio de Krylov k-dimensional. El nuevo vector que se


introduce en la base en esa iteracin sera
q kC1 D Aq k .h1k q 1 C    C hkk / =kq kC1k:


El vector x k D x 0 C x ad , que minimice kAx k bk2 en Kk .A; r 0/, con


x ad D Qk c, saldr de resolver el problema de mnimos cuadrados
mKn kAx k

bk2 D mKn kA.x 0 C x ad /


D mKn kH k c

bk2 D mKn kAQk c

QTkC1 r 0 k2 :

A es n  n, Qk n  k, QkC1 n  .k C 1/ y H k .k C 1/  k.

r 0 k2 D mKn kQkC1 H k c

r 0 k2

89/103

Como q 1 D r 0= kr 0k2 y todas las columnas de QkC1 son ortogonales respecto


a r 0, QTkC1r 0 D kr 0k2 0 0    0T . El problema de mnimos cuadrados es
2
3
3
2 3 2
h11 h12    h1k
kr 0 k2
c1
6 h21 h22    h2k 7
6
76 c 7 6 0 7
h32    h3k 7 4 :2 5 D 4 : 5
6
::
::
:: 5
:::
4
:
hkC1;k

ck

que habr que resolver con los algoritmos conocidos.

Este es un cdigo sencillo que lo implementa.


function [x,normrn] = gmres_1(A,b,maxiter)
% solves Ax = b using gmres
% input: A - m by m matrix
%
b - m by 1 vector
% output: x - approximate solution
%
normrn - norm(b-A*x) at each step of algorithm
%
Plot also normrn/ norm(b) versus n (step number)
Q = []; H = 0;
normb = norm(b); normrn=normb;
Q(:,1) = b/normb;
for n = 1:maxiter
% Arnoldi step calculations
v = A*Q(:,n);
for j = 1:n
H(j,n) = Q(:,j)* v;
v = v - H(j,n)*Q(:,j);
end
Hn = H(1:n,1:n);
H(n+1,n) = norm(v);
if H(n+1,n) == 0, break, end
% breakdown so stop
Q(:,n+1) = v/H(n+1,n);
e1 = [1;zeros(n,1)];
y = H\(normb*e1); % This can be done better via Givens rotations.
% For simplicity we use Matlabs \
normrn = [normrn,norm(H*y-normb*e1)];
% residual norm
end
x = Q(:,1:n)*y;
semilogy(0:n,normrn/normb,--o),shg
xlabel(step number of gmres algorithm)
ylabel(norm(b-A*xn)/norm(b))
title(convergence of residual in gmres)
grid
end
function A=eigmat(n,n1,m)
A=n*eye(m)+n1*randn(m)/sqrt(m);
end

90/103

91/103

Lo podemos probar con


function gmres_pru_1(n)
% Prueba de gmres
m=500;
maxiter = 15;
if n==1
% example 35.1 from Trefethen + Bau
A=eigmat(2,.5,m);
else
% example 35.2 from Trefethen + Bau
th = (0:m-1)*pi/(m-1);
d=(-2+2*sin(th))+sqrt(-1)*cos(th);
A=eigmat(2,.5,m)+diag(d);
end
lam=eig(A);
figure(1)
plot(lam,x);
axis square
title(eigenvalues of A)
ylabel(imag part)
xlabel(real part)
grid
xtrue=randn(m,1);
b = A*xtrue;
figure(2)
[x,normrn]=gmres_1(A,b,maxiter)
max(abs(x-xtrue))
end

92/103

Veamos los resultados.


>> tic,gmres_pru_1(1),toc
x =
-0.9839
-0.8804
. . .
0.1130
0.2380
normrn =
Columns 1 through 9
43.3631
9.4160
2.3040
0.5540
Columns 10 through 16
0.0001
0.0000
0.0000
0.0000
ans =
2.1480e-09
Elapsed time is 0.202705 seconds.
>> tic,gmres_pru_1(2),toc
x =
1.3233 + 0.0862i
. . . . . .
0.8958 - 0.0122i
normrn =
Columns 1 through 9
35.6532
18.7445
14.1824
11.5050
Columns 10 through 16
2.7824
2.1495
1.6563
1.2601
ans =
0.1104
Elapsed time is 0.479878 seconds.

0.1420

0.0359

0.0093

0.0000

0.0000

0.0000

9.5051

7.4059

5.7802

0.9463

0.7550

0.5899

0.0023

0.0005

4.6176

3.6286

Los grficos que se obtienen.

93/103

94/103

GMRES con precondicionado




La idea es la misma que la aplicada al mtodo de los gradientes conjugados. Las


variaciones a introducir son pequeas como se indica en el esquema de
funcionamiento que sigue.
 Algoritmo del residuo mnimo generalizado GMRES con precondicionado 

Escoger un x 0 cualquiera; r 0 D M 1 .b Ax 0 /
q 1 D r 0 = kr 0 k2
for k D 1; 2; : : :
 Algoritmo de Arnoldi 
1
y D M Aq k
 Precondicionado
for j D 1 to k
hj k D qjH y
y D y hj k qj
end
hkC1;k D kyk2
if hkC1;k D 0, stop, end
q kC1 D y= hkC1;k


Resolver minimizarc k 2Rk H c k kr 0 k2 0 0 : : : 0T 2
x k D Qk c k C x 0
end

Si al ejemplo anterior que tena peor comportamiento de convergencia le


aplicamos precondicionado, con10 M D diag.A/, resultara lo que sigue.
>> tic,gmres_pru_1_precon(2),toc
x =
-2.3449 - 0.0000i
. . . . . .
1.1634 - 0.0000i
0.0737 + 0.0000i
normrn =
Columns 1 through 9
22.9513
6.8163
2.4022
0.8430
Columns 10 through 16
0.0016
0.0006
0.0002
0.0001
ans =
6.3526e-07
Elapsed time is 0.547985 seconds.

10

El precondicionador de Jacobi.

0.2955

0.1046

0.0372

0.0000

0.0000

0.0000

0.0132

0.0045

95/103

Un cdigo mucho ms robusto y completo que implementa el mtodo GMRES,


es ste.

96/103

for iter = 1:max_it

function [x, error, iter, flag] = gmres_Netlib( A, x, b, M, restrt, max_it, tol )


%
% gmres.m solves the linear system Ax=b
% using the Generalized Minimal residual ( GMRESm ) method with restarts .
%
% input
A
REAL nonsymmetric positive definite matrix
%
x
REAL initial guess vector
%
b
REAL right hand side vector
%
M
REAL preconditioner matrix
%
restrt
INTEGER number of iterations between restarts
%
max_it
INTEGER maximum number of iterations
%
tol
REAL error tolerance
%
% output x
REAL solution vector
%
error
REAL error norm
%
iter
INTEGER number of iterations performed
%
flag
INTEGER: 0 = solution found to tolerance
%
1 = no convergence given max_it
iter = 0; flag = 0;
bnrm2 = norm( b );
if ( bnrm2 == 0.0 ), bnrm2 = 1.0; end

% initialization

r = M \ ( b-A*x );
error = norm( r ) / bnrm2;
if ( error < tol ), return, end
[n,n] = size(A);
m = restrt;
V(1:n,1:m+1) = zeros(n,m+1);
H(1:m+1,1:m) = zeros(m+1,m);
cs(1:m) = zeros(m,1); sn(1:m) = zeros(m,1);
e1
= zeros(n,1); e1(1) = 1.0;

% initialize workspace

% begin iteration

r = M \ ( b-A*x );
V(:,1) = r / norm( r );
s = norm( r )*e1;
for i = 1:m
% construct orthonormal
w = M \ (A*V(:,i));
% basis using Gram-Schmidt
for k = 1:i,
H(k,i)= w*V(:,k);
w = w - H(k,i)*V(:,k);
end
H(i+1,i) = norm( w );
V(:,i+1) = w / H(i+1,i);
for k = 1:i-1
% apply Givens rotation
temp
= cs(k)*H(k,i) + sn(k)*H(k+1,i);
H(k+1,i) = -sn(k)*H(k,i) + cs(k)*H(k+1,i);
H(k,i)
= temp;
end
[cs(i),sn(i)] = rotmat( H(i,i), H(i+1,i) ); % form i-th rotation matrix
temp
= cs(i)*s(i);
% approximate residual norm
s(i+1) = -sn(i)*s(i);
s(i)
= temp;
H(i,i) = cs(i)*H(i,i) + sn(i)*H(i+1,i);
H(i+1,i) = 0.0;
error = abs(s(i+1)) / bnrm2;
if ( error <= tol )
% update approximation
y = H(1:i,1:i) \ s(1:i);
% and exit
x = x + V(:,1:i)*y;
break;
end
end
if ( error <= tol ), break, end
y = H(1:m,1:m) \ s(1:m);
x = x + V(:,1:m)*y;
r = M \ ( b-A*x );
s(i+1) = norm(r);
error = s(i+1) / bnrm2;
if ( error <= tol ), break, end;
end
if ( error > tol ) flag = 1; end;
end
% END of gmres.m

% update approximation
% compute residual
% check convergence

% converged

Mtodos de proyeccin para matrices simtricas




Se centran en obtener en cada iteracin el valor que haga que el vector residuo
sea ortogonal al subespacio de Krylov generado hasta esa iteracin; es decir que
se cumpla la Condicin de Galerkin:
r D Ax k

b ? Kk .A; r 0/:

Boris Grigoryevich Galerkin,


Rusia 1871-1945.

Utilizan como base de los clculos El algoritmo de Lanczos.


Cornelius Lanczos, Hungra,
1893-1974.

97/103

Si la matriz es definida positiva los algoritmos resultantes son casi idnticos al


mtodo de los gradientes conjugados. De hecho, el algoritmo de los gradientes
conjugados es el de Lanczos aplicado al vector de partida r 0=kr 0k.

El algoritmo de Lanczos, despus de k pasos, genera una matriz tridiagonal:

QTk AQk D T k

donde

6
6
Tk D 6
6
6
4

1 1

0
::
:
1 2 : :
:
::: ::: :::
::
::: :::
:
k 1
0 
k 1 k

3
7
7
7
7
7
5



Resolver Ax D b conlleva QT AQ QT x D QT b, lo que resulta en
T QT x D kbk; 0; : : : ; 0T . El algoritmo queda, con A definida positiva, as:
 Mtodo basado en Lanczos para resolver Ax D b 

q 0 D b; 0 D 0
q 1 D b= kbk2
for k D 1; 2; : : :
 Algoritmo de Lanczos 
uk D Aq k
k D q H
u
k k
uk D uk k 1 q k 1 k q k
k D kuk k2
q kC1 D uk =k
end
x D QT 1 kbk2 e 1

98/103

Este es un cdigo (sin grandes pretensiones ni eficiencia) que lo implementa.

99/103

function [x,V,T] = Lanczos_1_1(A,k,b)


% Soluton of Ax = b via a CG Lanczos type algorithm
%
Input: A -- an n by n symmetric matrix
%
k -- a positive integer (k << n assumed)
%
Output: x -- solution of Ax=b
%
V -- an n by k orthogonal matrix (optional)
%
T -- a k by k symmetric tridiagonal matrix (optional)
%
n = length(b); T = zeros(k); V = zeros(n,k); bn=norm(b);
q = b/bn; u = A*q; alpha = q*u;
u = u - q*alpha;
V(:,1) = q; T(1,1) = alpha;
for j = 2:k,
beta = norm(u);
q0 = q; q = u/beta;
u = A*q - q0*beta;
alpha = q*u;
u = u - q*alpha;
T(j,j-1) = beta; T(j-1,j) = beta; T(j,j) = alpha;
V(:,j)
= q;
end
x=V*(T\[bn zeros(1,k-1)]);
end

Veamos alguna prueba con l

>> A=rand(10);
>> A=A*A;
% Matriz simtrica def. positiva
>> b=A*ones(10,1);
>> [x] = Lanczos_1_1(A,8,b)
% 8 iteraciones de Lanczos
>> norm(x)-norm(ones(10,1))
ans =
-0.001890199589387
>> [x] = Lanczos_1_1(A,11,b)
% 11 iteraciones de Lanczos
>> norm(x)-norm(ones(10,1))
ans =
2.463820703013653e-09

Un algoritmo comercial ms completo del SOL (Stanford) es este.

100/103

function [ x, istop, itn, Anorm, Acond, rnorm, xnorm, D ] = ...


cgLanczos_1( A, b, show, itnlim, rtol )
% cgLanczos solves the system of linear equations Ax = b,
%--------------------------------------------------------------------% where A is an n x n positive-definite symmetric matrix
% See if any of the stopping criteria are satisfied.
% Main iteration loop.
% and b is a given n-vector, where n = length(b).
if itn
>= itnlim , istop = 4; end
% -------------------------------------------------------------------%
if Acond >= 0.1/eps, istop = 3; end
if ~done
% k = itn = 1 first time through
% On entry:
if test1 <= eps
, istop = 2; end
while itn < itnlim
% show
(true/false) controls the iteration log.
if test1 <= rtol
, istop = 1; end
itn = itn + 1;
% itnlim
(integer) limits the number of iterations.
%----------------------------------------------------------------% rtol
(e.g. 1e-8) is the requested accuracy. Iterations
% See if it is time to print something.
% Obtain quantities for the next Lanczos vector vk+1, k = 1, 2,...
%
terminate if rnorm < (Anorm*xnorm)*rtol.
if show
% The general iteration is similar to the case k = 2.
%
prnt
= false;
%
p =A*v2; alpha2=v2*p; p=p - alpha2*v2 - beta2*v1; beta3=norm(p)
% On exit:
if n
<= 40
, prnt = true; end
%
v3=(1/beta3)*p.
% x
(n-vector) is the solution estimate
if itn
<= 10
, prnt = true; end
%----------------------------------------------------------------% istop
(0--6) gives reason for termination (see "msg" below)
if itn
>= itnlim-10, prnt = true; end
p = A*v;
% itn
(integer) is the number of CG iterations
if mod(itn,10)==0
, prnt = true; end
if itn>1, p = p - beta*v1; end
% Anorm
estimates the Frobenius norm of A
if Acond >= 1e-2/eps , prnt = true; end
alpha = v*p;
% alpha = vAv in theory
% Acond
estimates the condition of A (in F-norm)
if test1 <= 10*eps
, prnt = true; end
if alpha<=0, istop = 6; break; end % A is indefinite or singular
% rnorm
estimates the residual norm: norm(r) = norm(b-Ax)
if test1 <= 10*rtol , prnt = true; end
p
= p - alpha*v;
% xnorm
is the exact norm(x)
if istop ~= 0
, prnt = true; end
oldb = beta;
% oldb = betak
% D
(n-vector) estimates diag(inv(A)).
if prnt
beta = norm(p);
% beta = betak+1
% Code author: Michael Saunders, SOL, Stanford University.
fprintf(\n %6g %12.5e %10.3e %8.1e %8.1e %8.1e, ...
beta = max(beta,eps);
% Prevent divide by zero
% Reference
C. C. Paige and M. A. Saunders (1975),
itn,x(1),rnorm,xnorm,Anorm,Acond);
v1
= v;
%
Solution of sparse indefinite systems of linear equations,
end
v
= (1/beta)*p;
%
SIAM J. Numer. Anal. 12(4), pp. 617-629.
if mod(itn,10)==0, fprintf(\n); end
%--------------------------------------------------------------------end
% show
if itn==1
% Initialize a few things.
n = length(b);
delta = sqrt(alpha); gamma = beta /delta;
if show
if istop > 0, break; end
zeta
= beta1/delta; w
= v1
/delta;
fprintf(\n)
end
% main loop
x
= zeta*w;
D
= w.^2; Tnorm2 = alpha^2 + beta^2;
fprintf(\n Enter cgLanczos.
Solution of symmetric Ax = b)
end
% if ~done early
else
% Normal case (itn>1)
fprintf(\n n = %6g
itnlim = %6g
rtol = %11.2e, n,itnlim,rtol)
delta = alpha - gamma^2;
end
%------------------------------------------------------------------if delta<=0, istop = 6; break; end % Tk is indefinite or singular
% Display final status.
delta = sqrt(delta);
istop = 0;
itn
= 0;
%------------------------------------------------------------------zeta
=
- gamma*zeta/delta;
Anorm = 0;
Acond = 0;
x = zeros(n,1);
msg = [beta1 = 0. The exact solution is x = 0

% istop = 0
w
= (v1 - gamma*w )/delta;
xnorm = 0;
D = zeros(n,1);
A solution to Ax = b was found, given rtol
%
1
x
= x + zeta*w;
%-----------------------------------------------------------------Maximum accuracy achieved, given eps

%
2
D
= D + w.^2;
% Set up the first Lanczos vector v.
Acond has exceeded 0.1/eps

%
3
gamma = beta /delta;
%-----------------------------------------------------------------The iteration limit was reached

%
4
Tnorm2 = Tnorm2 + alpha^2 + oldb^2 + beta^2;
done = false;
A does not define a symmetric matrix

%
5
end
beta1 = norm(b);
A does not define a positive-definite matrix]; %
6
if beta1==0
msg = msg(istop+1,:);
%----------------------------------------------------------------istop = 0; done = true; show = true;
% b=0 exactly. Stop with x = 0.
if show
% Estimate various norms and test for convergence.
else
fprintf(\n)
%----------------------------------------------------------------v = (1/beta1)*b;
fprintf(\n %s, msg)
Wnorm2 = Wnorm2 + norm(w)^2;
end
fprintf(\n istop =%3g
itn
=%10g, istop,itn)
Anorm = sqrt( Tnorm2 );
fprintf(\n Anorm =%10.2e
Acond =%10.2e, Anorm,Acond)
Acond = Anorm * sqrt(Wnorm2);
beta
= beta1; rnorm = beta1;
fprintf(\n rnorm =%10.2e
xnorm =%10.2e, rnorm,xnorm)
xnorm = norm(x);
Tnorm2 = 0;
Wnorm2 = 0;
fprintf(\n)
rnorm = abs(beta*zeta/delta);
if show
end
test1 = rnorm / (Anorm*xnorm);
% ||r|| / (||A|| ||x||)
fprintf(\n\n
Itn
x(1)
norm(r)
norm(x) norm(A) cond(A))
fprintf(\n %6g %12.5e %10.3e, itn, x(1), beta1)
end

101/103

Comparacin numrica de algunos mtodos




Utilizaremos un problema "sinttico", con una matriz simtrica 500  500 de


diversos nmeros de condicin desde 1 a 10.000. La solucin siempre es x D 1
y la precisin con la que se pretende obtenerla es kb Axk1 < 10 6.

Utilizando el Programa SdyCg:


>> SdyCg(1.6)
cond(A) Mp_i
1
1
10
71
100
685
1000 6155
10000 66389
>>

Gc_i GS_i SOR_i Jac_i


1
2
29
2
27
30
34
69
84
205
48
761
142 1644
566 70489
162 7178 1564 99999

Mp_tim
0.000124
0.003159
0.039224
0.309429
3.402865

Gc_tim
0.000092
0.001476
0.005740
0.009098
0.009311

GS_tim
0.006561
0.007254
0.015905
0.065275
0.356074

SOR_tim
0.008331
0.008618
0.013556
0.122751
0.351750

Jac_tim
0.001398
0.014539
0.196298
15.220156
21.980691

Res^2_Mp
7.944076e-28
8.579430e-13
9.298963e-13
9.954203e-13
9.994093e-13

Res^2_Cg
7.944076e-28
8.912196e-13
9.870799e-13
6.167283e-13
7.437201e-13

Res^2_GS
3.630856e-28
9.432146e-11
4.477812e-08
2.765230e-06
5.815914e-04

Res^2_SOR
6.788011e-11
1.933698e-10
1.616879e-08
1.118498e-06
2.265461e-04

Res^2_Jac
1.649459e-28
1.034252e-09
1.107515e-07
NaN
2.941935e+26

102/103

El cdigo usado.

function SdyCg(omega)
% Test de diversos mtodos iterativos de solucin de sistemas lineales
n=500;
condA=[1 10 100 1000 10000];
x0=zeros(n,1);
tol=1e-6;
maxits=99999;
disp([cond(A) Mp_i Gc_i GS_i SOR_i Jac_i Mp_tim
Gc_tim
GS_tim

Jac_tim
Res^2_Mp
Res^2_Cg
Res^2_GS
Res^2_SOR
for i=1:5
[Q,R]=qr(rand(n));
A=Q*diag(linspace(1,condA(i),n))*Q; b=A*ones(n,1);
D=diag(diag(A)); L=tril(A,-1); U=triu(A,1);
% Mxima pendiente
tic;
j=0; x=x0; r=b-A*x; d=r*r; s=r;
while sqrt(d)>tol && j<maxits
j=j+1;
v=A*s;
alpha=d/(s*v);
x=x+alpha*s;
r=r-alpha*v;
d=r*r;
s=r;
end
time_Mp=toc;
Mp(i)=j;
d1=d;
% Gradientes conjugados
tic;
k=0; x=x0; r=b-A*x; d=r*r; p=r;
while sqrt(d)>tol && k<maxits
k=k+1;
v=A*p;
alpha=d/(p*v);
x=x+alpha*p;
r=r-alpha*v;
beta=d;
d=r*r;
beta=d/beta;
p=r+beta*p;
end
time_Gc=toc;
Gc(i)=k;
d2=d;

103/103

SOR_tim...
Res^2_Jac]);

% Gauss-Seidel
tic;
k0=0; x=x0; c2=(D+L)\b; G_GS=(D+L)\(-U); d=max(abs(b-A*x));
while d>tol && k<maxits
k0=k0+1;
x1=G_GS*x+c2;
s=max(abs(x1));
d=max(abs(x1-x))/s;
x=x1;
end
time_GSe=toc;
GS(i)=k0;
r=b-A*x;
d3=r*r;
% SOR
tic;
l=0; x=x0; M=omega*L+D; N=-omega*U+(1-omega)*D;
d=max(abs(b-A*x));
while d>tol && l<maxits
l=l+1;
x1=M\(N*x+omega*b);
s=max(abs(x1));
d=max(abs(x1-x))/s;
x=x1;
end
time_SOR=toc;
SO(i)=l;
r=b-A*x;
d4=r*r;
% Jacobi
tic;
l1=0; x=x0; M=D; N=D-A;
d=max(abs(b-A*x));
while d>tol && l1<maxits
l1=l1+1;
x1=M\(N*x+b);
s=max(abs(x1));
d=max(abs(x1-x))/s;
x=x1;
end
time_Jac=toc;
Ja(i)=l1;
r=b-A*x;
d5=r*r;
fprintf( %5d%6d%6d%6d%6d%6d %10.6f %10.6f %10.6f %10.6f %10.6f %e %e %e %e %e\
condA(i),j,k,k0,l,l1,time_Mp,time_Gc,time_GSe,time_SOR,time_Jac,d1,d2,d3,d4,d
end
loglog(condA, Mp,b-x,condA,Gc,r:+,condA,GS,g-.x,condA,SO,c-+,condA,Ja,k:x
xlabel(Condicin),ylabel(Iteraciones)
h = legend(Mp,Gc,GSe,SOR,Jac,2);

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Sistemas de ecuaciones no lineales

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_sisno_2016.pdf

1/26

2/26

ndice
 El problema
 Mtodos de numricos de resolucin

Mtodo de Newton-Raphson
 Variantes del mtodo de Newton
 Mtodos cuasi Newton

3/26

El problema


En trminos matemticos,
dada f W Rn ! Rm; hallar un xN tal que f .x/
N D 0.
La funcin vectorial f se supone continua y derivable en algn conjunto abierto
de Rn, con derivadas parciales continuas en ese abierto.

Los algoritmos que estudiamos son iterativos. En en cada etapa se resolver un


sistema de ecuaciones lineales resultante de una simplificacin del problema
original en el entorno de cada punto de un proceso.

Estudios de cargas en sistemas de generacin y


transporte de energa elctrica

4/26

A partir de un patrn de demanda y generacin de potencia en cada uno de los


nudos que configuran un sistema, como el esquematizado en la figura:
Los estudios de circulacin de cargas determinan las tensiones en los
nudos de la red, en mdulo y argumento, los flujos de potencia activa
y reactiva por todos los elementos del sistema, la intensidad por las
lneas, las prdidas en stas, etc.

5/26

Si se supone que los parmetros fsicos de un sistema elctrico permanecen


constantes, existen cuatro variables asociadas a cada nudo i de ese sistema:


la tensin, en mdulo, Vi , y argumento, i ;

la potencia activa inyectada, Pi , y

la potencia reactiva inyectada, Qi .

Las potencias inyectadas en el nudo i dependen de su tensin y de las de los a


l unidos. Las expresiones que las relacionan, si no hay transformadores, son
Pi D jVi j2

n
X

Gpij C Gsij

jVi j

j D1
j i

Qi D

jVi j

n
X
j D1
j i

donde: Vi
i
Gsij
Gpij
Bsij
Bpij

n
X


jVj j Gsij cos.i

j / C Bsij sen.i


j /

j D1
j i

Bpij C Bsij

jVi j

n
X


jVj j Gsij sen.i

j /

Bsij cos.i


j /

j D1
j i

es el mdulo de la tensin en el nudo i ;


el argumento de la tensin en el nudo i ;
la conductancia serie (constante) de la lnea que une el nudo
i con el nudo j ;
la conductancia a tierra (constante) de la lnea que une el
nudo i con el j ;
la susceptancia serie (constante) de la lnea que une el nudo
i con el nudo j ; y
la susceptancia a tierra (constante) de la lnea que une el nudo
i con el j .

6/26

7/26

Es norma que las tensiones se midan respecto a una referencia, que se elige en
un nudo cualquiera que sea factible, nudo holgura, al que se asigna una tensin
de 1 para el mdulo y 0 para el argumento.

Los tipos de nudos de un sistema y qu variables e incgnitas definiran cada


uno de ellos se recogen en la siguiente tabla.
Tipo de nudo Variables dadas Incgnitas
Carga o PQ
P, Q
V, 
Generacin o PV
P, V
Q, 
Holgura
V, 
P, Q


Si, por ejemplo, de un nudo se conocen el mdulo de la tensin y la


potencia activa inyectada, para caracterizarlo totalmente habr que calcular
la potencia reactiva inyectada en l y el argumento de su tensin.

8/26

Al suponer V1 D 1 y 1 D 0, para caracterizar un sistema elctrico de n nudos


se necesitarn conocer 2n 2 variables.

Para caracterizar totalmente un sistema general habr que resolver un sistema


de 2n 2 ecuaciones no lineales de la forma
D b1
D b2
:::
2 / D b2n 2 :

f1.x1; x2; : : : ; x2n 2/


f2.x1; x2; : : : ; x2n 2/
f2n 2.x1; x2; : : : ; x2n

(1)

9/26

Consideremos el pequeo sistema elctrico de antes.


Si se elige como nudo de holgura el 1, el 2 es PV y el 3 PQ. La funcin vectorial
f .x/ que definira el sistema no lineal de ecuaciones con el que determinar el
estado de funcionamiento de ese sistema es la siguiente:
V2

2
6
6
6
6
6
6
f .x/ D 6
6
6
6
6
6
4

7
7
7
7
j D1;3
j D1;3
7
7
X
X
7:

2
7
V3
.Gp3j C Gs3j / V3
Vj G3j cos.3 j / C B3j sen.3 j /
7
7
j D1;2
j D1;2
7
7
X
X

5
V32
.BC C Bp3j C Bs3j / V3
Vj G3j sen.3 j / B3j cos.3 j /
V22

j D1;2

.Gp2j C Gs2j /

V2

Vj G2j cos.2

j / C B2j sen.2


j /

j D1;2

La susceptancia del condensador conectado al nudo 3 es BC .




El b de (1), lo constituirn los valores de V2, P2, P3 y Q3, datos del problema.

10/26

ndice
 El problema
 Mtodos de numricos de resolucin


Mtodo de Newton-Raphson

Variantes del mtodo de Newton

Mtodos cuasi Newton

Mtodo de Newton-Raphson

11/26

Estudiaremos funciones vectoriales1 f W Rn ! Rm continuas, con derivadas


parciales de primer orden continuas.

En un punto x k del proceso iterativo se aproxima la funcin mediante desarrollo


en serie de Taylor truncndolo a partir de los trminos de segundo orden,
Mk .x k / D f .x k / C J .x k /.x

x k /;

donde J .x k / es la matriz Jacobiana del sistema en x k :


2
3
@f1.x/
@f1.x/
6 @x1    @xn 7
6 :
::: 7
:::
::
7
:
J .x k / D 6
7
6
4 @fn.x/
@fn.x/ 5

@x1
@xn x Dx k
1

De momento con n D m.

12/26

Si se resuelve el sistema lineal f .x k / C J .x k /.x x k / D 0, su solucin dar


un avance a un nuevo punto del proceso iterativo.
La relacin de recurrencia del mtodo es, en general:
x kC1 D x k

J .x k / 1f .x k /

Algoritmo de Newton-Raphson para sistemas de ecuaciones no lineales:


I Definir un x 0 2 Rn ; hacer k D 1 y x k

x0.

II Resolver el sistema lineal J .x k /.x kC1

xk / D

f .x k /

III Si kf .x kC1 /k2 < T ol , parar: el problema est resuelto


Si no, hacer k D k C 1, x k D x kC1 e ir al paso II

En condiciones adecuadas, la convergencia del mtodo es cuadrtica.

13/26

Ejemplo Resolvamos mediante Newton-Raphson, partiendo del punto


1; 1; 1T , el sistema de ecuaciones no lineales
3x1
x12
e

x1 x2

cos.x2 x3 /


1 2
81 x2 C
C sen.x3 / C
10
C

20x3

1
2

D 0

1;06

D 0

10 3
D 0:
3

A continuacin se lista un cdigo de Matlab para resolverlo.


La solucin de los sistemas de ecuaciones lineales de cada iteracin se realiza
mediante el operador n.

14/26

function [x,dnor,iter]=Newt_Rap(funcion,x0,tol,maxiter)
% Newton-Raphson para cualquier sistema no lineal
if nargin<4, maxiter=99999; end
if nargin<3, tol=sqrt(eps); end
dnor=1.0; iter=0; A=[]; Dnor=[];
while dnor>tol && iter<maxiter
iter=iter+1;
[f,J]=funcion(x0);
p=Jf ;
x=x0-p; [f]=funcion(x);
dnor=norm(f,inf); A=[A;x]; x0=x; Dnor=[Dnor;dnor];
end
s= %15.10e; for i=1:size(x0)-1 s=[s %15.10e]; end
for i=1:iter
fprintf([s %15.10en], A(i,:),Dnor(i));
end
end
function [f J]=NRP_1(x)
f(1) = 3*x(1)-cos(x(2)*x(3))-0.5;
f(2) = x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3) = exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
if nargout<2, return, end
J(1,1) = 3.0; J(1,2) = sin(x(2)*x(3))*x(3); J(1,3) = sin(x(2)*x(3))*x(2);
J(2,1) = 2.0*x(1); J(2,2) = -162.0*(x(2)+0.1); J(2,3) = cos(x(3));
J(3,1) = -exp((-x(1)*x(2)))*x(2); J(3,2) = -exp((-x(1)*x(2)))*x(1);
J(3,3) = 20.0;
end

15/26

Si se utiliza para resolver el problema:


>> [x,dnor,iter]=Newt_Rap(@NRP_1,[1;1;1])
9.1968721308e-001 4.6082245570e-001 -5.0338763550e-001
5.0100048532e-001 1.8743347767e-001 -5.2086923301e-001
5.0054293549e-001 6.1153453678e-002 -5.2200096420e-001
5.0010443627e-001 1.1617105749e-002 -5.2329514612e-001
5.0000551037e-001 6.0561572295e-004 -5.2358293632e-001
5.0000001666e-001 1.8263674473e-006 -5.2359872783e-001
5.0000000000e-001 1.6710515026e-011 -5.2359877560e-001
x =
0.5000
0.0000
-0.5236
dnor =
2.7018e-010
iter =
7

2.4087256490e+001
5.8788006806e+000
1.2916807111e+000
1.9876169457e-001
9.8214794394e-003
2.9529468423e-005
2.7018031860e-010

Modificaciones del Mtodo de Newton


Newton-Raphson por diferencias finitas


El clculo de la la matriz Jacobiana del sistema se lleva a cabo mediante su


aproximacin por diferencias finitas.

Cada columna aj de la matriz Jacobiana se aproxima mediante la expresin


f .x C hj ej /
aj D
hj

f .x/

Cuando el problema est bien escalado, el parmetro h puede elegirse igual a


p
 para todos los xj .

Si el valor de los coeficiente del vector x difieren unos de otros en mucho, un


mismo h para todos puede dar malos resultados numricos.

16/26

Ejemplo Partiendo de x D 1; 1; 1T , Newton-Raphson por diferencias finitas


para resolver el ejemplo anterior:

17/26

function Newtrp_df_1(fx,x)
% Newton-Raphson por diferencias finitas para sistemas
global h
tol=sqrt(eps); dnor=1.0; h=tol;
while dnor >tol
[f J]=fx(x);
p=Jf ;
x=x-p;
dnor=norm(fx(x));
fprintf(%15.10e %15.10e %15.10e %15.10en, x,dnor);
end
end
function [f J]=NRP_1_dif(x)
global h
f(1) = 3*x(1)-cos(x(2)*x(3))-0.5;
f(2) = x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3) = exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
if nargout<2, return, end
for i=1:3
x(i)=x(i)+h;
f1=NRP_1_dif(x);
J(1:3,i)=(f1-f)/h;
x(i)=x(i)-h;
end
end

18/26

El proceso de convergencia que resulta de la ejecucin de este cdigo, con


>> Newtrp_df_1(@NRP_1_dif)
es el que describe la tabla.
k
1
2
3
4
5
6
7

x1
9,1968721314e-1
5,0100048524e-1
5,0054293556e-1
5,0010443628e-1
5,0000551039e-1
5,0000001666e-1
5,0000000000e-1

x2
x3
4,6082245826e-01 -5,0338763389e-1
1,8743348339e-01 -5,2086923236e-1
6,1153459243e-02 -5,2200096436e-1
1,1617109794e-02 -5,2329514576e-1
6,0561685407e-04 -5,2358293631e-1
1,8264191607e-06 -5,2359872782e-1
-1,6847869395e-11 -5,2359877560e-1

kf .x k /k2
2,4087256721e+01
5,8788009464e+00
1,2916808565e+00
1,9876176740e-01
9,8214978438e-03
2,9530304459e-05
2,7240041680e-10

19/26

Podemos usar diferencias finitas centradas:


function [f J]=NRP_1_dif_1(x)
global h
f(1) = 3*x(1)-cos(x(2)*x(3))-0.5;
f(2) = x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3) = exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
if nargout<2, return, end
for i=1:3
x(i)=x(i)+h;
f1=NRP_1_dif_1(x);
x(i)=x(i)-2*h; f2=NRP_1_dif_1(x);
J(1:3,i)=(f1-f2)/(2*h);
x(i)=x(i)+h;
end
end

>>

Resultando:

Newtrp_df_1_c(@NRP_1_dif_1,[1;1;1])
9.1968721308e-001 4.6082245570e-001 -5.0338763551e-001
5.0100048532e-001 1.8743347768e-001 -5.2086923301e-001
5.0054293549e-001 6.1153453680e-002 -5.2200096420e-001
5.0010443627e-001 1.1617105749e-002 -5.2329514612e-001
5.0000551037e-001 6.0561572299e-004 -5.2358293632e-001
5.0000001666e-001 1.8263674477e-006 -5.2359872783e-001
5.0000000000e-001 1.6710502161e-011 -5.2359877560e-001

2.4087256490e+001
5.8788006807e+000
1.2916807112e+000
1.9876169458e-001
9.8214794401e-003
2.9529468429e-005
2.7018009656e-010

Newton modificado


20/26

Resulta de considerar la misma matriz Jacobiana, J .x 0/, durante todo el


proceso, o un nmero fijo de iteraciones.

Jacobi


La matriz Jacobiana se aproxima mediante los coeficientes de su diagonal


principal. La relacin de recurrencia es:
x kC1 D x k

D k 1f .x k /,

donde diki D Jiki .




Si la matriz J es diagonal dominante, esta estrategia puede ser suficiente.

21/26

Gauss-Seidel


La matriz del sistema es la parte triangular inferior de la Jacobiana. La relacin


de recurrencia es:
x kC1 D x k Lk 1f .x k /
donde Lkij D Jijk , i  j .

Relajacin SOR


El esquema iterativo en forma matricial que se utiliza es


x kC1 D x k

.D k C Lk / 1f .x k /

El parmetro de relajacin es ! D 1=. C 1/.

22/26

Mtodos cuasi Newton

Charles George Broyden, Reino


Unido, 1933-2011.

Extienden la idea del mtodo de la secante a n dimensiones. La primera idea se


publico en 1965 por Broyden.

Su centran en escoger J .x k / de tal forma que se minimice el valor de la funcin


que se obtendra en un mismo punto mediante sus dos aproximaciones A k y
A k 1 y que adems se cumpla que A k .x k x k 1/ D f .x k / f .x k 1/. Si
sk 1 D x k x k 1 y y k 1 D f .x k / f .x k 1/, lo cumple la aproximacin de
J .x k /
Ak D Ak

.y k

A k 1 sk 1 /sTk
sTk 1 sk 1

23/26

El algoritmo con esta frmula es el que sigue.

I Definir x 0 2 Rn y A 0 2 Rnn ; hacer k D 1 y x k


II Determinar la solucin de A k sk D

x0.

f .x k /.

III Si kjf .x k /k2 < T ol, PARAR: el problema est resuelto.


Si > T ol, hacer x kC1
x k C sk
yk
f .x kC1 / f .x k /
.y k A k sk /sTk
A kC1
Ak C
sTk sk
k
kC1
y volver al paso II.

La A 0 se puede obtener por una aproximacin parcial o total: por diferencias


finitas, por ejemplo.

La convergencia del mtodo a que da lugar es superlineal.

Ejemplo Desde 1; 1; 1T , resolvamos este sistema con Newton y frmula de


Broyden.
3x1
x12
e

1
D0
cos.x2 x3 /
2

1 2
81 x2 C 10
Csen.x3 /C 1;06 D0

x1 x2

C 20x3 C 103

D0:

function Broyden_3(fx,x)
% Mtodo cuasi Newton con la frmula de Broyden
tol=sqrt(eps); n=length(x); dnor=1.0; J=zeros(n,n); f=fx(x);
J(1,1)=3; J(2,2)=-178.2; J(3,3)=20;
% Trampa

while dnor >tol


p=J\f;
x1=x-p;
f=fx(x1);
dnor=norm(f);
fprintf( %15.10e %15.10e %15.10e %15.10e\n,x,dnor);
J=broy(J,f,p);
x=x1;
end

En Matlab:
end

function J=broy(J,f,p)
prod=p*p;
J=J-(1/prod)*f*p;
end

% igual que J=J-(1/prod)*(y+J*p)*p ver Quarteroni p.289

Como matriz A 0 se utiliza la diagonal de la Jacobiana en el punto de partida.

24/26

25/26

El proceso de convergencia que desencadena la instruccin


>> Broyden_3(@NRP_1,[1 1 1])
es el de la tabla.
k

x1

x2

x3

1
2
3
4
5
6
7
8
9
10
11

3,467674352893799E-1
4,921232306763561E-1
4,993486752210201E-1
5,011649166344201E-1
5,003080441638231E-1
5,001066711564305E-1
5,000183047478762E-1
5,000009846717887E-1
5,000000108711760E-1
5,000000000415024E-1
4,999999999986228E-1

4,662821024806326E-01
3,236527849976335E-01
2,131483731754155E-01
9,690341763001632E-02
4,279330810076126E-02
1,172102964534057E-02
2,032314047074978E-03
1,115674463108231E-04
1,033227841870006E-06
6,118437770431628E-10
-5,059011531347285E-09

-4,919927476568708E-1
-5,162769886149683E-1
-5,166714279059975E-1
-5,210585843043458E-1
-5,224749127576461E-1
-5,232913081815899E-1
-5,235457794542374E-1
-5,235958520108367E-1
-5,235987485509558E-1
-5,235987755897009E-1
-5,235987757245316E-1

kf .x k /k2
25,275175252053120
13,729480399369230
7,127754268893964
2,327087146316625
8,403043972608411E-01
2,006362866054586E-01
3,319399780484372E-02
1,804970096278442E-03
1,678549255880026E-05
9,122344458875651E-08
4,849895176081806E-10

26/26

Implementacin prctica del mtodo de Broyden


Lema Frmula de Sherman-Morrison-Woodbury 1949-1950
(a) Si A es una matriz regular n  n y u y v dos vectores cualesquiera de Rn , A C uvT es
regular si y slo si w D 1 C vT A 1 u 0.
 1

1
(b) En este caso, adems, A C uvT
DA 1
A 1 uvT A 1 .
w

La idea es partir de una A 0 1 y adaptar A


1
A kC1

D Ak C

sk

con la nueva frmula de Broyden:


1

A k y k sTk A k 1


sTk A k 1y k

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Mnimos cuadrados no lineales

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_mincua_nolineal_2016.pdf

1/40

2/40

ndice
 Definicin del problema


Estimacin del estado de sistemas elctricos

 Resolucin numrica del problema




Mtodo de Gauss-Newton

Mtodo de Levenberg-Marquardt

Mtodo de Newton

Definicin del problema

3/40

Los problemas no lineales de mnimos cuadrados reales surgen de modelos


matemticos que estudian el comportamiento den sistemas econmicos, sociales
y fsicos y se pretende acercarlos al de otros modelos ms estndar o fciles de
manejar, que resultan ser no lineales en muchos casos.

Se trata de en encontrar el mnimo de la suma de los cuadrados de m funciones


no lineales; es decir,
minimizar
f .x/ D
x 2Rn

1
2

m
X
i D1

ri2.x/ D 12 kr.x/k22

donde el vector de residuos1 es r.x/ W Rn ! Rm D r1.x/; : : : ; rm.x/T y cada


ri .x/, i D 1; : : : ; m, m  n, es una funcin no lineal de Rn en R.
1

Si m D n se tiene un sistemas de ecuaciones no lineales como los que hemos estudiado.

4/40

El problema surge de la imposibilidad de encontrar la solucin al sistema de


ecuaciones r.x/ D 0 y, sin embargo, se trata de adaptar una pseudosolucin
que mejor la aproximase de existir de acuerdo con la norma eucldea.

Ejemplo El ajuste de funciones no lineales a datos diversos. Se trata de


aproximar una funcin f .x; t / no lineal a unos datos, definidos por ejemplo por
un par yi (valor) y ti (tiempo), .yi ; ti /, i D 1; : : : ; m.

Si ri .x/ representa el error en la prediccin que hace el modelo de la


observacin i ,
ri .x/ D yi f .x; ti /; i D 1; : : : ; m;

y se quiere minimizar la suma de los cuadrados de las desviaciones entre los


valores reales y los predichos con el modelo, se llega a un problema del tipo
1
minimizar
ky
x 2Rn 2

f .x/k22

5/40

Estimacin del estado de sistemas elctricos




La estimacin del estado es el proceso por el cual se determina el valor del


vector de variables que rigen un sistema a partir de unos datos proporcionados
por medidas efectuadas al mismo.

Estas medidas no se pueden realizar con precisin absoluta, debido a la


imperfeccin operativa de los aparatos que las registran. Para aumentar la
certeza sobre sus resultado se disponen con un grado notable de redundancia.

El proceso matemtico de la estimacin se basa en maximizar o minimizar unos


criterios estadsticos determinados. El criterio ms usado es el de minimizar la
suma de los cuadrados de las desviaciones entre los valores reales medidas
y los estimados.

6/40

En la operacin, anlisis y planificacin de sistemas elctricos de energa, uno de


los asuntos de ms relevancia tcnica y econmica es el de la estimacin del
estado de funcionamiento del sistema de generacin y transporte.

7/40

Para estimar el estado del sistema se instalan en su red fsica unos aparatos de
medida que proporcionan el valor de diversas magnitudes de funcionamiento:
tensiones en diversos puntos, flujos de potencia activa y reactiva por elementos
de transporte, potencias activa y reactiva inyectadas, etc.

Si todas estas medidas fuesen perfectas en un estado de operacin concreto, las


relaciones matemticas que modelizan las leyes fsicas que rigen su
funcionamiento permitiran determinar la solucin nica de ese estado.

Los errores aleatorios que incorporan los aparatos de medida introducen una
incompatibilidad matemtica en aquellas relaciones, por lo que el clculo de la
solucin exacta no es posible teniendo que sustituirse por una estimacin de la
ms probable.

8/40

Con el fin de aumentar la bondad de la estimacin, as como poder identificar


mediciones errneas, el nmero de medidas que se efecta suele ser redundante:
bastante superior al estrictamente necesario para determinar el estado de
funcionamiento real. Ejemplo:

Pi D jVi j

Qi D

donde: Vi
i
Gsij
Gpij
Bsij
Bpij

9/40

Recordemos las expresiones


2

n
X
j D1
j i

jVi j

Gpij C Gsij

n
X
j D1
j i

jVi j

Bpij C Bsij

n
X
j D1
j i

jVi j


jVj j Gsij cos.i

n
X
j D1
j i


jVj j Gsij sen.i

j / C Bsij sen.i

j /


j /

Bsij cos.i

j /

es el mdulo de la tensin en el nudo i;


el argumento de la tensin en el nudo i ;
la conductancia serie (constante) de la lnea que une el nudo i con el nudo j ;
la conductancia a tierra (constante) de la lnea que une el nudo i con el j ;
la susceptancia serie (constante) de la lnea que une el nudo i con el nudo j ; y
la susceptancia a tierra (constante) de la lnea que une el nudo i con el j .

Entre los nudos i y j de una red, los flujos de potencias activa y reactiva estn
dados por las relaciones
Pij D jVi j2 Gsij jVi jjVj jGsij cos.i j / jVi jjVj jBsij sen.i j / C jVi j2 Gpij
Qij D jVi j2 Bsij jVi jjVj jGsij sen.i j / C jVi jjVj jBsij cos.i j / jVi j2 Bpij :

10/40

En trminos matemticos, si se tiene una muestra b1; b2; : : : ; bm que define una
medida de todos los aparatos, el sistema de ecuaciones que relaciona estas
mediciones con las variables de estado x1; x2; : : : ; xn, se puede expresar como
f1.x1; x2; : : : ; xn/ D b1
f2.x1; x2; : : : ; xn/ D b2
:::
fm.x1; x2; : : : ; xn/ D bm;
donde m  n. Se supone que cada uno de los elementos de la funcin vectorial
f .x/ son exactos.

Este sistema, debido a la imprecisin de los aparatos, suele ser


matemticamente incompatible, aunque esta incompatibilidad suele ser muy
pequea, pues los errores en condiciones normales son pequeos.

Para el ejemplo de tres nudos de la figura anterior, tomando 1 D 0 como


referencia de ngulos, los parmetros que definen el sistema son los de esta
tabla.
b

f .x/

V1
V2
V1

V12

V2
P1
Q1
P2

V1

P3

V2

Q3

2

P12

V3

Q12

3

P21
Q21
P23
Q23

.Gp1j C Gs1j / V1
Vj .G1j cos.1 j / C B1j sen.1 j //
j D2;3
j D2;3
X
X
V12
.Bp1j C Bs1j / V1
Vj .G1j sen.1 j / B1j cos.1 j //
j D2;3
j D2;3
X
X
V22
.Gp2j C Gs2j / V2
Vj .G2j cos.2 j / C B2j sen.2 j //
j D1;3
j D1;3
X
X
.Gp3j C Gs3j / V3
Vj .G3j cos.3 j / C B3j sen.3 j //
V32
j D1;2
j D1;2
X
X
V32
.Bp3j C Bs3j / V3
Vj .G3j sen.3 j / B3j cos.3 j //
j D1;2
j D1;2
2
V1 Gs12 V1 V2 .Gs12 cos.1 2 / C Bs12 sen.1 2 // C V12 Gp12
V12 Bs12 V1 V2 .Gs12 sen.1 2 / Bs12 sen.1 2 // V12 Bp12
V22 Gs21 V1 V2 .Gs21 cos.2 1 / C Bs21 sen.2 1 // C V22 Gp21
V22 Bs21 V1 V2 .Gs21 sen.2 1 / Bs21 sen.2 1 // V22 Bp21
V22 Gs23 V2 V3 .Gs23 cos.2 3 / C Bs23 sen.2 3 // C V22 Gp23
V22 Bs23 V2 V3 .Gs23 sen.2 3 / Bs23 sen.2 3 // V22 Bp23

11/40

12/40

Al no existir solucin exacta del sistema, para poder estimar una que se acerque
en algn sentido a esa ideal inalcanzable, es necesario definir un criterio, mtrica
(o estimador) en Rn que evale la bondad de una pseudosolucin de ella. Los
ms usados son:
 El de mnimos cuadrados.


El de mxima verosimilitud.

El estimador de mnimos cuadrados elige como criterio de aproximacin de la


solucin
m
.x1; x2; : : : ; xn/ D

.bi

fi .x1; x2; : : : ; xn//2

iD1

y como objetivo hacer mnima la funcin .x1; x2; : : : ; xn/:


minimizar
.x/
x 2Rn

El de mxima verosimilitud es idntico al de mnimos cuadrados cuando los


errores de las mediciones tienen una distribucin de probabilidad N.0;  /:
Ambos convergen en probabilidad a x, son asintticamente normales y
consistentes para m ! 1.

Si un determinado aparato suministra la medida b, siendo b real la que debera


dar si la precisin de la medicin fuese total, se tendr que
b D b real C ;
donde  es el error aleatorio propio del aparato de medida.

Si  no est sesgado, su funcin de densidad de probabilidad


1
FDP ./ D p e
 2
es la normal de media cero y desviacin tpica  .

2
2 2

13/40

14/40

Como la media de  se supone cero, la media de la muestra real de b es b real .


La funcin de densidad de probabilidad de b es
.b
1
FDP .b/ D p e
 2

b real
2 2

Si se tiene un vector de m medidas, b, en el que cada uno de sus elementos o


coeficiente tiene una funcin de densidad de probabilidad como la descrita, la
funcin de densidad de probabilidad conjunta de la muestra b1; : : : ; bm,
supuestas todas las medidas independientes unas de otras, es
FDP .b1; : : : ; bm/ D FDP .b1/  FDP .b2/    FDP .bm/ D

m
Y

FDP .bi /:

i D1

A esta funcin se la denomina verosimilitud de los parmetros (los bireal ) y se


real
designa por L.b1real ; : : : ; bm
/ D L.breal /.

15/40

Si se quiere hacer mxima la verosimilitud (probabilidad) de que se obtenga


como medida real la de la muestra b,
2
m
X
bi bireal

m 
Y
1
2i2
real
i
D1
e
L.b / D
;
p
i 2
i D1
habr que maximizar L o, lo que debe conseguir el mismo efecto, ln L.breal /.

Ahora bien, maximizar la funcin ln L.breal / es idntico a


2
3
m
m

i
i
2
p
bi bireal 7
6
ln.i 2/
maximizar 4
5:
2i2
i D1

iD1

16/40

Como

Pm

i D1 ln.i

2/ es constante, este problema equivale a


2
3
m

i
real 2
b
b
i
6
7
i
minimizar 4
5:
2i2
i D1

Los parmetros breal se relacionan a travs de las variables de estado por la


funcin no lineal antes mencionada
breal D f .x/;
donde x es el vector de variables de estado; es decir, las tensiones en los nudos
de la red y las tomas de los transformadores con regulacin.

El problema expresado en forma matricial resulta


b
minimizar
x 2Rn
donde la matriz

f .x/T
2

D4

12

17/40

f .x/ ;

3
:::

5
m2

es la matriz de covarianzas de las mediciones.




Como esta matriz es definida positiva, su inversa se puede expresar de la forma


1 D W T W , dando lugar a la formulacin
minimizar
kW .b
x 2Rn

f .x//k22

idntica en estructura al que plantebamos con el estimador de mnimos


cuadrados.

18/40

Resolucin numrica del problema




Hay que resolver r.x/ D 0, un sistema de m ecuaciones no lineales con n


incgnitas. En principio m  n.

Como se hizo cuando m D n, lo natural es generar un proceso iterativo de


aproximacin a la solucin en el que r.x/ se modelice punto a punto en el
proceso mediante desarrollo en serie de Taylor hasta primeras derivadas. Es
decir,
M.p/  r.x/ C J .x/p
y se resuelva este sistema lineal, que ser en general incompatible.

La solucin por mnimos cuadrados de cada uno de estos sistemas, como en el


caso de Newton-Raphson, ser una nueva direccin de movimiento y un nuevo
punto del proceso iterativo que nos aproxime a la solucin.

19/40

Mtodo de Gauss-Newton
I Definir un x 0 ; hacer k D 1 y x k

x0

1
x k /k22
x 2R 2
x k < T ol , parar: problema resuelto;

II Determinar mn.n kr.x k / C J .x k /.x


III Si x

si no, hacer k D k C 1, x k D x e ir al paso II.

El subproblema del punto II es un problema lineal


minimizar
kAx
x 2Rn

bk2;

por lo que se puede resolver con los mtodos que conocemos para mnimos
cuadrados lineales: ecuaciones normales, factorizacin QR, descomposicin en
valores singulares, etc.

20/40

Ejemplo Mediante Gauss-Newton, resolviendo los subproblemas mediante el


operador n de Matlab, determinar x1 y x2 de la funcin e x1Ctx2 que mejor
ajuste los pares de puntos
f.ti ; yi /g D f. 2; 1=2/; . 1; 1/; .0; 2/; .1; 4/g:
La funcin r.x/ es R2 ! R4; su matriz Jacobiana es
2
3
x1 2x2
x1 2x2
e
2e
6 x1 x2
7
e x1 x2 7
6e
J .x/ D 6 x1
7:
0
4 e
5
e x1Cx2
e x1Cx2

Partiendo de x 0 D 1, 1T , el cdigo en Matlab que lo resuelve es el que


sigue. La solucin es x D ln 2 ln 2T .
function GN111(fx,x)
% Gauss-Newton
tol=sqrt(eps); dnor=1.0;
while dnor>tol
[f J] = fx(x);
p=J\f;
x=x-p;
dnor=norm(p,inf)/norm(x,inf);
s=norm(f)^2;
fprintf( %15.10e %15.10e %15.10e %15.10e\n,x,s,dnor);
end
end

function [f J]=GaNew(x)
f(1)=exp(x(1)-2*x(2))-0.5;
f(2)=exp(x(1)-1.0*x(2))-1.0;
f(3)=exp(x(1))-2.0;
f(4)=exp(x(1)+x(2))-4.0;
if nargout<2, return, end
J(1,1)=exp(x(1)-2.0*x(2)); J(1,2)=-2*exp(x(1)-2*x(2));
J(2,1)=exp(x(1)-x(2));
J(2,2)=-exp(x(1)-x(2));
J(3,1)=exp(x(1));
J(3,2)=0;
J(4,1)=exp(x(1)+x(2));
J(4,2)=exp(x(1)+x(2));
end

El proceso hasta la solucin con


>> GN111(@GaNew,[1;1])
es el de la tabla que sigue.
k

x1

x2

1
2
3
4
5

7,5406407460540E-1
6,9782818348320E-1
6,9317290130691E-1
6,9314718125839E-1
6,9314718055994E-1

7,8581936682613E-1
6,9931189327404E-1
6,9317774998543E-1
6,9314718138758E-1
6,9314718055994E-1

krk22

4.6113768156e-01
2.0073845116e-03
5.3683607855e-08
3.9452570113e-17
8.0118685687e-31

kx k

x k 1 k1 =kx k k1

3.1296749716e-1
1.2370370632e-1
8.8493084521e-3
4.4101156284e-5
1.1940287961e-9

21/40

Mtodo de Levenberg-Marquardt

22/40

Se formul inicialmente en 1944 por Kenneth Levenberg, EE.UU., 1919-1973, y


se desarroll en 1963 por Donald W. Marquardt, EE.UU., 1929-1997.

Para evitar las dificultades del de Gauss-Newton cuando a lo largo del proceso la
matriz Jacobiana no tiene rango completo o est mal condicionada, se propuso
que la direccin p k D x x k saliese de la solucin del subproblema
mn.

kp k k  k

1
kr.x k /
2

C J .x k /pk k22;

supuesto que se conoce un nmero k tal que el modelo lineal de r.x k /


representa suficientemente bien la funcin dentro de la esfera de confianza de
radio k .


Si la funcin decrece en esta direccin, se hace x C p el nuevo punto del


proceso y se adapta con algn criterio. Si no decrece, y x x , se modifica
la estrategia con para que en la prxima iteracin se mejore la funcin.

23/40

Si la direccin del subproblema, sin tener en cuenta la restriccin kpk k  k ,


verifica sta, el paso sera el mismo; si no, se puede comprobar que existir un
 > 0 tal que
.J T J C I/p LM D J T r;
.

kpLM k/ D 0;

por lo que p k D pLM sera una solucin del subproblema que satisface
kp k k D k .


Estas condiciones son una adaptacin a este problema de otras generales para
problemas de optimizacin con condiciones, como es el caso que impone el estar
dentro de la regin de confianza.

24/40

El mtodo, implcitamente, es una permanente eleccin entre la direccin de


Gauss-Newton y la de mxima pendiente, o alguna entre ambas.

En efecto:


Cuando  D 0 se tiene la direccin de Gauss-Newton


 1
T
D
J .x k /T r.x k /:
pLM
J
.x
/
J
.x
/
k
k
k

Cuando  es muy grande


pLM

k

1
J .x k /T r.x k /;


por lo que la direccin es colineal con la de mxima pendiente.

25/40

La que sigue es una versin algortmica del mtodo, con una adaptacin del
parmetro  de iteracin en iteracin2 muy simple.
I Definir un x 0 2 Rn ; hacer  D 0;01, k D 1 y x k

II Calcular p k D

J .x k / J .x k / C I

x0
T

J .x k / r.x k /

III if .kr.x k C p k /k22 < kr.x k /k22 / then

si p k  T ol , parar: problema resuelto


si p k > T ol , hacer:

=10

kC1

x kC1
y volver al paso II

xk C p

else

10  

Volver al paso II sin tener que calcular J .x k /


end

Otras formas de cambiar  son las que se estudian al presentar los mtodos de regin de confianza para
minimizar funciones sin condiciones.

26/40

Ejemplo Mediante Levenberg-Marquardt, ajustar a la funcin


f .x/ D
el conjunto de puntos de la tabla.

b1
1 C b2e tb3

ti
yi
ti
yi
1 5,308 7 31,443
2 7,24
8 38,558
3 9,638 9 50,156
4 12,866 10 62,948
5 17,069 11 75,995
6 23,192 12 91,972

T
rtiendo
de xde
30;30;0;4
queloloresuelve
resuelve
es este
0 D
 Partiendo
x 0200;
D 200;
0;4,T el
, elcdigo
cdigo Matlab
Matlab que
es este.
27/40

function Levmar_99
% Levenberg-Marquardt
m=12; n=3; x=[200;30;-0.4]; mu=0.01; J=zeros(m,n);
jtj=zeros(n,n); dnor=1; f=fx(x);
tol=sqrt(eps)*norm(x,inf); update=1;

end

while dnor>tol
if update==1
f=fx(x); J=derf(x);
jtj=J*J;
res=norm(f)^2;
end
a=jtj+mu*eye(n);
s=a\(J*f);
b=x-s;
f1=fx(b);
res1=norm(f1)^2;
if res1<res
x=b; f=f1;
dnor=norm(s,inf)/norm(x,inf);
fprintf(%15.10e %15.10e %15.10e %15.10e %15.10e %15.10e\n,...
x,res1,mu,dnor);
mu=mu/10; update=1;
else
mu=mu*10; update=0;
end
end

function f=fx(x)
f=zeros(12,1);
f(1) = x(1)/(1+x(2)*exp(x(3)))-5.308;
f(2) = x(1)/(1+x(2)*exp(2*x(3)))-7.24;
f(3) = x(1)/(1+x(2)*exp(3*x(3)))-9.638;
f(4) = x(1)/(1+x(2)*exp(4*x(3)))-12.866;
f(5) = x(1)/(1+x(2)*exp(5*x(3)))-17.069;
f(6) = x(1)/(1+x(2)*exp(6*x(3)))-23.192;
f(7) = x(1)/(1+x(2)*exp(7*x(3)))-31.443;
f(8) = x(1)/(1+x(2)*exp(8*x(3)))-38.558;
f(9) = x(1)/(1+x(2)*exp(9*x(3)))-50.156;
f(10) = x(1)/(1+x(2)*exp(10*x(3)))-62.948;
f(11) = x(1)/(1+x(2)*exp(11*x(3)))-75.995;
f(12) = x(1)/(1+x(2)*exp(12*x(3)))-91.972;
end

function J=derf(x)
J(1,1) =1/(1+x(2)*exp(x(3)));
J(1,2) =-x(1)*exp(x(3))/(1+x(2)*exp(x(3)))^2;
J(1,3) =-x(1)*x(2)*exp(x(3))/(1+x(2)*exp(x(3)))^2;
J(2,1) =1/(1+x(2)*exp(2*x(3)));
J(2,2) =-x(1)*exp(2*x(3))/(1+x(2)*exp(2*x(3)))^2;
J(2,3) =-x(1)*x(2)*exp(2*x(3))*2/(1+x(2)*exp(2*x(3)))^2;
J(3,1) =1/(1+x(2)*exp(3*x(3)));
J(3,2) =-x(1)*exp(3*x(3))/(1+x(2)*exp(3*x(3)))^2;
J(3,3) =-x(1)*x(2)*exp(3*x(3))*3/(1+x(2)*exp(3*x(3)))^2;
J(4,1) =1/(1+x(2)*exp(4*x(3)));
J(4,2) =-x(1)*exp(4*x(3))/(1+x(2)*exp(4*x(3)))^2;
J(4,3) =-x(1)*x(2)*exp(4*x(3))*4/(1+x(2)*exp(4*x(3)))^2;
J(5,1) =1/(1+x(2)*exp(5*x(3)));
J(5,2) =-x(1)*exp(5*x(3))/(1+x(2)*exp(5*x(3)))^2;
J(5,3) =-x(1)*x(2)*exp(5*x(3))*5/(1+x(2)*exp(5*x(3)))^2;
J(6,1) =1/(1+x(2)*exp(6*x(3)));
J(6,2) =-x(1)*exp(6*x(3))/(1+x(2)*exp(6*x(3)))^2;
J(6,3) =-x(1)*x(2)*exp(6*x(3))*6/(1+x(2)*exp(6*x(3)))^2;
J(7,1) =1/(1+x(2)*exp(7*x(3)));
J(7,2) =-x(1)*exp(7*x(3))/(1+x(2)*exp(7*x(3)))^2;
J(7,3) =-x(1)*x(2)*exp(7*x(3))*7/(1+x(2)*exp(7*x(3)))^2;
J(8,1) =1/(1+x(2)*exp(8*x(3)));
J(8,2) =-x(1)*exp(8*x(3))/(1+x(2)*exp(8*x(3)))^2;
J(8,3) =-x(1)*x(2)*exp(8*x(3))*8/(1+x(2)*exp(8*x(3)))^2;
J(9,1) =1/(1+x(2)*exp(9*x(3)));
J(9,2) =-x(1)*exp(9*x(3))/(1+x(2)*exp(9*x(3)))^2;
J(9,3) =-x(1)*x(2)*exp(9*x(3))*9/(1+x(2)*exp(9*x(3)))^2;
J(10,1)=1/(1+x(2)*exp(10*x(3)));
J(10,2)=-x(1)*exp(10*x(3))/(1+x(2)*exp(10*x(3)))^2;
J(10,3)=-x(1)*x(2)*exp(10*x(3))*10/(1+x(2)*exp(10*x(3)))^2;
J(11,1)=1/(1+x(2)*exp(11*x(3)));
J(11,2)=-x(1)*exp(11*x(3))/(1+x(2)*exp(11*x(3)))^2;
J(11,3)=-x(1)*x(2)*exp(11*x(3))*11/(1+x(2)*exp(11*x(3)))^2;
J(12,1)=1/(1+x(2)*exp(12*x(3)));
J(12,2)=-x(1)*exp(12*x(3))/(1+x(2)*exp(12*x(3)))^2;
J(12,3)=-x(1)*x(2)*exp(12*x(3))*12/(1+x(2)*exp(12*x(3)))^2;
end

28/40

La matriz jacobiana se ha calculado analticamente. Cuando la complejidad de


su clculo es mayor, se puede aproximar por diferencias finitas.

Los puntos del proceso iterativo que se obtienen son los de la tabla.
k

x1

x2

x3

1
2
3
4
5
6
7
8

172,054602169
180,427478579
190,598767569
195,701854540
196,177702377
196,186188183
196,186260992
196,186261646

27,576875139
40,906816931
47,354495934
48,994138800
49,090471766
49,091630737
49,091641855
49,091641954

-2,852439035E-1
-3,173500543E-1
-3,150142518E-1
-3,137199088E-1
-3,135736444E-1
-3,135697714E-1
-3,135697367E-1
-3,135697364E-1

krk22

225,726827415
85,897325602
3,211830744
2,589465629
2,587278602
2,587278212
2,587278212
2,587278212


1,0E-1
1,0E-2
1,0E-3
1,0E-4
1,0E-5
1,0E-6
1,0E-7
1,0E-8

kx k

x k 1 k1 =kx k k1

1,624216E-1
7,387977E-2
5,336492E-2
2,607582E-2
2,425595E-3
4,325384E-5
3,711204E-7
3,337921E-9

Con la Jacobiana por diferencias finitas partiendo de x D 10; 1; 1T :


function
f
=
f(1) =
f(2) =
f(3) =
f(4) =
f(5) =
f(6) =
f(7) =
f(8) =
f(9) =
f(10) =
f(11) =
f(12) =
end

f=fx(x)
zeros(12,1);
x(1)/(1+x(2)*exp(x(3)))-5.308;
x(1)/(1+x(2)*exp(2*x(3)))-7.24;
x(1)/(1+x(2)*exp(3*x(3)))-9.638;
x(1)/(1+x(2)*exp(4*x(3)))-12.866;
x(1)/(1+x(2)*exp(5*x(3)))-17.069;
x(1)/(1+x(2)*exp(6*x(3)))-23.192;
x(1)/(1+x(2)*exp(7*x(3)))-31.443;
x(1)/(1+x(2)*exp(8*x(3)))-38.558;
x(1)/(1+x(2)*exp(9*x(3)))-50.156;
x(1)/(1+x(2)*exp(10*x(3)))-62.948;
x(1)/(1+x(2)*exp(11*x(3)))-75.995;
x(1)/(1+x(2)*exp(12*x(3)))-91.972;

29/40

function Levmar_99_1
% Levenberg-Marquardt
global h
n=3; x=[10;1;1]; mu=0.01; h=sqrt(eps); dnor=1; k=0;
tol=h*norm(x,inf); update=1;
while dnor>tol
if update==1
f=fx(x);
J=derf(x);
jtj=J*J;
res=norm(f)^2;
function J=derf(x)
end
global h
a=jtj+mu*eye(n);
J
=zeros(12,3);
s=a\(J*f);
J(1:12,1)=(fx([x(1)+h;x(2);x(3)])-fx([x(1)-h;x(2);x(3)]))/2/h;
b=x-s;
J(1:12,2)=(fx([x(1);x(2)+h;x(3)])-fx([x(1);x(2)-h;x(3)]))/2/h;
f1=fx(b); res1=norm(f1)^2;
J(1:12,3)=(fx([x(1);x(2);x(3)+h])-fx([x(1);x(2);x(3)-h]))/2/h;
if res1<res
end
x=b;
f=f1;
dnor=norm(s,inf)/norm(x,inf); k=k+1;
fprintf(%3.0f %15.10e %15.10e %15.10e %15.10e %15.10e %15.10e\n,...
k,x,res1,mu,dnor);
mu=mu/10;
update=1;
else
mu=mu*10;
update=0;
end
end
end

30/40

Se obtiene lo que sigue.


>> Levmar_99_1
1 2.3152737458e+001
2 3.5521957325e+001
3 3.5535714828e+001
4 3.6382251480e+001
5 4.3864894722e+001
6 5.1372002147e+001
7 7.0428818614e+001
8 8.5236277490e+001
9 1.1239893980e+002
10 1.2617277706e+002
11 1.3399326931e+002
12 1.3977022988e+002
13 1.6069048866e+002
14 1.8513588826e+002
15 1.9533332296e+002
16 1.9617433148e+002
17 1.9618630640e+002
18 1.9618621815e+002
19 1.9618623975e+002
>>

1.8021498292e+001
1.8106135944e+001
1.8690543439e+001
1.8685898203e+001
1.9510291916e+001
1.9466354784e+001
2.7344396915e+001
2.8137323946e+001
4.0287929157e+001
4.3008165823e+001
4.4781231173e+001
4.5331502547e+001
4.4865704491e+001
4.7484943675e+001
4.8976332187e+001
4.9090128611e+001
4.9091641090e+001
4.9091635363e+001
4.9091640103e+001

-1.3632831505e+001
-1.2119438256e+001
-1.5346094174e+000
-5.3375592376e-001
-7.1102849011e-001
-4.2121047306e-001
-5.2068992834e-001
-3.8266075582e-001
-3.9946571714e-001
-3.7604998322e-001
-3.7097156146e-001
-3.6390738007e-001
-3.3356360353e-001
-3.1687615138e-001
-3.1377968469e-001
-3.1357474036e-001
-3.1356969799e-001
-3.1356975593e-001
-3.1356974850e-001

1.1044395775e+004
9.2052245497e+003
7.3006550602e+003
6.3081204894e+003
4.2163999640e+003
4.0802626251e+003
1.1367192170e+003
1.0542743764e+003
9.4953809441e+001
5.1169151088e+001
2.8353413348e+001
2.1054836175e+001
1.8934102960e+001
8.7955954889e+000
2.6426289142e+000
2.5872794922e+000
2.5872773953e+000
2.5872773953e+000
2.5872773953e+000

1.0000000000e-002
1.0000000000e-002
1.0000000000e-002
1.0000000000e+002
1.0000000000e+001
1.0000000000e+001
1.0000000000e+000
1.0000000000e+000
1.0000000000e-001
1.0000000000e-001
1.0000000000e-001
1.0000000000e-001
1.0000000000e-002
1.0000000000e-003
1.0000000000e-004
1.0000000000e-005
1.0000000000e-006
1.0000000000e-007
1.0000000000e-002

7.3518297019e-001
3.4821335305e-001
2.9786452559e-001
2.7509388586e-002
1.7058386414e-001
1.4613227267e-001
2.7058265128e-001
1.7372249600e-001
2.4166297615e-001
1.0916647459e-001
5.8364814061e-002
4.1331838508e-002
1.3018977636e-001
1.3204030744e-001
5.2205299870e-002
4.2870467197e-003
6.1038510228e-005
4.4983495179e-007
1.1005699249e-007

Algo ms sofisticado para variar  y su resultado es lo que sigue.

function [x k] = LevenbergMarquardt_2
global h
eta1=sqrt(eps); eta2=eta1; x=[10;1;1]; n = length(x); k=1; h=eta1;
f = fx(x); J = derf(x);
A = J*J;
g = J*f; ng = norm(g,inf);
F = (f*f)/2;
mu = eta1 * max(diag(A));
nu = 2; stop = 0;

function f=fx(x)
f
= zeros(12,1);
f(1) = x(1)/(1+x(2)*exp(x(3)))-5.308;
f(2) = x(1)/(1+x(2)*exp(2*x(3)))-7.24;
f(3) = x(1)/(1+x(2)*exp(3*x(3)))-9.638;
f(4) = x(1)/(1+x(2)*exp(4*x(3)))-12.866;
f(5) = x(1)/(1+x(2)*exp(5*x(3)))-17.069;
f(6) = x(1)/(1+x(2)*exp(6*x(3)))-23.192;
f(7) = x(1)/(1+x(2)*exp(7*x(3)))-31.443;
f(8) = x(1)/(1+x(2)*exp(8*x(3)))-38.558;
f(9) = x(1)/(1+x(2)*exp(9*x(3)))-50.156;
f(10) = x(1)/(1+x(2)*exp(10*x(3)))-62.948;
f(11) = x(1)/(1+x(2)*exp(11*x(3)))-75.995;
f(12) = x(1)/(1+x(2)*exp(12*x(3)))-91.972;
end

31/40

while ~stop
if ng <= eta2, stop = 1;
else
p = (A + mu*eye(n))\-g; np = norm(p,inf);
nx = eta2 + norm(x,inf);
if np <= eta2*nx, stop = 2; end
end
function J=derf(x)
if ~stop
global h
xnew = x + p;
J
=zeros(12,3);
fn = fx(xnew); Jn = derf(xnew);
J(1:12,1)=(fx([x(1)+h;x(2);x(3)])-fx([x(1)-h;x(2);x(3)]))/2/h;
Fn = (fn*fn)/2;
J(1:12,2)=(fx([x(1);x(2)+h;x(3)])-fx([x(1);x(2)-h;x(3)]))/2/h;
dL = (p*(mu*p - g))/2; dF = F - Fn;
J(1:12,3)=(fx([x(1);x(2);x(3)+h])-fx([x(1);x(2);x(3)-h]))/2/h;
if dL > 0 && dF > 0
% Se adapta x y mu end
x = xnew; F = Fn; J = Jn; f = fn;
A = J*J;
g = J*f; ng = norm(g,inf);
mu = mu * max(1/3, 1-(2*dF/dL-1)^3);
% Frmula adapt. mu en referencias
nu = 2;
else
mu = mu*nu; nu = 2*nu;
end
k = k + 1;
dnor=norm(p,inf)/norm(x,inf);
fprintf(%3.0f %12.5e %12.5e %12.5e %12.5e %12.5e %12.5e\n,k,x,Fn,mu,dnor);
end
end
end

32/40
>> [X]=LevenbergMarquardt_2
2 1.00000e+001 1.00000e+000
3 1.00000e+001 1.00000e+000
4 1.00000e+001 1.00000e+000
5 1.00000e+001 1.00000e+000
6 1.00000e+001 1.00000e+000
7 3.71830e+001 2.03134e+001
8 3.55330e+001 2.08570e+001
9 3.55330e+001 2.08570e+001
10 3.55330e+001 2.08570e+001
11 3.55330e+001 2.08570e+001
12 3.55330e+001 2.08570e+001
13 3.55330e+001 2.08570e+001
14 3.70743e+001 2.08320e+001
15 3.70743e+001 2.08320e+001
16 3.70743e+001 2.08320e+001
17 3.94274e+001 2.08200e+001
18 4.10697e+001 2.09711e+001
19 4.31862e+001 2.09854e+001
20 4.48055e+001 2.11303e+001
21 4.69944e+001 2.11853e+001
22 4.89704e+001 2.13752e+001
23 5.35482e+001 2.15958e+001
24 5.77611e+001 2.22507e+001
25 6.75450e+001 2.32354e+001
26 7.30187e+001 2.54797e+001
27 8.56068e+001 2.82368e+001
28 9.17724e+001 3.22479e+001
29 1.04566e+002 3.65437e+001
30 1.12665e+002 4.06796e+001
31 1.25845e+002 4.32662e+001
32 1.35084e+002 4.48533e+001
33 1.49370e+002 4.49653e+001
34 1.58295e+002 4.57702e+001
35 1.71229e+002 4.64779e+001
36 1.79072e+002 4.73221e+001
37 1.87986e+002 4.81609e+001
38 1.92841e+002 4.87157e+001
39 1.95496e+002 4.90113e+001
40 1.96128e+002 4.90848e+001
41 1.96184e+002 4.90914e+001
42 1.96186e+002 4.90916e+001
43 1.96186e+002 4.90916e+001
44 1.96186e+002 4.90916e+001
45 1.96186e+002 4.90916e+001
46 1.96186e+002 4.90916e+001
47 1.96186e+002 4.90916e+001
48 1.96186e+002 4.90916e+001
X =
1.0e+002 *
1.961862713737317
0.490916428999001
-0.003135697293093

1.00000e+000 6.09210e+007 3.20327e-007 3.21187e+002


1.00000e+000 6.05210e+007 1.28131e-006 3.20139e+002
1.00000e+000 5.82011e+007 1.02505e-005 3.13992e+002
1.00000e+000 4.17315e+007 1.64008e-004 2.66267e+002
1.00000e+000 3.04228e+006 5.24824e-003 7.37065e+001
-1.39754e+001 4.61905e+003 1.74941e-003 7.31060e-001
-2.85638e+000 4.13884e+003 5.83138e-004 3.12920e-001
-2.85638e+000 1.21779e+004 1.16628e-003 7.60834e+000
-2.85638e+000 1.21779e+004 4.66510e-003 7.13223e+000
-2.85638e+000 1.21779e+004 3.73208e-002 5.18497e+000
-2.85638e+000 1.21789e+004 5.97133e-001 1.45888e+000
-2.85638e+000 1.08549e+004 1.91083e+001 1.25892e-001
-8.45833e-001 2.86866e+003 6.36942e+000 5.42303e-002
-8.45833e-001 4.57304e+003 1.27388e+001 3.13411e-001
-8.45833e-001 2.96395e+003 5.09554e+001 2.00676e-001
-5.56041e-001 2.67565e+003 5.09596e+001 5.96813e-002
-7.41820e-001 2.36432e+003 4.98849e+001 3.99886e-002
-5.65439e-001 2.17933e+003 4.91881e+001 4.90094e-002
-6.70109e-001 1.96543e+003 4.12763e+001 3.61395e-002
-5.62055e-001 1.78755e+003 3.59446e+001 4.65787e-002
-6.12569e-001 1.59878e+003 1.50058e+001 4.03496e-002
-5.19378e-001 1.31483e+003 1.14216e+001 8.54895e-002
-5.42187e-001 1.03419e+003 3.80721e+000 7.29365e-002
-4.43173e-001 7.28564e+002 3.60218e+000 1.44851e-001
-4.76258e-001 4.74737e+002 1.20073e+000 7.49634e-002
-4.08341e-001 3.05397e+002 1.17121e+000 1.47046e-001
-4.29597e-001 1.66694e+002 3.90403e-001 6.71834e-002
-3.98435e-001 8.96279e+001 3.14695e-001 1.22346e-001
-3.99237e-001 4.63231e+001 1.04898e-001 7.18929e-002
-3.77662e-001 2.49768e+001 8.23411e-002 1.04731e-001
-3.69135e-001 1.35599e+001 2.74470e-002 6.83906e-002
-3.48691e-001 8.04215e+000 2.53594e-002 9.56446e-002
-3.41526e-001 4.27044e+000 8.45312e-003 5.63779e-002
-3.29024e-001 2.70729e+000 7.50803e-003 7.55398e-002
-3.24136e-001 1.73929e+000 2.50268e-003 4.37960e-002
-3.18035e-001 1.42192e+000 1.63585e-003 4.74182e-002
-3.15399e-001 1.30936e+000 5.45282e-004 2.51780e-002
-3.13931e-001 1.29440e+000 1.81761e-004 1.35793e-002
-3.13601e-001 1.29364e+000 6.05869e-005 3.22121e-003
-3.13571e-001 1.29364e+000 2.01956e-005 2.88957e-004
-3.13570e-001 1.29364e+000 6.73187e-006 9.74625e-006
-3.13570e-001 1.29364e+000 7.08937e-006 2.54040e-007
-3.13570e-001 1.29364e+000 1.41787e-005 1.27817e-006
-3.13570e-001 1.29364e+000 5.67150e-005 1.27412e-006
-3.13570e-001 1.29364e+000 4.53720e-004 1.25034e-006
-3.13570e-001 1.29364e+000 7.25951e-003 1.06488e-006
-3.13570e-001 1.29364e+000 2.32304e-001 3.00599e-007

33/40

Mtodo de Newton


Est basado en el mtodo de Newton para resolver problemas de optimizacin


sin condiciones, como lo es
1
f
.x/
D
minimizar
x 2Rn
2

m
i

1
ri2.x/ D kr.x/k22:
2

i D1

Si la funcin es continua y tiene derivadas parciales hasta segundo orden


continuas, el mtodo se basa en el modelo de f .x/ del desarrollo de Taylor
hasta segundo orden de derivadas:

1 T 2
3
f .x C p/ D f .x/ C rf .x/ p C p r f .x/ p C O kpk :
2
T

34/40

En esta ltima expresin,




@f .x/ @f .x/
@f .x/
rf .x/ D
:::
@x1
@x2
@xn

T
;

es el vector gradiente, y
@2f .x/
6 @2x1
6
6 2
6 @ f .x/
6
2
r f .x/ D 6 @x2@x1
6 :
6 ::
6
4 @2f .x/
@xn@x1
2

3
@2f .x/
@2f .x/

@x1@x2
@x1@xn 7
7
7
@2f .x/ 7
@2f .x/
7

2
@ x2
@x2@xn 7
:::
::: 7
:::
7
7
2
2
@ f .x/
@ f .x/ 5

@xn@x2
@ 2 xn

la matriz Hessiana: La matriz Jacobiana del vector gradiente.

En el caso de la funcin f .x/ D 21 kr.x/k22,


rf .x/ D
r 2f .x/ D

m
X

j D1
m
X
j D1

rj .x/rrj .x/ D J .x/T r.x/;


rrj .x/rrj .x/T C

D J .x/T J .x/ C

35/40

m
X

m
X

rj .x/r 2rj .x/

j D1

rj .x/r 2rj .x/:

j D1


La condicin necesaria
de
ptimo,
rf
.x
/ D 0, despreciando

3
el trmino O kpk , conduce al sistema lineal

rf .x/ C r 2f .x/p D 0
cuya solucin es la direccin de movimiento hacia el ptimo.

36/40

El algoritmo es este:
I

Definir un x 0 y condiciones de partida

II Resolver el sistema lineal rf .x/ C r 2 f .x/ .x


III Si x

xk / D 0

x k < T ol , parar: el problema est resuelto;


si no, hacer k D k C 1, x k D x e ir al paso II

Lo costoso de este procedimiento es calcular la matriz Hessiana y resolver el


sistema del Paso II.


El mtodo de Gauss-Newton se puede ver como una modificacin del de


Newton con la simplificacin r 2f .x/  J T J y rf .x/ D J T r.x/:

37/40

Resolver por Newton el ajuste no lineal de e x1Ctx2 sera as. La complicacin de


obtener la matriz Hessiana en considerable.
function LSQ_New_1(fx,x)
% Mnimos cuadrados Newton
tol=sqrt(eps); p=ones(2,1); [f grad Hess] = fx(x);
while abs(grad*p)>tol
p=-Hess\grad;
x=x+p;
[f grad Hess] = fx(x);
fprintf( %15.10e %15.10e %15.10e\n,x,f);
end
end

function [f g H] = Newt_Ls(x)
f=(exp(x(1)-2*x(2))-0.5)^2+(exp(x(1)-x(2))-1.0)^2+(exp(x(1))-2.0)^2+(exp(x(1)+x(2))-4.0)^2;
g = [2*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))+2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1))-2)*exp(x(1))+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2));...
-4*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))-2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2))];
H=[2*exp(x(1)-2*x(2))^2+2*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))+2*exp(x(1)-x(2))^2+...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1))^2+2*(exp(x(1))-2)*exp(x(1))+...
2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2)), ... % Coeficiente (1,1)
-4*exp(x(1)-2*x(2))^2-4*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))-2*exp(x(1)-x(2))^2-...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2)); %Coef (1,2)
-4*exp(x(1)-2*x(2))^2-4*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))-2*exp(x(1)-x(2))^2-...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2)), ... %Coef (2,1)
8*exp(x(1)-2*x(2))^2+8*(exp(x(1)-2*x(2))-1/2)*exp(x(1)-2*x(2))+2*exp(x(1)-x(2))^2+ ...
2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+2*exp(x(1)+x(2))^2+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2))]; %Coef (2,1)
end

38/40

Se puede usar el clculo de la Hessiana por diferencias finitas: : :

function LSQ_New_diff(fx,x)
% Mnimos cuadrados Newton
global h
tol=sqrt(eps); p=ones(2,1); h=sqrt(eps); [f grad Hess]=fx(x);
while abs(grad*p)>tol
p=-Hess\grad;
x=x+p;
[f grad Hess] = fx(x);
fprintf( %15.10e %15.10e %15.10e\n,x,f);
end
end
function [f g H] = Newt_Ls_1(x)
global h
f=(exp(x(1)-2*x(2))-0.5)^2+(exp(x(1)-x(2))-1.0)^2+(exp(x(1))-2.0)^2+(exp(x(1)+x(2))-4.0)^2;
if nargout<2, return, end
g = [2*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))+2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1))-2)*exp(x(1))+2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2));...
-4*(exp(x(1)-2*x(2))-0.5)*exp(x(1)-2*x(2))-2*(exp(x(1)-x(2))-1)*exp(x(1)-x(2))+...
2*(exp(x(1)+x(2))-4)*exp(x(1)+x(2))];
if nargout<3, return, end
x1=[x(1)+h;x(2)]; [f1 g1]=Newt_Ls_1(x1);
H(1:2,1)=(g1-g)/h;
x1=[x(1);x(2)+h]; [f1 g1]=Newt_Ls_1(x1);
H(1:2,2)=(g1-g)/h;
end

39/40

function LSQ_New_dif_1(x)
% Mnimos cuadrados Newton
global h
tol=sqrt(eps); h=sqrt(eps)/norm(x); p=ones(2,1);
while abs(grad(x)*p)>tol
p=-Hess(x)\grad(x);
x=x+p;
fprintf( %15.10e %15.10e %15.10e\n,x,fx(x));
end
end

Y ms:

function f=fx(x)
f=(exp(x(1)-2*x(2))-0.5)^2+(exp(x(1)-x(2))-1.0)^2+...
(exp(x(1))-2.0)^2+(exp(x(1)+x(2))-4.0)^2;
end
function g=grad(x)
global h
g=[(fx([x(1)+h,x(2)])-fx([x(1)-h,x(2)]))/(2*h);
(fx([x(1),x(2)+h])-fx([x(1),x(2)-h]))/(2*h)];
end
function H=Hess(x)
global h
H(1:2,1)=(grad([x(1)+h;x(2)])-grad(x))/h;
H(1:2,2)=(grad([x(1);x(2)+h])-grad(x))/h;
end

>> LSQ_New_1(@Newt_Ls,[1;1])
8.1564455682e-001 8.6820863544e-001 2.0026578055e+000
7.3026817718e-001 7.4718705926e-001 1.5293213074e-001
6.9788477856e-001 6.9905288119e-001 1.9358782157e-003
6.9322068406e-001 6.9323478800e-001 4.3977229201e-007
6.9314719772e-001 6.9314720089e-001 2.3813689172e-014
>> LSQ_New_diff(@Newt_Ls_1,[1;1])
8.1564455807e-001 8.6820863891e-001 2.0026578782e+000
7.3026818132e-001 7.4718706243e-001 1.5293215651e-001
6.9788478088e-001 6.9905288265e-001 1.9358796093e-003
6.9322068433e-001 6.9323478806e-001 4.3977415379e-007
6.9314719772e-001 6.9314720089e-001 2.3817330783e-014
>> LSQ_New_dif_1([1;1])
8.4944340872e-01 8.7730513107e-01 2.7563553502e+00
7.5875713784e-01 6.8293863250e-01 7.8534508448e-02
6.9908967430e-01 6.9134017676e-01 5.0043933563e-04
6.9320781375e-01 6.9312744209e-01 5.0431466984e-08
6.9314718697e-01 6.9314717816e-01 5.3057457678e-16

Por ltimo, usando la potencia del clculo simblico de Matlab se puede


conseguir algo como esto:
function LSQ_New_sym_2(x1,y1)
% Mnimos cuadrados Newton
syms x y
tol=sqrt(eps);
f(x,y)=(exp(x-2*y)-0.5)^2+(exp(x-y)-1.0)^2+(exp(x)-2.0)^2+(exp(x+y)-4.0)^2;
gra=gradient(f,[x y]); hes=hessian(f,[x y]);
vec=-hes\gra;
while abs(gra(x1,y1)*[x1;y1])>tol
xx=double(vec(x1,y1));
x1=x1+xx(1); y1=y1+xx(2);
fprintf( %15.10e %15.10e %15.10e\n,x1,y1,double(f(x1,y1)));
end
end

>> LSQ_New_sym_2(1,1)
8.1564455682e-01 8.6820863544e-01
7.3026817718e-01 7.4718705926e-01
6.9788477856e-01 6.9905288119e-01
6.9322068406e-01 6.9323478800e-01
6.9314719772e-01 6.9314720089e-01
6.9314718056e-01 6.9314718056e-01
>>

2.0026578055e+00
1.5293213074e-01
1.9358782157e-03
4.3977229201e-07
2.3813689162e-14
7.2279874085e-29

Seguro que se puede estructurar un programa bastante mejor.

40/40

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Valores y vectores propios


Valores singulares

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_valvec_2016.pdf

1/106

ndice

2/106

Cuestiones tericas de valores y vectores propios

Localizacin de valores propios

Obtencin numrica de valores y vectores propios












Mtodo de Jacobi
Mtodo de la iteracin de potencia
Mtodo de la iteracin inversa
Iteracin mediante cociente de Rayleigh
Deflacin
Iteracin simultnea
Iteracin QR
Subespacios de Krylov
Comparacin de los mtodos

Clculo de valores singulares

3/106

Los valores y vectores propios adquieren una relevancia destacada para analizar
asuntos con oscilacin y resonancia. Su conocimiento es bsico en:


Sistemas elctricos de corriente alterna.

Modos de vibracin natural de estructuras.

Instrumentos musicales.

Mecnica cuntica.

Lasers.

Resonancia Magntica Nuclear (NMR).

:::

4/106

Su clculo e interpretacin es esencial para el anlisis de sistemas de generacin,


transporte y demanda de energa elctrica.
Frequency range 1

Frequency range 2

electromagnetic

Phenomena

electromechanical

SVC

Frequency
Interconnected
System

1 MHz

1 kHz

1 Hz

1 s

1 ms

1s

1 s
M
Turbine Syngovernor chronous
Torsion maschine
AVR

On-load Current
Breaker
tap
transformer Arc
changer Saturation restriking
Protective
system

External system
Line
Cable
HVDC
FACTS

Converter
VAR-Load
VAR-Admittance
Motor
Load torque

100 s

Travelling Transient
wave
phenomena,
phenomena Switching
overvoltages

10 ms

1 mHz

1 min

1s

Short-circuit Transient
phenomena stability
SSRphenomena

Harmonics,
Transformer-saturation

1h

100 s
Control
phenomena
with steam
generators

Processtimes
Calculation
time steps

5/106
From the time domain subprogram of

NETOMAC

NETOMAC
eigenvalue
calculation mode

Systems working point at t0, t>t0

Augmented state equations:

Linear
model
of a
dynamic
power
system

Axx

Axz

bx

Azx

Azz

bz

Sparsitybased
storage
and
matrix
computation

State equation:
A

(Dimentioned maximum
800 dynamic order)

Eigensystem
solution

Network in RST
Admittances by differential
equations non-linearities

Single line network


Complex admittances
only fundamental frequency

Time range
Instantaneous values
ns...s...ms...s

Time range
Quasi steady-state values
s...min

Electromagnetic and
electromechanical
phenomena, complete
solution

Electromechanical
phenomena,
fundamental
frequency

only
Loadflow

Power method
of implicit
inverse iteration

QR transformation

Simulation Models for System Components, Machines, Controllers and Control Units

Loadflow
Initial conditions

Possible ways of simulation

Eigenvalues and associated eigenvectors

Loadflow
Operating point

Overview
of
modes

System components
Linearization
Coupling

Activities of
different modes
on one device

Activities of
one mode on
different devices

Loadflow for special


requirements, e.g.
homogeneous multiconductor system

Transfer function
based dominant
pole method

U1

U2

Frequency range
all system-variables

Eigenvalue analysis

Small-signal
characteristics
Network, machines
and control

Systemoscillation
and -damping,
Netreduction,
Controller layout

Eigenvalue
analysis
&
transfer
function
analysis

Legend:
R: Right eigenvector (observability information)
L: Left eigenvector (controllability information)
P: Participation factors
U: Transfer function residues
U1: Mode activities in unit impulse response
U2: Mode activities in unit step response

y(t):
Unit impulse/step
response

G(jw):
Frequency
response

SIGMA
OMEGA
(rad/sec)

SIGMA
OMEGA
(RAD/SEC)
(HZ)
-0,087
4,566

COMPLEX S-PLANE

ZETA
(%)

17 out of 206 solved modes are selected


all the selected modes are inside the displayed range

FREQ
(Hz)

ELECTRIC MACHINES

14

-4,053

12,991

-29,8

2,060

NORMALIZED
RIGHT
EIGENVECTOR
(MODE
SHAPE)
NORMALIZED
RIGHT
EIGENVECTOR
(MODE
SHAPE)

NORMALIZED RIGHT EIGENVECTOR (MODE SHAPE)

MODE DISTRIBUTION ON COMPLEX S-PLANE


SELECTED MODES
MACHINE SWING MODES

Hz

13

SYNCHRONOUS MACHINES
18 items
COMPONENT NAME

ZETA

SIGMA
OMEGA
SIGMA
OMEGA
(RAD/SEC)
(RAD/SEC)
(HZ)
(HZ)
-0,087
4,566
-0,087
4,566

FACO
(%)
-1,9

ZETA
ZETA

FREQUENCY RESPONSE OF TRANSFER FUNCTION

FACO
FACO
(%)
(%)
0(s)=

-1,217

11,754

-10,3

1,071

-2,520

11,450

-21,5

1,022

12

-0,053

10,022

-0,5

1,595

-1,110

9,072

-11,2

1,571

COMPONENT
NAME
COMPONENT
NAME

-13,6

1,494

-12,6

1,490

-1,992

9,233

-21,1

1,469

-1,285

9,388

-1,104

-0,900

9,359

9,146

-9,0

1,456

10

10

1 1 DACOLOUA
2X150
MVA
DACOLOUA
2X150
MVA

2 2 MILLOA
2x2x
1818
MVA
MILLOA
MVA

-2,079

8,942

LOSQUI 2X 18+14+Adong

TEHUSEQUEL+JALA+BANELVOL

FALALFAL 2X95 MVA

TOLIZASAV, ZALSAV 10+3X32

PELRA 5X76 MVA

NASVENTA AT 18 KV

1
1,407

-1,207

8,700

-14,5

-0,550

8,440

NASVENTA AT 19.2 KV

10

1,399

-6,6

1,343

13

-1,137

7,062

-14,3

1,251

-0,503

7,033

-7,1

1,119

6,310

-6,1

1,004

5,718

-4,9

0,910

17

-0,007

4,566

-1,09

0,727

0,19
0,19

CAREN 2X58.8 MVA

0,45
0,45

NASVENTA
8 8 NASVENTA
ATAT
1818
KVKV

16

0,43
0,43

NASVENTA
19.2
9 9 NASVENTA
ATAT
19.2
KVKV

0,18
0,18

CAREN
2X58.8
MVA
1010CAREN
2X58.8
MVA
8

11

ENCHEPHEHU 2X283 MVA

ENCHEPHEHU
2X283
MVA
1111ENCHEPHEHU
2X283
MVA

0,06
0,06

BUNCOL
2X240
MVA
1212BUNCOL
2X240
MVA

0,05
0,05

13

CURAMACHI 2X53 MVA

CURAMACHI
2X53
MVA
1313CURAMACHI
2X53
MVA

0,04
0,04

14

COANTU 2X160 MVA

12

2
-0,383

-0,200

0,16
0,16

0,15
0,15

PELRA
5X76
MVA
7 7 PELRA
5X76
MVA
17

BUNCOL 2X240 MVA

0,5

15

0,14
0,14

5 5 FALALFAL
2X95
MVA
FALALFAL
2X95
MVA

6 6 TOLIZASAV,
ZALSAV
10+3X32
TOLIZASAV,
ZALSAV
10+3X32

18

14

16

COANTU
2X160
MVA
1414COANTU
2X160
MVA

0,06
0,06

15

ROTOREL 4X105 MVA

ROTOREL
4X105
MVA
1515ROTOREL
4X105
MVA

0,06
0,06

16

NICOREA 5X21.5 MVA

NICOREA
5X21.5
MVA
1616NICOREA
5X21.5
MVA

0,22
0,22

MAGNITUDE SCALE : 6.31 (x18-4)

-6

-5

-4

-3

-2

-1

17

QUEPAN 500 MVA

QUEPAN
500
MVA
1717QUEPAN
500
MVA

18

TILLARNUCA 2X68 MVA

TILLARNUCA
2X68
MVA
1818TILLARNUCA
2X68
MVA

0,37
0,37

0,56
0,56

1
0 0

12

0,91 Hz

0,37
0,37

3 3 LOSQUI
2X2X
18+14+Adong
LOSQUI
18+14+Adong

4 4 TEHUSEQUEL+JALA+BANELVOL
TEHUSEQUEL+JALA+BANELVOL

6
-22,9

11

pusMVA

1,00
1,00

0,63
0,63

12

ROTOR SPEED

NASVENTA AT 18 KV

MECHANICAL TORQUE

NYQUIST DIAGRAMM

DACOLOUA 2X150 MVA

MILLOA 2x 18 MVA

0,63
0,63

1,5
6

NASVENTA AT 16 KV
PV

V(s)

SYNCHRONOUS
MACHINES
SYNCHRONOUS
MACHINES
1818
items
items

11

Y(s)

-1,9
-1,9

ELECTRIC
MACHINES
ELECTRIC
MACHINES

MODE OBSERVABILITY OF DEVIATION VARIABLES


MOTOR SPEED
PY
ParLub the dynamic system and
observe the mode different devices.

2
2

Mode distribution
(Eigenvalues)

Phasor-Diagram

0,10,1

0,20,2

0,30,3

Bar diagram

0,40,4

0,50,5

0,60,6

0,70,7

0,80,8

0,90,9

1 1

Nyquist-Diagram

6/106

Caso histrico


Hundimiento del Puente Tacoma 1, Washington, EE.UU.

Hundimiento del Puente Tacoma 2, Washington, EE.UU.

Hoy

Aspectos tericos y algunas propiedades de


los valores y vectores propios

7/106

En general, los vectores propios de un operador matemtico lineal T 1 son los


vectores no nulos que cuando son transformados por el operador dan lugar a un
mltiplo escalar de s mismos2: T .v/ D v. Ese escalar, , se denomina valor
propio.

La formulacin de su clculo en el caso habitual de que ese operador lo


caracterice una matriz,
Dada una matriz A 2 Cnn, calcular un escalar  y un x 0 tales que
Ax D x:
El escalar  es un valor propio de A y x su correspondiente vector propio.
1

Transformacin lineal u aplicacin lineal de un espacio vectorial V en si mismo. Ej. la ecuacin de Schrdinger
E D E E.
2
No cambian su direccin.

Para que exista una solucin distinta de la trivial, x D 0, el valor propio 


deber ser raz del polinomio caracterstico de grado n asociado a A, es decir,

Lo que es igual a n


g1n

det.A

I/ D 0:

C g 2 n

   C . 1/ngn D 0:

Igual que cualquier matriz tiene asociado un polinomio caracterstico, cualquier


polinomio tiene asociado una matriz compaera. La matriz compaera de un
polinomio mnico p.t / D c0 C c1t C    C cn 1t n 1 C t n es
20 0 : : : 0 c 3
C.p/ D

610
4:
::

0
1
::
:

:::
:::
::
:

0
0
::
:

0 0 ::: 1

8/106

c1
c2
::
:

cn

7
5

El polinomio mnimo q.t / de la matriz A es el polinomio mnico nico de grado


mnimo tal que q.A/ D 0.

9/106

Los vectores propios de A pertenecen al subespacio nulo de Ax I,


ker.Ax I/, y no estn unvocamente determinados: Si v es un vector
propio, v tambin lo es.

Siempre existen n valores propios de A 2 Cnn, reales o complejos. No siempre


existen n vectores propios.

La multiplicidad algebraica del valor propio  de A es la multiplicidad de la raz


correspondiente del polinomio caracterstico asociado a A.

La multiplicidad geomtrica de  es el nmero de vectores propios linealmente


independientes que se corresponden con .
Teorema La multiplicidad geomtrica de un valor propio es menor o igual que su
multiplicidad algebraica.

Por ejemplo, si A D I,  D 1 es un valor propio con multiplicidad algebraica y


geomtrica n. El polinomio caracterstico de A es p.z/ D .z 1/n y e i 2 Cn,
i D 1; : : : ; n, sus vectores propios.

Si el valor propio  tiene una multiplicidad geomtrica menor que la algebraica,


se dice defectuoso. Se dice que una matriz es defectuosa si tiene al menos un
valor propio defectuoso. La matriz
#
"
210
A D 021
002

10/106

tiene un valor propio de multiplicidad algebraica 3 y multiplicidad geomtrica 1.


>> A=[2 1 0;0 2 1;0 0 2];
>> [V D]=eig(A)
V =
1.0000
-1.0000
1.0000
0
0.0000
-0.0000
0
0
0.0000
D =
2
0
0
0
2
0
0
0
2

Si una matriz A 2 Cnn no es defectuosa dispone de n vectores propios


linealmente independientes.

Si V 2 Cnn tiene como vectores columna los n vectores propios de A y


D D diag.1; : : : ; n/, entonces Avi D i vi , i D 1; : : : ; n, es equivalente a
AV D V D. Si A no es defectuosa,
A D V DV

que es la descomposicin en valores propios de A: o A diagonalizada por V .


Definicin Una matriz A se dice diagonalizable por semejanza si es semejante a una
matriz diagonal.

Teorema Una matriz A 2 Cnn es diagonalizable si y slo si tiene n vectores propios


linealmente independientes.

11/106

12/106

Definicin Dos matrices A; B 2 Cnn se dicen semejantes si existe una matriz inver-

tible P tal que A D P 1 BP.

Teorema Dos matrices semejantes tienen el mismo polinomio caracterstico y, por


consiguiente, los mismos valores propios.

Definicin El espectro .A/ de A es el conjunto de sus valores propios:


.A/ D f 2 C W det.A

I/ D 0g:

Definicin El radio espectral, .A/, de la matriz A es el valor mximo de los mdulos


de sus valores propios: .A/ D max.i 2.A / ji j:
Es el radio del menor crculo del plano complejo centrado en el origen que contiene todos
sus valores propios.

1:1

1:3

1:7

2:5

4:1

7:3

13:7

26:5
13/106

Al aplicrsele
a cualquier
vector
la transformacin que
representa A, ese vector
4
7KHYHFWRUV
[
[
[
DUHVKRZQLQ)LJ
7KHRWKHUYHFWRUVDUHJURZLQJ
A
;
:
:
:
;
A
3
tiende
a orientarse+RZHYHU
hacia la OLQHVHJPHQWVDUHGUDZQVKRZLQJWKHGLUHFWLRQVRIWKRVH
direccin del vector propio dominante de A.
WRRORQJWRGLVSOD\

YHFWRUV ,QIDFW WKHGLUHFWLRQVRIWKHYHFWRUVDUHZKDWZHUHDOO\ZDQWWRVHH QRWWKHYHF


 1;8 0;8 
WRUVWKHPVHOYHV 7KHOLQHVVHHPWREHDSSURDFKLQJWKHOLQHUHSUHVHQWLQJWKHHLJHQVSDFH
 Ejemplo Estudiemos la matriz A D 0;2 1;2 cuyos valores propios son
VSDQQHGE\ Y1  0RUHSUHFLVHO\ WKHDQJOHEHWZHHQWKHOLQH VXEVSDFH GHWHUPLQHGE\
4
A1k [DDQGWKHOLQH HLJHQVSDFH GHWHUPLQHGE\
2 y 2 D 1. El vector propio correspondiente
a

es
Si se multiplica
1
k!
1 .1
 Y1 JRHVWR]HURDV

A y sus potencias por el vector x D

0;5
1

el resultado es el de la figura.

x2

A4 x
Ax
x

A3x

A2 x
1

Espacio de

v1

v1
1

10

x1

'*(63&  'LUHFWLRQVGHWHUPLQHGE\ [ A[ A2 [; : : : ; A7 [


Si ese vector est en la direccin de alguno de los vectores propios de A, se expande o contrae por un factor
que determina el correspondiente valor propio
3

!k

14/106

Otros ejemplos
 Ejemplo del apndice "Definiciones, : : :


 
 
10
1
0
Si A D
, 1 D 1; x 1 D
; 2 D 2 y x 2 D
:
02
0
1



 
 
1;5 0;5
1
1
Si A D
, 1 D 2; x 1 D
; 2 D 1 y x 2 D
:
0;5 1;5
1
1
Si A D


 
01
1
, 1 D i; x 1 D
; 2 D
10
i

 
p
i
i y x2 D
, donde i D
1.
1

15/106

Teorema La suma de los valores propios de A es igual a su traza:


1 C 2 C    C n D

n
X

ai i .

i D1

Teorema El producto de los valores propios de A es igual a su determinante.

Teorema Los valores propios de una matriz triangular son los coeficientes de su diagonal
principal.

Teorema Una matriz es singular si y slo si tiene un valor propio igual a 0.

Teorema Si los valores propios de una matriz A son i , 1  i  n, los de A

son i

; 1  i  n. Sus vectores propios son idnticos.

16/106

Teorema Los valores propios de las potencias de A son las potencias de los de A; los
vectores propios son los mismos.

I Demostracin. Si consideramos la definicin,


Ax D xI A 2 x D Ax D 2 xI    A n x D n x
S 1 AS D I S 1 AS S 1 AS D 2 ) S 1 A 2 S D 2 :
Las potencias negativas tambin:
Ax D xI A 1 Ax D A 1 x ) A 1 x D  1 x:

Corolario Los valores propios de A

son los recprocos de los de A.

17/106

Los valores propios de multiplicidad m > 1 tienen un subespacio propio


asociado de dimensin  m. Ese subespacio es invariante por lo que:



Todos los vectores de un subespacio propio son vectores propios.

Los subespacios propios correspondientes a valores propios distintos slo


tienen en comn el vector nulo.

El problema de calcular los valores y vectores propios es en general un


problema no lineal en los valores propios  y lineal en los vectores x.

El clculo de los valores propios por las races del polinomio caracterstico
no es aconsejable por:



El trabajo de determinar los coeficientes y races del polinomio.


La sensibilidad a errores de redondeo de los coeficientes del polinomio
(recordemos los polinomios de Wilkinson).

 
1
Ejemplo Consideremos la matriz A D
; donde  es cualquier nmero
1
p
menor que maq:
K .



Los valores propios exactos de A son 1 C  y 1 .


El clculo mediante el polinomio caracterstico hara
det.A

I/ D 2

2 C .1

 2 / D 2

2 C 1I

las races seran (valores propios calculados) 1 y 1.

18/106

Valores propios de matrices destacadas

19/106

Ortogonales

Recordemos que estas matrices son aquellas que tienen


como inversa su traspuesta: QQT D I.


Ejemplo

Todos los valores propios de una matriz ortogonal tienen mdulo unidad.

p

  
  p
2=2
2=2
01
1 0
p
p
:
;
;
10
0 1
2=2 2=2

Hermticas

Son aquellas matrices iguales a su traspuesta conjugada:


A D AH :
Son una generalizacin de las matrices simtricas al campo complejo.


Ejemplo La matriz

1
1


1Ci
:
i 2




Si A es hermtica, el producto x H Ax es un nmero real.


Los valores propios de una matriz hermtica, en consecuencia, son
nmeros reales. En efecto
Ax D xI

x Ax D x

x D  jjxjj2

En una matriz hermtica los vectores propios correspondientes a dos


valores propios distintos son ortogonales entre s.
En efecto,
)

H
H H
x 2 A x 1 D 1 x 2 x 1
Ax 1 D 1x 1
H
.

/x
1
2
2 x 1 D 0:
Ax 2 D 2x 2
x H A H x 1 D 2 x H x 1
2

Como los valores propios 1 y 2 son distintos,


xH
2 x 1 D 0:
Si los vectores propios se normalizan, x H x D 1, la matriz de vectores
propios se convierte en una matriz ortogonal.

20/106

Unitarias

Son matrices cuya inversa es su compleja conjugada:


U H U D U U H D I:

Ejemplo La matriz

Una matriz unitaria no modifica ni los ngulos ni las normas:

p
 p

i p2=2 p2=2
:
2=2 i 2=2
 Las matrices unitarias son una extensin de las matrices ortogonales al
campo complejo. Todos los valores propios tienen mdulo unidad.
.U x/H .U y/ D x H U H U y D x H y
si y D x; jjU xjj2 D jjxjj2:

Normales


Son las matrices que cumplen que AAH D AH A:

2
3
120
Ejemplo 40 1 25 ;
201


i 0
:
0 3 5i

21/106

22/106

Triangularizacin de Schur

Issai Schur, Alemania, 1875-1941.

Teorema Triangularizacin de Schur Para cualquier A 2 Cnn existe una matriz unitaria
U tal que

U H AU D T ,
donde T es una matriz triangular superior. Los valores propios de A son entonces los
coeficientes de la diagonal principal de T .

Teorema Para cualquier matriz hermtica A 2 Cnn existe una matriz unitaria U tal
que

donde D es una matriz diagonal.

U H AU D D,

1. Los valores propios de A son nmeros reales.


2. Se pueden obtener vectores propios de A que sean ortonormales.

23/106

Corolario Si A 2 Rnn es simtrica, existe una matriz ortogonal Q tal que


matriz sta diagonal.

QT AQ D D,

Teorema Los valores propios de una matriz hermtica definida positiva son todos positivos.
Recprocamente, si todos los valores propios de una matriz son positivos, debe ser definida
positiva.

24/106

Teorema Forma cannica de Jordan Para una matriz A 2 Cnn existe una matriz T

regular tal que

6
AT D J D 6
4

J1


0

:::

0


Jn

7
7;
5

2
3
i 1
6 i 1  0 7
Ji D 6
 7
4
5
0  1
i
es una matriz de Jordan y los i son los valores propios de A.
donde

Por Marie Ennemond Camille Jordan, Francia, 1838-1922.

25/106

Tabla que resume las posibles transformaciones por semejanza.


A

Valores propios distintos


Simtrica real
Hermtica compleja
Normal
Real cualquiera
Cualquiera
Cualquiera

Regular
Ortogonal
Unitaria
Unitaria
Ortogonal
Unitaria
Regular

BDT

AT

Diagonal
Diagonal real
Diagonal real
Diagonal
Triangular en bloques (real)
Triangular superior (Schur)
Casi diagonal (Jordan)

26/106

Localizacin de valores propios




Si no se necesita calcular el valor numrico exacto de los valores propios, sino


conocer grosso modo dnde se encuentran en el plano complejo, existen varias
formas de hacerlo.

La ms simple surge de tomar normas en la expresin Av D v:


jjjjvjj D jjvjj D jjAvjj  jjAjjjjvjj ) jj  jjAjj;
para cualquier norma matricial inducida por una norma vectorial. Por
consiguiente:


Los valores propios de una matriz se localizan en el plano complejo, dentro


del circulo centrado en el origen de radio jjAjj.

27/106

Semyon Aranovich Gersgorin,


Rusia, 1901-1933.

Teorema Gersgorin Los valores propios de una matriz A 2 Cnn se encuentran en

la unin de los n discos de Gerschgorin, cada uno de los cuales est centrado en akk ,
k D 1; : : : ; n, y tiene de radio
n
X
jakj j
rk D
j D1

j k

I Demostracin. Sea  un valor propio de A y x su vector propio asociado. De Ax D x y .I


A/x D 0 se tiene que
n
X
. akk /xk D
akj xj ;
k D 1; : : : ; n;
j D1

j k

donde xk es el componente k-simo del vector x.


Si xi es el coeficiente de x ms grande en valor absoluto, como jxj j=jxi j  1 para j i, se tiene que
j

ai i j 

n
X
j D1

j i

Luego  est contenido en el disco f W j

jxj j X

jaij j:
jxi j
n

jaij j

ai i j  ri g.

j D1

j i

28/106

El siguiente programa de Matlab calcula los crculos o discos de Gerschgorin y


los dibuja.
function C = Gershgoring(A)
%
% Se dibujan los crculos de Gerschgorin de la matriz A.
[m n] = size(A);
d = diag(A); cx = real(d); cy = imag(d);
B = A - diag(d);
r = sum(abs(B));
% Suma filas de A sin diagonal
C = [cx cy r(:)];
t = 0:pi/100:2*pi; c = cos(t); s = sin(t);
[v d] = eig(A);
% eig calcula los valores propios de A
d = diag(d);
% En d valores propios
u1 = real(d); v1 = imag(d);
hold on, grid on, axis equal
xlabel(Re), ylabel(Im)
h1_line = plot(u1,v1,or);
set(h1_line,LineWidth,1.5)
for i=1:n
% Se dibujan los crculos de Gerscgorin
x = zeros(1,length(t)); y = zeros(1,length(t));
x = cx(i)+r(i)*c; y = cy(i)+r(i)*s;
h2_line = plot(x,y);
set(h2_line,LineWidth,1.2)
end
hold off
title(Crculos de Gerschgorin y valores propios de la matriz)
end

29/106

Ejemplo Calcular los discos de Gerschgorin de la matriz


2
3
123
A D 43 4 95 :
111

Los radios de los discos son

Los valores propios son: 7;3067;

r1 D 5
r2 D 12
r3 D 2:
0;6533 C 0;3473i y

0;6533

0;3473i

30/106

Con el programa anterior, se obtiene lo siguiente.


Crculos de Gershgorin y valores propios de la matriz
10

Im

10
10

5
Re

10

15

31/106

Los grficos de los discos de Gerschgorin de otras matrices curiosas se pueden


ver en esta otra grfica.
gersh(gallery(lesp,12))

gersh(gallery(hanowa,10))

20
5
10

10
5
20
40

30

20

10

gersh(gallery(ipjfact,6,1))

gersh(gallery(smoke,16,1))

0.5
2
1
0

0
1
2

0.5
0.2

0.2

0.4

0.6

0.8

32/106

ndice


Introduccin terica

Localizacin de valores propios

Obtencin numrica

Mtodo de Jacobi

Mtodo de la iteracin de potencia

Mtodo de la iteracin inversa

Iteracin mediante cociente de Rayleigh

Deflacin

Iteracin simultnea

Iteracin QR

Subespacios de Krylov

Clculo de valores singulares

33/106

Obtencin numrica
Mtodo de Jacobi

Carl Gustav Jacobi, Alemania


(Prusia), 1804-1851.

Es un mtodo formulado en 1846 para el clculo de los valores y vectores


propios de una matriz simtrica o compleja hermtica.

Utiliza transformaciones por semejanza basadas en rotaciones, idnticas a las de


Givens, para hacer cero pares de elementos simtricamente dispuestos respecto
a la diagonal principal.

Partiendo de A 0 D A, cada iteracin conforma una transformacin

34/106

A kC1 D J Tk A k J k ;
h i
c s
donde cada matriz J k D s c se calcula de tal manera que
h ih
i h i h c 2a 2csa C s2a
i
apq .c 2 s 2 / C cs.app aqq /
pp
pq
qq
c s
app apq
c s
s c
apq aqq
s c D a .c 2 s 2 / C cs.a
a / c 2 a C 2csa C s 2 a
pq

pp

qq

qq

pq

pp

sea diagonal.


Para lograrlo, apq .c 2

s 2/ C cs.app
D

aqq / ha de ser cero. Haciendo

aqq app
2apq

y t D s=c

se obtiene la ecuacin de segundo grado


t 2 C 2 t
en la tangente del ngulo de rotacin, t,

1D0

35/106

De las dos posibles races,


tD

1 C  2;

se escoge la ms pequea para que j j  =4.




p
Luego se obtienen c D 1= 1 C t 2 y s D c  t.

En Matlab:

function J=Jac_Rot(A,b,d)
% Clculo de la rotacin de Jacobi para anular un coef. de A de coordenadas (b,d)
if A(b,d)~=0
tau=(A(d,d)-A(b,b))/2/A(b,d);
if tau>=0
t=1/(tau+sqrt(1+tau^2));
else t=-1/(-tau+sqrt(1+tau^2)); end
c=1/sqrt(1+t^2);
s=c*t;
else
c=1; s=0;
end
J=[c s; -s c];
% Igual que Givens
end

36/106

Mediante unos barridos que apliquen sistemticamente estas transformaciones


a todos los coeficientes que no estn en la diagonal principal de la matriz que
tengan un valor mayor que una tolerancia se conseguir ir convirtiendo la matriz
en una diagonal.

La convergencia del proceso es cuadrtica.

El proceso termina cuando, por ejemplo,

v
u n n
uX X
aij2
off .A/ D u
u
t
i D1 j D1
j i

> t ol  kAkF :

37/106

2
3
102
Ejemplo Sea A 0 D 40 2 15. Apliqumosle el mtodo de Jacobi.
211
Anulemos para empezar los coeficientes .1; 3/ y .3; 1/. Con ese fin, definamos
la rotacin
2
3
y hagamos

0;707 0
J0 D 4 0 1
0;707 0
2

0;707
0 5
0;707

3
3 0;707 0
A 1 D J T0 A 0 J 0 D 40;707 2 0;7075 :
0 0;707
1

38/106

A continuacin, anulemos .1; 2/ y .2; 1/ mediante la rotacin


2

y hagamos

0;888
J 1 D 40;460
0

3
0;460 0
0;888 05
0
1

2
3
3;366 0 0;325
A 2 D J T1 A 1 J 1 D 4 0 1;634 0;6285 :
0;325 0;628
1

Luego anulamos el .3; 2/ y el .2; 3/ usando la rotacin


2

y haciendo

1 0
J 2 D 40 0;975
0 0;226

3
0
0;2265
0;975

3
3;366 0;0735 0;317
0 5:
A 3 D J T2 A 2 J 2 D 40;0735 1;780
0;317
0
1;145
2

39/106

Comenzando un nuevo barrido, hagamos cero los coeficientes .1; 3/ y .3; 1/.
Usaremos la rotacin
2
3
y luego

0;998 0
J3 D 4 0 1
0;070 0
2

0;070
0 5
0;998

3
3;388 0;0733
0
A 4 D J T3 A 3 J 3 D 40;0733 1;780 0;0051 5 :
0 0;0051 1;167

El proceso continuara hasta llegar a conseguir una aproximacin a los valores


propios deseados.

40/106

El programa para poder calcular una rotacin de Jacobi 2  2 y aplicarla luego a


la matriz original completa, pre y post multiplicndola, es este.
function J=jacrot(A,i,j)
% Transf. de Jacobi del coeficiente (i,j) y (j,i) de A
n=length(A);
J1=Jac_Rot(A,i,j); J=eye(n);
% Calcula qu rotacin 2x2 elemental aplicar
J([i j],[i j])=J1([1 2],[1 2]);
% Se adapta a la propia A
end
function J=Jac_Rot(A,b,d)
% Clculo de rotacin de Jacobi 2x2 en la matriz A.
if A(b,d)~=0
tau=(A(d,d)-A(b,b))/2/A(b,d);
if tau>=0
t=1/(tau+sqrt(1+tau^2));
else t=-1/(-tau+sqrt(1+tau^2)); end
c=1/sqrt(1+t^2);
s=c*t;
else
c=1; s=0;
end
J=[c s; -s c];
% Igual que Givens
end

Ejemplo con Matlab

>> A=rand(4);
>> A=A+A
A =
1.7818
1.1086
1.3615
0.3352
1.1086
0.5150
1.0842
0.5054
1.3615
1.0842
1.8585
0.9660
0.3352
0.5054
0.9660
0.9466
>> % Anulemos el coeficiente (1,2)
>> J=jacrot(A,1,2); A=J*A*J
A =
2.4252
0.0000
1.7218
0.5436
0.0000
-0.1284
0.2544
0.2688
1.7218
0.2544
1.8585
0.9660
0.5436
0.2688
0.9660
0.9466
>> % Ahora el (1,3)
>> J=jacrot(A,1,3); A=J*A*J
A =
3.8868
0.1646
0.0000
1.0396
0.1646
-0.1284
0.1939
0.2688
0.0000
0.1939
0.3969
0.3847
1.0396
0.2688
0.3847
0.9466
>> % El (1,2) se ha hecho distinto de cero; el (1,4)
>> J=jacrot(A,1,4); A=J*A*J
A =
4.2172
0.2383
0.1165
0
0.2383
-0.1284
0.1939
0.2063
0.1165
0.1939
0.3969
0.3666
-0.0000
0.2063
0.3666
0.6161

41/106

>> % Ahora el (2,3)


>> J=jacrot(A,2,3); A=J*A*J
A =
4.2172
0.1899
0.1852
0
0.1899
-0.1922
-0.0000
0.0814
0.1852
-0.0000
0.4607
0.4127
-0.0000
0.0814
0.4127
0.6161
>> % El (2,4)
>> J=jacrot(A,2,4); A=J*A*J
A =
4.2172
0.1890
0.1852
0.0188
0.1890
-0.2003
-0.0409
-0.0000
0.1852
-0.0409
0.4607
0.4107
0.0188
0.0000
0.4107
0.6243
>> % El (3,4)
>> J=jacrot(A,3,4); A=J*A*J
A =
4.2172
0.1890
0.1312
0.1320
0.1890
-0.2003
-0.0316
-0.0260
0.1312
-0.0316
0.1237
0.0000
0.1320
-0.0260
-0.0000
0.9612
>> % Despus de un barrido el valor de off(A) se ha reducido
>> off(A)
ans =
0.2845
>> % Desde
>> of1
of1 =
3.1996
>> % Otro barrido
>> J=jacrot(A,1,2); A=J*A*J
A =
4.3202
-0.0000
0.1580
0.0270
-0.0000
-1.3369
-0.0502
0.0230
0.1580
-0.0502
-0.5132
0
0.0270
0.0230
-0.0000
-0.7836

42/106

>> J=jacrot(A,1,3); A=J*A*J


A =
4.3254
-0.0016
-0.0000
-0.0016
-1.3369
-0.0501
-0.0000
-0.0501
-0.5183
0.0270
0.0230
-0.0009
>> J=jacrot(A,1,4); A=J*A*J
A =
4.3255
-0.0015
-0.0000
-0.0015
-1.3369
-0.0501
-0.0000
-0.0501
-0.5183
0.0000
0.0230
-0.0009
>> J=jacrot(A,2,3); A=J*A*J
A =
4.3255
-0.0015
0.0001
-0.0015
-1.3400
0.0000
0.0001
-0.0000
-0.5153
0.0000
0.0229
-0.0023
>> J=jacrot(A,2,4); A=J*A*J
A =
4.3255
-0.0015
0.0001
-0.0015
-1.3409
0.0001
0.0001
0.0001
-0.5153
-0.0001
-0.0000
-0.0023
>> J=jacrot(A,3,4); A=J*A*J
A =
4.3255
-0.0015
0.0001
-0.0015
-1.3409
0.0001
0.0001
0.0001
-0.5152
-0.0001
0.0000
-0.0000
>> eig(A)
% Casi ha convergido
ans =
4.3255
-1.3409
-0.5152
-0.7829

0.0270
0.0230
-0.0009
-0.7836

-0.0000
0.0230
-0.0009
-0.7838

-0.0000
0.0229
-0.0023
-0.7838

-0.0001
0
-0.0023
-0.7828

-0.0001
0.0000
0
-0.7829
en dos barridos

43/106

Programa completo de Matlab para realizar el proceso.


function [V D it]=Jacobi_val_12_2(A)
% Clculo por Jacobi de valores y vectores propios de una MATRIZ SIMTRICA A
tol=sqrt(eps)*norm(A,fro); D=A; n=length(A); V=eye(n);
[m1 p]=max(triu(abs(D),1)); % En (p,q) elemento mayor valor no en diagonal
[~, q]=max(m1);
%
Posicin fila mximo valor no cero en L(A)
p=p(q); it=0;
%
Posicin columna mximo anterior
while off(D)>tol
% Procesos iterativo; necesita rutina off
J=Jac_Rot(D,p,q);
% Se hacen cero Dpq y Dqp (p debe ser < q)
D([p q],:)=J*D([p q],:);
D(:,[p q])=D(:,[p q])*J;
V(:,[p q])=V(:,[p q])*J;
[m1 p]=max(triu(abs(D),1));
[~, q]=max(m1);
p=p(q);
it=it+1;
end
[D I]=sort(diag(D)); V=V(:,I);
end
function a=off(A)
% Calcula off de la matriz cuadrada A: raiz cuadrada de la suma
%
de los cuadrados de los coeficientes de A no en la
%
diagonal principal; tambin sqrt(sum(sum(triu(a.^2,1)))).
n=length(A); a=0;
for k=1:n-1
a=a+sum(A(k,k+1:n).^2);
end
a=sqrt(a);
end

Para el ejemplo hecho a mano, se obtiene este resultado.


>> A=[1 0 2;0 2 1;2 1 1];
>> [v d it]=Jacobi_val_12_2(A)
v =
0.6611
-0.4973
0.5618
0.2261
0.8460
0.4828
-0.7154
-0.1922
0.6718
d =
-1.1642
1.7729
3.3914
it =
8

>> [V D]=eig(A)
V =
-0.6611
-0.4973
-0.2261
0.8460
0.7154
-0.1922
D =
-1.1642
0
0
1.7729
0
0

-0.5618
-0.4828
-0.6718

44/106

La aproximacin que hicimos iterando un


par de barridos era bastante buena.

0
0
3.3914

Para la matriz de la sesin interactiva anterior.


>> [v d it]=Jacobi_val_12_2(A)
v =
-0.3673
0.3703
-0.6272
0.9032
0.1289
-0.0831
-0.1590
-0.7022
0.2688
-0.1549
0.5944
0.7263
d =
-0.2134
0.1238
0.9569
4.2346
it =
16
>> A*v-v*diag(d)
ans =
1.0e-010 *
-0.0096
0.3780
0.0061
-0.0034
0.2318
0.0042
0.0183
0.4117
0.0067
-0.0155
0.2006
0.0032

0.5785
0.4009
0.6399
0.3086

0.2292
0.0812
-0.4444
0.3862

>> [v d]=eig(A)
v =
0.3673
-0.3703
-0.9032
-0.1289
0.1590
0.7022
0.1549
-0.5944
d =
-0.2134
0
0
0.1238
0
0
0
0
>> A*v-v*d
ans =
1.0e-014 *
-0.0222
-0.0444
-0.0056
0.0097
-0.0479
0.0180
-0.0069
-0.0083

0.6272
0.0831
-0.2688
-0.7263

0.5785
0.4009
0.6399
0.3086

0
0
0.9569
0

0
0
0
4.2346

-0.0333
-0.0305
-0.0444
-0.0111

-0.0444
-0.0444
-0.1332
0

Mtodo de la iteracin de la potencia

45/106

Su objetivo es calcular el valor propio dominante y su vector propio asociado.

Se basa en que al aplicarle a cualquier vector la transformacin que representa


una matriz A, ese vector tiende a orientarse hacia la direccin del vector propio
dominante de A. Recordad.

Partiendo de un x 0 de mdulo unidad, opera mediante una iteracin de punto


fijo de frmula de recurrencia
yk 1
:
y k 1 D Ax k 1; donde x k D
jjy k 1jj1

La magnitud jjy k 1jj1 converge al valor propio dominante, 1, y el vector x i lo


hace al vector propio dominante, v1.

Su convergencia est ligada a j2=1j: a menor valor de ella mejor convergencia.

Ejemplo Partiendo de x T0 D 0; 1 calculemos el valor propio dominante de




1;5 0;5
:
0;5 1;5
Utilicemos una pequea sesin de Matlab como esta

Los resultados (vector propio y valor propio) son estos.


k
0
1
2
3
4
5
6
7
8
9
10

x Tk
0,0
0,333
0,600
0,778
0,882
0,939
0,969
0,984
0,992
0,996
0,998

1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0

jjx k jj1
1,5000
1,6667
1,8000
1,8889
1,9412
1,9697
1,9846
1,9922
1,9961
1,9981

>> x=[0;1];
>> A=[1.5 0.5;0.5 1.5];
>> for i=1:10
v=A*x
m=max(abs(v))
x=v/m
end

46/106

Geometric Interpretation
47/106

of power iteration
El comportamientoBehavior
de las iteraciones
es el dedepicted
la figurageometrically:

1.0

0.5

0.0

x.0
x..1 x.2 x..3 ...x 4...
.......
...
.....
.......
..... ....... ....... .......
...
.
... .................... v 1
...
.
.
v 2 .....
.
....
.
. . ..
...
...
... .... .... ....
....
...
... ..... ....................
...
.
.
.
.
..
...
....
... ... .............
...
...
.... ..... ........................
...
...
.... .... ....................
...
...
.... .... .....................
...
...
.. .. ...........
... .... .......................
... ............
... ..........
....
1.0

Initial vector

El punto inicial

0.0

0.5

"

"

0.5

"

0
1
1
x0 =
=1
+1
1
1
1

1.0


 in two eigenvectors
 
contains equalcomponents
0
1
1
(shownxby D
dashed arrows)
D1
C1
0
1

Repeated multiplication by A causes compo-

es una combinacinnent
lineal
de eigenvector
los dos vectores
propios vto1 larger
y v2 .
in first
(corresponding
eigenvalue, 2) to dominate, and hence sequence
of vectors converges to that eigenvector

La multiplicacin sucesiva por A causa que el coeficiente


35 en el primer vector
propio sea el que domine, por lo que la sucesin converge a ese vector propio.

48/106

El mtodo puede fallar por diversas razones:


1. Porque haya ms de un valor propio con el mismo mdulo, en cuyo caso las
iteraciones puede que converjan a una combinacin lineal de los
correspondientes vectores propios.


Este caso es bastante habitual pues esos dos valores propios pueden ser
un par complejo conjugado.

2. El vector de partida puede que tenga coeficiente cero en el valor propio


dominante.


El error de redondeo en la prctica puede que introduzca un pequeo


valor, por lo que este peligro rara vez ocurre.

3. Para una matriz real y un punto de partida tambin real, puede que nunca
se converja a un vector complejo.

Un programa de Matlab para el mtodo de la potencia.


function [lambda,V,cnt]= potencia(A,x,tol,max1)
% Mtodo de la potencia para la obtencin de un valor
%
y un vector propios de A
if nargin<4 max1=100; end, if nargin<3 tol=eps; end
if nargin<2 n=length(A); x=rand(n,1); end
lambda=0;cnt=0;err=1;
while cnt<=max1 & err>tol
y=A*x;
c1=norm(y,inf);
y=y/c1;
dc=abs(lambda-c1); dv=norm(x-y); err=max(dc,dv);
x=y; lambda=c1;
cnt=cnt+1;
end
V=x/norm(x);
end

>> [l,v,cnt]=potencia(b,[0;1])
l =
2.00000000000000
v =
0.70710678118655
0.70710678118655
cnt =
53

49/106

50/106

Mejora del mtodo: desplazamiento




Mediante un desplazamiento  ,
A

 I;

es posible hacer que


2 

 2 ;



1
1
y que, por lo tanto, la velocidad de convergencia aumente.
La solucin del problema original resultar de aadir  al valor obtenido.


En el ejemplo que estamos utilizando, si se hace  D 1, la relacin anterior se


hace cero y el mtodo converge en una iteracin.
(Desafortunadamente, no siempre se puede escoger un desplazamiento tan
bueno.)

51/106

Mtodo de la iteracin inversa




Si en vez del valor propio de mayor magnitud, se necesita el ms pequeo, se


puede hacer uso de la propiedad de que los valores propios de A 1 son los
recprocos de A.

El esquema iterativo sera el que sigue.


Dado un punto de partida x 0
for k D 1, 2, : : :
Resolver Ay k D x k
yk
xk D
jjy k jj1
end

Para resolver el sistema se factorizara A una sola vez.

52/106

Ejemplo (continuacin)


Aplicando el mtodo de la iteracin inversa a la matriz




1;5 0;5
;
0;5 1;5
se obtienen los resultados de la tabla.
k
0
1
2
3
4
5
6

x Tk
0,000
-0,333
-0,600
-0,778
-0,882
-0,939
-0,969

1,0
1,0
1,0
1,0
1,0
1,0
1,0

jjy k jj1
0,750
0,833
0,900
0,944
0,971
0,985

Converge al valor propio 1 y vector propio 1; 1T .

En Matlab la iteracin sera as.


function [lambda,V,cnt]= ItInversa_2(A,x,tol,max1)
% Mtodo de la potencia inversa para la obtencin
%
de un valor y vector propio de A
if nargin<4 max1=110; end, if nargin<3 tol=eps; end
if nargin<2 n=length(A); x=rand(n,1); end
lambda=0;cnt=0;err=1;[l,u,p]=lu(A);
while cnt<=max1 & err>tol
z=l\(p*x);y=u\z;
c1=norm(y,inf);
y=y/c1;
dc=abs(lambda-c1); dv=norm(x-y); err=max(dc,dv);
x=y; lambda=c1;
cnt=cnt+1;
end
V=x/norm(x);
end

>> A=[1.5 0.5;0.5 1.5];


>> [lambda,V,cnt]=ItInversa(A,[0;1])
lambda =
1.0000
V =
-0.7071
0.7071
cnt =
55

53/106

54/106

Mejora del mtodo: desplazamiento




El desplazamiento es particularmente til en el caso de la iteracin inversa.

Si  es el valor propio de A ms prximo a , el valor propio de menor


magnitud de A  I ser  .


Con una eleccin apropiada de  se puede calcular cualquier valor propio de


A que est prximo a esa .
Si el desplazamiento est prximo a un valor propio, la convergencia es muy
rpida.

Iteracin mediante cociente de Rayleigh

55/106

John William Strutt, Lord Rayleigh, Reino Unido, 1842-1919.

T
Definicin El cociente de Rayleigh de un vector x 2 R es el escalar r.x/ D xx TAx
x .

Dada una matriz A 2 Rnn y uno de sus vectores propios, x, la mejor


estimacin del correspondiente valor propio  se puede considerar un problema
de mnimos cuadrados n  1 como este: x  Ax.

De sus ecuaciones normales, x Tx D x TAx, la solucin que se obtiene es


x TAx
D T :
x x

56/106

El cociente de Rayleigh puede utilizarse como desplazamiento para acelerar la


convergencia de los mtodos iterativos que hemos visto. El algoritmo de la
iteracin inversa quedara as.
Dado un punto de partida x 0
for k D 1, 2, : : :

x Tk 1 Ax k 1
k D T
xk 1xk 1

Resolver .A k I/y k D x k
yk
xk D
jjy k jj2
end

El cociente de Rayleigh tambin se puede aplicar a vectores complejos


H
hacindolo xx HAx
x .

Ejemplo (continuacin)


El mtodo de la iteracin de potencia con cociente de Rayleigh aplicado al


problema que estudiamos da este resultado:
k
0
1
2
3
4
5
6

57/106

x Tk
0,000
0,333
0,600
0,778
0,882
0,939
0,969

jjy k jj1

x Tk Ax k =x Tk x k

0,150
1,667
1,800
1,889
1,941
1,970

1,500
1,800
1,941
1,985
1,996
1,999

1,0
1,0
1,0
1,0
1,0
1,0
1,0

Utilizando un punto de partida aleatorio con el mismo problema ocurrira lo que


sigue.
k
0
1
2

x Tk
0,807
0,924
1,000

k
0,397
1,000
1,000

1,896
1,998
2,000

58/106

En Matlab:
function [lambda,V,cnt]= ItInvRayleigh_2(A,x,max1)
% Mtodo de la iteracin inversa con cociente de Rayleigh
if nargin<2, n=length(A); max1=10; x=ones(n,1); end
lambda=0; cnt=0; err=1; n=length(A);
if norm(x)>1 x=x/norm(x); end
tol=n*norm(A,1)*eps;
sigma=x*A*x;
while err>tol
y=(A-sigma*eye(n))x;
x=y/norm(y);
sigma=x*A*x;
err=norm(A*x-sigma*x,1);
cnt=cnt+1;
end
lambda=sigma;
V=x;
end

>> A=[1.5 0.5;0.5 1.5];


>> [lambda,V,cnt]=ItInvRayleigh_2(A)
lambda =
2.0000
V =
0.7071
0.7071
cnt =
1

59/106

Deflacin


Idea: Calculados un valor y un vector propios, obtener otros por deflacin: Como
cuando una vez conocida una de las races, x1, de un polinomio de grado n ste
se divide por x x1 obtenindose otro de grado n 1.

Si x es el vector propio asociado al valor propio dominante de A, 1, y H es


una matriz de Householder, tal que H x D e 1, la transformacin de semejanza
que define consigue transformar A as

T
 b
A 1 D H AH 1 D 1
;
0 A2
donde A 2 es una matriz de orden n
los restantes de A.

1 cuyos valores propios son 2; : : : ; n,

Luego, trabajando con A 2 y calculado 2, si y 2 es un vector propio asociado, el


vector
 
bT y 2
1
x2 D H
;
; donde D
y2
2 1

60/106

es el vector propio correspondiente a 2 en la matriz original A, supuesto


1 2 .
Este mtodo funciona bien para calcular algunos valores y vectores propios.

En Matlab:

function [l2 v2 B] = defl_1(A, v1)


% B resulta de A por deflacin de vec. propio v1.
%
Calcula el valor propio l2 y vec. propio v2.
n = length(A);
v1 = Housv(v1);
C = Houspre(v1,A);
B = zeros(n,n);
for i=1:n
B(:,i)=Housmvp(v1,C(i,:));
end
+
l1 = B(1,1);
b = B(1,2:n);
B = B(2:n,2:n);
[l2 y] = ItInvRayleigh_2(B);
if l1~=l2
a = b*y/(l2-l1);
v2 = Housmvp(v1,[a;y]);
else
v2 = v1;
end
end

function u = Housv(x)
% Transformacin de Householder del vector x.
m = max(abs(x));
u = x/m;
if u(1) == 0, su = 1; else su = sign(u(1)); end
u(1) = u(1)+su*norm(u);
u
= u/norm(u);
u
= u(:);
end
function P = Houspre(u, A)
% Producto P = H*A, donde H is una transformacin de Householder
%
definida por el vector u.
n = length(A);
v = u/norm(u); v = v(:);
P = zeros(n,n);
for j=1:n
aj = A(:,j);
P(:,j)=aj-2*(v*aj)*v;
end
end
function p = Housmvp(u, x)
% Producto p = H*x, donde H es la transformacin de Householder
%
definida por u.
u = u(:); x = x(:);
v = u/norm(u);
p = x - 2*(v*x)*v;
end

61/106

Utilicmoslo:
>> A=ones(5)+diag(ones(5,1))
A =
2
1
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
1
2
>> [lambda,V]= ItInvRayleigh_2(A)
lambda =
6
V =
0.44721359549990
0.44721359550002
0.44721359549982
0.44721359550001
0.44721359550003
>> [l2,v2]=defl_1(A,V)
l2 =
1
v2 =
-0.89442719099992
0.22360679774998
0.22360679774998
0.22360679774998
0.22360679774998

% Generamos una matriz dada

% Cal. valor y vector propio dominantes

% Defl para obtener otro par val. A

>> [norm(A*V-lambda*V);norm(A*v2-l2*v2)]
% Comprobar resultados
ans =
1.0e-015 *
0.4441
0.6497
>> format short
>> [l,v]=eig(A)
% Comprobar con rutina Matlab eig
l =
0.8333
-0.1667
-0.1667
0.2236
0.4472
-0.1667
0.8333
-0.1667
0.2236
0.4472
-0.1667
-0.1667
0.8333
0.2236
0.4472
-0.5000
-0.5000
-0.5000
0.2236
0.4472
0
0
0
-0.8944
0.4472
v =
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
6

62/106

Iteracin simultnea o de subespacio




Para obtener varios valores/vectores propios, apliquemos la iteracin de la


potencia a los p vectores linealmente independientes que forman X 0; es decir:
X 0 D matriz n  p de rango p
for k D 1, 2, : : :
X k D AX k 1
end



La Im A x 1 A x 2 : : : A xp converge al subespacio invariante de los


vectores propios de A correspondientes a sus p mayores valores propios:
j1j >    jp j > jpC1j  jpC2j:

La velocidad de convergencia es O.pC1=p /.

63/106

Para optimizar prestaciones y conseguir una buena ortogonalidad se usa la


factorizacin QR de X k , ortonormalizando as las columnas de X k . Se
obtendra una Q como base de Im.X k /.
X 0 D matriz n  p de rango p
for k D 1, 2, : : :
Qk R k D X k 1
X k D AQk
end

Las iteraciones convergen a una matriz triangular, si slo hay valores propios
reales, o a una triangular en bloques 22 en la diagonal principal cuando haya
valores propios complejos conjugados.

64/106

Sesin en Matlab para matriz simtrica

>> A=randn(5); A=A*A


A =
2.8486
-2.5688
0.1741
3.5081
-0.1959
-2.5688
2.8789
-0.3177
-4.0552
-2.2033
0.1741
-0.3177
2.3957
1.4227
-2.3486
3.5081
-4.0552
1.4227
6.2012
2.7463
-0.1959
-2.2033
-2.3486
2.7463
19.4886
>> A0=A;
>> % Hagamos ahora 10 iteraciones de la iteracin ortogonal
>> for i=1:10, [Q R]=qr(A); A=R*Q; end
>> A
A =
20.8010
-0.0997
0.0000
0.0000
0.0000
-0.0997
10.6605
0.0000
0.0000
0.0000
0.0000
0.0000
2.2265
0.0000
0.0000
0.0000
-0.0000
0.0000
0.1085
0.0000
-0.0000
-0.0000
0.0000
0.0000
0.0165

>> % Otras 5 iteraciones ms


>> for i=1:5, [Q R]=qr(A); A=R*Q; end
>> A
A =
20.8020
-0.0035
0.0000
0.0000
0.0000
-0.0035
10.6595
0.0000
0.0000
0.0000
0.0000
0.0000
2.2265
0.0000
0.0000
0.0000
-0.0000
0.0000
0.1085
0.0000
-0.0000
-0.0000
0.0000
0.0000
0.0165
>> % Mejora; hagamos 10 ms
>> for i=1:10, [Q R]=qr(A); A=R*Q; end
>> A
A =
20.8020
-0.0000
0.0000
0.0000
0.0000
-0.0000
10.6595
-0.0000
0.0000
0.0000
0.0000
0.0000
2.2265
0.0000
0.0000
0.0000
-0.0000
0.0000
0.1085
-0.0000
-0.0000
-0.0000
0.0000
0.0000
0.0165
>> % Comparemos todos con los de la matriz original
>> eig(A0)
ans =
0.0165
0.1085
2.2265
10.6595
20.8020

65/106

IterSimul obtiene los r valores propios mximos de A simtrica.


function [i r1]=IterSimul(A,r)
% Mximos valores propios de A (simtrica); itera. simultnea
%
ortogonal
n=length(A); if nargin<2, r=5; end
tol=sqrt(eps); B=A; i=0; itmax=400;
Q=eye(n,r); R=eye(r); vprn=1; err=1;
while i<itmax && err>tol
vpr=vprn;
Z=A*Q;
[Q,R]=qr(Z,0);
% QR reducida de n x r
vprn=min(diag(R));
i=i+1;
err=abs((vprn-vpr)/vprn);
end
format long
r1=diag(R);
% fprintf(%i Valores propios mximos:\n,r);
disp(Valores calculados con eig());
disp(-sort(eig(-B)));
end

Si se ejecuta este archivo, se obtienen los resultados que siguen.


>> A=rand(20); A=A*A;
>> [i r]=IterSimul(A,6)
Valores calculados con eig()
1.0e+002 *
1.006294230413485
0.052804894629075
0.039516583781399
0.032191801462925
0.031157323965477
0.026806664806072
0.022597606348368
0.019827755676060
0.013685589405813
0.012217263560720
0.009791335827920
0.005048187809920
0.004282145342196
0.003460064312945
0.002436587767534
0.001713272489506
0.001168137691697
0.000605614254568
0.000238729619383
0.000012007660353
i =
44
r =
1.0e+002 *
1.006294230413484
0.052804894629054
0.039516583695056
0.032053644988988
0.031291616159557
0.026806665421155

66/106

Iteracin QR

67/106

G. GOLUB AND F. UHLIG

family until his death. At first, Kantorovichs group developed analytic computational tools in Prorab
for algebraic and trigonometric polynomials, for integer arithmetic and series, etc. When Vera joined,
her task was to select and classify matrix operations that are useful in numerical linear algebra. Linear
algebra subroutines were included in Prorab much later. This experience brought Vera close to numerical
algebra and computation. In 1972 she obtained her secondary doctorate (Habilitation). More extended
biographies of Veras life, achievements and long and productive career are available in Golub et al.
(1990) and Konkova et al. (2003), for example.

Propuesta por John G.F. Francis y Vera Kublanovskaya.


Downloaded from http://imajna.oxfordjournals.org at Universit di Bologna - Sistema Bibliotecario d'Ateneo on March 30, 2010

474

John G.F. Francis, Reino Unido 1934 y Vera


Kublanovskaya, Rusia 1920-2012
Vera Kublanovskaya in August 2008

In the Russian literature the QR algorithm was initially called the method of one-sided rotations. Vera
Kublanovskaya started to develop her version of the QR algorithm in 1958 after reading Rutishausers
LR algorithm paper (Rutishauser, 1958). She represented a matrix A = L Q as the product of a lower
triangular matrix L and an orthogonal matrix Q that she suggested to compute as the product of
elementary rotations or reflections. Her eigenvalue algorithm factors A = A1 = L 1 Q 1 , reverse
order multiplies A2 = Q 1 L 1 and then factors A2 again as A2 = L 2 Q 2 , etc. In 1959 she performed
numerical experiments with her LQ decomposition-based algorithm on an electromechanic Mercedes
calculator in low dimensions by hand since linear algebra computer codes had not been developed yet
in Prorab. Veras hand computations indicated that her explicit factorizationreverse-order multiply
algorithm is convergent. However, D. K. Faddeev feared that the obtained results may only have been
accidental. Veras QR-like algorithm was briefly mentioned in 1960 in the first edition of a monograph

Generalizando la iteracin simultnea (ortogonal) se pueden calcular todos los


valores propios de A, as como los correspondientes vectores propios.
A 0 D AI U 0 D I
for k D 1, 2, : : :
Qk 1 R k 1 D A k 1 , obtener factorizacin QR
A k D R k 1 Qk 1 ;
U k D U k 1 Qk 1
end

Las A k convergern a una matriz triangular, si todos los valores propios son
reales, o con bloques 22 en la diagonal, si hay valores propios complejos.
U k converger a los vectores propios.

68/106

Las matrices A k son ortogonalmente semejantes a las anteriores del proceso y a


A:
A 1 D R 0Q0 D QT0 A 0Q0 pues R 0 D QT0 A 0

A 2 D R 1Q1 D QT1 A 1Q1 D QT1 QT0 A 0Q0 Q1 D
.Q0Q1/T A 0 .Q0Q1/

Es decir, todas las A k tendrn los valores propios de A D A 0.




Las columnas de Qk forman una base ortonormal del subespacio Im.A k /.

Si A es simtrica, las iteraciones conservan la simetra y las A k convergern a


una matriz triangular y simtrica: diagonal.

Trabajemos un poco a mano con el algoritmo.

69/106

D = diag([4 3 2 1]);
rand(seed,0); format short e
S=rand(4); S = (S - .5)*2; % Se perturba un poco
A = S*D/S
% A_0 = A = S*D*S^{-1}
for i=1:6
[Q R] = qr(A); A = R*Q
% Iteracin QR
end
A =

4.1475e+00
-4.9214e-03
6.2706e-01
1.5691e-01
=
3.9304e+00
4.0097e-02
3.5144e-01
-2.7163e-02
=
3.9287e+00
-1.6308e-02
2.1041e-01
5.9415e-03
=
3.9514e+00
-5.7605e-02
1.1812e-01
-1.4093e-03
=
3.9696e+00
-7.1970e-02
6.3115e-02
3.4472e-04
=
3.9817e+00
-6.9838e-02
3.2744e-02
-8.5395e-05

-7.7246e-01
3.2731e+00
-1.9699e-01
-4.1310e-01

-7.3819e-01
-1.8990e-01
2.2190e+00
-6.3508e-01

-4.1172e+00
1.9440e+00
-6.0845e-01
3.6039e-01

-2.7682e-01
3.0595e+00
-3.8535e-02
8.4395e-02

1.5214e-01
-6.9040e-01
2.3156e+00
1.9457e-01

4.4847e+00
-2.1283e+00
-4.8346e-01
6.9447e-01

-1.6932e-01
3.0078e+00
-3.4259e-02
-2.3299e-02

4.1119e-01
-8.8862e-01
2.2044e+00
-8.1008e-02

-4.4113e+00
2.1571e+00
1.0227e+00
8.5905e-01

-1.3627e-01
2.9981e+00
-2.7149e-02
7.1443e-03

4.9740e-01
-9.6432e-01
2.1181e+00
3.8096e-02

4.3484e+00
-2.1072e+00
-1.3251e+00
9.3241e-01

-1.1610e-01
2.9977e+00
-1.8643e-02
-2.2854e-03

5.3907e-01
-9.8790e-01
2.0658e+00
-1.8738e-02

-4.3288e+00
2.0192e+00
1.4919e+00
9.6688e-01

-9.8200e-02
2.9984e+00
-1.2095e-02
7.4567e-04

5.6721e-01
-9.9032e-01
2.0362e+00
9.3684e-03

4.3356e+00
-1.9242e+00
-1.5816e+00
9.8360e-01

Alguna conclusin en trminos de convergencia; trabajo?

70/106

Iteracin QR con desplazamiento




La velocidad de convergencia se puede aumentar con desplazamientos:


Qk 1 R k

D Ak

k 1I

A k D R k 1 Qk
El desplazamiento k


C k 1I:

debe ser una buena aproximacin de un valor propio.

Desplazamientos ms usados:



Rayleigh. El valor de ann de A k 1: buena aproximacin a priori de n.


Wilkinson. Del bloque diagonal inferior 22 de A k 1 (si no es diagonal), el
valor propio de esa submatriz que est ms cerca de ann.

71/106

Este script de Matlab es el mtodo de la iteracin QR con desplazamiento


de Rayleigh para matrices con valores propios reales: simtricas, hermticas, etc.
function [lambda itt]= IteracionQR(A,tol)
% Mtodo de la iteracin QR con desplazamiento
%
para matrices con valores propios reales
if nargin<2, tol=eps*norm(A); end
lambda=0; n=length(A); it=0;
for k=n:-1:2
% Hasta aislar  k en a(k,k)
while norm(A(k,1:k-1),inf) > tol
sigma=A(k,k);
[Q,R]=qr(A(1:k,1:k)-sigma*eye(k,k));
A(1:k,1:k)=R*Q+sigma*eye(k,k);
it=it+1;
end
end
lambda=sort(diag(A)); if nargout==2, itt=it; end
end

72/106

Ejemplos

>> ab=ones(5)+eye(5)
ab =
2
1
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
1
2
>> [lambda it]=IteracionQR(ab)
lambda =
1.0000
1.0000
1.0000
1.0000
6.0000
it =
4

>> a=rand(20);
>> [lambda it]=IteracionQR(a*a)
lambda =
0.0010
0.0175
0.1107
0.1496
0.2232
0.4124
0.7861
0.8132
0.9430
1.2765
1.4153
1.7930
1.9123
2.2906
2.6955
2.9732
3.7114
4.9037
5.3983
100.1106
it =
48

>> eig(a*a)
ans =
0.0010
0.0175
0.1107
0.1496
0.2232
0.4124
0.7861
0.8132
0.9430
1.2765
1.4153
1.7930
1.9123
2.2906
2.6955
2.9732
3.7114
4.9037
5.3983
100.1106

73/106

Sesin en Matlab para matriz sin estructura especial

>> A=randn(5)
A =
0.1303
1.0169
-0.2750
0.7688
-0.3857
0.5583
0.2378
-0.2941
-0.5498
-0.1324
0.3125
0.8049
0.2869
-1.1517
-0.0024
-1.7196
-0.3503
0.4211
0.9847
-0.6632
>> A=hess(A)
% VEREMOS por qu
A =
0.1303
-0.1471
1.0342
-0.5765
0.8100
0.6165
-0.1303
0.5381
0
-1.0393
0.3560
0.3942
0
0
1.3485
-1.9025
0
0
0
0.4372
>> A0=A;

0.2815
1.2163
-0.2401
-0.4955
-1.3721

-0.5971
0.9983
0.6386
-0.0670
-1.2908

>> % Hagamos ahora 10 iteraciones de la iteracin QR


>> for i=1:10, [Q R]=qr(A); A=R*Q; end
>> A
A =
-1.9640
-1.2063
-0.1339
0.3196
-0.3104
0.1231
0.3343
-0.7129
1.0207
-0.4763
0
-1.5358
-0.9798
-0.1630
-0.8736
0
0
1.1031
0.6130
0.2523
0
0
0
0.0000
-0.0941

>> % Otras 10 iteraciones ms


>> for i=1:10, [Q R]=qr(A); A=R*Q; end
>> A
A =
-1.6585
-0.7415
0.3436
-0.8538
0.1202
-2.0481
-0.4571
-0.6504
0
-0.0322
0.6956
-0.7333
0
0
1.0035
1.0146
0
0
0
0.0000

0.1063
-1.0568
-0.1472
-0.0113
-0.0941

>> % Mejora; hagamos 50 ms


>> for i=1:50, [Q R]=qr(A); A=R*Q; end
>> A
A =
-1.7423
-0.7746
-0.7995
-0.5685
0.0805
-1.9665
-0.6724
0.2789
0
-0.0000
1.0634
-0.8844
0
0
0.8436
0.6489
0
0
0
0.0000

-0.0297
-1.0632
-0.0561
0.1247
-0.0941

>> % Mejora, aunque no suficientemente; otras 50


>> for i=1:50, [Q R]=qr(A); A=R*Q; end
>> A
A =
-1.8095
-0.7895
-0.9613
0.3250
-0.1298
0.0657
-1.8993
-0.1186
0.6697
-1.0556
0
-0.0000
0.7945
-1.0629
0.0612
0
0
0.6651
0.9179
0.1223
0
0
0
0.0000
-0.0941

74/106

>> % Intentemos unas 50 ltimas


>> for i=1:50, [Q R]=qr(A); A=R*Q; end
>> A
A =
-1.8704
-0.7919
-0.1944
1.0214
0.0632
-1.8384
0.5215
0.3733
0
-0.0000
0.7034
-0.7224
0
0
1.0056
1.0089
0
0
0
0.0000

-0.2176
-1.0411
0.1361
0.0134
-0.0941

>> % Hay dos bloques 2x2 en la diagonal


>> % El ltimo parece claro que es -0.0941
>> % Calculemos los valores propios de esos bloques
>> eig(A(1:2,1:2))
ans =
-1.8544 + 0.2232i
-1.8544 - 0.2232i
>> eig(A(3:4,3:4))
ans =
0.8562 + 0.8385i
0.8562 - 0.8385i
>> % Comparemos todos con los de la matriz original
>> eig(A0)
ans =
0.8562 + 0.8385i
0.8562 - 0.8385i
-0.0941
-1.8544 + 0.2232i
-1.8544 - 0.2232i

75/106

Iteracin QR con doble desplazamiento




Si hay valores propios complejos, se incorpora el doble desplazamiento para


tratar los bloques 22 irreducibles de la diagonal principal.

Para ello se usan los dos valores propios,  y N , de la submatriz 22 del bloque
inferior que se encuentre,
Qk 1 R k

D Ak

k 1I

A k D R k 1 Qk

Qk R k D A k

C k 1I

N k 1I

A kC1 D R k Qk C N k 1I

haciendo as un paso doble con desplazamiento en dos etapas.

76/106

Este doble paso se puede simplificar: si


M D .A k

k 1I/ .A k

D .Qk 1Qk / .R k R k 1/
D A 2k

sA k

N k 1I/

C t I;

donde s es la traza de la matriz 22 del bloque diagonal inferior de A k


determinante.


y t su

Si se factorizase la matriz as, M D QR, mediante una sencilla manipulacin


algebraica, resulta que
A kC1 D QT M Q;

por lo que tericamente, en lo que se denomina doble desplazamiento implcito,


se evitara un paso.

77/106

Calcular M requiere O.n3/ operaciones y su factorizacin ulterior QR es


bastante inestable.

Con los aos, los diferentes enfoques de atacar esta variante han convergido en
una estrategia de doble desplazamiento implcito tipo Francis, formulada en
1961 por John G.F. Francis.

Dado ese coste en clculos, O.n3/, y su complejidad, perece obligado hacer


algo para preparar el problema antes de abordarlo con este mtodo.

Algoritmo QR: Transformaciones preliminares


Definicin Una matriz de Hessenberg es una matriz triangular excepto por una subdiagonal adyacente a la diagonal principal.

@
@
@
@

@
@
@
@
@

Cualquier matriz se puede reducir a la forma de Hessenberg mediante


transformaciones de Householder o Givens.

Si la matriz original es simtrica, al reducirla a la forma de Hessenberg se


obtendr una tridiagonal.

78/106

79/106

Si se parte de una matriz con la forma de Hessenberg, el algoritmo QR ms


actual necesita un nmero de operaciones O.n2/, implementndose en dos fases:
Matriz

1 fase

Simtrica a tridiagonal
General

2 fase
a diagonal

a Hessenberg a triangular

El trabajo necesario total de todo el proceso QR, preliminar ms iterativo, es el


que sigue.
Matriz simtrica

Matriz general

4 3
n para valores propios slo 10n3 para valores propios slo
3
9n3 valores y vectores propios 25n3 valores y vectores propios

80/106

Un conjunto de rutinas sencillas para reducir cualquier matriz, mediante


transformaciones de Householder, a la forma de Hessenberg seria este.
function [A V] = Hessred(A)
% Reduccin de A a Hessenberg con Householder
% En V vectores de transf. sucesivas de Householder
[m,n] =size(A);
if A == triu(A,-1), V = eye(m); return, end
V = [];
for k=1:m-2
x = A(k+1:m,k); v = Housv(x);
A(k+1:m,k:m)=A(k+1:m,k:m)-2*v*(v*A(k+1:m,k:m));
A(1:m,k+1:m)=A(1:m,k+1:m)-2*(A(1:m,k+1:m)*v)*v;
v = [zeros(k,1);v]; V = [V v];
end
end
function u = Housv(x)
% Transf. Householder del x; vector en u.
m = max(abs(x));u = x/m;
if u(1) == 0, su = 1; else su = sign(u(1)); end
u(1) = u(1)+su*norm(u);
u = u/norm(u); u = u(:);
end

81/106

Consideraciones finales en torno al algoritmo o mtodo QR:





Para matrices muy grandes, el algoritmo es costossimo.


Si slo se necesitan unos pocos valores y vectores propios, especialmente
para n grandes, el mtodo no saca partido de ello.
Requiere mucha memoria de ordenador, aunque la matriz sea grande y
dispersa.
Las transformaciones por semejanza introducen muchos elementos no nulos
por lo que se destruye una posible estructura de dispersidad.

Este es un programa del algoritmo QR para matrices simtricas con reduccin


inicial a forma Hessenberg y desplazamiento sencillo de Wilkinson.
function [D itt]=It_QR_3(A)
% Iteracin QR con despla. de Wilkinson para una matriz simtrica
n=length(A); tol=off(A)*1.e-8; k=n; D=zeros(n,1); it=0;
A=Hessred(A);
% Reducir a Hessenberg
while k>1
while abs(A(k,k-1))>tol
%Calcular desplazamiento Wilkinson
s=eig2x2(A(k-1:k,k-1:k));
[i j]=min(abs(A(k,k)*[1 1]-s));
% Mejor desp. Wilkinson
[Q R]=qr(A(1:k,1:k)-s(j)*eye(k));
A(1:k,1:k)=R*Q+s(j)*eye(k); it=it+1;
end
k=k-1;
end
D=sort(diag(A),ascend); if nargout==2, itt=it; end
end
function [L]=eig2x2(a)
tra=a(2,2)+a(1,1);
sqtd=sqrt(tra*tra-4*(a(2,2)*a(1,1)-a(1,2)*a(2,1)));
L(1)=(tra+sqtd)/2;
L(2)=(tra-sqtd)/2;
L=L(:);
end

82/106

83/106

La ejecucin de este programa para una matriz 20  20, simtrica, generada


aleatoriamente, es la que sigue.
>> A=rand(20);
>> A=(A+A)/2;
>> [D it]=It_QR_3(A)
D =
10.5361
1.5883
1.5200
1.1285
1.0568
0.9498
0.6448
0.5156
0.2413
0.1139
-0.0201
-0.1461
-0.4263
-0.6220
-0.6692
-0.8182
-0.8895
-1.0250
-1.2618
-1.2714
it =
36

>> eig(A)
ans =
-1.2714
-1.2618
-1.0250
-0.8895
-0.8182
-0.6692
-0.6220
-0.4263
-0.1461
-0.0201
0.1139
0.2413
0.5156
0.6448
0.9498
1.0568
1.1285
1.5200
1.5883
10.5361

function [T it itd t] = qrstep_Francis_Bindel(H)


% Computes eigenvalues of A using a implicit double-shift QR method
% as Cornells Bindel notes (CS 620).
%
% Output: TT, vector containing eigenvalues; it, simple iterations;
%
itd, double iterations.
global itr itc
n = length(H); T=zeros(n,1);
tol = norm(H,fro)*1e-8;
H=hess(H);
% Reduce A to Hessenberg form
itr=0; itc=0; t=cputime;
while n > 2
if abs(H(n,n-1)) < tol*(abs(H(n-1,n-1))+abs(H(n,n)))
H(n,n-1) = 0; T(n)=H(n,n);
% Deflate 1x1 block
n = n-1;
elseif abs(H(n-1,n-2)) < tol*(abs(H(n-2,n-2))+abs(H(n-1,n-1)))
H(n-1,n-2) = 0; T(n-1:n)=eig2x2(H(n-1:n,n-1:n)); % Deflate 2x2 block
n = n-2;
else
H(1:n,1:n) = qrstep(H(1:n,1:n)); % Main body
end
end
T(1:2)=eig2x2(H(1:2,1:2)); T=sort(T,descend); t=cputime-t; it=itr; itd=itc;
end
function [NH] = qrstep(H)
% Compute double-shift poly and initial column of H^2 + b*H + c*I
[b c] = qrpoly(H);
C1
= H(1:3,1:2)*H(1:2,1);
C1(1:2) = C1(1:2) + b*H(1:2,1);
C1(1)
= C1(1) + c;
% Apply a similarity associated with the first step of QR on C
v = Housv(C1);
H(1:3,:) = H(1:3,:)-2*v*(v*H(1:3,:));
H(:,1:3) = H(:,1:3)-(H(:,1:3)*(2*v))*v;
% Do "bulge chasing" to return to Hessenberg form
n = length(H);
for j=1:n-2
k = min(j+3,n);
v = Housv(H(j+1:k,j)); % Find W=I-2vv to put zeros below H(j+1,j), H=WHW
H(j+1:k,:) = H(j+1:k,:)-2*v*(v*H(j+1:k,:));
H(:,j+1:k) = H(:,j+1:k)-(H(:,j+1:k)*(2*v))*v;
H(k,j) = 0;
end
NH=triu(H,-1);
end

84/106

function [b c] = qrpoly(H)
% Compute b and c of z^2+b*z+c = (z-sigma)(z-conj(sigma))
% where sigma is the Wilkinson double shift: eigenvalue of
% the 2x2 trailing submatrix closest to H(n,n)
global itr itc
HH
= H(end-1:end,end-1:end);
traHH = HH(1,1)+HH(2,2);
detHH = HH(1,1)*HH(2,2)-HH(1,2)*HH(2,1);
if traHH^2 > 4*detHH % Real eigenvalues
% Use as double shift the eigenvalue closer to H(n,n)
lambdaHH(1) = (traHH + sqrt(traHH^2-4*detHH))/2;
lambdaHH(2) = (traHH - sqrt(traHH^2-4*detHH))/2;
if abs(lambdaHH(1)-H(end,end))<abs(lambdaHH(2)-H(end,end))
lambdaHH(2) = lambdaHH(1);
else
lambdaHH(1) = lambdaHH(2);
end
% z^2+bz+c=(z-lambda_1)(z-lambda_1)|(z-lambda_2)(z-lambda_2)
b = -lambdaHH(1)-lambdaHH(2);
c = lambdaHH(1)*lambdaHH(2);
itr=itr+1;
else
% In the complex case, we want the char poly for HH
b = -traHH;
c = detHH;
itc = itc+1;
end
end

Algoritmo QR para matrices generales,


con reduccin inicial a Hessenberg, y doble desplazamiento implcito tipo Francis.

85/106

Los resultados que obtiene para


una matriz 25  25 son estos.

>> [T it itd t]=qrstep_Francis_Bindel(A)


T =
-6.0770
5.2804
5.0190
3.2085 + 3.6195i
3.2085 - 3.6195i
0.0031 + 4.4372i
0.0031 - 4.4372i
-4.2104 + 0.7456i
-4.2104 - 0.7456i
-1.3585 + 3.9497i
-1.3585 - 3.9497i
1.2975 + 3.8800i
1.2975 - 3.8800i
-2.4416 + 2.7407i
-2.4416 - 2.7407i
2.8787 + 0.7120i
2.8787 - 0.7120i
-1.0840 + 1.8066i
-1.0840 - 1.8066i
-1.2594 + 0.9430i
-1.2594 - 0.9430i
-0.3809 + 0.9062i
-0.3809 - 0.9062i
0.6323
-0.1911
it =
7
itd =
27
t =
0.0624

>> sort(eig(A),descend)
ans =
-6.0770
5.2804
5.0190
3.2085 + 3.6195i
3.2085 - 3.6195i
0.0031 + 4.4372i
0.0031 - 4.4372i
-4.2104 + 0.7456i
-4.2104 - 0.7456i
-1.3585 + 3.9497i
-1.3585 - 3.9497i
1.2975 + 3.8800i
1.2975 - 3.8800i
-2.4416 + 2.7407i
-2.4416 - 2.7407i
2.8787 + 0.7120i
2.8787 - 0.7120i
-1.0840 + 1.8066i
-1.0840 - 1.8066i
-1.2594 + 0.9430i
-1.2594 - 0.9430i
-0.3809 + 0.9062i
-0.3809 - 0.9062i
0.6323
-0.1911

En el caso de una matriz 1:000  1:000.


>> A=rand(1000);
>> A = (A - .5)*2;
>> [T it itd t]=qrstep_Francis_Bindel(A)
T =
7.123846740573868 +17.026981501328613i
7.123846740573868 -17.026981501328613i
16.624570346272108 + 7.937272245254786i
16.624570346272108 - 7.937272245254786i
-16.089705600685924 + 8.930438288025009i
-16.089705600685924 - 8.930438288025009i
-10.166595375856957 +15.258792634828080i
-10.166595375856957 -15.258792634828080i
17.167325994176007 + 6.377944580510263i
17.167325994176007 - 6.377944580510263i
18.249349262178139 + 0.000000000000000i
7.805032835495162 +16.405785237414399i
7.805032835495162 -16.405785237414399i
-8.822496260367785 +15.869321050483862i
-8.822496260367785 -15.869321050483862i
16.001083815170652 + 8.555659101012008i
16.001083815170652 - 8.555659101012008i
-3.803035356678313 +17.729394693350987i
-3.803035356678313 -17.729394693350987i
4.837154691757405 +17.460853314474601i
4.837154691757405 -17.460853314474601i
-17.976118771479754 + 2.032262837884847i
-17.976118771479754 - 2.032262837884847i
.
.
.
-1.748103565292426 - 1.443294519531504i
-2.229777171574543 + 0.000000000000000i
2.124127007088685 + 0.000000000000000i
-2.000980926645378 + 0.000000000000000i
-0.267964043130730 + 1.702030627215852i
-0.267964043130730 - 1.702030627215852i
1.251743319582046 + 0.303853777326017i
1.251743319582046 - 0.303853777326017i
-0.989726686530990 + 0.000000000000000i
0.222221915982704 + 0.687550759680182i
0.222221915982704 - 0.687550759680182i
it =
93
itd =
1116
t =
41.563322418069106
>> tic, [V S U]=eig(A); toc
Elapsed time is 1.323848 seconds.

86/106

87/106

Subespacios de Krylov

Alekxey Krylov, Rusia 1863-1945.

Recordamos que, para A 2 Cnn y 0 b 2 Cn1, al subespacio


Kj D Genfb; Ab : : : A j 1bg
se le denomina subespacio de Krylov.

Estos subespacios son la base de unos mtodos iterativos para el clculo de los
valores propios de A. Su ventaja esencial es que en ellos slo se llevan a cabo
multiplicaciones de matrices por vectores, lo cual es particularmente interesante
para matrices grandes y dispersas.

88/106

Si A tiene n valores propios distintos, 1; : : : ; n, con vectores propios


asociados x 1; : : : ; x n ortonormales (base ortonormal de Rn), cualquier vector
de Rn se puede escribir como combinacin lineal de esos vectores propios; en
particular, uno b D b1x 1 C b2x 2 C    C bnx n.

La matriz de Krylov, K

La matriz C n D K n 1AK n es tipo Hessenberg, es decir,

nj

D b Ab : : : A

j 1


b , se puede escribir entonces

2
1 1
61 
6 2
K n D c1 x 1 c2 x 2    cn x n 6 :: ::
4: :
1 n

3
j 1
   1
j 1
   2 7
7
:
: : : ::: 7
5
j 1
   n

@
@

@
@
@

89/106

La matriz de Krylov K n suele estar mal condicionada. Para obtener una buena
base de Im.K n/ se utiliza la factorizacin QnR n D K n de tal forma que
1
QH
n AQn D R n C n R n  H

(matriz de Hessenberg):

Si se igualan las columnas k de la expresin anterior escrita AQn D QnH se


tiene que
Aq k D h1k q 1 C    C hkk q k C hkC1;k q kC1
expresin que relaciona el vector q kC1 y q 1; : : : ; q k .

Si se premultiplica por qjH , teniendo en cuenta la ortonormalidad,


hj k D qjH Aq k ;

j D 1; : : : ; k:

90/106

Estas expresiones dan lugar a la ya estudiada iteracin de Arnoldi que produce


una matriz unitaria Qn y una Hessenberg H n columna a columna.
 Ortogonalizacin de A

por Iteracin de Arnoldi


Dado x 0 cualquiera

q 1 D x 0 = kx 0 k2
for k D 1; 2; : : :
uk D Aq k
for j D 1 to k
hj k D qjH uk
uk D uk hj k qj
end

hkC1;k D kuk k2
if hkC1;k D 0 stop
q kC1 D uk = hkC1;k

end

Segn progresa el algoritmo, en la iteracin k, si Qk D q 1; : : : ; q k , la matriz


H k D QH
k AQk es Hessenberg y sus valores propios,

91/106

denominados valores de Ritz

Walther Ritz, Suiza, 1878-1909,

son muy buenas aproximaciones de los de A. Si y es un vector propio de H k ,


Qk y es un aproximacin de un vector propio de A.


Si se requieren con precisin los valores propios de H k se pueden calcular por


otro mtodo por ejemplo la iteracin QR, siendo una tarea menor si k  n.

El coste en clculos de la iteracin de Arnoldi es elevado: cada nuevo q k se


debe ortogonalizar respecto a todos los vectores columna de Qk , por lo que se
reinicializa peridicamente desde un nuevo vector escogido adecuadamente.

92/106

Cornelius Lanczos, Hungra,


1893-1974.

Si A es simtrica o hermtica se utiliza la iteracin de Lanczos que consigue una


matriz tridiagonal.
 Ortogonalizacin de A
por Iteracin de Lanczos
q 0 D 0; 0 D 0 y x 0 cualquiera
q 1 D x 0 = kx 0 k2
for k D 1; 2; : : :
uk D Aq k
k D q H
k uk
uk D uk k 1 q k 1 k q k
k D kuk k2
if k D 0 stop
q kC1 D uk =k
end

Si k D 0 los valores de Ritz son los valores propios exactos de A.

93/106

function [U H flag] = arnoldi_W(A,ns,x)


% Realiza ns iteraciones de Arnoldi con reortogonalizavin en A partiendo de x
%
% Si flag == 0, las columans de U are ortonormales, H(ns+1,ns) Hessenberg matrix y
%
A*U(:,1:ns) = U(:,1:ns+1)*H.
%
% Si flag == j > 0, se ha obtenido subespacio invariante en j iter. y
%
A*U(:,1:j) = U(:,1:j)*H(1:j,1:j).
%
flag = 0;
H = zeros(ns+1,ns); n
= size(A,1);
U = zeros(n,ns+1); U(:,1) = x/norm(x); delta = zeros(ns+1,1);
for jj = 1:ns
U(:,jj+1)
= A*U(:,jj);
% slo se usa A aqu
H(1:jj,jj) = U(:,1:jj)*U(:,jj+1);
U(:,jj+1)
= U(:,jj+1) - U(:,1:jj)*H(1:jj,jj); % ortogonaliza
delta(1:jj) = U(:,1:jj)*U(:,jj+1);
U(:,jj+1)
= U(:,jj+1) - U(:,1:jj)*delta(1:jj); % reortogonaliza
H(1:jj,jj) = H(1:jj,jj) + delta(1:jj);
H(jj+1,jj) = norm(U(:,jj+1));
if H(jj+1,jj) == 0, flag = jj; return, end
U(:,jj+1)
= U(:,jj+1)/H(jj+1,jj);
end
% arngo.m: script que demuestra las prestaciones de
end
load west0479, A = west0479;
% Matriz dispersa 479x479
n = size(A,1); ns = 30;
% 30 iteraciones de Arnoldi
randn(state,321)
% mismo vector aleatorio cada vez
x = randn(n,1); tic
% vector de partida aleatorioa
[U,H,flag] = arnoldi_W(A,ns,x);
if flag == 0
residual = norm(A*U(:,1:ns)-U*H)
orthocheck = norm(eye(ns+1)-U*U)
ritz = eig(H(1:ns,1:ns),nobalance), toc, tic
lam = eig(full(A));
% clculo de todos los val. propios de A
toc, figure(1)
plot(real(lam),imag(lam),r+,real(ritz),imag(ritz),bo)
end

arnoldi_W

94/106

El resultado del ejemplo arngo.m, con 30 iteraciones de Arnoldi, es este. Las


crucecitas rojas son los valores propios autnticos; los crculos azules los valores
de Ritz que los aproximan.
2000
1500
1000
500
0
500
1000
1500
2000
150

100

50

50

100

150

95/106

Comparacin de los mtodos


Clculo de todos los valores propios y vectores propios
Matrices generales reales o complejas. Reduccin preliminar a forma de
Hessenberg seguida de iteracin QR.
Matrices reales simtricas o complejas hermticas. Reduccin
preliminar a matriz tridiagonal seguida de iteracin QR.

96/106

Clculo de algunos valores y vectores propios


Matrices simtricas de tamao moderado. Reduccin preliminar a
matriz tridiagonal seguida de iteracin inversa.
Matrices de gran tamao. Mtodo con iteracin de Arnoldi para matrices
generales.
Lanczos para matrices simtricas o complejas hermticas.

97/106

ndice


Introduccin terica

Localizacin de valores propios

Obtencin numrica

Clculo de valores singulares

98/106

Clculo de los valores singulares




El clculo de los valores singulares de una matriz A, recordemos,


races cuadradas no negativas de los valores propios de A T A
se puede llevar a cabo, en principio, utilizando alguno de los mtodos expuestos,
aplicndolo a la matriz simtrica A T A.

Existen no obstante algoritmos ms especializados basados en iteraciones QR


de la matriz A, o en el de Jacobi.

99/106

Algoritmo de Golub y Reinsch.


Gene Howard Golub,
EE.UU. 1932-2007.

Primera fase: Bidiagonalizacin

Consiste en reducir con transformaciones de Householder la matriz A 2 Cmn a


una triangular superior bidiagonal. Es decir, hacer
 
donde

QB A B D B D

B1
,
0

3 9
d1 f2
>
>
6 d2 f3 0
7 >
=
6
7 >
6
::: ::: 7
n
6
7
BD6
>
7
:
>
: : fn 7 >
6 0
;
6
7 >
4
dn 5
m
0

QB D Qn    Q1 2 Rmm y B D 1    n

2 Rnn.

El esquema operativo que se seguira con una matriz A 64 es este:

Esta rutina de Matlab consigue el resultado.

 0 0

 0 0
 0 0

 0 0
 0 0
 Q 0 
 0 Q 0  0 Q 0  0
   Q 0 
0
0
1 0    1 0 
2 0 0  2 0 0 
3 0 0 
4 0 0 
 
0 0 0
0 0 
0 0 0
0 
0 
0 0 

0000
0 0 
0 0 0
0 
0 
0 0 

0000
0 0 
0 0 0
0 
0 
0 0 

function [Q1 A P1]= bidiag(A)


% Se bidiagonaliza A por Householder.
[m,n] = size(A); Q1=eye(m); P1=eye(n);
for k = 1:min(m,n)
% Introduce ceros debajo de la diagonal en la columna k.
u = A(:,k); u(1:k-1) = 0; sigma = norm(u);
if sigma ~= 0
if u(k) ~= 0, sigma = sign(u(k))*sigma; end
u(k) = u(k) + sigma; rho = 1/(sigma*u(k));
v = rho*(u*A); q1=rho*(u*Q1);
A = A - u*v; Q1 = Q1 - u*q1;
A(k+1:m,k) = 0;
end
% Introduce zeros a la derecha de la supradiagonal en la fila k.
u = A(k,:); u(1:k) = 0; sigma = norm(u);
if sigma ~= 0
if u(k+1) ~= 0, sigma = sign(u(k+1))*sigma; end
u(k+1) = u(k+1) + sigma; rho = 1/(sigma*u(k+1));
v = rho*(A*u); p1=rho*(P1*u);
A = A - v*u; P1 = P1 - p1*u;
A(k,k+2:n) = 0;
end
end
end

100/106

Algoritmo de Golub y Reinsch. Segunda fase




101/106

Ya A bidiagonal, se diagonalizarla mediante un algoritmo iterativo haciendo


B kC1 D U Tk B k V k ;

k D 1; 2; : : : ;

con U k y V k ortogonales, y tal que lKmk!1 B k D D D diag.1; : : : ; n/.

Clculo prctico de la SVD (3)




La descomposicin en valores singulares


ser
U D
QB diag.Ude
y V D(3)
B V k .
k ; I la
m n/
culo
prctico
SVD

kD:::;2;1

D de una matriz bidiagonal B, de tamao nn:

kD1;2:::

0
0

0
T=BTB.

En la figura se esquematiza cmo se hace.


4

0 0 0

0 0 BG +
12
0 0 0

0 0
0
0 0 0
0

40
0
0
BG 24

0 0 0 0

0 0 G B 0
21
0 0 0

0 0
0
0 0 0
0

0 0 0

0 0 G B 0
43
0 0 0

0 +
0
0 0 0
0

+ 0 0

0 0 BG 0
13
0 0 0

0 0
0
0 0 0
0

0 0 0

0 0 BG 0
35
0 + 0

0 0
0
0 0 0
0

0 0 0

0 0 G B 0
32
+ 0 0

0 0
0
0 0 0
0

0 0 0

0 0 G B 0
54
0 0 0

0 0
0
0 0 +
0

, donde

SVD de unaA
matriz
V TB, de tamao nn:
D Ubidiagonal
0
Se puede aplicar el mtodo QR con desplazamiento a la matriz T=BTB.
Tambin se pueden aplicar una serie (tericamente infinita) de rotacion
Givens a B para hacerla diagonal:
ETSII-UPM

0

Se puede aplicar el mtodo QR con desplazamiento a la matriz
0 0
de
Tambin se pueden aplicar una serie (tericamente infinita) de rotaciones
0 0 0
Givens a B para hacerla diagonal:
0 0 0

0 0

0 0 BG +
12
0 0


0
0
0

0 0 0

+ 0 BG 0
24
0 0 0

0 0
0
0 0 0
0

0 0 0 0

0 0 G B 0
21
0 0 0

0 0
0
0 0 0
0

0 0 0

0 0 G B 0
43
0 0 0

0 +
0
0 0 0
0

+ 0 0

0 0 BG 0
13
0 0 0

0 0
0
0 0 0
0

0 0 0

0 0 BG 0
35
0 + 0

0 0
0
0 0 0
0

0 0 0

0 0 G B 0
32
+ 0 0

0 0
0
0
0 0 0

0 0 0

0 0 G B 0
54
0 0 0

0 0
0
0 0 +
0

0 0
0 0

0 0 0
0 0
0 0

0 0
0 0 0

0 0 0
0 0 Se comprueba que los elementos de la supra-diagonal tienden a cero
0 0 n-1 hasta el primero) y los de la diagonal a los valores singulares.

0 0 La convergencia puede ser acelerada utilizando desplazamiento.


0 0 0

Recordemos las ideas el algoritmo de Jacobi para el clculo de los valores propios de matrices simtricas,
pues se hace algo parecido.

(d

102/106

Cdigo de Matlab:

function [S U V it t t1 F]=svd_GolRein_1(A)
% Se calcula al descomposicin en valores singulares, [U S V]=U*S*V=A,
%
de una matriz cualquiera m x n.
% Sigue casi exactamente el "paper" de Golub y Reinsch, "Singular Value
% Decomposition and Least Squares Solutions", Numeri. Math., 14, 1970.
c=1; s=1;
% Comienzo iteracin QR
[m n]=size(A); tol=norm(A,fro)*sqrt(eps); itr=0; tic;
for
i=l+1:k
if n>m, A=A; [m n]=size(A); itr=1; end % Necesario m>=n
g=e(i); y=q(i); h=s*g; g=c*g;
% Bidiagonaliza A por Householder: U*B_n*V = A
e(i-1)=sqrt(f*f+h*h); z=e(i-1); c=f/z; s=h/z;
[U B_n V] = bidiag_Hansen(A); t1=toc; tic;
f=x*c+g*s; g=-x*s+g*c; h=y*s; y=y*c;
q=B_n(:,1); e=[0; B_n(1:n-1,2)]; U1=eye(m); V1=eye(n);
V1(:,[i-1 i])=V1(:,[i-1 i])*[c -s;s c];
k=n; it=0;
q(i-1)=sqrt(f*f+h*h); z=q(i-1); c=f/z; s=h/z;
while k>0
% Bucle principal proceso itera.
f=c*g+s*y; x=-s*g+c*y;
caso=1;
U1(:,[i-1 i])=U1(:,[i-1 i])*[c -s;s c];
for l=k:-1:1
end
if abs(e(l)) <=tol, e(l)=0;
caso=0; break, end
e(l)=0; e(k)=f; q(k)=x;
if abs(q(l-1))<=tol, q(l-1)=0;
break, end
it=it+1;
end
end
if caso
U=U*U1; V=V1*V;
c=0; s=1; l1=l-1; % Cancelacin columna l-1: Givens
S=zeros(m,n);
% Valores singulares en S y salida resul.
for i=l:k
for
i=1:n
f=s*e(i); e(i)=c*e(i);
ssn=q(i); S(i,i)=abs(ssn); if ssn<0, V(i,:)=-V(i,:); end,
if abs(f)<=tol, break, end
end
g=q(i); h=sqrt(f*f+g*g); c=g/h; s=-f/h; q(i)=h;
[q ix]=sort(diag(S),descend);
U1(:,[l1 i])=U1(:,[l1 i])*[c -s;s c];
for i=1:n, S(i,i)=q(i); end
% Valores sing. en S de + a end
ix1=1:m;
P1=eye(m);
ix1(1:n)=ix;
P1=P1(:,ix1);
U=U*P1; V=V(ix,:);
end
F=max(max(U*S*V-A)); t=toc;
% Chequeo precisin resultados
z=q(k);
% Comprobar convergencia
if itr==1, S=S; Te=U; U=V; V=Te; end % Si m<n, trasponer resultados
if l==k
if nargout==1, S=diag(S); end
if z<0, q(k)=-z; V1(:,k)=-V1(:,k); end
end
k=k-1; continue
end
x=q(l); y=q(k-1); g=e(k-1); h=e(k); % Clculo desplazami. con 2x2
f=((y-z)*(y+z)+(g-h)*(g+h))/(2*h*y); g=sqrt(f*f+1);
f=((x-z)*(x+z)+h*(y/(f+(sign(f)+(f==0))*g)-h))/x;

Utilicemos el algoritmo en una pequea sesin de Matlab.


>> A=[1 2 3;3 4 5;6 7 8];
>> [S U V]=svd_GolRein_1(A)
S =
14.5576
0
0
0
1.0372
0
0
0
0.0000
U =
-0.2500
-0.8371
-0.4867
-0.4852
-0.3267
0.8111
-0.8379
0.4389
-0.3244
V =
-0.4625
-0.5706
-0.6786
0.7870
0.0882
-0.6106
0.4082
-0.8165
0.4082
>> U*S*V
ans =
1.0000
2.0000
3.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000

>> A=rand(1000);
>> A = (A - .5)*2;

Tiempos

>> tic, [S U V]=svd_GolRein_1(A); toc


Elapsed time is 13.971564 seconds.
>> tic, [V S U]=svd(A); toc
Elapsed time is 0.315793 seconds.

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


>> [V S U]=svd(A)
V =
-0.2500
-0.8371
-0.4867
-0.4852
-0.3267
0.8111
-0.8379
0.4389
-0.3244
S =
14.5576
0
0
0
1.0372
0
0
0
0.0000
U =
-0.4625
0.7870
0.4082
-0.5706
0.0882
-0.8165
-0.6786
-0.6106
0.4082
>> V*S*U
ans =
1.0000
2.0000
3.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000

103/106

104/106

1 0 0 0 2
Para una matriz complicada como M D 00 00 30 00 00 :
04000

>> M=[1 0 0 0 2;0 0 3 0 0;0 0 0 0 0;0 4 0 0 0]


M =
1
0
0
0
2
0
0
3
0
0
0
0
0
0
0
0
4
0
0
0
>> [S U V]=svd_GolRein_1(M)
S =
4.0000
0
0
0
0
0
3.0000
0
0
0
0
0
2.2361
0
0
0
0
0
0
0
U =
0
0
-1
0
0
-1
0
0
0
0
0
1
1
0
0
0
V =
0
1.0000
0
0
0
0
0
-1.0000
0
0
-0.4472
0
0
0
-0.8944
0
0
0
1.0000
0
0
0
0
0
1.0000

>> [U S V]=svd(M)
U =
0
0
1
0
1
0
0
0
0
1
0
0
S =
4.0000
0
0
3.0000
0
0
0
0
V =
0
0
1.0000
0
0
1.0000
0
0
0
0

0
0
-1
0
0
0
2.2361
0

0
0
0
0

0
0
0
0

0.4472
0
0
0
0.8944

0
0
0
1.0000
0

-0.8944
0
0
0
0.4472

105/106

Algoritmo de Jacobi


Las races cuadradas no negativas de los valores propios de AA T son los valores
singulares de A. Utilicemos Jacobi para calcular aquellos valores propios.

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


>> [V D it]=Jacobi_val_12(A*A)
V =
0.7870
0.4082
-0.4625
0.0882
-0.8165
-0.5706
-0.6106
0.4082
-0.6786
D =
0.0000
1.0759
211.9241
it =
6
>> sqrt(D)
ans =
0.0000
1.0372
14.5576

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


>> [V S U]=svd(A)
V =
-0.2500
-0.8371
-0.4867
-0.4852
-0.3267
0.8111
-0.8379
0.4389
-0.3244
S =
14.5576
0
0
0
1.0372
0
0
0
0.0000
U =
-0.4625
0.7870
0.4082
-0.5706
0.0882
-0.8165
-0.6786
-0.6106
0.4082
>> V*S*U
ans =
1.0000
2.0000
3.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000

Con la matriz M :

>> [V D it]=Jacobi_val_12(M*M)
V =
0.4472
0
0
0 -0.8944
0 1.0000
0
0
0
0
0 1.0000
0
0
0
0
0 1.0000
0
0.8944
0
0
0 0.4472
D =
0
0
5
9
16
it =
1
>> sqrt(D)
ans =
0
0
2.2361
3.0000
4.0000

Algo ms sofisticado, aunque en lo esencial igual:


function [U S V] = svd_J(A,tol)
% SVDJ Singular value decomposition using Jacobi algorithm.
if nargin == 1, tol = eps; end
% Tolerancia por defecto
[M,N] = size(A); K = min(M,N);
% K es el nmero de valores singulares
On = 0;
for c=A, On=On + sum(abs(c).^2); end
On=On./N;
% Suma coef.^2/N
Previous_Off = Inf; V = eye(N);
while true
R = 0;
% Contar las rotaciones
for r = 1:N - 1
for c = r + 1:N
% Calculate the three elements of the implicit matrix B that are
% needed to calculate a Jacobi rotation. Since B is Hermitian, the
% fourth element (b_cr) is not needed.
b_rr = sum(abs(A(:,r)).^2);
% Real value.
b_cc = sum(abs(A(:,c)).^2);
% Real value.
b_rc = A(:,r) * A(:,c);
% Same type as A.
% Calculate a Jacobi rotation (four elements of G). The two values
% that we calculate are a real value, C = cos(theta) and S, a value
% of the same type as A, such that |S| = sin(theta).
m = abs(b_rc);
if m ~= 0 % If the off-diagonal element is zero, we dont rotate.
tau = (b_cc - b_rr)/(2*m); % tau is real and will be zero if
% the two on-diagonal elements are
% equal. In this case G will be an
% identity matrix, and there is no
% point in further calculating it.
if tau ~= 0
R = R + 1; % Count the rotation we are about to perform.
t
= sign(tau)./(abs(tau) + sqrt(1+tau.^ 2));
C
= 1./sqrt(1 + t.^ 2);
S
= (b_rc.* t.* C)./ m;
% Initialize the rotation matrix, which is the same size as the
% implicit matrix B.
% We have to create an identity matrix here of the same type as A,
% that is, quaternion if A is a quaternion, double if A is double.
% To do this we use a function handle (q.v.) constructed from the
% class type of A. This was done before the loop, since the type
% of A is invariant.
G = eye(N); G(r,r) = C; G(c,c) = C; G(r,c) = S; G(c,r) =-conj(S);
A = A * G;
V = V * G;
end
end
end
end

106/106

if R == 0, error(No rotations performed during sweep.), end


% Calculate the sum of the off-diagonal elements of the matrix B.
B = A * A;
Off = sum(sum(abs(triu(B,1))))/(N.^2); % Normalise by the matrix size!
if (Off/On) < tol, break; end
% Off-diagonal sum is small enough to stop.
if Previous_Off < Off
warning(QTFM:information, ...
Terminating sweeps: off diagonal sum increased on last sweep.)
break;
end
Previous_Off = Off;
end
% Extract and sort the singular values. The vector T may be longer than the
% number of singular values (K) in cases where A is not square.
[T,IX] = sort(sqrt(abs(diag(B))),descend);
if nargout == 0 || nargout == 1 % .. only the singular values are needed.
U = T(1:K);
end
if nargout == 3 % .. the singular vectors and singular values are needed.
A = A(:, IX); % Map the columns of A and V into the same order as the
V = V(:, IX); % singular values, using the sort indices in IX.
% Construct the left singular vectors. These are in A but we need
% to divide each column by the corresponding singular value. This
% calculation is done by replicating T to make a matrix which can
% then be divided into A element-by-element (vectorized division).
U = A./ repmat(T,M,1);
S = diag(T); % Construct a diagonal matrix of singular values from
% the vector T, because when there are three output
% parameters, S is required to be a matrix.
end
end

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Optimizacin
Programacin no lineal sin condiciones

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_minimi_sincond_2016.pdf

1/75

La OPTIMIZACIN es un lenguaje y forma de expresar en


trminos matemticos un gran nmero de problemas
complejos de la vida cotidiana y cmo se pueden resolver de
forma prctica mediante los algoritmos numricos adecuados
Loptimisation est une discipline combinant plusieurs domaines de comptences : les mathmatiques dcisionelles, les statistiques et
linformatique. Cette mthode scietifique a pour but de maximiser ou de minimiser un objectif. En pratique loptimisation est souvent utilise
por augmenter la rentabilit ou diminuer les cots.

La optimizacin se estudia en dos grandes partes:


 Optimizacin sin condiciones.
minimizar f W Rn ! R
 Optimizacin con condiciones
minimizar
f .x/
x 2Rn
sujeta a c i .x/ D 0;
cj .x/  0;

i 2 E;
j 2 I:

2/75

3/75

Cmo se lleva a cabo un proyecto de optimizacin?

4/75

ndice


El problema sin condiciones

Condiciones de mnimo

Mtodos de direccin de descenso




Mtodo del gradiente o de la mxima pendiente

Mtodo de Newton

Mtodos de Newton amortiguado y de Regin de Confianza

Mtodo de los gradientes conjugados

Mtodos cuasi Newton

5/75

El problema sin condiciones




Dar solucin a

minimizar f W Rn ! R

La funcin f se supone continua en algn conjunto abierto de Rn y con


derivadas parciales continuas hasta segundo orden en ese abierto.

Example 1.1. In this example


we consider functions of one variable. The function


Ejemplos
Si x es
una constante, la funcin f .x/ D .x
2
f (x) = (x x )
nico
punto
alcanza
el mnimo:
en el valor de x .
has one,
uniquedonde
minimizer,
x , see Figure
1.1.

 2

x /

In many objectiv
6/75
andun
several local
tiene
can find the glob
global optimizati

Figure 1.1: y = (x x )2 .
One minimizer.

1. I NTRODUCTION

of
we 
n

La funcin

x*

The function f (x) = 2 cos(x x ) has infinitely many minimizers: x =


f .x/x D
cos.x
x / tiene
mnimos
locales en x D x 
+ 2p 2
, where
p is an integer;
see Figure
1.2.
y

The methods de
function. When
whether it is a g
not even be sure

C 2a.

Figure 1.2: y = 2 cos(x x ). Many minimizers.

f .x/ D

The function f (x) = 0.015(x x )2 2 cos(x x ) has a unique global


minimizer, x . Besides that, it also has several socalled local minimizers, each
giving the
function
inside
a certain region,
see Figure
0;015.x
x minimal
/2 tiene
un value
nico
mnimo
global,
x , y1.3.muchos
y

x*

Figure 1.3: y = 0.015(x x )2 2 cos(x x ).

locales.

Condiciones de mnimo


7/75

El objetivo de cualquier mtodo de optimizacin es el de encontrar el mnimo


global, si existe, o un mnimo local.
Definicin Una funcin f W Rn ! R se dice convexa si

7.4 Convex and Concave Functions

f .x 1 C x 2 /  f .x 1 / C f .x 2 /
para todo x 1 ; x 2 2 Rn y todo ; 2 R, con C D 1,  0,  0.
y = f(x)

convex
(a)

193

Teorema Condiciones de convexidad de primer orden Una funcin f W Rn ! R

8/75

derivable es decir, su gradiente, rf .x/, existe para todo x 2 R es convexa si para


todo x; y 2 Rn se cumple que
f .y/  f .x/ C rf .x/T .y x/.
3.1 Basic properties and examples
69
f ( y)
f (x ) + f (x )T ( y x )
(x, f (x ))

Figure
3.2 If f is convexde
andconvexidad
differentiable, then
(x)+f (x) orden
(yx) Una
f (y) funcin f W Rn ! R que
Teoremafor
Condiciones
de fsegundo
all x, y dom f .
T

tiene derivadas parciales de segundo orden es decir, existe su matriz Hessiana, r 2f .x/,
para todo x 2 Rn , es convexa si para todo x 2 Rn 0 se cumple que x T r 2f .x/x  0,
by
72
3 Convex functions
es decir, lais given
Hessiana
es semidefinida positiva.

IC (x) =

xC
x 6 C.

Ejemplo la funcin

f (x, y )

The convex function IC is called the indicator function of the set C.


2
We can play several notational tricks with the indicator function IC . For example
the problem of minimizing a function f (defined on all of Rn , say) on the set C1 is the
same as minimizing the function f + IC over all of Rn . Indeed, the function f + IC
2
2
is (by our convention) f restricted
to the set C.

f W R ! R, f .x; y/ D x =y , y > 0

0
2

In a similar way we can extend a concave function by defining it to be y


outside its domain.

0
0 2

Figure 3.3 Graph of f (x, y) = x2 /y.

9/75

Teorema Condiciones necesarias de mnimo local de primer orden Si x  es un mnimo


local de f W Rn ! R, se cumple que
rf .x  / D 0:

Un punto x en el que rf .x/ D 0 se denomina punto estacionario de f .x/.


Teorema Condiciones suficientes de mnimo local de segundo orden Si x  es un punto

estacionario y r 2f .x  / es definida positiva, x  es un mnimo local.

IMPORTANTE Cualquier mnimo local de una funcin convexa es un mnimo


global.

of the function value near a local minimizer (Figure 1.5a), a local maximizer
(Figure 1.5b) and a saddle point (Figure 1.5c). It is a characteristic of a saddle
point that there exists one line through xs , with the property that if we follow
the variation
of thecasos
f -value
the line,
this looks like a local minimum,
 Se pueden
dar distintos
de along
mnimos
locales.
whereas there exists another line through xs , indicating a local maximizer.

10/75

c) saddle point
a) minimum
b) maximum
Figure
1.5: local
With ay2-dimensional
x we seepositiva.
surfaces
1. El primero es un
mnimo
r 2f .x / es definida
z = f (x) near a stationary point.

2. El segundo es un mximo local y r 2f .x / es definida negativa.

3. El tercero, un punto de silla: se da cuando r 2f .x / es semidefinida


positiva, semidefinida negativa o indefinida.

Si r 2f .x / D 0 se necesita ms informacin de derivadas parciales de tercer


orden para determinar los mnimos locales.

11/75

10

10
30
25

20

20
15

10

10
0

5
0

12/75

Obtencin de la solucin
Mtodos de direccin de descenso


Mtodos de direccin de descenso

Siguen un procedimiento iterativo que hace descender el valor de la funcin,


Siguen
un procedimiento
iterativo kquedehace
funcin,
f .x kC1/ < f 4.x
sucesivos puntos
esedescender
procesola mediante
el clculo
k / ; en
en sucesivos
k delcon
proceso
< f .x k / ;en
f .xde
kC1 /descenso
de unas direcciones
las que puntos
moverse
estemediante
objetivo.
el clculo de una direccin de descenso en la que moverse con este
objetivo.

p
k pk(k)

xk

x(k+1)

ppk(k)
4 Se

(k)
xkx+1

diferencian unos de otros en la forma de calcular p.


13/81

Se diferencian unos de otros en la forma de calcular p en cada punto del


proceso iterativo.
a

10

13/75

El esquema algortmico general es este.

Dados Un x WD x 0 y una t ol. Hacer f ound WD f al se


while (not f ound ) and (k < kmax )
Calcular direccin de descenso p
if (p no existe) or (t ol)
f ound WD true

else

Calcular : amplitud del paso en p


x WD x C p

end
end

k WD k C 1

Amplitud de paso (linesearch)

14/75

Calculada la direccin de descenso p en un punto del proceso sobre lo que


volveremos de inmediato, un punto esencial es cunto moverse en ella: qu
paso dar?

Para calcular ese paso, hay que minimizar en la funcin f .x C p/, es decir
minimizar './ D f .x C p/:

Esta minimizacin puede hacerse estrictamente, o de una forma aproximada,


esperndose en este caso un coste menor en nmero de operaciones y tiempo.

Si se opta por la inexacta, o truncada, hay que garantizar con algn indicador
que
f .x C p/ < f .x/;
es decir que la funcin decrezca suficientemente a lo largo de p.

ng a Step Length k

15/75

Hay que evitar pasos muy largos, como en la parte izquierda de la figura con la
kC1
funcin
x 2, donde,
direcciones
pk D
. 1/kC1
y los pasos that
k D 2 C 3=2
nges
in finding
a las
good
k are
both
in avoiding
producen el efecto indicado, desde x D 2.
ngth is too long, or too short, 0


2.5

2.5

1.5

1.5

0.5

0.5

0
2

1.5

0.5

0.5

1.5

1.5

0.5

0.5

1.5

(the objective function f (x) = x2 and the iterates xk+1 = xk + k pk generated by

k+1
k + k pk generated
e function f (x) = x2 and
the piterates
x1/2
k = 1 andx
k =
k+1 from x = 2).
directions
steps =
0
k
k+1
k
k+1
t directions p = (1)
and steps = 2+3/2
from x0 = 2)

Tambin muy cortos, como en x 2 las direcciones pk D 1 y los pasos


k D 1=2kC1, partiendo tambin de x0 D 2, que producen lo que se ve.

Del desarrollo de Taylor se tiene que

16/75

'./ D f .x C p/ C pT rf .x C p/ C O. 2/

y de l que, en D 0, ' 0.0/ D p T rf .x/.




La figura que sigue muestra una posible evolucin de './. La expresin de


' 0.0/ es la recta A en la figura: tangente a f .x C p/ en D 0. La recta D es
108
'.0/.

f .xCp/

(x k )
f f.x/

)
B

11

22

(a)

0
f (x ) se debe cumplir que './ < '.0/ y que './ > ' .0/.
Para que haya descenso,
k

17/75

La ecuacin
f .x C p/ D f .x/ C %rf .x/Tp;

0  % < 21 ;

es la recta B, cuya pendiente en su zona sombreada va de 0 a 12 rf .x/Tp.


Representa una fraccin, %, (de 0 a 12 ) de la reduccin que promete la
aproximacin de Taylor de primer orden en x.


Por otro lado, f .x C p/ D f .x/ C .1 %/rf .x/Tp es la recta C, cuya


pendiente abarca la zona sombreada de rf .x/Tp a 12 rf .x/Tp.

18/75

Para que haya suficiente descenso, los criterios de Armijo y Goldstein dicen que
el 2 .0; 1/ que se escoja debe ser tal que, para 0 < % < 12 <  < 1, por
ejemplo % D 0;0001 y  D 0;9,
f .x C p/  f .x/ C %rf .x/Tp

Armijo

y
f .x C p/  f .x/ C rf .x/Tp

Goldstein

Otro criterio es el de Wolfe, con dos condiciones tambin. La primera es igual a


la de Armijo, la segunda
rf .x C p/T p  rf .x/T p:
Tambin denominada de curvatura. Indica que la pendiente de la funcin debe
ser menor en el nuevo punto.

19/75

El mtodo inexacto ms extendido para calcular la amplitud de paso se


conoce como backtracking .

Comienza con un paso completo, D 1, y lo va reduciendo mediante un factor


constante,  , 2 .0; 1/, hasta que se cumplan los criterios de Armijo y
Goldstein, o uno de los dos: preferentemente el de Armijo.

Funciona slo si f .x C p/0D0 D rf .x/T p < 0 (direccin de descenso).

20/75

Mtodo de la direccin del gradiente o de la mxima


pendiente


Consideremos el desarrollo en serie de Taylor de f .x/ hasta primer orden:



f .x C p/ D f .x/ C rf .x/T p C O kpk2 :

La direccin p en x es una direccin de descenso si


rf .x/T p < 0:

El descenso relativo de la funcin en p es


f .x/

f .x C p/
D
kpk

rf .x/T p
D
kpk

donde  es el ngulo que forman p y rf .x/.

krf .x/k cos 

21/75

El descenso cualitativo ser mximo cuando  D : donde cos./ D

Es decir, la direccin de mxima pendiente es


pD

Line search methods

rf .x/

Iteration: xk+1 = xk + k pk , where k is the step length (how far to move along pk ), k > 0; pk
is the search direction.
3

2.5

1.5

xk
1
2

pk

1.5

0.5

0.5

pTk fk

Descent direction:
= kpk k kfk k cos k < 0 (angle <
can be reduced along pk (for a sufficiently smooth step):
T

1.5

with fk ). Guarantees that f

1.

22/75

Algoritmo de la mxima pendiente.

Dados Un x WD x 0 y una t ol. Hacer f ound WD f al se


while (not f ound ) and (k < kmax )
Calcular direccin de descenso p D

if (p no existe) or (t ol)

gD

rf .x/

f ound WD true

else

Calcular amplitud de paso con backtracking


x WD x C p

end
end

Su convergencia es lineal.

k WD k C 1

Ejemplo Resolvamos minimizar e x1C3x2


x 2R2

0;1

Ce x1

3x2 0;1

Ce

x1 0;1

function [x f] = Maxima_pendiente_unc(fun,x0)
% Mtodo de la mxima pendiente
rho = 0.1; beta = 0.5;
% Parmetros y partida
f1=0; maxit = 100; x = x0;
for i=1:maxit
% Proceso iterativo
[f g] = fun(x);
if (abs(f-f1) < 1e-10), break, end
p = -g; alpha = 1;
for k=1:10
% Clculo inexacto amplitud de paso
xnew = x+alpha*p; fxnew = fun(xnew);
if fxnew < f + alpha*rho*g*p
break
else alpha = alpha*beta;
end
end
x = x + alpha*p; f1=f;
fprintf(%4.0f %13.8e %13.8e %13.8e %13.8e\n,i,x,f,alpha);
end
end
function [f g]= objfun_min1(x)
A = [1 3; 1 -3; -1 0]; b = -0.1*[1; 1; 1];
f = sum(exp(A*x+b)); if nargout<2, return, end
g = A*exp(A*x+b);
end

23/75

24/75

Su ejecucin da como resultado:


>> [x f]=Maxima_pendiente_unc(@objfun_min1,[-1;1])
1 -1.26517900e+000 -2.50497831e-001 9.16207023e+000 6.25000000e-002
2 -6.29000734e-001 6.51924176e-002 3.86828053e+000 2.50000000e-001
3 -4.50514899e-001 -7.72284882e-002 2.68052760e+000 2.50000000e-001
4 -4.21089848e-001 2.38719166e-002 2.60419641e+000 1.25000000e-001
5 -3.97610304e-001 -8.05335008e-003 2.56942254e+000 1.25000000e-001
6 -3.65030711e-001 1.39821003e-002 2.56295544e+000 2.50000000e-001
7 -3.59263955e-001 -5.78404615e-003 2.56080796e+000 1.25000000e-001
8 -3.55227870e-001 2.43800662e-003 2.55966300e+000 1.25000000e-001
9 -3.52463501e-001 -1.04150522e-003 2.55939647e+000 1.25000000e-001
10 -3.48696568e-001 1.93956544e-003 2.55931730e+000 2.50000000e-001
11 -3.48020112e-001 -8.46703041e-004 2.55929408e+000 1.25000000e-001
12 -3.47557873e-001 3.70439501e-004 2.55927350e+000 1.25000000e-001
13 -3.47243091e-001 -1.62316050e-004 2.55926873e+000 1.25000000e-001
14 -3.47028931e-001 7.11957301e-005 2.55926742e+000 1.25000000e-001
15 -3.46737604e-001 -1.33695923e-004 2.55926699e+000 2.50000000e-001
16 -3.46685147e-001 5.87394995e-005 2.55926683e+000 1.25000000e-001
17 -3.46649462e-001 -2.58117184e-005 2.55926673e+000 1.25000000e-001
18 -3.46625190e-001 1.13436901e-005 2.55926671e+000 1.25000000e-001
19 -3.46592176e-001 -2.13150939e-005 2.55926670e+000 2.50000000e-001
20 -3.46586231e-001 9.36927894e-006 2.55926670e+000 1.25000000e-001
21 -3.46582187e-001 -4.11844758e-006 2.55926670e+000 1.25000000e-001
22 -3.46579437e-001 1.81036718e-006 2.55926670e+000 1.25000000e-001
23 -3.46577566e-001 -7.95799575e-007 2.55926670e+000 1.25000000e-001
x =
-0.346577566436640
-0.000000795799575
f =
2.559266696682093

En las siguientes grficas se puede ver el comportamiento del proceso iterativo.


El clculo de la amplitud se hace mediante backtracking y, exactamente, por el
mtodo de la biseccin.

25/75

10

10

error

inexacta: backtracking

10

10

10

line search exacta: bisecc.

15

10

10

15
k

20

25

Utilizando la rutina fminunc de Matlab, se tendra lo que sigue.


>> x0=[-1;1];
>> options = optimset(Display,iter,GradObj,on,LargeScale,off);
>> [x,fval,exitflag,output] = fminunc(@objfun_min1,x0,options)
First-order
Iteration Func-count
f(x)
Step-size
optimality
0
1
9.16207
20
1
2
3.57914
0.0499801
2.5
2
3
3.31537
1
2.11
3
4
2.60267
1
0.548
4
5
2.56573
1
0.349
5
6
2.55954
1
0.0613
6
7
2.55928
1
0.011
7
8
2.55927
1
0.000144
8
9
2.55927
1
1.88e-007
Optimization terminated: relative infinity-norm of gradient less than options.
TolFun.
x =
-0.3466
-0.0000
fval =
2.5593
exitflag =
1
output =
iterations: 8
funcCount: 9
stepsize: 1
firstorderopt: 1.8773e-007
algorithm: medium-scale: Quasi-Newton line search
message: [1x85 char]

La funcin objetivo y su gradiente estn en

function [f g]= objfun_min1(x)


% f(x) = sum(exp(A*x+b))
A = [1 3; 1 -3; -1 0]; b = -0.1*[1;1;1];
f = sum(exp(A*x+b));
g = A*exp(A*x+b);
end

26/75

27/75

Mtodo de Newton


Consideremos ahora el desarrollo en serie de Taylor de f .x/ hasta segundo


orden de derivadas:

1 T 2
3
T
f .x C p/ D f .x/ C rf .x/ p C p r f .x/ p C O kpk ;
2
donde g D rf .x/ es el vector gradiente y la matriz
2

@2 f .x / @2 f .x /
@2 x1
@x1 @x2

6
6 @2 f .x /
6
@x @x
H D r 2f .x/ D 6
6 2: 1
6 ::
4
@2 f .x /

la Hessiana.

@xn @x1



@2 f .x /
@x1 @xn

7
7
@ f .x / 7
@ f .x /



@ 2 x2
@x2 @xn 7,
:: : : : :: 7
:
: 7
5
@2 f .x /
@2 f .x /
   @2 xn
@xn @x2
2

Newtons Method

Newtons Method

La idea:

28/75

Newtons Method

Newtons Method

La condicin necesaria de ptimo, rf .x / D 0, de ese desarrollo conduce a


rf .x/Cr 2f .x/p D g CH p D 0.
Sistema lineal cuya solucin es la direccin de Newton hacia el ptimo.

Si la matriz H D r 2f .x/ es definida positiva (x T H x > 0 para cualquier


x 0), la direccin de Newton es una direccin de descenso pues
0 < pT H p D

pT g;

cumplindose as que pT g < 0, como dedujimos.

29/75

Algoritmo de Newton para minimizar f .x/:


Dados Un x WD x 0 y una t ol. Hacer f ound WD f al se
while (not f ound ) and (k < kmax )
Calcular direccin de descenso; resolver H p D

if (p no existe) or (t ol)
f ound WD true

else

Calcular la amplitud de paso con backtracking


x WD x C p

end
end

k WD k C 1

El script de Matlab que lo implementa, ste:


function [x f] = Newton_unc(fun,x)
% Mtodo de Newton
rho = 0.1; beta = 0.5;
% Parmetros de line search
maxit = 100;
for i=1:maxit
% Proceso interativo
[f g H] = fun(x);
p = -H\g;
if abs(p*g) < 1e-8, break, end
alpha = 1;
for k=1:50
% Clculo inexacto amplitud de paso
xnew = x+alpha*p;
fxnew = fun(xnew);
if fxnew < f+alpha*rho*g*p, break
else alpha=alpha*beta;
end
end
x = x + alpha*p;
fprintf(%1$3.0f %2$13.8e %3$13.8e %4$13.8e %13.8e\n,i,x,f,alpha);
end
end
function [f g H] = objfun_min2(x)
A = [1 3; 1 -3; -1 0]; b = -0.1*[1; 1; 1];
f = sum(exp(A*x+b)); if nargout<2, return, end
g = A*exp(A*x+b); H = A*diag(exp(A*x+b))*A;
end

30/75

31/75

Para resolver otra vez minimizar e x1C3x2


x 2R2

0;1

C e x1

3x2 0;1

>> [x f]=Newton_unc(@objfun_min2,[-1;1])
1 -5.23625188e-002 3.53998022e-001 9.16207023e+000
2 -1.05634526e-001 1.05820897e-001 3.73378771e+000
3 -3.18485379e-001 2.52139713e-002 2.71665315e+000
4 -3.45138214e-001 7.18724132e-004 2.56404324e+000
5 -3.46572427e-001 1.03191597e-006 2.55927231e+000
x =
-0.346572427027644
0.000001031915967
f =
2.559266696666079
>>

Ce

1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000

x1 0;1

32/75

La convergencia del mtodo y el error vs iteracin se describen a continuacin.


5

10

error

10

10

10

10

15

10

0.5

1.5

2.5
k

3.5

4.5

Si la matriz Hessiana es definida positiva, la convergencia del mtodo de


Newton es cuadrtica.

Funciona especialmente bien en las proximidades del ptimo o un punto


estacionario.

Combinacin de mxima pendiente y Newton

33/75

La direccin de Newton es siempre de descenso si la matriz Hessiana es definida


positiva.

Un algoritmo hbrido de mxima pendiente y Newton, para puntos de arranque


lejanos donde no se de esa condicin de la Hessiana, podra mejorar las
prestaciones del mtodo de Newton.

if H .x/ es definida positiva


p D pN

else
p D p mp
end

x WD x C p

34/75

En Matlab:

function [x f i] = Newton_mp(fun,x)
% Mtodo hbrido Newton-mxima pendiente
global h
rho = 0.1; beta = 0.5; % Parmetros de line search
maxit = 100; h=sqrt(eps);
for i=1:maxit
% Proceso iterativo
[f g H] = fun(x);
[R npd] = chol(H); % Cholesky comprueba si H es definida positiva
if ~npd
p = -R\(R\g);
% Direccin de Newton_mp
else
p = -g;
% Direccin de mxima pendiente
end
if abs(p*g)<1e-8, break, end
alpha = 1;
for k=1:10
% Backtracking de amplitud de paso
xnew = x+alpha*p;
fxnew = fun(xnew);
if fxnew < f+alpha*rho*g*p, break
else alpha=alpha*beta;
end
end
x = x + alpha*p;
fprintf(%3.0f %13.5e %13.5e %13.5e %13.5e %2.0f\n,i,x,f,alpha,npd);
end
end
function [f g H] = objfun_min3(x)
% Funcin de Rosenbrock: 100(x2-x1^2)^2+(1-x1)^2
global h
f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; if nargout<2, return, end
g = [-200*(x(2)-x(1)^2)*2*x(1)-2*(1-x(1));200*(x(2)-x(1)^2)];
if nargout<3, return, end
x1=[x(1)+h;x(2)]; [f1 g1]=objfun_min3(x1);
H(1:2,1)=(g1-g)/h;
x1=[x(1);x(2)+h]; [f1 g1]=objfun_min3(x1);
H(1:2,2)=(g1-g)/h;
end

Si lo utilizamos para resolver la complicada funcin de Rosenbrock


2
minimizar 100 x2 x12 C .1 x1/2:
x 2R2
0.5

15

0.4
4

0.3

15

15

0.2

x2

3
2
1

1
5

3 4

10

0.1

10

0.1

5
43

10

10

15

10

3
4

0.2

5
15

10

10

0.3

15

15

0.4

0.5
0.5

0.4

0.3

0.2

0.1

0
x

0.1

0.2

0.3

0.4

0.5

Figure 5: Contour plot of Rosenbrocks banana function.


function [f g H] = objfun_min3(x)
% Funcin de Rosenbrock: 100(x2-x1^2)^2+(1-x1)^2
h
where K is the cone of 6 6 PSD matrices. Following theglobal
terminology
introduced in
f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; if nargout<2, return, end
[7, 8], the above matrix is referred to as the moment, or measure
matrix associated with
g = [-200*(x(2)-x(1)^2)*2*x(1)-2*(1-x(1));200*(x(2)-x(1)^2)];
the LMI relaxation. Because the above moment matrix contains
relaxations return,
of monomials
if nargout<3,
end
[f1 above
g1]=objfun_min3(x1);
of degree up to 2+2=4, it is referred to as the second-degree x1=[x(1)+h;x(2)];
moment matrix. The
H(1:2,1)=(g1-g)/h;
upper-left 3x3 submatrix contains relaxations of monomials of
degree up to 1+1=2, so it
x1=[x(1);x(2)+h]; [f1 g1]=objfun_min3(x1);
is referred to as the first-degree moment matrix.
H(1:2,2)=(g1-g)/h;
end

Now replacing the monomials in the criterion by their relaxed variables, the first LMI
relaxation of Rosenbrocks banana function minimization reads
max 1
21 100y40
+ 2y10 y20 100y02 + 200y

35/75

36/75

Partiendo de un punto alejado se obtiene esto.


>> [x f k] = Newton_mp(@objfun_min3,[0;15])
1 1.56250e-002 -8.43750e+000 2.25010e+004
2 1.62080e-002 2.62358e-004 7.12052e+003
3 2.62139e-001 8.23454e-003 9.67847e-001
4 3.18480e-001 9.82550e-002 9.10251e-001
5 5.26915e-001 2.32607e-001 4.65478e-001
6 5.74193e-001 3.27462e-001 4.26601e-001
7 7.21323e-001 4.97541e-001 1.81811e-001
8 7.71508e-001 5.92706e-001 1.29485e-001
9 8.47484e-001 7.11197e-001 5.28430e-002
10 9.10865e-001 8.25658e-001 2.82056e-002
11 9.60290e-001 9.19713e-001 9.55884e-003
12 9.86967e-001 9.73391e-001 2.17363e-003
13 9.98376e-001 9.96624e-001 2.20516e-004
14 9.99959e-001 9.99915e-001 4.33199e-006
x =
0.999958778201435
0.999915052848790
f =
2.326866095161381e-009
k =
15

7.81250e-003
1.00000e+000
2.50000e-001
1.00000e+000
5.00000e-001
1.00000e+000
5.00000e-001
1.00000e+000
5.00000e-001
1.00000e+000
1.00000e+000
1.00000e+000
1.00000e+000
1.00000e+000

1
0
0
0
0
0
0
0
0
0
0
0
0
0

37/75

Mtodos de Newton Amortiguado y de


Regin de Confianza


Supongamos que un modelo M.p/ representa simplificadamente el


comportamiento de la funcin f en el entorno de un punto, es decir,
1
f .x C p/ ' M.p/  f .x/ C pT c C pT Bp;
2
donde c 2 Rn y la matriz B 2 Rnn es simtrica.
Tal modelo puede ser el desarrollo en serie de Taylor hasta segundas derivadas,
o una aproximacin adecuada.

La idea es utilizar esos modelos para calcular direcciones de descenso que se


puedan modular a voluntad, y con amplitudes de paso D 1.
Estudiaremos dos variantes.

38/75

La primera se conoce como Newton amortiguado. Calcula en cada punto del


proceso iterativo un paso


1 T
pNa  mKn M.p/ C p p ;
p
2
donde  es un parmetro de amortiguacin que, aplicado como se indica,
penaliza pasos amplios.

La segunda, la regin de confianza,


prc  mKn M.p/;
kpk 

pues se restringe el modelo a una regin donde se confa que plasme bien las
caractersticas del problema.

a small reduction in f , even if the optimal steplength is used. The trust-region meth
dotted
circle (shown),
a more se
signica
steps to the minimizer of m k within theen
39/75
 Si la funcin decrece convenientemente
cualquiera
de estasyielding
direcciones,
reduction in f and better progress toward the solution.
hace x C p como el nuevo punto del procedimiento y se adapta  o .
In this chapter, we will assume that the model function m k that is used at ea
iterate xk is quadratic. Moreover, m k is based on the Taylor-series expansion of f arou


Si no decrece lo suficiente, y no se ha llegado al ptimo, se modifica  o para


que en la prxima iteracin el avance hacia el ptimo mejore.
Trust region
Regin
de confianza
Line search
direction
Paso
de Newton

contours
of mkM.p/
Contornos del
modelo

Trust de
region
step de
Paso
regin
confianza

contours of f de f .x/
Contornos

40/75

La calidad del modelo elegido se evala mediante la ganancia


%D

f .x/ f .x C p/
;
M.0/ M.p/

es decir, la relacin entre lo que decrece la funcin desde x y lo que prevea el


modelo que lo hara.


Con el modelo regin de confianza, si % < 41 , la ganancia es pequea y se


deberan reducir los pasos, por ejemplo a la mitad, mientras que si % > 34 se
podran aumentar.
if % < 0;25
WD =2
elseif % > 0;75
WD mKax f; 3  kpkg
end

Los factores 2 y 3 de esta estrategia no deben hacer oscilar la regin .

41/75

Si con el modelo Newton amortiguado % es pequeo, se debera aumentar el


parmetro de amortiguacin, , aumentando as la penalizacin por dar pasos
grandes. Un % grande, por el contrario, indicar que M.p/ es una buena
aproximacin de f .x C p/ y se puede reducir .
if % < 0;25
 WD   2
elseif % > 0;75
 WD =3
end

Otra estrategia para  es:


if % > 0

 WD   mKax 13 ; 1
else
 WD   2
end

.2%

1/3

42/75

Newton amortiguado. Clculo de la direccin




Se calcula determinando



1 T
.p/ D mKn M.p/ C p p :
p
2


La condicin necesaria de mnimo, r .p/ D 0, hace que la direccin pNa sea


la solucin de
0
.h/ D M 0.h/ C p D 0:
lo que es equivalente, de acuerdo con la definicin de M.p/ a
.B C I/ pNa D

c:

Si  es suficientemente grande, la matriz simtrica B C I es definida


positiva, por lo que pNa es un mnimo del modelo M.p/.

43/75

En Newton amortiguado B D H y c D g, y el sistema es


.H C I/ pNa D

Si  es muy grande,

g:

1
g;

por lo que la direccin es prxima a la de mxima pendiente. Si  es muy
pequeo, la direccin es casi la de Newton.
pNa 

44/75

Algoritmo de Newton amortiguado para minimizar f .x/:


Dados Un x WD x 0 y t ol. Hacer  D 1;  D 2 y f ound WD f al se
while (not f ound ) and (k < kmax )
Resolver direccin de descenso .H C I/ p D g
if (p no existe) or (t ol)
f ound WD true
else
Calcular % D .f .x/ f .x C p// = .M.0/ M.p//
if % > 0

 WD   mKax 13 ; 1 .2% 1/3


x WD x C p
else
 WD   2
end
end
k WD k C 1
end

45/75

En Matlab:

function [x f k] = Newton_amortiguado(fun,x)
% Mtodo de Newton amortiguado con paso completo
global h
k=0; kmax=500; eps1=1e-9; eps2=1e-12; n=length(x); h=eps1;
[f g H] = fun(x); ng = norm(g,inf); mu = 1; found = ng<=eps1;
while ~found
posdef = 0;
while ~posdef
[R p] = chol(H+mu*eye(n));
% Cholesky comprueba si H es definida positiva
if p, mu=2*mu; else posdef = 1; end
end
p = -R\(R\g); nh = norm(p);
% Clculo de paso
if norm(g,inf)<eps1 || nh <= eps2*(eps2 + norm(x)), found=2;
% ptimo
else
% Modificar regin de confianza
xnew = x + p; dL = -p*g-p*(H*p)/2;
[fn gn Hn] = fun(xnew); df = f-fn; r=df/dL;
if r>0
x = xnew; f = fn; g = gn; H = Hn;
ng = norm(g,inf);
mu = mu*max(1/3,1-(2*r-1)^3);
else
mu = mu*2;
end
k = k + 1;
if ng <= eps1, found = 1; elseif k > kmax, found = 3; end
fprintf(%4.0f %13.8e %13.8e %13.8e %13.8e\n,k,x,f,mu);
end
end
end

Resolvamos con este algoritmo

46/75

minimizar 0;5x12.x12=6 C 1/
x 2R2

>> [x f k] =Newton_amortiguado(@fun5_2,[2;2])
2 1.22222222e+000 1.07737607e+000 1.43392805e+000
3 5.74640142e-001 4.41028668e-002 1.75164488e-001
4 1.32066691e-001 4.36656594e-003 8.75568971e-003
5 6.09495146e-003 1.55898129e-004 1.85864837e-005
6 7.44750479e-005 1.90119424e-006 2.77507370e-009
7 3.05225879e-007 7.79177968e-009 4.66421303e-014
8 4.18117642e-010 1.06736708e-011 8.75251085e-020
x =
1.0e-009 *
0.418117641894218
0.010673670797581
f =
8.752510847988606e-020
k =
8

x2 arctan.x2/

3.33333333e-001
1.11111111e-001
3.70370370e-002
1.23456790e-002
4.11522634e-003
1.37174211e-003
4.57247371e-004

function [f g H]=fun5_2(x)
f=0.5*x(1)^2*(x(1)^2/6+1)+x(2)*atan(x(2))-0.5*log(x(2)^2+1);
g=[x(1)^3/3+x(1); atan(x(2))];
H(1,1)=x(1)^2+1;
H(1,2)=0;
H(2,1)=0;
H(2,2)=1/(1+x(2)^2);
end

0;5 ln.x22 C 1/

47/75

Regin de confianza. Clculo de la direccin


Teorema El vector p es la solucin de
p rc 

1
M.p/  f .x/ C g T p C p T Bp
2
kpk 
mKn

si y slo si p  es factible y existe un escalar   0 tal que se cumple que


1. .B C I/p  D
2. .

g,

kp k/ D 0 y

3. .B C I/ es semidefinida positiva.


B es la matriz Hessiana, r 2f .x/, o una aproximacin.

Este es un problema de optimizacin con condiciones. La variable  es el


multiplicador de Lagrange de la condicin que impone la regin de confianza.

so is allowed to take a positive value. Note from (4.8a) that

La segunda condicin,
de complementariedad, establece que  D 0 o
p  Bp g  m( p ).
kpk D .

2
3

Contornos del modelo M.p/

contours of m
p*1

Indica que cuando p est estrictamente dentro de la regin de confianza (como es el caso en la figura de D 1 ),
se debe cumplir que  D 0 y por tanto
que Bp  D g, siendo B semidefinida
positiva.

p*3

p*2


 Indica
que
est estrictamente
dentro
de
1
2 regin
Figure
4.2 cuando
Solution ofp
trust-region
subproblem for different
radii de
, la
, 3 .
1
confianza (como es el caso en la figura de D ), se debe
que 
DD
0y
por2 tanto
g, siendo
cumplir
Cuando
y que
D Bp
3, D
se tiene
queBkp k
semidefinida positiva.

48/75

D y  ser > 0.
49/80

De la primera condicin se deduce que p D Bp  g D rM.p/. Es


decir, cuando  > 0, la solucin p es colineal con el negativo del gradiente de
M (mxima pendiente) y perpendicular a sus perfiles de contorno, como en la
figura.

10

49/75

Las soluciones de los subproblemas M.p/ no tienen por qu ser exactas. Existen
varias formas de aproximarlas:
Punto de Cauchy : Mnimo a lo largo de p D

g, acotada a

Dogleg (pata de perro): si B es definida positiva


Minimizacin en un subespacio de dimensin 2 : Si B es indefinida
Steihaug : Si B es simtrica
Otras: : :

pkC  k

Punto de Cauchy

k
gk ,
gk 

(4.11)

where

T
1
if gla
gk 0;
Obtiene la solucin del modelo
lineal Mk .p/ con
de mxima
k Bkdireccin
k 
(4.12)


min gk 3 /(k gkT Bk gk ), 1
otherwise.
pendiente:
k
pck D k
gk;
Figure 4.3 illustrates the Cauchy point for
in which Bk is positive
kgak ksubproblem
denite. In this example, pk lies strictly inside the trust region.
donde
 step pk is inexpensive to calculateno matrix
The Cauchy
factorizations are
T
1
si
g
Bg
requiredand is of crucial importance in deciding if an approximate
solution
k  0of the
k

D
k
T
T
3
trust-region subproblem
is acceptable.
Specically,
a trust-region method
will be globally
mKn kg
k k = k g k B k g k ; 1 si g k Bg k > 0:
C

Trust region de confianza


Regin
contours of del
mk modelo M .p/
Contornos
k

ppkCck

gk

gk

50/75

51/75

DogLeg


Si B no es definida positiva, es mejor explorar otros mtodos.

Hemos visto que si la matriz B del modelo M.p/ es definida positiva, el mnimo
de ste hace p B D B 1g. Es decir, cuando  kpB k, p./ D p B .

Si es pequea con respecto al paso pB , la condicin kpk  hace que el


trmino cuadrtico del modelo M.p/ tenga poco efecto en su solucin. En este
caso, se puede aproximar
g
:
p ./ 
kgk

74


CHAPTER 4.

TRUST-REGION METHODS
52/75

Para otros valores la solucin p./ sigue una trayectoria curvilnea:


Trust regionde confianza
Regin
p ( ) de
Optimal trajectory
Trayectoria
ptima

p./

B
p
(paso
pB ( full
step ) completo)

unconstrained
min along g)
pUp: (mnimo
en la direccin
g
U

g
path
direccindogleg
DogLeg

Figure 4.4

Exact trajectory and dogleg approximation.

4 El mtodo DogLeg reemplaza la trayectoria curvilnea por dos segmentos de

lnea DogLeg
recta. El reemplaza
primero hasta
mnimo decurvilnea
M .p/ en por
la direccin
de mxima
El mtodo
la eltrayectoria
dos segmentos
de
pendiente
lnea recta.
El primero hasta el mnimo de M .p/ en la direccin de mxima
by simply omitting the quadratic term from (4.5)T and writing
g g
pendiente
g:
pU D
T T Bg
g
U  g ,g gwhen  is small.
p ()p
(4.14)
D g T
g:
g Bg

56/81

53/75

El segundo desde pU hasta pB . En conjunto a esta trayectoria se le denomina


Q
p./,
con  2 0; 2, donde
 U
p
0 1

Q /D
p.
1    2:
pU C . 1/ pB pU

La interseccin de esta trayectoria con la regin de confianza es el punto que se


busca; concretamente el  que resuelve la ecuacin
U

p C . 1/ pB pU 2 D 2:

54/75

Algoritmo de minimizacin de una funcin mediante el mtodo de regin de


confianza DogLeg con modelo de Newton.
Dados Un x WD x 0 y t ol. Hacer D 1 y f ound WD f al se
while (not f ound ) and (k < kmax )
Resolver H pN D g
if pN  , x WD x C pN
else pmp D .g T g=g T H g/g
if pmp > , x WD x C pc
else
Calcular dir. DogLeg e interseccin 
x WD x C pmp C  .pN pmp /
end
end
Calcular % D .f .x/ f .x C p// = .M.0/ M.p//
if % < 0;25, WD =2
elseif % > 0;75, WD mKaxf  2; max g
end
k WD k C 1, if f ound , exit
end

55/75

function [xc fc] = Dogleg_UBC_yo(fun,x0)


% dogleg.m -- Mtodo de Regin de Confianza con modelo Newton
eps1=100*sqrt(eps); eps2=sqrt(eps); Kmax=200; Delta=0.5; Dmax=100;
xstring = ;
for jj=1:length(x0)
xstring = [xstring,x_k(,int2str(jj),)
];
end
fprintf([\n k
%s f(x_k)
Delta
|dx|/Del
ro
,...

e_1
e_2\n],xstring);
xc = x0; [fc gc Hc] = fun(xc);
disp([ 0, sprintf( %12.4e,[xc,fc]),sprintf( %10.2e,Delta)]);
for k=1:Kmax
% Modelo Newton: -(gc*pN + 0.5*pN*Hc*pN);
pN
= - Hc\gc;
% Direccin de Newton
pNlen = (pN*pN)^0.5; gHg = gc*Hc*gc;
if pNlen <= Delta
% Punto Newton dentro regin
xt = xc + pN;
else
% Fuera: encontrar el mnimo mediante mxima
%
pendiente del Model Newton
pSD
= -(gc*gc)/gHg*gc;
pSDlen = (pSD*pSD)^0.5;
if pSDlen>=Delta
% Newton y mp fuera regin: usa punto Cauchy
xt = xc - Delta*gc/(gc*gc)^0.5;
else
% mp dentro regin y Newton fuera: usa DogLeg
%
en lmite regin de linea unindolos
pN_pSD = pN-pSD;
a = pN_pSD*pN_pSD; b = 2*pN_pSD*pSD; c = pSD*pSD - Delta^2;
t = (-b+(b^2-4*a*c)^0.5)/2/a;
xt = xc + pSD + t*pN_pSD;
end
end
[fn gn Hn] = fun(xt);
% Nuevo punto obtenido en Reg. Con.
dx = xt - xc; df = fn - fc;
redfun = -df;
% Reduccin obtenida en funcin
repred = -gc*dx-0.5*dx*Hc*dx; % Reduccin predicha modelo Newton

rho
= redfun/repred;
% Ganancia
e1 = max(abs(pN)./max([abs(xc);eps2*ones(size(xc))]));
e2 = max((abs(gn).*abs(xt))/ max([abs(fn),eps2]));
if rho>0
% Buena ganancia; aceptar punto
xn=xt; xc=xt; fc=fn; gc=gn; Hc=Hn;
if rho<0.25, Delta = 0.25*norm(dx); end
if rho>0.75 && norm(dx,2)>((1-eps)*Delta),
Delta = min([2*Delta;Dmax]);
end
disp([sprintf(%3d,k), sprintf( %12.4e,[xn,fn]),...
sprintf( %10.2e,Delta),sprintf( %6.4f,norm(dx)/Delta),...
sprintf( %7.3f,rho),sprintf( %8.1e,e1),...
sprintf( %8.1e,e2)]);
if e1<eps1 || e2<eps2, break, end
else
xn = xc;
% Reduccin de funcin mala; seguir igual
end
end
disp([ptimo: x =,sprintf( %22.16e,xc),.]);
disp([Funcin: f(x) =,sprintf( %22.16e,fc),.]);
end

56/75

Resolvamos con este procedimiento


minimizar 0;5x12.x12=6 C 1/
x 2R2

x2 arctan.x2/

0;5 ln.x22 C 1/

>> [x f]=Dogleg_UBC_yo(@fun5_2,[2;2]);
k
x_k(1)
x_k(2)
f(x_k)
Delta
|dx|/Del
0
2.0000e+000
2.0000e+000
4.7429e+000
5.00e-001
1
1.5135e+000
1.8846e+000
2.8658e+000
1.00e+000 0.5000
2
5.8687e-001
1.5086e+000
1.0754e+000
2.00e+000 0.5000
3 -4.1104e-001 -2.2464e-001
1.1188e-001
4.00e+000 0.5000
4 -3.9606e-002
7.4824e-003
8.1253e-004
4.00e+000 0.1095
5 -4.1354e-005 -2.7927e-007
8.5513e-010
4.00e+000 0.0101
6 -4.7149e-014
1.4505e-020
1.1115e-027
4.00e+000 0.0000
ptimo: x = -4.7148815071357958e-014 1.4505439221729893e-020.
Funcin: f(x) = 1.1115053813167661e-027.

ro

e_1

e_2

1.040
1.233
0.781
1.045
1.001
1.000

2.8e+000
2.6e+000
2.1e+000
1.0e+000
1.0e+000
1.0e+000

1.4e+000
1.4e+000
1.6e+000
1.9e+000
1.1e-001
1.5e-019

57/75

Mtodo de los gradientes conjugados




La idea es extender a problemas no lineales generales el mtodo que vimos para


minimizar funciones cuadrticas y as resolver sistemas de ecuaciones lineales.

Fue propuesto por los profesores britnicos R. Fletcher y C. Reeves en 1964.


Roger Fletcher, Reino Unido, 1939-.

La direccin de descenso de este mtodo es


pD

rf .x/ C ppr

La nueva direccin p y la previa, ppr , han de ser conjugadas con respecto a la


matriz Hessiana.

58/75

El parmetro se determina de tal manera que minimice una forma cuadrtica


Newtons Method
Newtons Method
Newtons Method
que aproxime
la funcin en unNewtons
puntoMethod
del proceso iterativo,
pues suficientemente
cerca del ptimo las funciones continuas se aproximan a formas cuadrticas.
!

La primera frmula para fue sugerida por Fletcher y Reeves:


rf .x/T rf .x/
D
rf .xpr /T rf .xpr /

59/75

Elijah Polak, Polonia, 1931-.

La de Polak y Ribire, posteriormente, en 1971:


T
rf .x/ rf .xpr / rf .x/
D
rf .xpr /T rf .xpr /

60/75

Algoritmo de los gradientes conjugados para minimizar f .x/:


Dados La funcin f .x/, un punto de partida
Calcular ppr D

x 0 y una tolerancia.

rf .x 0 /

Repetir Mientras la aproximacin a la solucin > tolerancia:


1. Calcular dir. de descenso: p D rf .x/ C ppr ,
rf .x/T rf .x/
con D
rf .xpr /T rf .xpr /
T
rf .x/ rf .xpr / rf .x/
oD
.
rf .xpr /T rf .xpr /

2. Calcular la amplitud de paso, , en esa direccin.


3. Calcular el nuevo punto x WD x C p.

Ninguna de las dos frmulas de requiere calcular la matriz Hessiana.

Si la funcin a minimizar es cuadrtica las dos frmulas estudiadas coinciden.

61/75

Calculemos para probar estos mtodos, una vez ms, el mnimo de la funcin de
Rosenbrock:
2
minimizar 100 x2 x12 C .1 x1/2:
x 2R2

0.5

15

0.4
4

0.3

15

15

3
2
1

1
5

3 4

10

0.1

10

0.1

5
43

10

10

0.2

x2

15

10

3
4

0.2

5
15

10

10

0.3

15

15

0.4

0.5
0.5

0.4

0.3

0.2

0.1

0
x

0.1

0.2

0.3

0.4

Figure 5: Contour plot of Rosenbrocks banana function.

0.5

Utilicemos para ello este programa en Matlab es el que se puede elegir qu


frmula emplear, Fletcher-Reeves o Polak-Ribire.
function [x f] = Grad_Conjugados_unc(fun,x,par)
% Mtodo de los gradientes conjugados para minimizar f(x)
rho = 0.01; beta = 0.1;
% Parmetros de line search
maxit = 1000;
[f g]= fun(x); ppr=-g; gpr=g; pbeta=0;
% Comienzo con mx. pendiente
for i=1:maxit
% Proceso iterativo
if i>1
[f g] = fun(x);
if
par==1, pbeta=(g*g)/(gpr*gpr);
% Fletcher-Reeves
else
pbeta=((g-gpr)*g)/(gpr*gpr); % Polak-Ribire
end
end
p = -g+pbeta*ppr;
if (norm(g,inf) < 1e-6), break, end
% Condicin de mnimo
alpha = 1;
for k=1:10
% Backtracking amplitud de paso
xnew = x+alpha*p; fxnew = fun(xnew);
if fxnew <= f + alpha*rho*g*p
break
else alpha = alpha*beta;
end
end
x = x + alpha*p; ppr=p; gpr=g;
fprintf(%4.0f %13.8e %13.8e %13.8e %13.8e\n,i,x,f,alpha);
end
end
function [f g] = objfun_min3(x) % Rosenbrock
f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; if nargout<2, return, end
g = [-200*(x(2)-x(1)^2)*2*x(1)-2*(1-x(1));200*(x(2)-x(1)^2)];
end

62/75

63/75

Se parte del punto x D 1;2; 1. El ptimo 36es x  D 1; 1. La funcin y el


camino hacia el ptimo son los de
la figura.
37
4. C ONJUGATE G RADIENT M ETHODS

4.5.
 Convergence Properties

300

x2
2

x2

100

30
10
3

0.3
1

1.5

1.5 x
1
0.5

1.2

Figure 4.2: Contours of Rosenbrocks function.

x1

The function has one minimizer x = [1, 1]> (marked by a + in the figure) with
1e5
f (x ) = 0, and there is a valley with sloping bottom following the parabola
 x2 = x21 . Most optimization algorithms will try to follow this valley.1e10
Thus, f
a considerable amount of iteration steps is needed, if we take x0 in the 2nd ||f||
1e15
0
10
20
30
40
50
quadrant.
0
Figure
4.3: PolakRibi`
ere method with soft line search
Below we give the number of iteration stepsMtodo
and evaluations of f (x)
and f (x)
Nmero
iteraciones
when applying Algorithm 4.6 on this function. In all cases we use the applied
startingto Rosenbrocks function.
103
iterates
xk . Bottom: f (xk ) and kf 0 (xk )k .
criteria given by 1 = 108 , 2 =Top:
1012
point x0 = [ 1.2, 1 ]> , and stoppingPolakRibire
in (4.7). In case of exact line search we use = 106 , = 106 in (2.29),
FletcherReeves
514
Algorithm 2.27 for soft line search.
while we take = 101 , % = 102 in

Con la tolerancia y los parmetros dados, la convergencia es esta.

Method
FletcherReeves

Line search
exact

Implementation
# it. steps 4.6.
# fct.
evals
118 To implement
1429
a conjugate gradient algorithm in a computer program, some

64/75

Probad

>> [x f] = Grad_Conjugados_unc(@objfun_min3,[-1.2;1],1)
1 -9.84400000e-001 1.08800000e+000 2.42000000e+001 1.00000000e-003
2 -1.01771362e+000 1.06810987e+000 5.35291158e+000 1.00000000e-003
513 1.00000141e+000 1.00000283e+000 2.00451765e-012 1.00000000e-004
x =
1.000001414780674
1.000002834445620
f =
2.003988012156511e-012

>> [x f] = Grad_Conjugados_unc(@objfun_min3,[-1.2;1],2)
1 -9.84400000e-001 1.08800000e+000 2.42000000e+001 1.00000000e-003
2 -9.84399999e-001 1.08800000e+000 5.35291158e+000 1.00000000e-010
102 1.00000121e+000 1.00000243e+000 1.47631065e-012 1.00000000e-003
x =
1.000001212679899
1.000002430217752
f =
1.472951080761591e-012

65/75

Mtodos cuasi Newton




Son algoritmos basados en el mtodo de Newton que calculan una aproximacin


de la matriz hessiana, o variantes de ella, mediante frmulas de recurrencia.

Si la frmula de la direccin de descenso de Newton es


 1
2
pD
r f .x/ rf .x/
se utiliza
pD

H rf .x/;

donde H es una aproximacin de la matriz inversa de la hessiana.

Las frmulas ms comunes de H son:

66/75

Quasi-Newton
iterations for optimization
DFP
De Davidon,
Fletcher y Powell:
The field was launched between 1959 and 1970.

William Davidon 1927-

DH

1954 PhD in Physics, U. Chicago


kC1 National Lab.
k
1959: variable metric report at Argonne
(It was finally published in 1991, first issue of SIOPT )
1961-1991: Prof. of Physics and Maths, Haverford Coll

rations for optimization

n 1959 and 1970.

go
Argonne National Lab.
91, first issue of SIOPT )
d Maths, Haverford Coll

H k y k y Tk H k
sk sTk
C T :
y Tk H k y k
y k sk

Michael Powell 19361959-1976 Harwell A.E.R.E.


1976- DAMTP, U. of Cambridge
1983 FRS

Charles Broyden 1933-2011


1955-1965: English Electric
1965: good and bad Broyden methods
1967-1986 U. of Essex
1990-2003 U. of Bologna

William Davidon, Roger Fletcher y


Michael Powell.

Roger Fletcher 1939-

1969-1973 Harwell A.E.R.E. U. of Leeds


1963: Davidon-Fletcher-Powell paper
1971-2005 U. of Dundee
2003 FRS

BFGS Formulada por Broyden, Fletcher, Goldfarb y Shanno:

n methods

U. of Leeds
paper



y Tk H k y k sk sTk
H kC1 D H k C 1 C
y Tk sk
y Tk sk

sk y Tk H k C H k y k sTk
y Tk sk

Charles Broyden, Roger Fletcher,


Donald Goldfarb y David Shanno.

donde y k D rf .x kC1 /

rf .x k / y sk D x kC1

x k D k pk :


;

Dados f .x/, un x 0 , una tolerancia y H 0


Repetir Mientras no se satisfaga la tolerancia de solucin:

Algoritmo para minimizar f .x/.

1. Determinar la direccin de descenso:


Obtener pk D

H k rf .x k /

2. Calcular la amplitud de paso, k , en esa direccin


3. Calcular el nuevo punto x kC1 WD x k C k pk y H kC1

En Matlab:

function [x,i,f,nfeval] = quasi_newton_1(fun,x,metodo)


% Mtodo cuasi Newton
rho = 0.01; beta = 0.1;
% Parmetros de line search
[f,g] = fun(x); H=eye(length(x)); eps1=1e-5; eps2=1e-8;
maxit = 1000; nfeval = 1;
for i=1:maxit
xp = x; gp = g;
p = -H*g; nh = norm(p);
% Nueva direccin: cuasi Newton
if norm(g,inf)<eps1 || nh <= eps2*(eps2 + norm(x)), break, end
alpha = 1;
for k=1:10
% Backtracking amplitud de paso
xnew = x+alpha*p;
fxnew = fun(xnew); nfeval = nfeval+1;
if fxnew < f+alpha*rho*g*p, break
else alpha=alpha*beta;
end
end
x = x + alpha*p; s = x - xp; ns = norm(s);
[f,g] = fun(x);
y = g - gp; ys = y*s; nfeval = nfeval+1;
if ys > sqrt(eps)*ns*norm(y)
% Recalcular H
v = H*y; yv = y*v;
if metodo == 1, H=H - (v/yv)*v + (s/ys)*s;
% DFP
else H = H + (1+yv/ys)*(s*s)/ys - (s*v+v*s)/ys; % BFGS
end
end
end
end

67/75

68/75

Para obtener la solucin, se tendra una sesin como la que sigue.


>> [x i f nf]=quasi_newton_1(@objfun_min3,[-1.2;1],1)
x =
0.999986600819581
0.999973154300098
i =
247
f =
1.797638376605058e-010
nf =
506

>> [x i f nf]=quasi_newton_1(@objfun_min3,[-1.2;1],2)
x =
0.999999873170081
0.999999758419957
i =
40
f =
3.067793488101831e-014
nf =
88

La funcin objetivo y su gradiente se le ha pasado en la rutina objfun_min3


que ya hemos utilizado.

69/75

La sesin con el guin de Matlab fminunc sera la siguiente.


>> options = optimset(Display,iter,GradObj,on,LargeScale,off...
,HessUpdate,bfgs);
>> x0=[-1.2;1];
>> [x,fval,exitflag,output] = fminunc(@objfun_min3,x0,options)
First-order
Iteration Func-count
f(x)
Step-size
optimality
0
1
24.2
216
1
3
4.28049
0.000861873
15.2
2
4
4.12869
1
3
3
5
4.12069
1
1.5
4
6
4.1173
1
1.62
5
7
4.08429
1
5.72
6
8
4.02491
1
10.4
7
9
3.9034
1
17.4
8
10
3.7588
1
20.1
9
11
3.41694
1
19.9
10
12
2.88624
1
11.9
11
13
2.4428
1
9.78
12
14
1.93707
1
3.01
13
17
1.64357
0.141994
5.54
14
18
1.52561
1
7.57
15
19
1.17013
1
4.53
16
20
0.940886
1
3.17
17
21
0.719844
1
5.15
18
22
0.409164
1
5.73
19
25
0.259747
0.0842377
5.01

Iteration Func-count
20
26
21
27
22
29
23
30
24
31
25
33
26
34
27
35
28
37
29
38
30
39
31
41
32
42
33
43
34
44
35
45
36
46
Local minimum found.

f(x)
0.238901
0.2102
0.18249
0.15856
0.0893558
0.0726393
0.0413887
0.0221877
0.0126281
0.00703352
0.00203299
0.00109124
8.941e-005
7.16329e-006
4.44047e-007
1.49386e-008
9.03834e-013

Step-size
1
1
0.584225
1
1
0.438248
1
1
0.405833
1
1
0.5
1
1
1
1
1

First-order
optimality
1.06
1.22
3.33
2.91
0.756
3.18
2.3
0.491
1.98
1.35
0.194
0.874
0.14
0.0804
0.0222
0.00263
1.65e-005

Optimization completed because the size of the gradient is less than


the default value of the function tolerance.
<stopping criteria details>
x =
0.999999124019815
0.999998284985335
fval =
9.038341201889023e-013
exitflag =
1
output =
iterations: 36
funcCount: 46
stepsize: 1
firstorderopt: 1.652992217925215e-005
algorithm: medium-scale: Quasi-Newton line search
message: [1x438 char]

70/75

Recapitulemos resolviendo este problema de optimizacin


minimizar 0;5x12.x12=6 C 1/
x 2R2

x2 arctan.x2/

0;5 ln.x22 C 1/;

con algunos de los mtodos propuestos.




Con el mtodo cuasi Newton:


>> [x i f nf]=quasi_newton_1(@fun5_2,[2;2],2)
x =
1.0e-005 *
-0.466633393077767
0.043763046313533
i =
10
f =
1.098304435204189e-011
nf =
20

71/75

Con el mtodo de los gradientes conjugados:


>> [x f] = Grad_Conjugados_unc(@fun5_2,[2;2],2)
1 1.53333333e+000 1.88928513e+000 4.74291181e+000
2 -1.24817638e-001 1.06078252e+000 2.92446293e+000
3 -2.60972425e-002 2.32534554e-001 4.95278202e-001
4 -1.98278513e-002 1.70462426e-001 2.71382019e-002
5 -1.20583962e-003 1.35873959e-002 1.46557482e-002
6 -1.37365260e-003 1.15727268e-002 9.30328488e-005
7 2.08186271e-005 2.50443071e-004 6.79059687e-005
8 -2.88173500e-005 2.33979887e-004 3.15775731e-008
9 1.90328536e-006 6.31282977e-007 2.77885134e-008
10 -4.91063765e-008 3.73003496e-007 2.01048075e-012
x =
1.0e-006 *
-0.049106376456762
0.373003496268343
f =
7.072634268876572e-014

1.00000000e-001
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000

72/75

Con el mtodo de Newton:


>> [x f]=Newton_unc(@fun5_2,[2;2])
1 1.53333333e+000 -7.67871794e-001
2 7.17182434e-001 2.73081655e-001
3 1.62394466e-001 -1.33801795e-002
4 2.78174708e-003 1.59690475e-006
5 1.43502115e-008 -2.71495235e-018
x =
1.0e-007 *
0.143502114982597
-0.000000000027150
f =
1.029642850223918e-016

4.74291181e+000
1.90728360e+000
3.16058360e-001
1.33334500e-002
3.86906467e-006

5.00000000e-001
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000

73/75

Con el mtodo de la mxima pendiente:


>> [x f]=Maxima_pendiente_unc(@fun5_2,[2;2])
1 -3.33333333e-001 1.44642564e+000 4.74291181e+000
2 1.23456790e-002 4.80532665e-001 8.89243872e-001
3 -6.27225474e-007 3.25798596e-002 1.11454631e-001
4 8.22680750e-020 1.15199317e-005 5.30629777e-004
5 0.00000000e+000 5.09598738e-016 6.63544598e-011
x =
1.0e-015 *
0
0.509598737990710
f =
2.596908737617245e-031

5.00000000e-001
1.00000000e+000
1.00000000e+000
1.00000000e+000
1.00000000e+000

74/75

Con el mtodo de regin de confianza DogLeg con modelo de Newton:


>> [x f] = Dogleg_UBC_yo(@fun5_2,[2;2])
k
x_k(1)
x_k(2)
f(x_k)
Delta
|dx|/Del
0
2.0000e+000
2.0000e+000
4.7429e+000
5.00e-001
1
1.5135e+000
1.8846e+000
2.8658e+000
1.00e+000 0.5000
2
5.8687e-001
1.5086e+000
1.0754e+000
2.00e+000 0.5000
3 -4.1104e-001 -2.2464e-001
1.1188e-001
4.00e+000 0.5000
4 -3.9606e-002
7.4824e-003
8.1253e-004
4.00e+000 0.1095
5 -4.1354e-005 -2.7927e-007
8.5513e-010
4.00e+000 0.0101
6 -4.7149e-014
1.4505e-020
1.1115e-027
4.00e+000 0.0000
ptimo: x = -4.7148815071357958e-014 1.4505439221729893e-020.
Funcin: f(x) = 1.1115053813167661e-027.
x =
1.0e-013 *
-0.4715
0.0000
f =
1.1115e-027

ro

e_1

e_2

1.040
1.233
0.781
1.045
1.001
1.000

2.8e+000
2.6e+000
2.1e+000
1.0e+000
1.0e+000
1.0e+000

1.4e+000
1.4e+000
1.6e+000
1.9e+000
1.1e-001
1.5e-019

75/75

Con el mtodo de Newton amortiguado:


>> [x f] = Newton_amortiguado(@fun5_2,[2;2])
1 1.22222222e+000 1.07737607e+000 1.43392805e+000
2 5.74640142e-001 4.41028668e-002 1.75164488e-001
3 1.32066691e-001 4.36656594e-003 8.75568971e-003
4 6.09495146e-003 1.55898129e-004 1.85864837e-005
5 7.44750479e-005 1.90119424e-006 2.77507370e-009
6 3.05225879e-007 7.79177968e-009 4.66421303e-014
7 4.18117642e-010 1.06736708e-011 8.75251085e-020
x =
1.0e-009 *
0.4181
0.0107
f =
8.7525e-020

3.33333333e-001
1.11111111e-001
3.70370370e-002
1.23456790e-002
4.11522634e-003
1.37174211e-003
4.57247371e-004

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Programacin Lineal
Linear Programming

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_progli_2016.pdf

1/73

2/73

ndice


Formulacin

Definiciones y formas de programas lineales

Historia

Ejemplos de programas lineales

Consideraciones geomtricas

Politopos

Puntos extremos y soluciones bsicas factibles

3/73

Formulacin


La Programacin Lineal es el rea de la Optimizacin/Programacin


Matemtica/Management Science que busca de entre todas las posibles
soluciones comunes de un conjunto de ecuaciones e inecuaciones lineales la que
mejor plasma un determinado criterio u objetivo, representado por una funcin
tambin lineal.

En trminos matemticos generales,


minimizar f .x/
sujeta a g.x/ D 0
h.x/  0
donde f W Rn ! R, g W Rn ! Rm y h W Rn ! Rp son lineales.

4/73

Juega un papel vital en muchas facetas de la economa, las ciencias sociales, la


tcnica, la planificacin, la gestin, : : : como un instrumento de ayuda a la
toma de decisiones que tienen que ver con la asignacin ptima de recursos con
diversas funciones de utilidad.

En el anlisis, la planificacin y el control operativo de sistemas energticos y


elctricos tiene uno de sus campos de actuacin ms destacados:


Generacin a coste mnimo

Control de stocks de combustibles

Mantenimiento de equipos

Optimizacin del transporte de energa

Control de inversiones, bsqueda de emplazamientos, etc.

5/73

Definiciones y formas de programas lineales




La programacin lineal, PL, trata un problema o programa lineal


minimizar c1 x1 C c2 x2 C    C cn xn
sujeta a

a11 x1 C a12 x2 C    C a1n xn  b1


a21 x1 C a22 x2 C    C a2n xn  b2
::
::
::
:
:
:
am1 x1 C am2 x2 C    C amn xn  bm
x1 ; x2 ; : : : ; xn  0:

A c1x1 C    C cnxn se le denomina funcin objetivo y a las


ai1x1 C    C ai nxn, 1  i  m, restricciones o condiciones.

Las x1; : : : ; xn son los coeficientes del vector variables de decisin. Los
c1; : : : ; cn, los coeficientes de coste. Los b1; : : : ; bm, el trmino independiente.

6/73

La matriz

a11 a12 a13


6
6a a a
A D 6 ::21 ::22 ::23
4 : : :
am1 am2 am3

   a1n
7
   a2n 7
: : : ::: 7
5
   amn

es la de coeficientes de las condiciones del problema.




Un vector, o punto, x T D x1; x2; : : : ; xn, que satisface todas las condiciones
se denomina factible.

El conjunto
F D fx 2 Rn W Ax  b; x  0g
de todos los vectores o puntos factibles constituye la regin factible.

7/73

En forma compacta, el problema de programacin lineal se expresa as:

min. c T x
s. a Ax  b
x  0:


En forma estndar,

min. c T x
s. a Ax D b
x  0:

8/73

Ejemplo En el programa lineal


min. 2x1 C 5x2
s. a

x1 C x2  6
x1 2x2  18
x1; x2  0;

las variables de decisin son x1 y x2. La funcin objetivo 2x1 C 5x2.

20 356
8
Las restricciones y la regin
factible se ven as:

356
7
376
5 1

3146
5
21
0

9/73

Un problema de programacin lineal cualquiera


min. c T x
s. a Ax  b
x  0;
se puede expresar en la forma estndar sin ms que sustraer un vector y,
denominado de variables de holgura, de las condiciones Ax  b:
min.

cT x

s. a Ax

y Db
x; y  0:

10/73

Si las condiciones fuesen Ax  b, aadiendo un vector y se obtendra la forma


estndar: Ax C y D b.

Si alguna de las variables xi no est restringida a ser no negativa, se puede


reemplazar por otras dos, xi0 y xi00, tales que
xi D xi0

xi00;

donde xi0  0 y xi00  0, y el problema pasa a ser uno con formulacin estndar.


Si se trata de maximizar una funcin objetivo, se puede transformar en


minimizar esa funcin teniendo en cuenta que
mKax c T x D mKn c T x:

Desarrollo histrico de la Programacin Lineal

11/73

Orgenes en Newton, Leibnitz, Lagrange y Fourier

1930s Kantorovich; primeras aplicaciones en economa

1940s Se crea por G. Dantzig, John von Neumann y L. Kantorovich el rea


de conocimiento Programacin Lineal

1947 G. Dantzig formula el Mtodo Simplex para resolver problemas


logsticos militares

1950-1970 Se disparan las aplicaciones en mltiples reas: control,


ingeniera elctrica, estructuras, transporte, mecnica,...

1979 L. Khachiyan desarrolla el algoritmo del elipsoide.

1984 N. Karmarkar desarrolla un mtodo basado en puntos interiores.


Mejor terica y prcticamente

1995-hoy Desarrollo de muchas variantes de punto interior muy eficientes


para problemas de grandes dimensiones.
Convergencia terica y algortmica con Programacin No Lineal

12/73

Formulacin de problemas de Programacin


Lineal
La dieta alimenticia


Es el problema clsico sobre el que se empezaron a ensayar los primeros


procedimientos numricos y electrnicos de obtencin de una solucin.

Trataba de elaborar, en los aos 40 del siglo XX en plena II guerra mundial,


una dieta diaria para un colectivo de soldados y militares de tal forma que se
suministrase a cada individuo una cantidad mnima de varios ingredientes
nutritivos.

Para plantear el problema, supongamos que existen en el mercado n alimentos


distintos, a unos costes unitarios c1; : : : ; cn, y que se quiere programar una dieta
que contenga al menos b1; : : : ; bm unidades de m ingredientes nutritivos.

13/73

Si el alimento j contiene aij unidades del ingrediente i , y se desea programar el


vector dieta, x T D x1; x2; : : : ; xn, que fije las cantidades que hay que
comprar cada da de cada alimento de tal forma que el coste total sea mnimo,
la formulacin del problema es esta:
minimizar c1x1 C c2x2 C    C cnxn
sujeta a a11x1 C a12x2 C    C a1nxn  b1
a21x1 C a22x2 C    C a2nxn  b2
:::
:::
am1x1 C am2x2 C    C amnxn  bm
x1; x2; : : : ; xn  0:

14/73

Planificacin de la generacin de energa elctrica




Una empresa de produccin, transporte y distribucin de energa elctrica est


estudiando la evolucin de su demanda, de potencia y de energa, y cmo
satisfacer su incremento los prximos 10 aos.

El mercado tecnolgico dispone de cuatro formas consolidadas y aceptadas de


generar electricidad a gran escala: centrales termoelctricas de gas natural,
centrales hidrulicas, aerogeneradores y centrales de carbn.

El patrn de su demanda elctrica futura est definido por:




15/73

El consumo anual adicional de energa, estimado en 1.750 TWh (1 TWh =


109 kWh) para el conjunto de los diez aos;
La demanda mxima de potencia adicional, estimada en 30 GW (1 GW=106
kW) para el ao nmero 10;
La potencia diaria media demandada en un da de invierno, estimndose que
crecer en 20 GW para el ao nmero 10.

Los parmetros esenciales de las centrales contempladas son estos.

Tipo de Central
Gas
Hidroelctricas
Carbn
Aerogeneradores

Potencia Potencia
Horas
Coste de Coste total
garantizada mxima utilizacin inversin actualizado
106 kW
106 kW
anuales 106 euros 106 euros
0,33
0,10
0,80
0,01

0,35
0,10
0,90
0,04

7.500
3.000
8.000
2.000

210
80
1.100
48

240
95
1.300
50

16/73

El problema que se plantea es cul es el plan ptimo de equipamiento para


esos diez aos? Qu nmero de centrales son necesarias para hacer frente a la
demanda, minimizando el coste actualizado neto necesario para abordar dicho
plan? Las restricciones adicionales son:


No se pueden gastar en total ms de 25.500 MM de euros.

Por cuestiones medioambientales, no se pueden construir ms de 50


unidades de gas, 10 hidrulicas y 50 unidades de carbn.

17/73

Solucin Designando por x1; x2; x3; x4 el nmero de unidades de cada tipo de
generacin posible, el problema se puede formular de la siguiente manera:
min. 240x1 C 95x2 C 1:300x3 C
s. a

0;33x1 C 0;1x2 C 0;8x3 C 0;01x4 


20
0;35x1 C 0;1x2 C 0;9x3 C 0;04x4 
30
24;75x1 C 3x2 C 64x3 C 0;2x4  1:750
210x1 C 80x2 C 1:100x3 C 48x4  25:500
0
0
0
0

50x4






x1  50
x2  10
x3  50
x4

Resolvmoslo con varios de los instrumentos ya a nuestro alcance.

Primero mediante linprog, el software especializado en PL de Matlab.

A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;...


24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
b=[20;30;1750;25500];
c=[240 95 1300 50 0 0 0 0];
l=[0 0 0 0 0 0 0 0 ];
u=[50 10 50 1000 100000 100000 100000 1000000];

options = optimset(LargeScale, off, Simplex, on, Display, Iter);


[x fval exitflag output lambda]=linprog(c,[],[],A,b,l,u,[],options)
Phase 1: Compute initial basic feasible point.
Iter
Infeasibility
0
268.75
1
43.8864
2
28.1167
3
5.34911
4
0.227273
5
-0
Phase 2: Minimize using simplex.
Iter
Objective
Dual Infeasibility
f*x
A*y+z-w-f
0
29730.3
1.52213
1
29561.1
1.12263
2
28575
0
Optimization terminated.
x =
50.0000
10.0000
7.1429
126.7857
4.4821
0
0
257.1429
fval =
2.8575e+004

18/73

exitflag =
1
output =
iterations: 2
algorithm: medium scale: simplex
cgiterations: []
message: Optimization terminated.
constrviolation: 3.6380e-012
lambda =
ineqlin: [0x1 double]
eqlin: [4x1 double]
upper: [8x1 double]
lower: [8x1 double]
>> lambda.eqlin
ans =
1.0e+003 *
0
-1.2353
-0.0029
0
>> lambda.upper
ans =
265.1471
37.3529
0
0
0
0
0
0

Segundo, con otro software de Matlab, fmincon, para resolver problemas


generales de optimizacin con condiciones (como es el caso ms general de ste
que estudiamos).

19/73

A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0; 24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
b=[20;30;1750;25500];
l=[0 0 0 0 0 0 0 0 ];
u=[50 10 50 1000 100000 100000 100000 1000000];
fun = @(x) 240*x(1)+95*x(2)+1300*x(3)+50*x(4);

options=optimset(Display,iter-detailed);
x =
(fun,zeros(8,1),[],[],A,b,l,u,[],options)
Max
Line search Directional
Iter F-count
f(x)
constraint
steplength
derivative
0
9
0
2.55e+04
1
18
28987
3.553e-15
1
225
2
27
28925.5
2.274e-13
1
-7.51
3
36
28899.5
7.105e-15
1
-4.08
4
45
28792.9
6.57e-17
1
-2.63
5
54
28792
2.274e-13
1
-0.914
6
63
28750.2
3.638e-12
1
-0.914
7
72
28575
2.274e-13
1
-0.914

fmincon

First-order
optimality Procedure
Infeasible start
112
3.69 Hessian modified
2.54 Hessian modified
5.13 Hessian modified
0.909 Hessian modified
0.914 Hessian modified
9.27e-05 Hessian modified

Optimization completed: The first-order optimality measure, 8.216127e-13, is less


than options.TolFun = 1.000000e-06, and the maximum constraint violation, 2.273737e-13,
is less than options.TolCon = 1.000000e-06.
Optimization Metric
first-order optimality =
8.22e-13
max(constraint violation) =
2.27e-13
Active inequalities (to within options.TolCon = 1e-06):
lower
upper
ineqlin
ineqnonlin
6
1
7
2
x =
50.0000
10.0000
7.1429
126.7857
4.4821
0.0000
0.0000
257.1429

TolFun =
TolCon =

Options
1e-06 (default)
1e-06 (default)

point

twice
twice
twice

Tambin podemos usar un nuevo software disponible en Internet


OPTI Toolbox, http://www.i2c2.aut.ac.nz/Wiki/OPTI/
de Jonathan Currie, del Industrial Information & Control Centre (I 2C 2), de la
AUT University, Auckland, New Zealand, muy utilizado como plataforma
general de pruebas.

La sesin de Matlab correspondiente es la que sigue.


A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;...
24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
b=[20;30;1750;25500];c=[240 95 1300 50 0 0 0 0];
l=[0 0 0 0 0 0 0 0 ];u=[50 10 50 1000 100000 100000 100000 1000000];
Opt = opti(f,c,eq,A,b,bounds,l,u)
-----------------------------------------------------Linear Program (LP) Optimization
min fx
s.t. rl <= Ax <= ru
lb <= x <= ub
-----------------------------------------------------Problem Properties:
# Decision Variables:
8
# Constraints:
20
# Linear Equality:
4
# Bounds:
16
-----------------------------------------------------Solver Parameters:
Solver:
CLP
------------------------------------------------------

[x,fval,exitflag,info] = solve(Opt)
x =
50.0000
10.0000
7.1429
126.7857
4.4821
0
0
257.1429
fval =
28575
exitflag =
1
info =
Iterations: 2
Time: 0.0023
Algorithm: CLP: Automatically Chosen Solver
Status: Proven Optimal
Lambda: [1x1 struct]

20/73

Si utilizamos otro software puntero para investigacin, de la Universidad de


Stanford, CVX, desde
http://cvxr.com/cvx
Con el script de Matlab
% Ejemplo_generacion.m
cvx_begin
variable x(8)
minimize (c*x);
subject to
A*x==b;
x>=0;
x<=u;
cvx_end

y este conjunto de instrucciones


>> A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;...
24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1];
>> b=[20;30;1750;25500];
>> c=[240 95 1300 50 0 0 0 0];
>> l=[0 0 0 0 0 0 0 0 ];
>> u=[50 10 50 1000 100000 100000 100000 1000000];
>> Ejemplo_generacion

se obtiene lo que sigue.

21/73

>> Ejemplo_generacion
Calling SDPT3 4.0: 20 variables, 8 equality constraints
For improved efficiency, SDPT3 is solving the dual problem.
-----------------------------------------------------------num. of constraints = 8
dim. of linear var = 16
dim. of free
var = 4 *** convert ublk to lblk
*******************************************************************
SDPT3: Infeasible path-following algorithms
*******************************************************************
version predcorr gam expon scale_data
NT
1
0.000
1
0
it pstep dstep pinfeas dinfeas gap
prim-obj
dual-obj
cputime
------------------------------------------------------------------0|0.000|0.000|1.0e+000|6.9e+000|3.5e+010| 2.804630e+009 0.000000e+000| 0:0:00|
1|1.000|0.966|8.9e-007|2.3e-001|2.2e+009| 1.149790e+009 5.446578e+005| 0:0:00|
2|1.000|0.401|2.5e-006|1.4e-001|8.4e+008| 2.092782e+008 5.865177e+005| 0:0:00|
3|0.892|0.352|2.3e-007|9.1e-002|5.8e+008| 8.492455e+007 5.783161e+005| 0:0:00|
4|1.000|0.357|1.5e-006|5.9e-002|4.4e+008| 4.170257e+007 4.391842e+005| 0:0:00|
5|1.000|0.675|1.1e-007|1.9e-002|1.5e+008| 1.329674e+007 1.506755e+005| 0:0:00|
6|0.997|0.878|2.9e-008|2.3e-003|1.9e+007| 2.940189e+006 -1.013703e+004| 0:0:00|
7|0.998|0.919|7.8e-009|1.9e-004|1.7e+006| 5.276519e+005 -2.736437e+004| 0:0:00|
8|1.000|0.060|3.4e-009|1.8e-004|1.4e+006| 4.232803e+005 -2.757775e+004| 0:0:00|
9|1.000|0.881|1.7e-008|2.1e-005|2.2e+005| 1.097886e+005 -2.857791e+004| 0:0:00|
10|0.853|0.236|1.9e-009|1.6e-005|1.0e+005| 2.394123e+004 -2.853426e+004| 0:0:00|
11|1.000|0.452|1.7e-009|8.9e-006|4.8e+004|-4.977080e+003 -2.864900e+004| 0:0:00|
12|0.989|0.646|6.5e-009|3.2e-006|1.1e+004|-2.511018e+004 -2.886680e+004| 0:0:00|
13|0.861|0.213|7.2e-009|2.5e-006|9.6e+003|-2.519317e+004 -2.882240e+004| 0:0:00|
14|1.000|0.617|1.1e-008|9.5e-007|3.0e+003|-2.771596e+004 -2.881777e+004| 0:0:00|
15|1.000|0.652|5.0e-011|3.3e-007|8.5e+002|-2.838212e+004 -2.879646e+004| 0:0:00|
16|0.645|0.374|6.8e-010|2.1e-007|4.4e+002|-2.851301e+004 -2.875216e+004| 0:0:00|
17|1.000|0.169|1.2e-009|1.7e-007|3.8e+002|-2.851581e+004 -2.872179e+004| 0:0:00|
18|1.000|0.308|6.9e-009|1.2e-007|2.7e+002|-2.852690e+004 -2.867571e+004| 0:0:00|
19|1.000|0.521|1.4e-009|5.7e-008|1.2e+002|-2.856063e+004 -2.862352e+004| 0:0:00|
20|1.000|0.858|2.7e-010|8.2e-009|1.5e+001|-2.857437e+004 -2.858190e+004| 0:0:00|
21|0.987|0.984|8.1e-012|1.5e-010|2.7e-001|-2.857499e+004 -2.857511e+004| 0:0:00|
22|0.989|0.989|6.4e-013|2.0e-012|3.3e-003|-2.857500e+004 -2.857500e+004| 0:0:00|
23|0.989|0.988|1.8e-014|2.8e-014|4.4e-005|-2.857500e+004 -2.857500e+004| 0:0:00|
stop: max(relative gap, infeasibilities) < 1.49e-008
------------------------------------------------------------------number of iterations
= 23
primal objective value = -2.85750000e+004
dual
objective value = -2.85750000e+004
gap := trace(XZ)
= 4.42e-005
relative gap
= 7.74e-010
actual relative gap
= 2.99e-010
rel. primal infeas
= 1.78e-014
rel. dual
infeas
= 2.78e-014
norm(X), norm(y), norm(Z) = 1.8e+003, 1.0e+006, 1.0e+006
norm(A), norm(b), norm(C) = 1.6e+003, 1.3e+003, 1.7e+006
Total CPU time (secs) = 0.11
CPU time per iteration = 0.00
termination code
= 0
DIMACS: 1.8e-014 0.0e+000 4.8e-014 0.0e+000 3.0e-010 7.7e-010
-----------------------------------------------------------------------------------------------------------------------------Status: Solved

22/73

chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol
chol

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

23/73

Si planteamos el problema con el Lenguaje de Modelizacin de Programacin


Matemtica, AMPL, al que se dan estas especificaciones
# Generacin.mod + .dat en AMPL
param a{1..4, 1..4}; param b{1..4}; param c{1..4}; param ub{1..4};
var x{i in 1..4} >= 0, <= ub[i];
minimize coste: sum{j in 1..4} c[j]*x[j];
subject to res1 {i in 1..3}: sum{j in 1..4} a[i,j]*x[j] >= b[i];
subject to res2:
sum{j in 1..4} a[4,j]*x[j] <= b[4];
data;
param
param
param
1
2
3
4
param

b := 1 20 2 30 3 1750 4 25500;
c := 1 240 2 95 3 1300 4 50;
a:
1
2
3
4 :=
0.33
0.1
0.8 0.01
0.35
0.1
0.9 0.04
24.75
3
64
0.2
210
80 1100
48 ;
ub := 1 50 2 10 3 50 4 infinity;

24/73

Utilizando la plataforma OPTI Toolbox se obtendra lo que sigue.


prob =
prob =

amplRead(Generacin_1.mod)

Name:
f:
H:
Hstr:
fun:
sense:
objbias:
A:
b:
Aeq:
beq:
rl:
ru:
lb:
ub:
Q:
l:
qrl:
qru:
sdcone:
nlcon:
nljac:
nljacstr:
nlrhs:
nle:
cl:
cu:
int:
sos:
xdata:
ydata:
weighting:
x0:
probtype:
solver:
path:
opts:
ode:
odez0:
conlin:

OPTI Problem
[4x1 double]
[]
[]
[]
1
0
[4x4 double]
[]
[]
[]
[4x1 double]
[4x1 double]
[4x1 double]
[4x1 double]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
cccc
[]
[]
[]
[]
[4x1 double]
[]
[]
D:\Matlab2013a\@opti\Generacin_1.nl
[]
[]
[]
[4x1 double]

Opt = opti(prob)
-----------------------------------------------------Linear Program (LP) Optimization
min fx
s.t. rl <= Ax <= ru
lb <= x <= ub
-----------------------------------------------------Problem Properties:
# Decision Variables:
4
# Constraints:
11
# Linear Inequality:
4
# Bounds:
7
-----------------------------------------------------Solver Parameters:
Solver:
CLP
----------------------------------------------------- [x,fval] = solve(Opt)
x =
50.0000
10.0000
7.1429
126.7857
fval =
28575
[x,fval,exitflag,info] = solve(Opt)
x =
50.0000
10.0000
7.1429
126.7857
fval =
28575
exitflag =
1
info =
Iterations: 2
Time: 5.7776e-04
Algorithm: CLP: Automatically Chosen Solver
Status: Proven Optimal
Lambda: [1x1 struct]

Si planteamos el problema otra vez con AMPL, haciendo que las variables de

decisin
deban ser enteras,
-

25/73

26/73

Se obtendra lo siguiente:
>> prob = amplRead(Generacin_1.mod)
prob =
Name: OPTI Problem
f: [4x1 double]
H: []
Hstr: []
fun: []
sense: 1
objbias: 0
A: [4x4 double]
b: []
Aeq: []
beq: []
rl: [4x1 double]
ru: [4x1 double]
lb: [4x1 double]
ub: [4x1 double]
Q: []
l: []
qrl: []
qru: []
sdcone: []
nlcon: []
nljac: []
nljacstr: []
nlrhs: []
nle: []
cl: []
cu: []
int: iiii
sos: []
xdata: []
ydata: []
weighting: []
x0: [4x1 double]
probtype: []
solver: []
path: D:\Matlab2013a\@opti\Generacin_1.nl
opts: []
ode: []
odez0: []
conlin: [4x1 double]

>> Opt = opti(prob)


-----------------------------------------------------Mixed Integer Linear Program (MILP) Optimization
min fx
s.t. rl <= Ax <= ru
lb <= x <= ub
xi = Integer / Binary
-----------------------------------------------------Problem Properties:
# Decision Variables:
4
# Constraints:
16
# Linear Inequality:
4
# Bounds:
8
# Integer Variables:
4
-----------------------------------------------------Solver Parameters:
Solver:
CBC
----------------------------------------------------->> [x,fval,exitflag,info] = solve(Opt)
x =
50
10
8
108
fval =
28750
exitflag =
1
info =
Nodes: 6
AbsGap: 175
RelGap: 0.0061
Time: 0.0044
Algorithm: CBC: Branch and Cut using CLP
Status: Integer Optimal

+,"*
-./
012
 !"#$%&'()$
$#$
) /./3-45467-4/8

27/73

Optimizacin de flujos en redes_Network flows




Expresado grficamente de esta forma.

l9

bcA

@De =
; b

@bGd
@Ci b@kE
b@Hj ?
: b
b@Bf
@bIg
< b
@Fh >

l9

JKLKJMNO
JPQRNSKMQNR
T
T
T
T
T
T
T
T
T



UKVMUMWX 9
RYZ[XJNNP \P]JPQRXS^KNMPQKNQP_XR
JKLKJMNOJPQRNSKMQNRPQN`XKSJR

Se trata de encontrar,
entre
los nudos
1 y 6, el mximo caudal o flujo de gas,
7 8 9

5 6
    mercancas, llamadas telefnicas, capital,
3 4 elctrica,
petrleo, energa
material,
2


1
0
etctera.

28/73

En trminos de optimizacin,
max.

s. a

t D x1 C x2
x1 C x3 D x4
x2 C x5 D x3 C x6
x4 C x8 D x5 C x7
x6 D x8 C x9
t D x7 C x9

0  x1
0  x2
0  x3
0  x4
0  x5
0  x6
0  x7
0  x8
0  x9

+,"*
-./
012
 !"#$%&'()$
$#$
) /./3-45467-4/8

l9

bcA

@De =
; b

@bGd
@Ci b@kE
b@Hj ?
: b
b@Bf
@bIg
< b
@Fh >

l9

3
2
1
2
1
3
3
1
1

JKLKJMNO
JPQRNSKMQNR
T
T
T
T
T
T
T
T

maximize t
subject to t = x1 + x2, x1 + x3 = x4, et cetera
0 x1 3, 0 x2 2, et cetera


29/73

La (tsolucin
de este sencillo
problema
la siguiente
= x1 +ptima
x2 is equivalent
to inequalities
t xes
1 + x2 , t x1 + x2 , . . . )
Solution
2

4
3

2
4

1
2

1
3

Linear optimization

18-5

La emisin de deuda pblica_Portfolio analysis

30/73

El ayuntamiento de una capital de provincia tiene comprometido invertir en


proyectos de infraestructura en cuatro aos 2.000, 4.000, 8.000 y 5.000 millones
de euros, respectivamente. Se supone que todo ese dinero est disponible el 1
de enero del ao en que se gasta.

Para financiar estas inversiones el ayuntamiento planea emitir unos bonos a 20


aos con un inters del 4 % para la deuda emitida el primer ao, del 3 % para la
del segundo ao, 3,5 % para la del tercer ao y del 3,75 % para la del cuarto
ao. Los intereses se empiezan a pagar inmediatamente.

Si algo del dinero obtenido se deposita en cuentas a plazo fijo, se podra obtener
el 1,5 % de inters el segundo ao, el 1,25 % el tercero y el 1 % el cuarto.

Cul es el plan ptimo de financiacin?

31/73

Solucin Si designamos por x1; x2; x3 y x4 las cantidades de deuda en miles


de millones de euros que tiene que emitir cada uno de los cuatro aos, y por
y1; y2 e y3 las que hay que depositar el segundo, tercer y cuarto ao en cuentas
a plazo fijo, el problema se puede formular de la siguiente manera:

min. 20  0;04x1 C 20  0;03x2 C 20  0;035x3 C 20  0;0375x4


s. a x1

y1
C 1;015y1

x2
x3
x4

D2
y2
D4
C 1;0125y2
y3 D 8
C 1;01y3 D 5

x1; x2; x3; x4; y1; y2; y3  0:

Transporte de mercancas_Transportation and


logistics management


32/73

El del transporte y logstica es uno de los sectores donde ms se recurre a la PL


para optimizar recursos. Transporte de mercancas
Una empresa dispone de m f
abricas capaces de producir mensualmente a1, a2, . . . , am cantidades de una mercanca. El producto ha de
ser enviado en cantidades b1, b2, . . . , bn a n almacenes.

Una empresa dispone de m fbricas capaces de producir mensualmente


de enviarde
una
unidad
de producto
la f
aque
bricaser
i alenviada
almac
en a n
a1; a2; : : :Si; aelmcoste
cantidades
una
mercanca
que de
tiene
a que
j es cij , se trata de determinar las cantidades xij que habr
almacenesenviar
en cantidades
b1; b2a; cada
: : : ; balmac
El elcoste
n , respectivamente.
de cada f
abrica
en de tal forma que
costede
delenviar una
y sei satisfagan
los jrequerimientos
de envos a
unidad de transporte
producto sea
de m
lanimo
fbrica
al almacn
es cij .
realizar.

F
abrica

Almac
en

a1

b1

a2

b2

am

bn
16

Una empresa dispone de m f


abricas capaces de producir mensualmente a1, a2, . . . , am cantidades de una mercanca. El producto ha de
ser enviado en cantidades b1, b2, . . . , bn a n almacenes.

Hay que determinar las cantidades xij que hay que enviar de cada fbrica a
Si el coste de enviar una unidad de producto de la f
abrica i al almac
en
cada almacn para satisfacer las demandas
el coste
del transporte
total
determinar
las cantidades
x que habr
a que
j es c , se trataydeque
enviar de cada f
abrica a cada almac
en de tal forma que el coste del
transporte sea mnimo y se satisfagan los requerimientos de envos a
sea mnimo; es decir,
ij

33/73

ij

realizar.

F
abrica

minimizar

sujeta a

j D1
m
i

a1

b1

a2

b2

am

bn

cij xij

ij
n
i

Almac
en

16

xij D ai ;

para i D 1; : : : ; m

xij D bj ;

para j D 1; : : : ; n

 0;

para i D 1; : : : ; m
j D 1; : : : ; n:

i D1

xij

P
Pn
Adems, m
a
D
iD1 i
j D1 bj : la cantidad total producida tiene que ser igual a
la suma de las que llegan a los almacenes.

34/73

ndice


Formulacin

Definiciones y formas de programas lineales

Historia

Ejemplos de programas lineales

Consideraciones geomtricas

Politopos

Puntos extremos y soluciones bsicas factibles

35/73

Consideraciones geomtricas


Consideremos este problema de Programacin Lineal:


min. x1
s. a

3x2

x1 C x2  6
x1 C 2x2  8
x1; x2  0:

Hay que determinar aquel punto de la regin factible que minimiza la variedad
lineal (una recta) z D x1 3x2.

36/73

Para minimizar z, esta variedad lineal se habr de desplazar respecto de su


subespacio de referencia, x1 3x2 D 0, en la direccin que minimice ms
dicho objetivo: esto es, en la direccin c D 1; 3T , opuesta al vector
caracterstico de z.

21 5
4

3 
6
0 

1
9209
218 9 4

3906
78 9

346
5
0 20

En el punto ptimo, x  D 4=3; 14=3T ,


denominado punto extremo o vrtice, es
imposible, manteniendo la factibilidad, mover
ms z D x1 3x2 en la direccin de c .

37/73

En el ptimo, hay dos condiciones que estn activas, o vigentes: la primera y la


segunda.

Ninguna de las condiciones de no negatividad de las variables estn activas.

En el ptimo, el vector de costes se puede poner como combinacin lineal de los


vectores columna de la matriz A T , vectores caractersticos de las condiciones
activas:

 1  

1
1
1
5=3
A T  D cI !  D
D
:
1 2
3
2=3
Volveremos sobre este  y esta combinacin lineal recurrentemente.

38/73

Formas de la solucin u ptimo


Solucin ptima nica Ocurre siempre en un punto extremo, o vrtice de
la regin factible.
Las dos alternativas que pueden presentarse en este caso: regin factible
acotada y no acotada.

123

54678
9

54678
9

1 3


El que la regin factible no est acotada no afecta a que haya o no ptimo;
puede que s a la forma de llegar a ella.

39/73

Soluciones
ptimas
alternativas
En
este
caso
012345167
89
1
5 8
2 76 5 8


elpunto
ptimo
es
cualquiera
de los!!
puntos de una
denominada
faceta,
o
cara,
!4  !
 "
#
de
$la regin factible.
!


(
%

( &$'

&'

' factible
"#est
$
mientras
!

)'
En (a) la regin
acotada
que
en (b)&
no.
*+

0123451676
1895
71 419 
 !!"# $
!%$ 
!&'($
Solucin ptima
acotada
Este
caso
se
 no
!)!
)
*
%presenta
$ cuando la
configuracin regin factible-funcin objetivo tiene la forma de la figura.

+,

'
-.
Es posible desplazarse tanto como se desee dentro de la regin factible en la
direccin c sin encontrar un punto extremo o cara de la regin factible que
bloquee dicho desplazamiento.

40/73

x1 + 2x2
x2
2x1
x1
x2

s. a

Regin factible

2
3
0
3.

41/73

Su regi
on factible es el pues no hay ning
un x = [x1, x2]T que sa
vaca
Por las
ejemplo:
faga todas
condiciones.

min. 2x1 C 3x2


s. a

x1 C 2x2  2
2x1
x2  3
x1  0
x2  3:

x 1 + 2x 2 2

2x 1 x 2 3

0
3


0
1

3/2
0

8/3
7/3

x2 3

Su regin factible es el conjunto vaco, ;, pues no hay ningn x D x1; x2 que


satisfaga todas las condiciones. El problema se dice no factible o inconsistente.

25

Geometra del problema en Im.A/

42/73

Definicin Un conjunto C  Rn se dice convexo si y slo si para todo par de puntos


x 1 ; x 2 2 C todas las combinaciones de la forma x D x 1 C .1
en C .

/x 2 , 0    1, estn

Cuando para cada par de puntos del conjunto convexo todos los puntos del
segmento de recta que los une estn en el conjunto.

Examples of convex sets


Examples of non-convex sets
A line segment is a convex set. The union of two non-overlapping line segm
Non-convex sets can have indentations.

Fig. 4.9. Convex


sets
with
pairs
of
points
joined by line segments.

Title Page





38

of

156

Title Page
Go Back





Full Screen

Close

39

of 156
Quit

Go Back

43/73

La expresin x D x 1 C .1 /x 2, 0    1, define la combinacin convexa


de x 1 y x 2. Si 0 <  < 1, es decir  2 .0; 1/, la combinacin es estrictamente
convexa.

El concepto de combinacin convexa se puede generalizar a cualquier nmero


finito de puntos de la siguiente manera:
xD

p
i

i x i ;

iD1

donde

p
i
i D1

i D 1;

i  0;

i D 1; : : : ; p:

44/73

Teorema El conjunto de soluciones de un programa lineal, K D fx 2 Rn W Ax D


b; x  0g, es un conjunto convexo.

Definicin Un conjunto C  Rn se dice un cono si para todo x 2 C , x 2 C , para


todo escalar no negativo  2 R (  0).
Un cono que tambin es convexo se denomina cono convexo.

El conjunto fx 2 Rm W x D A; A 2 Rmn; 2 Rn;  0g es un cono


convexo generado por los vectores columna de la matriz A.
Definicin x es un punto extremo, o vrtice, de un conjunto convexo C si y slo si
no es interior a un segmento de recta contenido en C .
Es decir, si y slo si,
x D .1 /y C z con 0 < < 1 y y; z 2 C ) x D y D z.

Geometra del problema con condiciones de igualdad




45/73

El programa lineal en forma estndar min. c T x; s. a Ax D b; x  0, donde


x 2 Rn y A 2 Rmn, se puede escribir as:
min.

s. a

n
X
j D1
n
X

cj xj

05
04

aj xj D b

j D1

x1; : : : ; xn  0:

03
2

05

01

04

03
01
2

donde aj es el vector columna j de A.




El ptimo ser un vector de escalares no negativos de dimensin n que defina


una combinacin de los vectores columna de A de tal forma que b pertenezca
al cono convexo generado por estos vectores columna y que minimice la funcin
objetivo.

46/73

05
04

678

03
2

01

05

04

03

698

01
2

En la figura se representan los casos de un problema con regin factible no vaca


y otro con regin factible vaca.

En el segundo caso, (b), los vectores a1, a2, a3 y a4 no se pueden combinar


convexamente de ninguna manera que contenga a b.

Ejemplo Consideremos las regiones factibles que determinan las condiciones


2x1 C x2 C x3
D2
x1 C 3x2
C x4 D 3
x1 ; x2 ; x3 ; x4  0

y
2x1 C x2 C x3
D 1
x1 C 3x2
C x4 D 2
x1 ; x2 ; x3 ; x4  0:

En (a) se puede ver que b est contenido en ese cono convexo; en (b) no: el
primer problema es factible; el segundo es inconsistente.
04

678

04

698

3
05

05
02

02
01

01

47/73

Geometra con condiciones de desigualdad




Consideremos ahora
min.

s. a

n
X
j D1
n
X

48/73

cj xj
aj xj  b

j D1

x1; : : : ; xn  0:
Si existe solucin factible, la interseccin del cono convexo que generan
a1; : : : ; an y el conjunto de vectores menores o iguales que b ser no vaca.
04
01
567

04
02

02

01
3

En (a) la regin factible es no


vaca; en (b) vaca.

587

49/73

Geometra del ptimo




Refirindonos al problema en forma estndar, se buscan unos escalares no


negativos x1; x2; : : : ; xn tales que
 
 
 
 
c1
c
c
z
x1 C 2 x2 C    C n xn D
;
a1
a2
an
b
y se minimice z.

Se busca poder expresar el vector z, bT T en el cono convexo que generan los


vectores c1; aT1 T ; : : : ; cn; aTn T con el valor ms pequeo posible del escalar z.

50/73

Ejemplo Sea el problema


min. 2x1
s. a

3x2

x1 C 2x2  2
x1; x2  0:

Aadiendo la variable de holgura x3, el problema se puede expresar como el de


encontrar unos escalares x1; x2; x3  0 tales que
 
 
 
 
2
3
0
z
x1 C
x2 C
x3 D
1
2
1
2
y adems se minimice z.

51/73

Se busca poder expresar el vector z; 2T en el cono convexo que generan los


vectores 2; 1T , 3; 2T y 0; 1T , con el valor ms pequeo posible del
escalar z.

0 3
789
  5
0463
5
013
 9 4
2
0453
2


Se trata de encontrar el vector z, 2T de este cono convexo que haga mnimo z.

La solucin es z  D

4 con x1 D 2 y x2 D x3 D 0.

52/73

Ejemplo Sea ahora


min. 2x1
s. a

3x2

x1 C 2x2  2
x1; x2  0:

Si se sustrae de la primera condicin la variable de holgura x3, el problema se


reduce a encontrar unos escalares x1; x2; x3  0 tales que se cumpla que
 
 
 
 
2
3
0
z
x1 C
x2 C
x3 D
;
1
2
1
2
y se minimice z.

53/73

En la figura se describe ahora el cono que generan los vectores 2, 1T , 3,


2T y 0, 1T .
03
7890
3  5
46
5

0453
2
013
-2

En ese cono se pueden encontrar puntos de la forma z, 2T , con z tan pequea


como queramos: el valor ptimo de la funcin objetivo tiende, por consiguiente,
u
a 1. El problema no est acotado.

Politopos
Definicin Llamaremos hiperplano
H de vector caracterstico a 2 Rn ; a 0, al

conjunto H D x 2 Rn W aT x D c , con c 2 R.

Definicin Un hiperplano en Rn es una variedad lineal .n 1/-dimensional.

Definicin Dado un hiperplano H , aT x D c, llamaremos semiespacios cerrados de


borde H a los conjuntos


HC D x 2 Rn W aT x  c
H D x 2 Rn W a T x  c
y semiespacios abiertos de borde H a

n
T
D
x
2
R
W
a
x
>
c
HC

H D x 2 Rn W a T x < c :

Un hiperplano es el conjunto de soluciones de una ecuacin lineal en Rn.

54/73

55/73

El hiperplano x1 C 4x2 D 11, su vector caracterstico a D 1; 4T y los


semiespacios HC y H se ven as:
a

H+
y

x
a

El vector a es ortogonal a H y dirigido hacia HC.




Los semiespacios de borde H son convexos; la unin de HC y H es el espacio


Rn .

56/73

Definicin Un politopo es un conjunto formado por la interseccin de un nmero finito


de semiespacios cerrados.

Definicin Un politopo cnico es un conjunto formado por la interseccin de un nmero


finito de semiespacios cerrados que pasan por un punto.

Definicin Un poliedro es un politopo acotado y no vaco.

Imgenes de poliedros.

Tambin aqu.

57/73

58/73

Es fcil comprobar que la interseccin de conjuntos convexos es convexa y que


por lo tanto los politopos y los poliedros son conjuntos convexos.

Si un politopo P es un poliedro, cualquier punto se puede expresar como


combinacin convexa de los vrtices o puntos extremos.

La regin factible, o conjunto de soluciones de un programa lineal,


P D fx 2 Rn W Ax D b; x  0g ;
es un politopo convexo.

59/73

ndice


Formulacin

Definiciones y formas de programas lineales

Historia

Ejemplos de programas lineales

Consideraciones geomtricas

Politopos

Puntos extremos y soluciones bsicas factibles

60/73

Puntos extremos y soluciones bsicas


factibles


Consideraremos en los sucesivo las condiciones del programa lineal en forma


estndar,
Ax D b
x  0;
donde x 2 Rn, b 2 Rm y A 2 Rmn; n > m .

Si Ax D b es compatible, rango.A/ D m:
De las n columnas de A se pueden elegir m linealmente independientes que
formen una base del subespacio Im.A/.

432

Si esas m columnas son las primeras y forman la submatriz B de A, sta queda

2 1 5

Como B es regular, la ecuacin BxB D b se puede resolver de forma nica.


El vector x T D xBT ; 0T es una de las mltiples soluciones de Ax D b.
Definicin Sea B cualquier submatriz no singular m  m resultante de agrupar m
columnas linealmente independientes de A.


Si todos los n m coeficientes del vector x no asociados a las columnas de B, a los que
se denominarn variables no bsicas, se hacen cero y se resuelve la ecuacin Ax D b
en los m restantes coeficientes, denominados variables bsicas, la solucin resultante
de denomina solucin bsica asociada a la matriz bsica, o base, B.

Las n m columnas de A que no forman parte de B se las agrupa en una matriz


m  .n m/ denominada matriz no bsica N (asociada a las variables no bsicas); en
correspondencia, las variables no bsicas forman x N .

61/73

62/73

Ejemplo Consideremos el poliedro de la figura,


57

023
4

043
4
013
2

56

definido por x1 C x2  6, x2  3 y x1; x2  0.




Si aadimos las variables de holgura x3 y x4 a la primera y segunda desigualdad,


respectivamente, resulta:
x1 C x2 C x3
D6
x2
C x4 D 3
x1; x2; x3; x4  0:


1110
La matriz de los coeficientes es A D a1; a2; a3; a4 D
. Las posibles
0101
matrices B que se pueden extraer de A y sus correspondientes soluciones
bsicas son las de la tabla.
" #
"
#" # " #

63/73

"

#
11
B D a1 ; a2 D
01

"

#
10
B D a1 ; a4 D
01

"

#
11
B D a2 ; a3 D
10

"

#
10
B D a2 ; a4 D
11

"

#
10
B D a3 ; a4 D
01

x1
1 1 6
3
D B 1b D
D
x2
0 1 3
3
" # " #
x
0
xN D 3 D
x
0
" 4#
" #" # " #
x1
1 0 6
6
1
xB D
DB bD
D
x4
0 1 3
3
" # " #
0
x
xN D 2 D
x
0
" 3#
"
#" # " #
x2
0 1 6
3
1
xB D
DB bD
D
1 1 3
3
x3
" # " #
0
x
xN D 1 D
x
0
" 4#
"
#" # " #
x2
1 0 6
6
1
xB D
DB bD
D
x4
1 1 3
3
" # " #
x
0
xN D 1 D
x
0
" 3#
" #" # " #
x3
1 0 6
6
1
xB D
DB bD
D
x4
0 1 3
3
" # " #
x
0
xN D 1 D
x2
0
xB D

64/73

La cuarta de estas soluciones no vale por ser uno de sus coeficientes negativo;
es no factible.

Las soluciones bsicas factibles son pues


2 3
2 3
2 3
3
6
0
637
607
637
x 1 D 405 ; x 2 D 405 ; x 3 D 435
0
3
0

2 3
0
607
y x 4 D 465 :
3

Obsrvese que estos puntos determinan en sus dos primeros coeficientes los
57
puntos extremos de la figura anterior.
0 3
0 3
2
4

4
4

0 13
2

56

65/73

Definicin Si una o ms de las variables bsicas de una solucin bsica de


Ax D b
x  0;
es cero, la solucin se denomina bsica degenerada. Una solucin bsica en la que todos
sus coeficientes son no negativos se denomina solucin bsica factible; si algn coeficiente
es cero, la solucin se dice bsica factible degenerada.

Teorema Equivalencia entre puntos extremos y soluciones bsicas Sean A 2 Rmn una
matriz de rango m, b 2 Rm y el politopo convexo
P D fx 2 Rn W Ax D b; x  0g :
Un x 2 P es un punto extremo de P si y slo si los vectores columna de A asociados a
los coeficientes positivos de x son linealmente independientes.

66/73

Corolario x 2 P D fx 2 Rn W Ax D b; x  0g es punto extremo de P si y slo si es


una solucin bsica factible de
Ax D b
x  0:

Corolario Un x es un punto extremo de P D fx 2 Rn W Ax D b; x  0g si y slo si


resulta de la interseccin de n hiperplanos linealmente independientes.

Corolario Un politopo P D fx 2 Rn W Ax D b; x  0g tiene un nmero finito de


puntos extremos.

I D EMOSTRACIN . Escoger m columnas linealmente


 independientes de n de A es
n
n
C.n; m/ D
D
:
m
m.n m/

67/73

Ejemplo Consideremos el programa lineal que sigue.

57

x1 C x2  6
x2  3
x1 C 2x2  9
x1; x2  0:

023
4

043
4
013
2

56

Si aadimos las variables de holgura x3, x4 y x5 a la primera, segunda y tercera


desigualdad, respectivamente, resulta
x1 C x2 C x3
D6
x2
C x4
D3
x1 C 2x2
C x5 D 9 I
x1 ; x2 ; x3 ; x4 ; x5  0:

3
11100
A D a1 ; a2 ; a3 ; a4 ; a5 D 4 0 1 0 1 05
12001

Obsrvese que la desigualdad x1 C 2x2  9 es redundante.

Estudiemos la solucin bsica que se obtiene a partir de B D a1; a2; a3:


2
3
2 3
111
x1
xB D 4x2 5 D B 1 b D 40 1 05
x3
120
   
0
x
:
xN D 4 D
x5
0

12

2
32 3 2 3
6
0 2 1
6
3
435 D 40 1 05 435 D 435 ;
9
1 1 1
9
0

Es degenerada, pues su tercer coeficiente es cero.




Analicemos ahora la solucin bsica considerando B D a1; a2; a4:


2 3
2
3
x1
110
xB D 4x2 5 D B 1 b D 40 1 15
x4
120
   
x
0
xN D 3 D
:
x5
0

12

3 2
32 3 2 3
6
20 1
6
3
435 D 4 1 0 15 435 D 435 ;
9
11 1
9
0

Como se puede ver es la misma solucin que obtenamos antes.




Si considersemos B D a1; a2; a5 llegaramos tambin a la misma solucin


bsica degenerada:
x1 x2 x3 x4 x5T D 3 3 0 0 0T :

68/73

69/73

La correspondencia entre soluciones bsicas factibles y puntos extremos no es en


general biunvoca: A cada solucin bsica factible le corresponde un nico punto
extremo en P , pero puede que a cada punto extremo de P le corresponda ms
de una solucin bsica factible.

Cuando A no tiene rango completo, P puede ser el conjunto vaco o alguna de


las condiciones es redundante. En lo sucesivo supondremos que A 2 Rmn tiene
m vectores fila/columna linealmente independientes.

Un problema de programacin lineal se denomina no degenerado si todas sus


soluciones bsicas factibles son no degeneradas. La correspondencia en este caso
entre puntos extremos y soluciones bsicas factibles s es biunvoca.

70/73

Dos soluciones bsicas factibles del politopo


P D fx 2 Rn W Ax D b; x  0g
se dicen adyacentes si m

1 de sus coeficientes son comunes.

Dos soluciones adyacentes o puntos extremos estn unidos por una arista.

Suponiendo no degeneracin, cualquiera variable bsica (y su


correspondiente punto extremo) tiene exactamente n m adyacentes.

71/73

Si el politopo P no est acotado, para caracterizar del todo las soluciones del
problema de Programacin Lineal hay que introducir las direcciones.
Definicin Una direccin del politopo P D fx 2 Rn W Ax D b; x  0g es un vector
no nulo, d 2 Rn , tal que para todo x 0 2 P el rayo fx 2 Rn W x D x 0 C d;   0g
pertenece a P .

Un politopo P no est acotado si y slo si tiene una direccin; d 0 es una


direccin de P si y slo si Ad D 0 y d  0, pues cualquier punto a lo largo de
esa direccin cumple las condiciones y mejora la funcin objetivo sin lmite.

72/73

Teorema Teorema de la representacin Todo punto del politopo P D fx 2 Rn W


Ax D b; x  0g se puede expresar de la forma
X
i vi C d;
xD
i 2I

donde fvi W i 2 I g es el conjunto de puntos extremos de P ,


es una direccin de P , o d D 0.

i2I

i D 1, i  0, y d, o

Corolario Si el politopo P D fx 2 Rn W Ax D b; x  0g es cerrado y acotado (es un


poliedro), todo punto x 2 P se puede expresar como combinacin convexa de sus puntos
extremos.

Teoremas fundamentales de la Programacin Lineal


Teorema Si el politopo P D fx 2 Rn W Ax D b; x  0g es no vaco, tiene al menos
un punto extremo.

Teorema Dado un politopo no vaco P D fx 2 Rn W Ax D b; x  0g de soluciones


de un PL, el valor mnimo de la funcin objetivo c T x, para x 2 P , se alcanza en un punto
extremo de P (solucin bsica factible ptima), o c T x no est acotada inferiormente en
P.

De estos teoremas se deduce que, cuando hay varias soluciones ptimas, al


menos una es un punto extremo del politopo de soluciones factibles.

En consecuencia, para encontrar el ptimo de un PL hay que concentrarse


nicamente en las soluciones bsicas factibles o puntos extremos de P .

73/73

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Programacin Lineal

El Mtodo Smplex

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_simplex_2016.pdf

1/148

ndice

2/148

Introduccin

Condiciones de punto ptimo

Mejora de una solucin bsica factible

El algoritmo Smplex


Degeneracin y ciclado

Solucin bsica factible inicial

Anlisis de sensibilidad

El mtodo Smplex para variables acotadas

Implementaciones comerciales del mtodo Smplex

El mtodo Smplex en forma de tableau

Otras variantes y mejoras del Smplex

Complejidad computacional del mtodo Smplex

3/148

Introduccin


Como sabemos, para encontrar el ptimo del problema de PL

min. c T x
s. a Ax D b
x  0;
se podran estudiar, uno a uno, los vrtices o puntos extremos del politopo
P D fx 2 Rn W Ax D b; x  0; A 2 Rmn; b 2 Rng
y determinar aqul en el que la funcin objetivo se hace mnima.


Para m y n grandes, considerar todos es prohibitivo pues son

n
m.n m/

En 1947 George B. Dantzig, EE.UU., 1914-2005, culminando el trabajo de


un importante equipo de matemticos y economistas, formul el denominado
Mtodo Smplex.

4/148

George B. Dantzig, EE.UU. 1914-2005.

Sigue una estrategia ptima sin tener que estudiar todos los vrtices de un
problema a partir de:


Encontrar un punto extremo desde el que comenzar: solucin bsica factible


del politopo P ;

Desplazarse desde ese punto extremo a otro, a lo largo de alguna arista de


P , mejorando con ello la funcin objetivo.

Repetir el paso anterior cuantas veces sea necesario hasta que se alcance la
solucin ptima o la arista escogida lleve a 1.

5/148

Condiciones de punto ptimo


Teorema Condiciones de Karush-Kuhn-Tucker x 2 Rn es el ptimo del programa lineal

min. c T x
s. a Ax D b
x  0;
si y slo si existen vectores  2 Rm y  2 Rn tales que
(i) Ax D b; x  0;
(factibilidad del problema primal)
T
(ii) c D A  C ;   0; (factibilidad del problema dual)
(iii) i xi D 0; i D 1; : : : ; n: (holguras complementarias o gap de dualidad)

La condicin i es la de factibilidad del problema, tal como est planteado.

La Funcin de Lagrange del problema es


L.x; ; / D c T x

T .Ax

Su vector gradiente con respecto a x es c A T 


Igualado ste a 0 es la segunda condicin, ii.

Joseph-Louis Lagrange, Turin,


1736-Pars, 1813.

b/

6/148

 T x:

.

El vector  es el de los multiplicadores de Lagrange de las condiciones


Ax D b.

El vector , el de los multiplicadores de Lagrange de las condiciones x  0.

La condicin iii se conoce como la de complementariedad de holguras, u


holguras complementarias.
Exige que sean cero aquellos multiplicadores de las condiciones de no
negatividad que no estn activas (no sean cero) en el ptimo; o, lo que es
equivalente, que sea cero el denominado gap de dualidad: la diferencia entre el
valor de la funcin objetivo del primal y la del dual.

Todas estas condiciones fueron formuladas por Harold William Kuhn, EE.UU.,
1925-2014, y Albert William Tucker, Canad, 1905-1995, en 1951, con el fin de
extender la teora de Lagrange a la caracterizacin de los puntos ptimos de
problemas de programacin lineal y no lineal sometidos a restricciones.

Posteriormente se descubri que en 1939 William Karush, EE.UU., 1917-1997,


ya haba trabajado sobre estas condiciones, por lo que desde ese momento se les
pas a denominar
condicionesRichard
de Karush-Kuhn-Tucker,
o KKT.
264
W. Cottle

7/148

William Karush, circa 1987

Fritz John at NYU, circa 1987

Las condiciones KKT generalizan la de la existencia de un mnimo de una


funcin sin restricciones; es decir, que rx f .x / D 0.

8/148

cBT

c TN ,

Si A se ordena de la forma A D B N , y en concordancia c D


como en el ptimo la condicin i xi D 0, i D 1; : : : ; n, implica que Bi D 0,
i D 1; : : : ; m (pues las variables bsicas son positivas), la condicin ii de KKT
se puede reescribir as:
   T
 
cB
B
0
D

C
; N  0:
NT
cN
N

Esto equivale a que cB D B T  y que


c N D  N C N T ;

 N  0:

Es decir, a que
cN

NTB

cB  0

Este vector se denomina de costes reducidos: tienen que ser no negativos en el


punto ptimo.

9/148

Resumen de vectores y condiciones clave en PL:


xB D B 1 b
NTB

N D cN
DB

cB  0

cB

1. A  N , vector de multiplicadores de Lagrange de las condiciones activas de


x  0, se le denomina de costes reducidos.
2. Que se cumpla que todos los costes reducidos sean positivos, o cero, es la
condicin de haber alcanzado el ptimo.
3. A , vector de multiplicadores de Lagrange de las condiciones Ax D b, se
le denomina de multiplicadores smplex.

Interpretacin econmica de los multiplicadores


smplex


Supongamos que
   1 
x
B b
x D B D
0
0
min. c T x
es una solucin ptima no degenerada del programa lineal

s. a Ax D b
x  0:

Al suponer xB > 0, un cambio suficientemente pequeo 4b en b no debe


modificar la base ptima B; la solucin ptima sera
   1

O
x
B
.b
C
4b/
xO  D B D
:
0
0
y el cambio en la funcin objetivo 4z D cBT B 14b D T 4b, donde
 D B T cB es el ptimo del vector de multiplicadores smplex.

10/148

11/148

i indica cmo cambia la funcin objetivo al incrementar una


unidad la cantidad disponible del recurso bi de la condicin
i-sima.
Su valor es un precio o valor marginal del recurso i simo en el ptimo del problema: la cantidad mxima que se
puede estar dispuesto a pagar por incrementar la disponibilidad del dicho recurso.

ndice

12/148

Introduccin

Condiciones de punto ptimo

Mejora de una solucin bsica factible

El algoritmo Smplex


Degeneracin y ciclado

Solucin bsica factible inicial

Anlisis de sensibilidad

El mtodo Smplex para variables acotadas

Implementaciones comerciales del mtodo Smplex

El mtodo Smplex en forma de tableau

Otras variantes y mejoras del Smplex

Complejidad computacional del mtodo Smplex

13/148

Mejorar una solucin bsica factible




Supongamos que:


Partimos de una solucin bsica factible: punto extremo o vrtice del


problema.
La matriz A 2 Rmn .m < n/ es de rango completo y la regin factible no
es el conjunto vaco.
En la solucin bsica factible los m primeros coeficientes del vector x son
los que forman la base: todos positivos.

14/148

Ordenando la matriz A D B N y, de la misma manera, c T D cBT c TN , se


tiene que
BxB C N x N D b:
Despejando xB ,
xB D B 1 b

B 1N x N

El valor de la funcin objetivo para este vector es


 
x
z D cBT ; c TN B D cBT B 1b C .c TN
xN

cBT B 1N /x N :
cost
es r
edu
cido
s

Para que se pueda mejorar la funcin objetivo desde el punto extremo que
define ese vector, debe haber costes reducidos negativos.

En el punto que define ese vector confluyen n m aristas; est en la


interseccin en Rn de los m hiperplanos correspondientes a las condiciones
Ax D b y los n m correspondientes a x N D 0 (no degenerada).

Para mejorar la funcin objetivo, de esas posibles n m aristas habr que


escoger una que consiga hacer decrecer la funcin objetivo desplazndose por
ella hasta otro vrtice.

Esa arista la definir un coste reducido, de los de las variables no en la base,


cNj D cj

cBT B 1aj ;

15/148

j >m

que sea negativo, pues har decrecer la funcin objetivo aumentando el valor de
la variable no bsica correspondiente. Si por ejemplo cNj < 0, la funcin objetivo
decrece al ritmo que marca el incremento desde cero de la variable no bsica xj .


Como a coste reducido ms negativo, decrecimiento ms rpido, se escoge para


la base aquella variable no bsica que tenga el coste reducido ms negativo.

16/148

OJO! Si la solucin es bsica degenerada, pues el valor de alguna variable


bsica es cero, puede ocurrir que en alguna direccin cualquier desplazamiento
 haga que
x. / D x C  y
viole la factibilidad del problema.
Esto que ocurre pues en una solucin bsica degenerada confluyen ms de m
hiperplanos.
53
13

12

42
d 1 es una direccin de movimiento factible; d 2 no.

17/148

Ejemplo Consideremos el programa lineal:


min. x1 C x2
s. a x1 C 2x2  4
x2  1
x1; x2  0:

Aadamos las variables de holgura x3 y x4 para transformarlo en forma estndar:


min. x1 C x2
s. a x1 C 2x2 C x3
D 4
I
x2
C x4 D 1
x1 ; x2 ; x3 ; x4  0:


1210
A D a1 ; a2 ; a3 ; a4 D
:
0101

Consideremos B D a1; a2:


 
 
x1
12
xB D
D B 1b D
01
x2
   
x
0
xN D 3 D
:
x4
0

18/148


   
1 
4
1 2 4
2
D
D
I
1
0 1 1
1

La solucin bsica factible que estamos considerando se puede ver en la figura.


02

79

79

62

3
45

5
61
78

01

Los costes reducidos de las variables no bsicas son



 
1
2
1
cN3 D c3 cBT B 1a3 D 0 1; 1
D 1
0 1 0

 
1 2 0
cN4 D c4 cBT B 1a4 D 0 1; 1
D 1:
0 1 1

19/148

La funcin objetivo decrece siguiendo la direccin (d 2 en la figura) que


determina el coste reducido cN3: la de incrementar la variable no bsica x3.

Las variables bsicas se deben mover de la forma


xB D B 1 b

 B 1 a3 I

es decir, en la direccin opuesta a (o una cantidad negativa en)



   
1
2
1
1
B 1 a3 D
D
0 1 0
0
que es la direccin d 2 de la figura anterior.

20/148

Elegida la variable no bsica, xq , de coste reducido ms negativo, que entrar


en la base, cunto moverse en la direccin de la arista que ha definido ese
coste reducido?

La respuesta es hasta que en ese movimiento una variable bsica llegue a su


lmite cero, y bloquee el posible desplazamiento en la direccin escogida: se
habr llegado a otro vrtice.

Siguiendo las ideas que manejamos ya en optimizacin, la direccin de


movimiento del mtodo es la opuesta a
y D B 1 aq
y en ella se avanza una cantidad  , amplitud de paso.

De las expresiones de x. / y xB . / se deduce que se mantendr la factibilidad


del problema, es decir,
x. /  0;

21/148

si y slo si
xB


 y  0 y   0:

Si las variables bsicas se modifican segn


xB D B 1 b
o, desarrollando,

2
3 2 3
bO1
xB1
6
7 6 7
6xB2 7 6bO2 7
6 :: 7 D 6 :: 7
4 : 5 4 : 5
xBm
bOm

 y;
2 3
y1
6 7
6y 7
 6 ::2 7 ;
4 : 5
ym

donde bO D B 1b, ese valor mximo de movimiento negativo, vendr dado por
nO
o x
B
bi
 D xN q D mKn yi W yi > 0; 1  i  m D ypp :

22/148

El valor de la variable no bsica xq se ver incrementado despus de este paso


desde cero a xN q , pasando a ser bsica en detrimento de la variable xBp que
pasar a ser no bsica y por tanto cero.

Para completar una iteracin del mtodo Smplex resta reemplazar el vector ap
por el aq en la base, es decir, hacer
N D B C .aq
B

ap /epT :

quedando
N D aB ; aB ; : : : ; aB ; aq ; aB ; : : : ; aBm :
B
1
2
p 1
pC1

23/148

El Algoritmo Smplex


El algoritmo Smplex para resolver


min. c T x
s. a Ax D b
x0
parte de una solucin bsica factible xB correspondiente a
B D aj1 ; aj2 ; : : : ; ajm .

B D fj1; : : : ; jmg es el conjunto de ndices de las variables bsicas; xji designa


la variable bsica i -sima; N el de las variables no bsicas.

Paso 1 Asignacin de precios. Comprobacin de ptimo.

24/148

(a) Calcular los multiplicadores smplex resolviendo el sistema B  D cB .


(b) Calcular los costes reducidos de las variables no bsicas, cNj D cj T aj , para todo j 2 N .
(c) Comprobar que se ha llegado al ptimo: si cNj  0 para todo j 2 N , PARAR: la solucin es
ptima.
Paso 2 Determinar columna de pivotacin.
(a) Determinar la variable no bsica xq que debe entrar en la base (encontrar una direccin de
descenso): escoger q 2 N tal que cNq D mKnj 2N fcNj < 0g:
(b) Resolver
By D aq :
Si y  0, PARAR; hay un rayo factible de soluciones a lo largo del cual c T x !

1. Si no, seguir.

Paso 3 Determinar fila de pivotacin. Anlisis de Ratios. Determinar la variable bsica xjp que
sale de la base: calcular


xjp
xji
D
D mKn
W yi > 0 :
1i m yi
yp
Paso 4 Pivotacin. Adaptar la solucin, la matriz B y las estructuras de datos. Hacer:
xq

 D xjp =yp

xji

xji

B C .aq

B [ fqgnfjp g

yi ;

1i m
ajp /epT

N [ fjp gnfqg; e ir al paso 1.

Algoritmo Smplex revisado

function [sol fobj la c_r iters B N Binv] = ProgLineal_3(c,A,b,eps1,bfs)


% Resuelve min. cx sujeto a Ax=b, x >= 0 (problema estndar)
% B_i, vector de columnas de A en la base = B; bfs=base factible
% N_i, vector de columnas de A fuera de la base = N
[m n]=size(A); iters=0; c=c(:); B_i=bfs; N_i=setdiff(1:n,B_i);
[L U]=lu(A(:,B_i));
% LU de la base inicial
disp(It. Sale B Entra B
Cos. red.
fobj

25/148

Inf. dual);

while 1==1
% Itera Smplex
xb =U\(L\b);
% xb=B^-1*b vector solucin actual
la =L\(U\c(B_i));
% Multiplicadores smplex
c_r=zeros(n,1);
c_r(N_i)=c(N_i)-A(:,N_i)*la;
% Costes reducidos: c_r=c_N-c_B*B^-1*N
[cj j]=min(c_r);
% Cos. redu. ms negativo; entra j. Bland implcita
if cj>-eps1
% si todos cj >= 0, ptimo;
sol=zeros(n,1); sol(B_i)=xb;
% dar solucin
fobj=c(B_i)*xb;
N = N_i; B=B_i;
if nargout==8, Binv=U\(L\eye(m)); end
return
% Salir; FIN algoritmo
end
y=U\(L\A(:,j));
% y = B^-1 * a[j]
zz=find(y>eps1);
% Sale de base: mn d(i)/y(i), y(i)>0;
if isempty(zz), error(Problema no acotado.); end
% Direc. de no acotado
[yy ii]=min((xb(zz)./y(zz)));
% Sale i
i=zz(ii);
% Regla de Bland implcita: primera i
k=B_i(i); B_i(i)=j; N_i(j==N_i)=k;
% Adaptacin datos
[L U]=lu(A(:,B_i)); iters=iters+1; Di=norm(c_r(c_r<0));
fprintf(%3d%6d%7d %20.6f %20.6f %20.6f\n,iters,k,j,cj,c(B_i)*xb,Di); % Info. itera
end
end

Ejemplo 1 Resolvamos el problema de programacin lineal:


min. x1

26/148

3x2

s. a 2x1 C 3x2  6
x1 C x2  1
x1; x2  0:


Introduciendo variables de holgura, la base queda:


min. x1

3x2

s. a 2x1 C 3x2 C x3
D6
I
x1 C x2 C
x4 D 1
x1 ; x2 ; x3 ; x4  0:

 
10
B D a3 ; a4 D
01


y N D a1 ; a2 D

La solucin inicial, xB D B 1b, x N D 0, es pues


2 3 2 3
x1
0
 
6
6x2 7 607
1
T
4x 5 D 465 I y la funcin objativo z D cB B b D 0; 0 1 D 0:
3
x4
1


23
:
11

Iteracin 1. Paso 1


Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1   
10
0
0
D
D
:
01
0
0

Los costes reducidos de las variables no bsicas son


 
2
cN1 D c1 T a1 D 1 0; 0
D 1
1
 
3
cN2 D c2 T a2 D 3 0; 0
D 3:
1

27/148

Todava no se ha llegado al ptimo pues los costes reducidos de las variables no


bsicas son negativos.

Iteracin 1. Paso 2

28/148

Elijamos la variable no bsica x2 como aquella que ha de entrar en la base pues


tiene el coste reducido ms negativo.

Resolvamos el sistema By D a2:


 
10
yD
01

1

  
3
3
D
:
1
1

Iteracin 1. Paso 3


La variable bsica a salir de la base se obtendr de calcular






xB1 xB2
6 1
 D mKn
;
D mKn ;
D 1:
y1 y2
3 1

29/148

Es decir, saldr xB2 D x4. Esto se puede deducir tambin analizando la expresin
 
   
 
3
xB1
x
6

;
D 3 D B 1b  y D
xB2
x4
1
1
comprobndose que x4 es la primera variable que llega a cero al incrementar x2.

Iteracin 1. Paso 4


Readaptemos la solucin y las estructuras correspondientes:


x2
x3
x4

 D1
x3 y1 D 6
x4 y2 D 1

13D3
1  1 D 0:

30/148

La solucin queda, por tanto,


2 3 2 3
x1
0
6 7 6 7
6x27 617
6 7D6 7
4x35 435
x4
0
con

 
13
B D a3; a2 D
01


y N D a1; a4 D

20
:
11

La nueva funcin objetivo es


z D cBT B 1b D 0;


 
1 3 6
3
D
0 1 1

3:

31/148

Iteracin 2. Paso 1


Calculemos los nuevos multiplicadores smplex resolviendo B T  D cB :


  1  
   
10
0
10
0
0
D
D
D
:
31
3
31
3
3

Los costes reducidos de las variables no bsicas son


 
2
cN1 D c1 T a1 D 1 0; 3
D
1
 
0
cN4 D c4 T a4 D 0 0; 3
D 3:
1

Como todava existe un coste reducido negativo, no se ha llegado al ptimo.

Iteracin 2. Paso 2


Elegimos la nica variable no bsica capaz de mejorar la funcin objetivo, x1,


como aquella que ha de entrar en la base.

Resolvamos el sistema By D a1:


  1  
   
13
2
1 3
2
5
yD
D
D
:
01
1
0 1
1
1

Iteracin 2. Paso 3


La variable bsica a salir de la base se obtendr de calcular


 
 
xB1
3
3
 D mKn
D mKn
D :
y1
5
5

Es decir, saldr xB1 D x3.

32/148

33/148

Analizando el porqu de esto mediante la expresin


   
 
xB1
x3
3
D
D B 1b  y D
xB2
x2
1





5
;
1

se comprueba que x3 es la primera variable que llega a cero al incrementar x1.

34/148

Iteracin 2. Paso 4


Readaptemos la solucin y las estructuras correspondientes:


x1
x2
x3

 D 53
x2 y2 D 1
x3 y1 D 3

3
5
3
5

 . 1/ D
 5 D 0:

8
5

La solucin queda:
2 3 2 3
x1
3=5
6 7 6 7
6x27 68=57
6 7D6 7
4x35 4 0 5
x4
0
con


B D a1; a2 D

23
11

 
10
y N D a3; a4 D
:
01

35/148

La nueva funcin objetivo es


z D cBT B 1b D 1;


3
"

D 1;

1
5
1
5

1


6
D
1
#
3  
27
6
5
D
:
2
1
5
5

23
11

36/148

Iteracin 3. Paso 1


Calculemos los nuevos multiplicadores smplex resolviendo B T  D cB :



 1   " 1 1#   

2 1
1
1
4=5
5 5
D
D
D
:
3 2
3 1
3
3
3=5
5 5

Los costes reducidos de las variables no bsicas son


cN3 D c3

T a 3 D 0

cN4 D c4

T a4 D 0

 
1
4=5; 3=5
D 54
0
 
0
4=5; 3=5
D 53 :
1

Todos los costes reducidos son positivos por lo que se ha llegado al nico
ptimo del problema.

37/148

La solucin ptima es
2 3 2
3
x1
3=5
6 7 6
7
6x27 68=57
6 7D6
7:
4x35 4 0 5
x4
0

La funcin objetivo
 
6
z D cBT B 1b D T b D 4=5; 3=5
D
1

27
:
5

Las soluciones bsicas factibles que se han ido obteniendo en el proceso se


indican en la figura.
02

38/148

569
8
9

578

3
568
7

01

Con el programa ProgLineal_3 de Matlab que hemos presentado antes sera:


min. x1

3x2

s. a 2x1 C 3x2 C x3
D6
x1 C x2 C
x4 D 1
x1 ; x2 ; x3 ; x4  0:
>> cEje1=[-1 -3 0 0];
>> AEje1=[2 3 1 0;-1 1 0 1];
>> bEje1=[6;1];
>> bfsEje1=[3 4];
>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...
sqrt(eps),bfsEje1)

39/148

Se obtiene:

>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...


sqrt(eps),bfsEje1)
It. Sale B Entra B
Cos. red.
fobj
1
4
2
-3.000000
-3.000000
2
3
1
-4.000000
-6.000000
sol =
0.600000000000000
1.600000000000000
0
0
fobj =
-5.400000000000000
pi =
-0.800000000000000
-0.600000000000000
cr =
0
0
0.800000000000000
0.600000000000000
iters =
2
B =
1
2
N =
3
4

Inf. dual
3.162278
4.000000

Con la rutina linprog de Matlab, la sesin sera la1 siguiente.

40/148

>> cEje1=[-1 -3 0 0];


>> AEje1=[2 3 1 0;-1 1 0 1];
>> bEje1=[6;1];
>> lb=[0 0 0 0];
>> options = optimset(LargeScale, off, Simplex, on, Display, Iter);
>> [x fval exitflag output]=linprog(cEje1,[],[],AEje1,bEje1,lb,[],[],options)
Phase 1: Compute initial basic feasible point.
Iter
Infeasibility
0
1
1
-0
Phase 2: Minimize using simplex.
Iter
Objective
Dual Infeasibility
f*x
A*y+z-w-f
0
-5.4
0
Optimization terminated.
x =
0.6000
1.6000
0
0
fval =
-5.4000
exitflag =
1
output =
iterations: 0
algorithm: medium scale: simplex
cgiterations: []
message: Optimization terminated.

Obsrvese que con Matlab no sera necesario suministrar el problema en forma estndar pues admite dos conjuntos de
condiciones: de igualdad y desigualdad. Si, en cambio, hay que explicitar que las cotas inferiores de las variables son cero.

Ejemplo 2 Solucin no acotada. Hay que resolver:


min. x1
s. a

3x2

x1 2x2  4
x1 C x2  3
x1; x2  0:

Con las variables de holgura, la base inicial queda:


min. x1
s. a

41/148

3x2

x1 2x2 C x3
D4
I
x1 C x2 C
x4 D 3
x1 ; x2 ; x3 ; x4  0:

10
B D a3 ; a4 D
01


y N D a1 ; a2 D

La solucin inicial, xB D B 1b, x N D 0, es


2 3 2 3
x1
0
x
6 2 7 607
4x 5 D 445 ;
3
x4
3

de funcin objetivo z D

cBT B 1 b

 
4
D 0; 0
D 0:
3


1 2
:
1 1

La regin factible de este problema es la que se ilustra en la figura.

02

9

3
6

45 78
79

01

Iteracin 1. Paso 1


Calculemos los multiplicadores smplex resolviendo B T  D cB :


  1   
10
0
0
D
D
:
01
0
0

42/148

Los costes reducidos de las variables no bsicas son


 
1
cN1 D c1 T a1 D 1 0; 0
D
1
 
2
cN2 D c2 T a2 D 3 0; 0
D
1

43/148

3:

Al ser negativos los costes reducidos, esta solucin no es ptima.


Iteracin 1. Paso 2


Elegimos la variable no bsica x2 como aquella que ha de entrar en la base pues


su coste reducido es el ms negativo.

Resolvamos el sistema By D a2:


 
10
yD
01

1

  
2
2
D
:
1
1

44/148

Iteracin 1. Paso 3


La variable bsica a salir de la base se obtendr de calcular


 
 
3
xB2
D mKn
D 3:
 D mKn
y2
1
Es decir saldr xB2 D x4.
Como venimos haciendo, esto tambin de puede comprobar a partir de la
expresin
   
 
 
xB1
x
4
2
D 3 D B 1b  y D

;
3
1
xB2
x4
constatndose que, efectivamente, x4 es la primera variable que llega a cero al
incrementar x2.

45/148

Iteracin 1. Paso 4


Readaptemos la solucin y las estructuras correspondientes:


x2
x3
x4

 D3
x3 y1 D 4
x4 y2 D 3

3  . 2/ D 10
3  1 D 0:

La solucin queda:
2 3 2 3
x1
0
6 7 6 7
6x27 6 37
6 7D6 7
4x35 4105
x4
0
con



1 2
B D a3; a2 D
0 1


y N D a1; a4 D


10
:
11

46/148

Iteracin 2. Paso 1


Calculemos los multiplicadores smplex resolviendo B T  D cB :



 1      
10
0
10
0
0
D
D
D
:
21
3
21
3
3
Los costes reducidos de las variables no bsicas son
 
1
cN1 D c1 T a1 D 1 0; 3
D
1
 
0
cN4 D c4 T a4 D 0 0; 3
D 3:
1

Como existe un coste reducido negativo, todava no se ha alcanzado el ptimo.

47/148

Iteracin 2. Paso 2


Elegimos la nica variable no bsica posible, x1, como aquella que ha de entrar
en la base.

Resolvamos el sistema By D a1:



 1      
1 2
1
12
1
1
yD
D
D
:
0 1
1
01
1
1

Como todos los yi ; i D 1; 2 son negativos, hay un rayo de soluciones factibles a


u
lo largo del cual c T x ! 1. La solucin es pues no acotada.

Ejemplo 3 Soluciones ptimas alternativas. Hay que resolver:


min. 2x1
s. a

x1 C 2x2  4
x1 C x2  1
x1; x2  0:

Introduzcamos las variables de holgura x3 y x4. El problema queda:


min. 2x1
s. a

4x2

4x2

x1 C 2x2 C x3 D 4
x1 C x2 C x4 D 1
x1; x2; x3; x4  0:

Escojamos como base de partida




10
B D a1; a4 D
11

 
21
y N D a2; a3 D
:
10

48/148

49/148

La solucin inicial, xB D B 1b, x N D 0, es pues


  
 1      
x1
10
4
10 4
4
D
D
D
x4
10
1
11 1
5
y
   
x2
0
D
:
x3
0

La funcin objetivo para esta solucin es


 
4
z D cBT B 1b D 2; 0
D
5

8:

50/148

Iteracin 1. Paso 1


Calculemos los multiplicadores smplex resolviendo B T  D cB :



 1      
1 1
2
11
2
2
D
D
D
:
0 1
0
01
0
0

Los costes reducidos de las variables no bsicas son


 
2
cN2 D c2 T a2 D 4 2; 0
D0
1
 
1
cN3 D c3 T a3 D 0 2; 0
D 2:
0

Hemos llegado a un punto ptimo.

51/148

El ptimo, sin embargo, no es nico.

02

34567849

4 8

!"



#!"









01

Si incrementamos x2, manteniendo x3 D 0, las variables x1 y x4 se modifican


de la siguiente manera:
 
x1
D B 1b
x4

 
10 4
B a2 x2 D
11 1
1

  
 
10 2
4
x2 D
11 1
5

 
2
x:
3 2

52/148

Para cualquier x2 < 35 , la solucin


2 3 2
3
x1
4 2x2
6 7 6
7
6x27 6 x2 7
6 7D6
7
4x35 4 0 5
x4
5 3x2
es ptima con funcin objetivo z D

8.

53/148

Degeneracin y ciclado


Aunque hasta ahora se ha supuesto que la solucin bsica x de un programa


lineal no es degenerada, el que lo sea no causa grandes dificultades prcticas
en el proceso de obtencin del ptimo.

Lo peor que puede ocurrir es que. en el Paso 3, la variable que salga de la base,
xjp , tenga un valor cero, lo que dar lugar a una iteracin con desplazamiento
 D 0: x no cambiar.

Aunque x no cambie, si lo har la base.

Como x, y por tanto c T x, no cambian, es tericamente posible que el


algoritmo entre en un ciclo infinito a travs de una sucesin de bases, y sus
correspondientes soluciones, volviendo a esta base.

El problema

54/148

min.
s. a x1
x2
x3

3
x
4 4

C 20x5

C 14 x4
C 21 x4

8x5
12x5

1
x
2 6

C 6x7

El ptimo es x D
objetivo ptima -5/4.

3=4; 0; 0; 1; 0; 1; 0T

y su funcin

C 9x7 D 0
C 3x7 D 0
C x6
D1
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:
x6
1
x
2 6

expuesto por E.M.L. Beale en 1955, muestra cmo el mtodo Smplex puede
quedar atrapado en un ciclo infinito, si se escoge como variable a entrar en la
base aquella que posee el coste reducido ms negativo y para salir de ella una de
las que proporcionan el mnimo  .


Si se comienza a resolver partiendo de la base B D a1; a2; a3, siguiendo el


mtodo Smplex ordinario se obtienen las bases a4; a2; a3, a4; a5; a3,
a6; a5; a3, a6; a7; a3, a1; a7; a3 y otra vez a1; a2; a3.

Si se vuelve a utilizar la misma secuencia de variables a entrar y salir de la base,


el mtodo entra en un ciclo infinito.

55/148

La regla de Bland (1977)

Robert G. Bland, EE.UU. 1948-.

Mediante esta regla la ms habitualmente usada se elige como variable que


ha de entrar en la base, de entre las de coste reducido negativo, aquella con
menor ndice.

Para salir de la base, si el ratio es igual en varias, tambin aquella con menor
ndice.

ndice

56/148

Introduccin

Condiciones de punto ptimo

Mejora de una solucin bsica factible

El algoritmo Smplex


Degeneracin y ciclado

Solucin bsica factible inicial

Anlisis de sensibilidad

El mtodo Smplex para variables acotadas

Implementaciones comerciales del mtodo Smplex

El mtodo Smplex en forma de tableau

Otras variantes y mejoras del Smplex

Complejidad computacional del mtodo Smplex

57/148

Solucin bsica factible inicial




Cmo obtener una eficazmente?

Si las condiciones del problema son de la forma Ax  b; x  0, donde b tiene


todos sus coeficientes no negativos, el problema es trivial: aadiendo las
variables de holgura a las condiciones se tendr que
Ax C x h D b
x; x h  0:


Una solucin bsica factible ser x h D b, x D 0; la matriz bsica


correspondiente, B D I.

58/148

Normalmente no es tan sencillo. Por ejemplo, si se diesen las mismas


condiciones de antes pero el vector b tuviese algn coeficiente negativo, la
solucin obtenida no sera vlida pues violara la condicin de no negatividad.

Si las condiciones son de la forma Ax  b; x  0, aadiendo el vector de


variables de holgura, x h, se tendra que Ax x h D b; x  0; x h  0.


Si el vector b no tuviese todos sus coeficientes negativos o cero, difcilmente


se podra determinar una base B a partir de la matriz A I, de tal forma
que xB D B 1b cumpliese la condicin de no negatividad.

59/148

Ejemplo 1 Consideremos las condiciones siguientes:


x1 C 2x2  4
x1 C x2  1
x1; x2  0:

Aadiendo las variables de holgura x3 y x4 las condiciones se transforman en


x1 C 2x2 C x3 D 4
x1 C x2 C x4 D 1
x1; x2; x3; x4  0:
Una solucin inicial bsica factible sera



 
 
 


10
x3
1
0
4
41 D
B D a3 ; a4 D
W xB D
D B 1b D
01
x4
01
1
   
x
0
xN D 1 D
:
x2
0

60/148

Ejemplo 2 Sean ahora las siguientes condiciones:


x1 C x2 C x3  6
2x1 C 3x2 C 3x3  3
x2; x3  0:

Cuando como aqui x1 una variable no est restringida a tomar valores no


negativos, podemos sustituirla por xi0 xi00, xi0  0, xi00  0. Si lo hacemos e
introducimos las variables de holgura x4 y x5, las condiciones quedan:
x100 C x2 C x3 C x4
D6
x10
2x10 C 2x100 C 3x2 C 3x3
x5 D 3
x10 ; x100; x2; x3; x4; x5  0:
No es inmediato determinar una base B que nos permita obtener una solucin
inicial bsica factible.

61/148

Ejemplo 3 Consideremos ahora las siguientes condiciones:


x1 C x2 2x3  3
2x1 C x2 C 3x3  7
x1; x2; x3  0:

Si para hacer todos los coeficientes del vector b no negativos multiplicamos la


primera condicin por 1 e introducimos las variables de holgura x4 y x5, las
condiciones resultarn:
x1 x2 C 2x3 x4
D3
2x1 C x2 C 3x3
C x5 D 7
x1; x2; x3; x4; x5  0:
Tampoco de aqu se puede determinar de una manera sencilla una base inicial
del problema.

62/148

Variables artificiales


La forma ms inmediata de determinar una solucin bsica factible de partida


consiste en introducir temporalmente, adems de las variables de holgura, un
nuevo conjunto similar de variables artificiales.
Si el problema es
min. c T x
s. a Ax D b
x  0;
donde, sin prdida de generalidad, se supone que b  0, se le aade un vector
de variables artificiales, x a , resultando
Ax C x a D b;
con x  0 y x a  0.

Si se quiere conseguir una solucin factible del problema original habr que
forzar a que los coeficientes del vector x a sean cero. Es decir, resolver tambin
con el mtodo Smplex el problema

63/148

min.

m
X

x ai

iD1

s. a Ax C x a D b
x; x a  0:

Si el problema original admite una solucin factible, en la solucin del


transformado se tendr que x a D 0.

Si tal solucin factible no existe, el problema transformado acabar con


algn coeficiente de x a positivo.

El mtodo Smplex completo, por consiguiente, consta de las dos fases que se
indican en la tabla.

64/148

Fase I Partiendo de la solucin inicial x D 0, x a D b, resolver


min.

m
X

xai

i D1

s. a Ax C x a D b
x; x a  0:
Si x a 0, parar: el problema no tiene solucin bsica factible.
Si x a D 0, ir a la fase II tomando como B inicial la de la ltima iteracin de
esta fase.
Fase II Partiendo de xB D B 1 b y x N D 0, resolver
min. cBT xB C c TN x N
s. a BxB C N x N D b
xB ; x N  0:
Algoritmo Smplex revisado en dos Fases

65/148

Al final de la Fase I, si la solucin tiene alguna variable artificial en la base y


xai D 0 (degenerada), dicha variable se puede intercambiar por una no bsica
de las originales xj , o suprimirse sin ms que eliminar la condicin redundante
correspondiente. Concretamente:


Si la variable bsica xak D 0 y se cumple que e Tk B 1aj 0, la variable xak


se puede reemplazar por la xj .
Si para todo aj 2 N , e Tk B 1aj D 0, el sistema Ax D b tiene una
condicin redundante y se puede eliminar la fila k-sima de la matriz A
original (as como la fila y columna k-simas de B).

Circunstancias de este tipo se evitan con un mecanismo de preproceso para


aligerar el problema de redundancias, incoherencias, etc.

66/148

Ejemplo Hay que resolver el siguiente problema:


min. x1
s. a

2x2

x1 C x2  2
x1 C x2  1
x2  3
x1; x2  0:

Para empezar, introduzcamos como siempre las variables de holgura:


min. x1
s. a

2x2

x1 C x2 x3
D2
x1 C x2
x4
D1
x2
C x5 D 3
x1; x2; x3; x4; x5  0:

67/148

Como la base de partida no es de fcil obtencin, introducimos las variables


artificiales y planteamos el siguiente problema dentro de la fase I:
x6 C x7

min.
s. a

x1 C x2
x1 C x2
x2

D2
x4
C x7 D 1
C x5
D3
x1; x2; x3; x4; x5; x6; x7  0:
x3

C x6

Obsrvese que en la tercera condicin no es necesario introducir variable


artificial alguna.


Del problema as planteado se puede obtener inmediatamente la base de partida;


sta es
2

3
2
010
11
4
5
4
0
0
1
11
B D a5 ; a6 ; a7 D
y N D a1 ; a2 ; a3 ; a4 D
100
01

1
0
0

3
0
15 :
0

68/148

La solucin inicial, xB D B 1b, x N D 0, es:


x  0 1 0 1 2 0 0 1 2 3
5
x6 D 0 0 1
1 D 100
1 D 2 :
x7

100

010

Por tanto,
2 3

2 3

x1
0
6x27 607
6x37 607
6 7 6 7
6x47 D 607 :
6 7 6 7
6x57 637
4x 5 425
6
x7
1

Fase I. Iteracin 1. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


3
2
001
 D 41 0 05
010

69/148

12

32 3 2 3
3 2
1
010
0
0
4 15 D 40 0 15 4 15 D 41 5 :
0
100
1
1

Los costes reducidos de las variables no bsicas son


3
1
0 4 15 D 0;
0
2 3
1
0 415 D 2;
1
2 3
1
0 4 05 D 1
0
2 3
0
0 4 15 D 1:
0
2

cN1 D c1

T a1 D 0

1; 1;

cN2 D c2

T a 2 D 0

1; 1;

cN3 D c3

T a 3 D 0

1; 1;

cN4 D c4

T a 4 D 0

1; 1;

70/148

No se ha llegado todava al ptimo pues existe un coste reducido negativo.

Fase I. Iteracin 1. Paso 2




Elegimos la nica variable no bsica posible, x2, como aquella que ha de entrar
en la base.

Resolvemos el sistema By D a2:


2
3 12 3 2
32 3 2 3
010
1
001
1
1
y D 40 0 15 415 D 41 0 05 415 D 415 :
100
1
010
1
1

71/148

Fase I. Iteracin 1. Paso 3




La variable bsica a salir de la base se obtendr de calcular






xB1 xB2 xB3
3 2 1
 D mKn
;
;
D mKn ; ;
D 1I
y1 y2 y3
1 1 1
es decir, saldr xB3 D x7.
O, como solemos utilizar, de evaluar la expresin xB D B 1b

 y.

Es decir,
2 3 2 3 2 3
xB1
x5
3
4xB2 5 D 4x65 D 425
xB3
x7
1

2 3
1
 415 ;
1

comprobndose que x7 es la primera variable que llega a cero al incrementar x2.

72/148

Fase I. Iteracin 1. Paso 4




Readaptemos la solucin y las estructuras de datos:


x2
x5
x6
x7

 D1
x5 y1 D 3
x6 y2 D 2
x7 y3 D 1

11D2
11D1
1  1 D 0:

La solucin queda por tanto,


2 3

2 3

x1
0
6x27 617
6x37 607
6 7 6 7
6x47 D 607
6 7 6 7
6x57 627
4x 5 415
6
x7
0

73/148

siendo

2
3
011
B D a5; a6; a2 D 40 0 15
101

y
2

3
10 1 0
N D a1; a7; a3; a4 D 4 1 1 0 15 :
00 0 0

Fase I. Iteracin 2. Paso 1




Calculemos de nuevo los multiplicadores


2
3 12 3 2
001
0
 D 41 0 05 4 15 D 4
111
0

smplex resolviendo B T  D cB :
32 3 2 3
0 10
0
1
1 1 1 5 4 15 D 4 1 5 :
1 00
0
0

Los costes reducidos de las variables no bsicas son

74/148

cN1 D c1

T a 1 D 0

1;

1;

cN7 D c7

T a 7 D 1

1;

1;

cN3 D c3

T a 3 D 0

1;

1;

cN4 D c4

T a 4 D 0

1;

1;

3
1
0 4 15 D 2;
0
2 3
0
4
0 15 D 2;
0
2 3
1
4
05 D 1
0
y
0
2 3
0
0 4 15 D 1:
0

No se ha llegado todava al ptimo; hay dos costes reducidos negativos.


Fase I. Iteracin 2. Paso 2


Elegimos la variable no bsica x1 para entrar en la base pues su coste reducido


es el ms negativo.

Resolvemos el sistema By D a1:


3 12 3 2
32 3 2 3
2
1
0 11
1
1
011
y D 40 0 15 4 15 D 41 1 05 4 15 D 4 25 :
101
0
0 10
0
1

75/148

Fase I. Iteracin 2. Paso 3




La variable bsica a salir de la base se obtendr de calcular


nx x o

B
B
 D mKn y11 ; y22 D mKn 21 ; 21 D 12 I
es decir, saldr xB2 D x6. Esto se deduce tambin de
2 3 2 3
2 3
xB1
x5
2
4xB2 5 D 4x65 D B 1b  y D 415
xB3
x2
1

3
1
 4 25 ;
1

constatndose que x6 es la primera variable que llega a cero al incrementar x1.

76/148

Fase I. Iteracin 2. Paso 4




Readaptemos la solucin y las estructuras de datos correspondientes:


x1
x5
x6
x2

D  D 21
D x5 y1 D 2
D x6 y2 D 1
D x2 y3 D 1

1
2
1
2
1
2

 1 D 32
2D0
 . 1/ D 32 :

La solucin queda por tanto

77/148

2 3
x1
6x27
6x37
6x47
6x 7
4 55
x6
x7

siendo

0
B D a5 ; a1 ; a2 D 40
1

2
D

1=2
63=27
607
607
63=27
4 5
0
0

3
2
11
10
1 15 y N D a6 ; a7 ; a3 ; a4 D 40 1
01
00

1
0
0

3
0
15 :
0

Fase I. Iteracin 3. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


2
3 1 2 3 2 1 1 13 2 3 2 3
0
0
0 01
0
2
2 2
7
6
 D 41 1 05 4 05 D 4 12 21 12 5 4 05 D 40 5 :
0
0
1 11
0
1 00

Los costes reducidos de las variables no bsicas son


cN6 D c6

T a 6 D 1

0; 0;

cN7 D c7

T a 7 D 1

0; 0;

cN3 D c3

T a 3 D 0

0; 0;

cN4 D c4

T a 4 D 0

0; 0;

2 3
1
4
0 05 D 1;
0
2 3
0
0 415 D 1;
0
2 3
1
0 4 05 D 0;
0
2 3
0
4
15 D 0:
0
0

78/148

Todos los costes reducidos son no negativos: ptimo de la fase I.

La base de partida de la fase II es


2

0
4
B D a5 ; a1 ; a2 D 0
1

1
1
0

3
2
1
1
5
4
1 y N D a3 ; a4 D
0
1
0

3
0
15 :
0

79/148

Fase II. Iteracin 1. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


2

0
4
D 1
1


3
01
1 05
11

12

3 2 1
0
2
4 15 D 4 1
2
2
1

1
2
1
2

13 2
2
15 4
2

00

3 2
3
1=2
0
15 D 4 3=25 :
2
0

Los costes reducidos de las variables no bsicas son


2

cN3 D c3

T a 3 D 0

1=2;

cN4 D c4

T a 4 D 0

1=2;

3
1
3=2; 0 4 05 D
0
2 3
0
4
15 D
3=2; 0
0

1
;
2

3
:
2

Como cN3 y cN4 son negativos, no se ha llegado an al ptimo.

Fase II. Iteracin 1. Paso 2

80/148

Elegimos la variable no bsica x4 como la que entra en la base.

Resolvamos el sistema By D a4:


2

0
y D 40
1

3
11
1 15
01

12

3 2
0
4 15 D 4
0

1
2
1
2
1
2

1
2
1
2
1
2

32 3 2
3
1
0
1=2
05 4 15 D 4 1=25 :
0
1=2
0

Fase II. Iteracin 1. Paso 3




La variable bsica a salir de la base se obtendr de calcular


(
)


3 1
xB1 xB2
;
D mKn 21 ; 21 D 1:
 D mKn
y1 y2
2 2

81/148

Es decir, saldr xB2 D x1. Si se analiza la expresin


2 3
xB1
4xB2 5 D B 1 b
xB3

2 3 2
3
3=2
x5
y D 4x1 5 D 41=25
x2
3=2

3
1=2
 4 1=25 ;
1=2

tambin se comprueba que, efectivamente, la primera variable que llega a cero


al incrementar x4 es x1, con  D 1.
Fase II. Iteracin 1. Paso 4


Readaptemos la solucin y las estructuras de datos:


x4
x5
x1
x2

 D1
x5 y1 D 32 1  12 D 1
x1 y2 D 12 1  12 D 0
x2 y3 D 32 C 1  21 D 2:

82/148

La nueva solucin es, por tanto,


2 3

2 3

0
x1
6x27 627
6 7 6 7
6x37 D 607
4x45 415
1
x5

con

0
B D a5 ; a4 ; a2 D 40
1

3
2
01
1
1 15 y N D a3 ; a1 D 4 0
01
0

3
1
15 :
0

Fase II. Iteracin 2. Paso 1




Calculemos los multiplicadores smplex resolviendo B T  D cB :


2

0
4
D 0
1

3
01
1 05
11

12

3 2
0
1
4 05 D 4 0
2
1

32 3 2 3
11
0
2
1 05 4 05 D 4 0 5 :
00
2
0

Los costes reducidos de las variables no bsicas son


2

cN3 D c3

T a 3 D 0

cN1 D c1

T a 1 D 1

3
1
2; 0; 0 4 05 D 2;
2 03
1
2; 0; 0 4 15 D 3:
0

83/148

Todava no se ha llegado al ptimo.


Fase II. Iteracin 2. Paso 2


Elegimos la variable no bsica x3 como la que entra en la base.

Resolvemos el sistema By D a3:


2
0
4
yD 0
1

0
1
0

3
1
15
1

12

3 2
1
1
4 05 D 4 1
0
1

0
1
0

32 3 2 3
1
1
1
5
4
5
4
0
0 D
15 :
0
0
1

84/148

Fase II. Iteracin 2. Paso 3




La variable bsica a salir de la base se obtendr de calcular


 
 
xB1
1
 D mKn
D mKn
D 1I
y1
1
es decir, saldr xB1 D x5. Vindolo a partir de la expresin
2 3 2 3
2 3
2 3
xB1
x5
1
1
4xB2 5 D 4x45 D b 1b  y D 415  4 15 ;
xB3
x2
2
1
se comprueba tambin que la primera variable que llega a cero al incrementar x3
es x5.

85/148

Fase II. Iteracin 2. Paso 4




Readaptemos la solucin y las estructuras de datos:


x3
x5
x4
x2
La nueva solucin es

 D1
x5 y1 D 1 1  1 D 0
x4 y2 D 1 C 1  1 D 2
x2 y3 D 2 C 1  1 D 3:
2 3

2 3

0
x1
6x27 637
6 7 6 7
6x37 D 617 :
4x45 425
0
x5

Las nuevas matrices:

86/148

3
2
3
1 01
0 1
B D a3; a4; a2 D 4 0 1 15 I N D a5; a1 D 40 15 :
0 01
1 0
Fase II. Iteracin 3. Paso 1


Calculemos los multiplicadores; resolvamos B T  D cB :


2

1
4
0
D
1

0
1
1

3
0
05
1

12

3 2
0
1
4 05 D 4 0
2
1

0
1
1

32 3 2 3
0
0
0
5
4
5
4
0
0 D
05:
1
2
2

Los costes reducidos de las variables no bsicas son


cN5 D c5

T a 5 D 0

0; 0;

cN1 D c1

T a 1 D 1

0; 0;

2 3
0
4
2 05 D 2;
1
2 3
1
2 4 15 D 1:
0

87/148

Todos los costes reducidos de las variables no bsicas son positivos por lo que se
ha alcanzado el nico ptimo del problema.

La solucin final es

2 3

2 3

0
x1
6x27 637
6 7 6 7
6x37 D 617 :
4x45 425
x5
0


El valor ptimo de la funcin objetivo es cBT B 1b D

6.

88/148

El proceso iterativo que se ha seguido se representa en la figura

5 28
7
x

568
7

5 8 59
68
9 7
6

x1

89/148

Mtodo de penalizacin o de la M grande




Consiste en combinar en un proceso nico las fases I y II del mtodo Smplex y


resolver
n
m
X
X
min.
ci xi C M
xaj
i D1

j D1

s. a Ax C x a D b
x; x a  0:
La constante M se elige suficientemente grande de tal forma que est muy
penalizado que en el ptimo x a 0.


Eventualmente, si existe solucin factible del problema original, las variables


artificiales tendern a cero en el proceso de obtencin del ptimo de este
problema.

90/148

Esta alternativa tiene dos pegas:




La necesidad de escoger un determinado valor fijo de M que asegure que las


variables artificiales no van a estar en la base de la solucin ptima.


Un valor excesivamente grande de M, con respecto a los coeficientes del


vector c y de la matriz A, puede hacer que los errores de redondeo de los
clculos y la inestabilidad numrica del proceso lleguen a ser importantes.

Que el nmero de variables del problema se incrementa notablemente.

Resolvamos con esta tcnica un ejemplo anterior:


min. x1
s. a

1000x6 C 1000x7

2x2

x1 C x2
x1 C x2
x2

91/148

x3

D2
x4
C
x7 D 1
C x5
D3
x1 ; x2 ; x3 ; x4 ; x5 ; x6 ; x7  0:
x6

Con el programa ProgLineal_3 de Matlab que usamos sera:


sol =

>> cM=[1 -2 0 0 0 1000 1000];


>> AM=[1 1 -1 0 0 1 0;-1 1 0 -1 0 0 1;0 1 0 0 1 0 0];
>> bM=[2;1;3];
>> bfsM=[5 6 7];
>> [sol fobj pi cr iters B N]=ProgLineal_3(cM,AM,bM,sqrt(eps),bfsM)
It. Sale B Entra B
Cos. red.
fobj
1
7
2
-2002.000000
1998.000000
2
6
1
-2001.000000
-1.000000
3
1
4
-1.500000
-3.000000
4
5
3
-2.000000
-4.000000

0
3
1
2
0
0
0
fobj =
-6
pi =
0
0
-2
cr =
1000
iters =
4
B =
3
N =
6

1000

Anlisis de sensibilidad

92/148

La solucin ptima que obtiene el mtodo Smplex de un problema de PL es


como una fotografa fija de una situacin real que habitualmente evoluciona en
el tiempo, incluso a corto o muy corto plazo.

Con un pequeo esfuerzo, una vez obtenida la solucin con el Smplex, se puede
conocer hasta qu punto ese ptimo seguir sindolo y qu pueden representar,
en costes o beneficios, determinadas variaciones de los parmetros del problema.

Esto es frecuente estudiarlo cuando los costes de produccin de un artculo


deben variar en el tiempo al fluctuar el precio de una materia prima o, en
general, cuando los datos del problema son estimaciones ms o menos
imprecisas de una realidad en la que oscilan entre determinados mrgenes.
Estudiemos cmo afecta a la solucin de un problema de PL el que varen los
coeficientes de la funcin objetivo c o el vector b.

93/148

Cambios en el vector de costes




Consideremos la familia de programas, funcin de un vector de parmetros ,


definida por
min. c C T x
s. a Ax D b
x  0:

La base B de la solucin ptima del problema original (sin los parmetros)


seguir sindolo mientras los costes reducidos de las variables no bsicas sigan
siendo no negativos; es decir, mientras que
c N C  N T

cB C  B T B 1N  0T :

94/148

Consideraremos los dos casos ms generales: 1. Que la variable cuyo coeficiente


de coste vara no est en la base; 2. Que est en la base.
1. La variable cuyo coeficiente de coste vara no est en la base. Para que los
costes reducidos sigan siendo ptimos, es decir,
c N C  N T

cBT B 1N  0T ;

se tiene que cumplir que


c TN

cBT B 1N C  TN D cN TN C  TN  0T :

Esto obliga a que el coeficiente del vector coste slo pueda variar hacia
abajo (decrecer), en una cantidad i igual al coste reducido de la variable i
que vara. Es decir
i  cNi :
Hacia arriba podra variar hasta el infinito.

95/148

2. La variable cuyo coeficiente de coste vara est en la base. La condicin de


optimalidad para los costes reducidos es ahora
c TN

cB C  B T B 1N D cN TN

 BT B 1N  0T :

El intervalo de valores  i ;  i de la posible variacin en el coste de una


variable en la base ser


 i D mKax mKax f cNk =dk ; dk > 0g ; 1   
1kn m


mKn mKn

1kn m

expresin en la que d D
de la inversa de B por N .


f cNk =dk ; dk < 0g ; 1 D  i

1
B .i;W/
N

T

,es el vector fila i -simo del producto

96/148

Cambios en el vector b


Consideremos el problema:
min. c T x
s. a Ax D b C
x  0:
Al cambiar b, la solucin ptima variara as
h

T
T T
N B 1 T
x D xB x N D bC

0T

iT

donde bN D B 1b y B es la base ptima.




Esa base seguir siendo ptima en tanto y cuando sus coeficientes sigan siendo
no negativos.

97/148

Para cada modificacin i del coeficiente i del vector b, si


2 3
0
6 ::: 7
6 7
16 7
columna i -simo
d D B 617
i D B 1e i ; vector
de
la
inversa
de la base
6 :: 7
4:5
0
el intervalo i ; i en el cual la solucin sigue siendo ptima es




i D mKax mKax
bNk =dk ; dk > 0 ; 1  
1km


mKn

mKn

1km



bNk =dk ; dk < 0 ; 1 D i

98/148

Ejemplo Supongamos que hemos resuelto el problema


min. 40x C 53y
s. a

60x C 80y  360


160x C 120y  680
x; y  0:

La solucin completa es
2 3
2




637
60
80
120
80
1
1
7
xB D 6
;
405 ; B D 160 120 ; B D 5600
160 60
0






1 0
368
368
1
1
N D
;  D 560
y cN D 560
:
0 1
2
2

La funcin objetivo es 239.

99/148

1. Queremos saber para que rango de costes de la variable x la solucin


sigue siendo ptima.


Como la variable x est en la base, cualquier cambio en ella,


cx
cx C , afecta al vector  y al vector de costes reducidos de las
variables no bsicas, cN .

El vector d de las expresiones anteriores es


1
1
d D B .1;W/
N D 5600
120 80


1
D 5600
120 80 :

1 0
0 1

Los costes reducidos variarn de la siguiente manera.


cN



1 
1 
368 2 C 
120 80 :
560
5600

100/148

Para que la solucin ptima anterior lo siga siendo, debe cumplirse que
8
< 3680

120   0

: 20 C 80   0:


Esto se cumple en el intervalo  ;  D 1=4; 92=3. El coeficiente de


x puede moverse pues en el rango 39;75 70;67 para que la solucin
siga siendo ptima.

101/148

2. Tambin buscamos cunto puede variar el coeficiente 360 del trmino


independiente sin que cambie la base ptima, es decir b1
b1 C .


El vector d es en este caso


 


1
1
120
d DB 1
D
;
0
160
5600
por lo que
xB



 
1
120
2
:
C
160
3
5600

La base ptima original seguir siendo ptima mientras xB sea positiva;


es decir, mientras
8
120
<2
0
5600
:3 C

160
5600

 0:

102/148

Esto se cumple en el intervalo ; D 105 280=3, por lo que el


coeficiente 360 puede variar entre 360 105 y 360 C 280=3 sin que
cambie la solucin ptima del problema original.

El valor del multiplicador smplex 1 indica cmo vara la funcin


objetivo cuando coeficiente 360 se mueve en ese rango de valores:
z

zC

33
368
D 239 C :
560
35

103/148

El mtodo Smplex para variables acotadas




Nos ocupamos ahora del problema

min. c T x
s. a Ax D b
l xu
Las variables con estas condiciones se denominan acotadas, encajadas o box
constrained.


Si la variable xj tiene lj D

1 y uj D 1, se dice libre.

104/148

Una forma de resolver este problema consistira en introducir unos vectores de


holgura, x 1 y x 2, que transformen el problema en otro de la forma
min.

cT x

Ax D b
x C x1 D u
x x2 D l
x; x 1; x 2  0

s. a

y posteriormente resolverlo por el mtodo habitual.




Actuando as, el nmero de variables se triplica y el nmero de condiciones pasa


a ser m C 2n.

105/148

Considrese a continuacin el sistema de inecuaciones


Ax D b
l  x  u;
donde la matriz A mn es, sin prdida de generalidad, de rango m.
Definicin Una solucin bsica factible de ese sistema es aquella en la que n

m
variables no bsicas tienen el valor de uno de sus lmites, l u, y las restantes m variables
bsicas corresponden a vectores columnas linealmente independientes de A.

106/148

Descompongamos la matriz A en B Nl Nu, con rango.B/ D m, y el vector x


en xBT x TNl x TNu :

Un vector x se dice solucin bsica factible del sistema de inecuaciones


Ax D b
l  x  u;
si xB es solucin del sistema
BxB D b;
y
x Nl D l Nl
x N u D uN u :

Si adems l B < xB < uB , entonces x es una solucin bsica factible no


degenerada; si algn coeficiente de xBj es igual a lj o uj , la solucin se dice
bsica factible degenerada.

107/148

Supongamos que partimos de una solucin bsica factible. La mecnica del


mtodo Smplex para variables acotadas es la siguiente:


En un punto se examinan las variables no bsicas (variables en uno de sus


lmites) mediante sus costes reducidos.

Si la solucin puede ser mejorada en un problema de minimizacin, ello


quiere decir que alguna variable no bsica que est en su lmite inferior
tendr un coste reducido negativo, o que otra que est en su lmite superior
tendr un coste reducido positivo.

108/148

Expresemos las condiciones de la forma


BxB C Nl x Nl C Nux Nu D b:
El vector xB es entonces:
xB D B 1 b

B 1 N l x Nl

B 1Nux Nu :

La funcin objetivo:
z D c T x D cBT xB C c TNl x Nl C c TNu x Nu
1

B Nl x Nl B Nux Nu C c TNl x Nl C c TNu x Nu





1
T
T
1
T
D cB B b C cNl cB B Nl x Nl C cNT u cBT B 1Nu x Nu :

cBT

B b

cost.

reduc

idos

cost.

reduc
idos

109/148

El coste reducido de las variables no bsicas en su lmite inferior es


c TNl

cBT B 1Nl I

c TNu

cBT B 1Nu:

en su lmite superior,
La funcin objetivo se puede mejorar (decrementar) si

T
1
cj cB B aj < 0 para alguna xj D lj

T
1
cj cB B aj > 0 para alguna xj D uj :

110/148

Si se elige una variable no bsica, xq por ejemplo, como aquella que ha de


mejorar la funcin objetivo, y su valor se modifica desde la cota en el que est
en la direccin hacia la otra cota, la funcin objetivo mejorar (decrecer)
mientras se puedan modificar las variables bsicas de tal manera que persista la
factibilidad del problema (se sigan satisfaciendo las condiciones); es decir, hasta
que:
a) una variable bsica llegue a uno de sus lmites; o
b) la variable no bsica que se modifica llegue al lmite opuesto del que parte
antes de que ocurra lo anterior.

Si se da el caso a), la variable bsica correspondiente se har no bsica, pasando


a ocupar su sitio en la base la no bsica que se modifica.

Si se da el b), la base no se modifica.


Si ocurren a) y b) a la vez: solucin bsica factible degenerada.

111/148

Si Nl es el conjunto de los ndices de las variables no bsicas en su lmite inferior


y Nu el de las no bsicas en su lmite superior, y se modifica xq , se tendr que
x B D B 1 b B 1 N l x Nl
D bO  y;
donde bO D B 1b

B 1 N l x Nl

B 1Nux Nu

 B 1 aq

B 1Nux Nu y y D B 1aq .

Caben dos opciones:




Que el ndice q 2 Nu; o

que q 2 Nl .

112/148

Si q 2 Nl , el incremento posible,  , de xq desde su lmite inferior lq , ha de ser


positivo para seguir manteniendo la factibilidad; el mximo ser
8



bOi lBi

1 D mKn1i m yi W yi > 0I 1 W yi  0

<



O
bi uBi
 D mKn

D
mK

n
W yi < 0I 1 W yi  0

2
1i
m
yi

:
uq l q :

113/148

Si q 2 Nu, el incremento desde uq ha de ser negativo. El mximo:


8



O
bi lBi


D
mK

n
W yi < 0I 1 W yi  0

1
1i
m

yi

<



Obi uB
 D mKn
i
2 D mKn1i m
W yi > 0I 1 W yi  0

y
i

:l
uq :
q

114/148

El ltimo paso es modificar las estructuras de datos correspondientes, a fin de


reflejar los cambios habidos en la base.

Todos los cdigos comerciales del mtodo Smplex lo hacen para variables
acotadas:


En un ordenador, una variable en forma estndar, xj  0, en realidad se


trata como si 0  xj  1020, por ejemplo, ya que en una mquina que
trabaje con precisin finita la cantidad 1020 es suficientemente grande.

En la tabla que sigue se expone el algoritmo Smplex revisado para variables


acotadas.

Paso 1 Asignacin de precios. Comprobacin de ptimo.


(a) Calcular los multiplicadores smplex resolviendo el sistema B T  D cB .
(b) Calcular los costes reducidos de las variables no bsicas, cNj D cj T aj , para todo j B.
(c) Comprobar que se ha llegado al ptimo: si cNj  0 para todo j 2 Nl y cNj  0 para todo j 2 Nu , PARAR; la
solucin es ptima.
Paso 2 Obtener columna de pivotacin.
(a) Determinar la variable no bsica xq que debe entrar en la base (encontrar una direccin de descenso): escoger
q B tal que


cNq D mKax j mKn fcNj < 0gj; mKax fcNj > 0g :
j 2Nl

j 2Nu

(b) Resolver By D aq . Si q 2 Nl , ir al paso 3; si q 2 Nu , al 3.


Paso 3 Obtener fila de pivotacin. Determinar qu variable bsica xjp sale de la base: calcular  W






xji lji
xji uji
 D mKn mKn
W yi > 0 ; mKn
W yi < 0 ; uq lq :
1i m
1i m
yi
yi
Si   T ol:: PARAR; el problema es no acotado. Si no, ir al paso 4.
Paso 3 Obtener fila de pivotacin. Determinar qu variable bsica xjp sale de la base: calcular  W






xji uji
xji lji
W yi > 0 ; mKn
W yi < 0 ; lq uq :
 D mKn mKn
1im
1i m
yi
yi
Si   T ol:: PARAR; el problema es no acotado.
Paso 4 Pivotacin. Adaptar la solucin y la matriz B e ir al paso 1:
xq
lq C  uq C  ;
xji
xji yi ; 1  i  m ;
B
B C .aq ajp /epT ;
(slo
B
B [ fqgnfjp g ;
(slo
Nl
Nl [ fjp gnfqg ;
(slo
Nu
Nu [ fjp gnfqg ;
(slo
jp
q;
(slo

si
si
si
si
si







6D uq
6D uq
6D uq
6D uq
6D uq

lq )
lq )
lq y q 2 Nl )
lq y q 2 Nu )
lq ).

115/148

function [fobj niters x] = Rsimplex_1(file,A,b,c,lb,ub);


% Resuelve min cx st Ax=b, lb<=x<=ub con Simplex revisado en dos FASES
if nargin>2
if nargin<4, error(Si no se lee de fichero, se requieren al menos,...
cuatro argumentos en entrada); end
if nargin<6, ub = Inf*ones(size(c)); end
if nargin<5, lb = zeros(size(c)); end
A = sparse(A);
else
% Lectura de los datos desde fichero file en MPS
eval([!copy file d:\Matlab2010b\work\tmp\in.mps]);
LIPSO = d:\Matlab2010b\work; exit=mps2mat(LIPSO); fprintf(\n);
load d:\Matlab2010b\work\tmp\default;
lb=lbounds; ub=ubounds;
end
[m n] = size(A); zer_tol = 1.0e-5; piv_tol = 1.0e-8; niters=0; t=cputime;
f=fopen(Salida_Rsimplex,w);
fprintf(f, It. Fase
Sinf/Fobj
Nopt\n);
fprintf(f,----------------------------------\n);
% FASE I
v
= zeros(n,1);
lbdd = find(lb>-Inf);
v(lbdd) = lb(lbdd); free = setdiff(1:n,lbdd);
ubdd = free(ub(free)<Inf); v(ubdd) = ub(ubdd);
if isempty(ubdd), N = -lbdd;
% Var no en la base: en cota inf. No hay en u
else N = [-lbdd ubdd]; free = setdiff(free,ubdd);
end;
f = length(free);
if f>0
% OJO! Hay variables libres
[L U P Q] = lu(A(:,free));
% Q es matriz de permutacin
free = free*Q;
i = length(find(abs(diag(U))>piv_tol)); j = free(i+1:f);
if ~isempty(j)
N = [N j]; free = setdiff(free,j); f = length(free);
lb(j) = zeros(size(j)); ub(j) = zeros(size(j));
end;
[k i] = find(P(1:f,:));
% relies on diag(U) having zeros at end
v(free) = U(1:f,1:f)\(L(1:f,1:f)\(P(1:f,:)*(b - A*v)));
k = setdiff(1:m,k); m = m-f; B = [free n+1:n+m];
A = [A sparse(k,1:m,sign(b(k)-A(k,:)*v+eps),m+f,m)];
else
% No hay variables libres
B = n+1:n+m; j = []; A = [A sparse(1:m,1:m,sign(b-A*v+eps*ones(size(b))))];
end
lb = [lb; zeros(m,1)]; ub = [ub; Inf*ones(m,1)];
w = [zeros(n,1); ones(m,1)];
% Variables + artificiales para FASE I
[x niters B N L U] = rsmbdd(A,b,w,lb,ub,B,N,1,niters);
% FASE I
if w*x>zer_tol, error(El problema no es factible); end
% Adaptar para FASE II
ub(n+1:n+m) = zeros(m,1); c = [c; zeros(m,1)];
if ~isempty(j)
c_r = c(j)-c(B)*(U\(L\A(:,j)));
if norm(c_r,inf)>zer_tol, error(Problema no acotado); end
end
[x niters] = rsmbdd(A,b,c,lb,ub,B,N,2,niters);
% FASE II
x = x(1:n); fobj=c(1:n)*x;
fclose(all);
fprintf([m n]=[%g %g]. Tiempo CPU:%10.4f; fun. obj.=%17.4e\n,m,n,cputime-t,fobj);

function [x niters B N L U] = rsmbdd(A,b,c,lb,ub,B,N,fase,niters)


% Rutina de Smplex revisado para min cx s.a Ax=b, lb<=x<=ub.
% B vector 1xm con los ndices de las variables (columnas) en la base.
% N vector 1x(l-m) con los ndices de las variables no bsicas,
%
es decir, en sus lmites (+/-1).

116/148

[m l]
= size(A); f=fopen(Salida_Rsimplex,a);
zer_tol = 1.0e-5; piv_tol = 1.0e-8;
[L U] = lu(A(:,B));
if any(abs(diag(U))<piv_tol), error(La base inicial no es invertible); end
x = lb; upper = N(N>0); x(upper) = ub(upper);
x(B) = U\(L\(b-A(:,abs(N))*x(abs(N))));
while 1
if any(x(B)<lb(B)-zer_tol | x(B)>ub(B)+zer_tol), error(Punto no factible); end
u = L\(U\c(B));
c_r = c(abs(N))-u*A(:,abs(N));
% Costes reducidos no bsicas
if ~any(c_r.*N>zer_tol), return, end
% SE HA LLEGADO A UNA SOLUCIN
Nopt=sum(c_r.*N>zer_tol);
[min_red_cost s] = max(c_r.*sign(N)); % Entra var. s no bsica con>coste reducido
blk = abs(N(s));
min_ratio = ub(blk) - lb(blk); order = -sign(N(s)); % Puede s ir de u a l o l a u
d = order*U\(L\A(:,blk));
block_lb = find(d>=piv_tol & lb(B)>-1e32); % Comprobar bsica que llega a lb
if ~isempty(block_lb)
[min_lb index_r] = min((x(B(block_lb))-lb(B(block_lb)))./d(block_lb));
if min_lb<min_ratio
r=block_lb(index_r);
min_ratio = min_lb;
blk = B(r);
end
end
block_ub = find(d<=-piv_tol & ub(B)<1e32); % Comprobar bsica que llega a ub
if ~isempty(block_ub)
[min_ub,index_r] = min((x(B(block_ub))-ub(B(block_ub)))./d(block_ub));
if min_ub<min_ratio
r=block_ub(index_r);
min_ratio = min_ub;
blk = B(r);
end
end
if min_ratio>1e32, error(Problema no acotado); end
% Readaptar solucin y datos
x(B) = x(B)-min_ratio*d;
x(abs(N(s))) = x(abs(N(s))) + order*min_ratio;
if blk == abs(N(s)), N(s) = -N(s);
% Se bloquea la no bsica
else swap = B(r); B(r) = abs(N(s)); N(s) = -sign(d(r))*swap;
[L U] = lu(A(:,B));
end
niters=niters+1;
fprintf(f,%5d%4d%18.9e%6d\n,niters,fase,c*x,Nopt);
end

117/148

Ejemplo Resolvamos

min. 2x1
s. a

4x2

x3

2x1 C x2 C x3  10
x1 C x2 x3  4
0  x1  4
0  x2  6
1  x3  4:

Se introducen las variables de holgura:


min. 2x1
s. a

4x2

x3

2x1 C x2 C x3 C x4
D 10
x1 C x2 x3
C x5 D 4
0  x1  4
0  x2  6
1  x3  4
x4; x5  0:

Como es inmediato obtener una solucin factible y una base de partida,


entramos directamente en la fase II del mtodo Smplex.

Partiremos de:

B D a4; a5 D

118/148

10
; Nl D a1; a2; a3 ; Nu D ;
01

y de la solucin inicial x D 0; 0; 1; 9; 5T . La funcin objetivo en este punto es


1.
Iteracin 1. Paso 1


Calculemos los multiplicadores smplex:


    
10 0
0
 D B T cB D
D
:
01 0
0

119/148

Los costes reducidos de las variables no bsicas son:


 
2
cN1 D c1 T a1 D 2 0; 0
D 2;
1
 
1
cN2 D c2 T a2 D 4 0; 0
D 4
y
1
 
1
cN3 D c3 T a3 D 1 0; 0
D 1:
1
Todava no se ha llegado al ptimo del problema pues las variables x1, x2 y x3
estn en sus lmites inferiores y sus costes reducidos son negativos.

Iteracin 1. Paso 2


Se elige la variable x2 para entrar en la base por ser la no bsica de coste


reducido ms negativo.

120/148

Se resuelve By D a2:
   
1
10 1
D
:
y D B 1 a2 D
01 1
1


Iteracin 1. Paso 3


La variable a salir de la base de determinar de calcular el incremento  :



 
)
(
 D mKn

1 D mKn
u2

xB1

l2 D 6

y1
0

lB1 xB2
;

lB2

y2

0 5
;

D 5:

Saldr, por tanto, la variable de nmero de ndice 2 en la base, x5, pues es la


que antes llega a su lmite inferior.

121/148

Iteracin 1. Paso 4


Readaptemos la solucin y las estructuras de datos:


x2
x4
x5

l2 C  D 0 C 5 D 5
x4 y1 D 9 5  1 D 4
x5 y2 D 5 5  1 D 0:

La nueva solucin es x D 0; 5; 1; 4; 0T , con


 
11
B D a4; a2 D
; Nl D a1; a3; a5 y Nu D ;:
01
La nueva funcin objetivo es

21.

Iteracin 2. Paso 1

122/148

Calculemos los multiplicadores smplex:


   
  1  
0
10
0
0
10
D
D
:
 D B T cB D
11
4
11
4
4

Los costes reducidos de las variables no bsicas son:


 
2
cN1 D c1 T a1 D 2 0; 4
D 2;
1
 
1
cN3 D c3 T a3 D 1 0; 4
D 5
1
 
0
cN5 D c5 T a5 D 0 0; 4
D 4:
1

Como la variable x3 est en su lmite inferior y su coste reducido es negativo,


todava no se ha llegado al ptimo.

Iteracin 2. Paso 2


Se elige la variable x3 para entrar en la base. Se resuelve By D a3:



   
1 1
1
2
y D B 1 a3 D
D
:
0 1
1
1

Iteracin 2. Paso 3


La variable a salir de la base de determinar de calcular  :


8
nx l o 9
B
B

1 D mKn 1y1 1 D 4 2 0 >


>

>

>

<
nx u o =
D 1:
 D mKn 2 D mKn B2 B2 D 5 6
y
1
>

2
>

>

>

;
:
u3 l3 D 4 1
Saldr, por tanto, la variable de nmero de ndice 2 en la base, x2, pues es la
que antes llega a uno de sus lmites: el superior.

123/148

124/148

Iteracin 2. Paso 4


Readaptemos la solucin y las estructuras de datos:


x3
x4
x2

l3 C  D 1 C 1 D 2
x4 y1 D 4 1  2 D 2
x2 y2 D 5 C 1  1 D 6:

La nueva solucin es x D 0; 6; 2; 2; 0T , con




1 1
B D a4; a3 D
; Nl D a1; a5 y Nu D a2:
0 1
La nueva funcin objetivo es

26.

125/148

Iteracin 3. Paso 1


Calculemos los multiplicadores smplex:



 1  
   
1 0
0
1 0
0
0
 D B T cB D
D
D
:
1 1
1
1
1 1
1
Los costes reducidos de las variables no bsicas son:
 
2
cN1 D c1 T a1 D 2 0; 1
D 3;
1
 
1
cN2 D c2 T a2 D 4 0; 1
D 5
1
 
0
cN5 D c5 T a5 D 0 0; 1
D 1:
1

Como las variables x1 y x5, que estn en sus lmites inferiores, tienen costes
reducidos negativos, todava no se ha llegado al ptimo del problema.

Iteracin 3. Paso 2


Se elige la variable x1 para entrar en la base. Se resuelve By D a1:



 1  
   
1
1
2
1
1
2
3
y D B 1 a1 D
D
D
:
0 1
1
0 1 1
1

Iteracin 3. Paso 3


La variable a salir de la base de determinar de calcular  :


8
nx l o 9
B1 B1


D
mK

n
D 230 >
>

1
y
>

>
<
nx u o = 2
D :
 D mKn 2 D mKn B2 B2 D 2 4
y
1
>

3
2

>
>

>

;
:
u1 l 1 D 4 0
Saldr x4 pues es la que antes llega a uno de sus lmites: el inferior.

126/148

127/148

Iteracin 3. Paso 4


Readaptemos la solucin y las estructuras de datos:


x1
x4
x3

La nueva solucin es:

l1 C  D 0 C 2=3 D 2=3
x4 y1 D 2 .2=3/  3 D 0
x3 y2 D 2 C .2=3/  1 D 8=3:

2 3

x1
2=3
6x27 6 6 7
6 7 6 7
6x37 D 68=37 :
4x45 4 0 5
x5
0

128/148

Tambin,


2 1
B D a1; a3 D
; Nl D a4; a5 y Nu D a2:
1 1
La nueva funcin objetivo es

28.

Iteracin 4. Paso 1


Calculemos los nuevos multiplicadores smplex:



 1  
   
2
1
2
1=3
1=3
2
1
 D B T cB D
D
D
:
1 1
1
1=3 2=3
1
0

129/148

Los costes reducidos de las variables no bsicas son:


 
1
cN2 D c2 T a2 D 4 1; 0
D 3;
1
 
1
cN4 D c4 T a4 D 0 1; 0
D1
y
0
 
0
D 0:
cN5 D c5 T a5 D 0 1; 0
1

Los costes reducidos de las variables no bsicas en sus lmites inferiores, x4 y x5,
son 1 y 0, y el de la variable en su lmite superior, x2, es -3.

Se ha llegado, por tanto, a un ptimo del problema, aunque no es el nico.

130/148

En efecto, si se incrementa x5, manteniendo x2 D 6 y x4 D 0 fijos, las variables


x1 y x3 se modificarn de la forma:
 

 

x1
2=3
1=3
D B 1 b B 1 a 5 x5 D
x:
x3
8=3
2=3 5

Para cualquier x5 < 2, la solucin


2 3

2=3 1=3x5
x1
7
6x27 6
6
7
6 7 6
6x37 D 68=3 C 2=3x57
5
4x45 4
0
x5
0

es ptima. El valor de la funcin objetivo ptimo es

28.

131/148

Con el programa Rsimplex_1 presentado antes, se consigue esto:


>>
>>
>>
>>
>>

A=[2 1 1;1 1 -1];


b=[10;4];
c=[-2 -4 -1];
l=[0 0 1];
u=[4 6 4];

>> [fobj niters x]=Rsimplex_1([],A,b,c,l,u)


[m n]=[2 3]. Tiempo CPU:
0.0312; fun. obj.=
fobj =
-28
niters =
4
x =
0.666666666666667
6.000000000000000
2.666666666666667

-2.8000e+001

132/148

Para otro ejemplo mucho ms grande:


>> [fobj niters]=Rsimplex_1(etam-mi.mps)
1 archivo(s) copiado(s).
NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat doneStatus=0
[m n]=[400 816]. Tiempo CPU:
3.0888; fun. obj.=
-7.5572e+002
fobj =
-7.557152331775660e+002
niters =
2009

133/148

Implementaciones comerciales del Smplex


Forma de tableau


Esta es una de las primeras formas en que se explicit computacionalmente el


mtodo Smplex, con vistas a su mejor comprensin.
z

xB

xB

xN
c TN

cBT B 1N

TD
cBT B 1b

Se basa tableaux as:


B 1N

B 1b

134/148

Si TD designa Trmino de la Derecha y T es una matriz cuyos coeficientes son


los del tableau, en realidad ste representa el sistema
2 3
z
6 7
6x 7
T 6 B 7 D 0;
4x N 5
1
de m C 1 ecuaciones lineales y n C 1 variables: las n de x y z.

El mtodo Smplex en forma de tableau se diferencia del expuesto hasta este


apartado en que el clculo de  y cN N del Paso 1, y el de y del Paso 2 se
eliminan y el Paso 4 de pivotacin se lleva a cabo directamente en el tableau.

135/148

Si suponemos que las variables bsicas que entran y salen de la base en una
determinada iteracin son la q y la p, y que las filas y las columnas del tableau
de esa iteracin estn numeradas partiendo de cero, la operacin de pivotacin
conlleva:
i) dividir la fila p de T por tpq , el coeficiente que ocupa la fila p y la columna
q de la matriz T , y
ii) para 0  i  m, i p, restar de la fila i la p multiplicada por tiq a fin de
hacer cero el elemento q de esa fila.

Los costes reducidos, cN N , y el vector de variables bsicas, B 1b, se obtienen


directamente del tableau.

136/148

Ejemplo Resolvamos:
min. x1 C x2
s. a

4x3

x1 C x2 C 2x3  9
x1 C x2
x3  2
x1 C x2 C x3  4
x1; x2; x3  0:

Introducimos las variables de holgura para transformar el problema a la forma


estndar:
min. x1 C x2 4x3
s. a

x1 C x2 C 2x3 C x4
D9
x1 C x2
x3
C x5
D2
x1 C x2 C x3
C x6 D 4
x1; x2; x3; x4; x5; x6  0:

137/148

Iteracin 1
z

x1

x2

x3

x4

x5

x6

TD

x4

x5

x6

La variable que entra en la base es la no bsica cuyo coste reducido es ms


negativo: x3.

El indica que de entre las relaciones posibles, 9/2 y 4/1, (la otra afecta a un
nmero negativo) se elige esta ltima, por lo que saldr de la base aquella
variable que pivota en la tercera fila: x6.

138/148

Iteracin 2
z

x1

x2

x3

x4

x5

x6

TD

16

x4

x5

x3

139/148

Iteracin 3
z

x1

x2

x3

x4

x5

x6

TD

17

x1

1
3

1
3

2
3

1
3

x5

x3

2
3

1
3

1
3

13
3

Se ha llegado a un punto en el que todos los costes reducidos de las variables no


bsicas son positivos por lo que se ha conseguido el ptimo del problema.

140/148

La solucin final es por tanto


x1; x2; x3; x4; x5; x6T D 1=3; 0; 13=3; 0; 6; 0T :
El valor de la funcin objetivo es z D

17.

La base ptima la constituyen los vectores columna


2
10
B D a1; a5; a3 D 4 1 1
10

a1, a5 y a3. Es decir,


3
2
15 :
1

La inversa de B es la submatriz que en el tableau final ocupa el lugar que en el


inicial ocupaba la submatriz identidad; es decir,
2
3
1=3 0 2=3
B 1 D 4 0 1 1 5:
1=3 0 1=3

141/148

Otras variantes y mejoras del Smplex


Implementacin de la inversa de la base en forma de productos
matriciales


En problemas grandes, resolver los sistemas B T  D cB y By D aq es costoso.


La modificacin de B 1 en una iteracin es
N
B
donde

E DI

.y

ep /epT
yp

6
6
6
6
D6
6
6
6
4

D E B 1;

3
y1 =yp
::
:::
7
:
7
7
1 yp 1 =yp
7
7 y y D B 1 aq :
1=yp
7
7
ypC1 =yp 1
7
::
::: 5
:
ym =yp
1
"
columna p

142/148

Si el Smplex se inicia con una matriz B igual a la identidad, despus de k


iteraciones la matriz B 1 se puede expresar en una forma producto, de la
siguiente manera
B k 1 D E k E k 1    E 1B 1:
Para implementar este esquema operativo se requiere almacenar los valores de
los coeficientes de la columna de la matriz E i que la hace diferente de la matriz
identidad, y el propio valor del ndice i .

Para evitar errores de redondeo, conforme avanza el proceso es aconsejable


refactorizar peridicamente la matriz B 1.

La variante del Smplex que incluye esta forma de actuar es la que sigue.

Paso 1 Operacin BTRAN (backward transformation). Calcular los multiplicadores smplex a partir de



T
T
T D c B
B 1 D cB
Ek Ek 1    E1 :
Determinar los costes reducidos de las variables no bsicas a partir de
cNj D cj

T aj ;

para todo j 2 N:

Si cNj  0 para todo j B, PARAR; la solucin es ptima.


Paso 2 Operacin FTRAN (forward transformation). Escoger q 2 N tal que cNq D mKnj 2N fcNj < 0g. Calcular
yDB

aq D .E k .E k

   .E 1 aq ///:

Si y  0, PARAR; el problema es no acotado.


Paso 3 Operacin CHUZR. Si xj D B 1 b, establecer la variable bsica xjp que sale de la base determinando la fila p
sobre la que pivota la columna q a partir de la relacin


xjp
xji
D mKn
W yi > 0 :
1i m yi
yp
Paso 4 Operacin WRETA. Adaptar la matriz inversa de la base y la solucin a partir de
2
3
1
y1 =yp
::
6 ::
7
6
7
:
:
6
7
6
7
1 yp 1 =yp
6
7
1=yp
E kC1 D 6
7:
6
7
ypC1 =yp 1
6
7
6
::
:: 7
4
: 5
:
ym =yp
1
La nueva inversa de la base ser B

E kC1 E k    E 2 E 1 y la nueva solucin xj

E kC1 xj .

143/148

144/148

Implementacin de la base y su inversa mediante factorizacin LU




La idea es factorizar la matriz bsica en la forma LU e ir aplicndole a ella una


sucesin de matrices elementales que difieren de la identidad en un solo
elemento debajo de la diagonal principal y matrices de permutacin.

Si, por ejemplo,


2

3
321
U D 4 3 55 ;
4

las matrices U 1, U 2 y U 3 sern


2

3
12
U1 D 4 1 5;U2 D 4 3 5
1
1
3

Es fcil comprobar que U D U 3U 2U 1.

3
1
y U 3 D 4 1 55 :
4
1

145/148

Despus de k iteraciones se tendr que


B k D B 0E 1 1E 2 1    E k 1I
es decir, que
Lm P m    L1 P 1 B k D U m U m

1    U 1E 1

E 2 1    E k 1:

Para almacenar las matrices E i , Lj y U j en la memoria del ordenador slo es


necesario guardar el valor de los subndices y los elementos distintos de cero de
las columnas que designan esos subndices.

De las matrices de permutacin P i slo es necesario guardar un puntero que


indique con qu fila se intercambia la i .

146/148

Complejidad computacional del Smplex




Cada iteracin requiere alrededor de m.n m/ C .m C 1/2 multiplicaciones y


m.n C 1/ sumas o restas: O.mn/ en los dos casos pues n  m..

El nmero de puntos extremos de un programa lineal en forma estndar con n


variables y m condiciones es C.n; m/. Si n  2m, se tiene que
 n m
n

 2m :
C.n; m/ D
m.n m/
m
De acuerdo con esto, en el peor de los casos, parece lgico temerse un nmero
de iteraciones exponencial.

Un problema clsico es el estudiado por Klee y Minty [1972]:


maximizar xn
s. a
0  x1  1
xi 1  xi  1
xi  0;

147/148

i D 2; : : : ; n; 0 < < 1=2;


i D 1; 2; : : : ; n:

xi 1;

Tiene 2n puntos extremos. Para n D 2 y n D 3 es el de la figura.




Comenzando en x D 0 (factible), con precisin absoluta, el mtodo recorrera


los 2n puntos extremos.
x2

x(3) =

 

x2

0
1

x(2) =

x(1) =
x(0)

1
1

x(6)
x(5)

x(4)

x3

 

x1

x(7)

x(3)

x(2)
x(1)

x(0)

x1

La prctica de los ltimos cincuenta aos ha permitido constatar que los casos
extremos, como el ejemplo de Klee y Minty, rara vez ocurren en la realidad.

Grosso modo, en problemas de tamao moderado, el mtodo Smplex requiere


un nmero de iteraciones real comprendido entre 4m y 6m.

En problemas muy grandes, el nmero de iteraciones que cabe esperar llevar a


cabo para resolverlos es  m, donde e < log2.2 C n=m/.

En resumen, la complejidad computacional prctica esperada del mtodo


Smplex es del O.m2n/.

148/148

 Teniendo tambin en cuenta el efecto que el tratamiento de la dispersidad de los problemas puede acarrear en la
complejidad del mtodo, diversos estudios han establecido que la complejidad del mtodo la define la ecuacin
Km nd 0;33 , donde K es una constante, 1;25 < < 2;5 y d es el nmero de elementos distintos de cero en la matriz
A, dividido por nm.

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Dualidad en Programacin Lineal

Mtodos de puntos interiores

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_dualidad_interior_2016.pdf

1/60

2/60

ndice


Dualidad

Dualidad y condiciones de ptimo

El algoritmo dual del Smplex

Mtodos de punto interior




Formulacin del procedimiento general

Dualidad


3/60

Asociado a cada problema de PL hay otro denominado dual. As, el primal1

min. c T x
s. a Ax D b
x  0;
tiene el dual asociado (dual de Wolfe)

Philip Starr Wolfe, EE.UU. 1927-.

max. L.x; ; /
s. a rx L.x; ; / D 0
  0:


La dualidad de Wolfe se refiere esencialmente a problemas convexos. Si no lo


son hay que estudiar una formulacin ms general.
1

Con x 2 Rn , A 2 Rmn ; m > n.

4/60

Si el problema primal est formulado en forma estndar, la funcin de Lagrange


es
L.x; ; / D c T x T .Ax b/  T x;
donde L.x; ; / W Rn  Rm  Rn ! R. El gradiente de esta funcin con
respecto a x es
c A T  :

El problema dual es entonces, incorporando en la f.o. que el gradiente es cero,


max. bT 
s. a c

AT 

 D0
  0:

El par primaldual de un problema de Programacin Lineal en forma estndar


es pues
(P) min. c T x
(D) max. bT 
s. a Ax D b
s. a A T  C  D c
x0
  0:

Recordemos una vez ms:


Condiciones de Karush-Kuhn-Tucker x 2 Rn es el ptimo del problema
primal
min. c T x
s. a

Ax D b
x  0;

si y slo si existen vectores  y , ptimos del problema dual, tales que


Ax D b; x  0;
A T  C  D c;   0;
i xi D 0; i D 1; : : : ; n;

(factibilidad del primal)


(factibilidad del dual)
(holguras complementarias o gap de dualidad)

5/60

Ejemplo El problema

6/60

min. x1 C x2 C 5x3
s. a x1

min. x1 C x2 C 5x3

C x3  1
x2 C x3  2

H)

s. a x1

estndar

x1; x2; x3  0:

C x3
x2 C x3

T .Ax

b/

 T x:

El gradiente de esta funcin con respecto a x es

AT 

D1
x5 D 2

x1; x2; x3; x4; x5  0:

Su funcin de Lagrange es
cT x

x4

2 3
1
617
6 7
7
D6
657
405
0

2
6
6
6
6
4

1
0
1
1
0

3
0
 
17
7 1
17
7 
05 2
1

2 3
1
62 7
6 7
63 7 :
6 7
44 5
5

7/60

El problema dual es entonces


max.
s. a

1 C 22

1

1

2
2

1
1

2
3
4

C 2

D
D
D
D
5 D

1
1
5
0
0

1 ; 2 ; 3 ; 4 ; 5  0:

Expresado en forma ms compacta:


max.
s. a

1 C 22

1
1
1


2 
2 

2 

1
1
5
0
0

max. 1 C 22

H)

reorganizando

1
2  1
1 C 2  5

s. a 1

1 ; 2  0:

8/60

Lo que ha dado lugar a la forma simtrica de la dualidad:


(P) min. c T x
s. a Ax  b
x0

(D) max. bT 
s. a A T   c
  0:

Recordemos el par Primal-Dual.


(P) min. c T x
s. a Ax D b
x0

(D) max. bT 
s. a A T  C  D c
  0:

Interpretacin geomtrica


9/60

Recordando las consideraciones geomtricas de la PL, estudiemos


min. 18x1 C 12x2 C 2x3 C 6x4

s. a

3x1 C x2
x1 C 3x2

2x3 C x4 D 2
x44.3D 2Relations to the Simplex Pr
x1 ; x2 ; x3 ; x4  0:
a2

En el subespacio Im.A/, es

a1

a3

a4

El dual es

basis of the primal. In fact, the vector defining the dual objective is a positive linear
combination of the vectors. In the specific example, b is a positive combination
10/60
of a1 and a2 . The weights in this combination are the xi s in the solution of the
max. 21 C 22
primal.

s. a

31 C 2  2
1 C 32  12
21
2
1
2  6:

a2

Cada vector columna ai


del primal define una
condicin del dual.

a1
a3

a4
El ptimo es un punto extremo del
dual, en el cual hay dos condiciones
activas, que corresponden a una base
ptima del primal.
b es una combinacin lineal positiva
de a1 y a2 .

Fig. 4.3 The dual in activity space

11/60

Ejemplo de primal y dual asociado




Una empresario quiere vender b1; b2; : : : ; bm cantidades de m productos.

Para ello se pone en contacto con un fabricante que se los puede elaborar
realizando para ello n actividades distintas en sus fbricas. El coste (precio)
unitario de cada actividad j se lo fija el fabricante al empresario en cj .

Si aij representa la cantidad del producto i producido por una unidad de la


Pn
actividad j , j D1 aij xj representa las unidades que se producen de i con
todas las actividades.


Estas unidades deben ser mayores o iguales que la cantidad requerida, bi , de


ese producto i .

12/60

El problema que desea resolver el empresario es el siguiente:


min.

s. a

n
X

cj xj

j D1
n
X
j D1

aij xj  bi ;
xj  0

i D 1; 2; : : : ; m;

j D 1; 2; : : : ; n:

Supngase ahora que el empresario acuerda pagar al fabricante precios por


unidad, y1; y2; : : : ; ym, de cada uno de los m productos ya ensamblados.

Si aij sigue siendo el nmero de unidades de i producidas por una unidad de la


P
actividad j , la suma m
i D1 aij yi es el ingreso del fabricante por cada unidad de
actividad j con los precios y1; y2; : : : ; ym. Ese ingreso no debe exceder al coste
real cj .

13/60

El fabricante deber fijar los niveles de produccin bi de cada producto i que


Pm
maximicen su ganancia i D1 yi bi .
En resumen, el problema que se plantea el fabricante es el siguiente:
max.
s. a

m
X

yi bi

i D1
m
X

aij yi  cj ;
iD1
yi  0;

dual del del empresario: min.

s. a

n
X

j D 1; 2; : : : ; n;
i D 1; 2; : : : ; m;

cj xj

j D1
n
X
j D1

aij xj  bi ; i D 1; 2; : : : ; m;
xj  0

j D 1; 2; : : : ; n:

14/60

El Programa primal trata en este caso sobre valores econmicos.


Garantizadas unas ventas mnimas de productos a unos precios, qu
esquema concreto de produccin minimiza el coste total, o maximiza el valor
econmico de la produccin.
El Programa dual de cantidades fsicas. Con un esquema de costes
unitario dado, qu cantidades de productos producir a unos precios
conocidos para maximizar el beneficio de su venta.

La teora de dualidad es un elemento ms para ayudar a analizar la sensibilidad


de los problemas de PL, pues ayuda a responder, por ejemplo, a: 1. De qu
forma habr que modificar nuestra cadena de produccin los prximos seis
meses si el beneficio de nuestro producto estrella cae un 20 %? 2. O, dada
nuestra disponibilidad de recursos, qu beneficio o cuntas unidades
deberamos vender de un nuevo producto para hacerlo rentable?

Dualidad y condiciones de ptimo


Lema Dualidad dbil Si x es una solucin factible del problema primal e y una tambin
factible del dual, bT y  c T x.

La diferencia entre el valor de la funcin objetivo del primal y la del dual es la


brecha o gap de dualidad.

El valor de la funcin objetivo de una solucin factible del primal (dual)


proporciona un cota superior (inferior) del valor de la funcin objetivo de
cualquier solucin factible del dual (primal).
Corolario Si x es una solucin factible del primal, y una tambin factible del dual y
c T x D bT y, entonces x e y son los ptimos del primal y dual.

15/60

16/60

Teorema Teorema de la dualidad de la programacin lineal


(a) Si el problema primal o el dual tiene una solucin ptima finita la tiene el otro y
mKn c T x D mKax bT y.
(b) Si el problema primal o el dual tiene una funcin objetivo no acotada el otro no tiene
solucin factible.

Teorema Condiciones de Karush-Kuhn-Tucker x 2 Rn es el ptimo del problema


primal

min. c T x
s. a Ax D b
x  0;
si y slo si existen vectores  y , ptimos del problema dual, tales que
Ax D b; x  0;
A T  C  D c;   0;
i xi D 0; i D 1; : : : ; n;

(factibilidad del problema primal)


(factibilidad del problema dual)
(complementariedad o gap de dualidad)

17/60

El algoritmo dual del Smplex




Diseado en 1954 por Carlton Eduard Lemke y Evelyn Martin Lansdowne Beale
Carlton Eduard Lemke, EE.UU. 1920-2004 y Evelyn
Martin Lansdowne Beale, Reino Unido, 1928-1985.

para cuando se tiene una solucin bsica no factible de un programa lineal y, sin
embargo, los costes reducidos de las variables no bsicas son todos ptimos,
( 0): los multiplicadores smplex son factibles en el programa dual.

18/60

Esos casos eran habituales en problemas de reoptimizacin al aadir, por


ejemplo, una nueva condicin de desigualdad y no se cumple.


La base ptima del problema original y la nueva variable de holgura que se


introduzca constituirn la nueva base de partida del problema.

Esta nueva base es ptima pero no factible pues la nueva variable de holgura
es igual al negativo de lo que no se satisface la nueva restriccin.

El mtodo u algoritmo dual del Smplex, como el primal, progresa, de iteracin


en iteracin, de una base a otra del problema, manteniendo la factibilidad del
programa dual, aplicando las condiciones de ptimo de Karush-Kuhn-Tucker
hasta que se llegue a una base factible en el primal y dual simultneamente.

Se comienza desde un punto en el que se satisfacen las condiciones de ptimo


en el dual costes reducidos no negativos, pero no las del primal pues alguna
variable en la base es negativa.

19/60

Si hay una variable en la base no factible, xBp D B b p < 0, 1  p  m, p


ser la fila de pivotacin y el ndice de aquella variable en la base que debe
salir de ella.

De acuerdo con xB D B 1b
xBp

B 1N x N se tendr que

D B 1b p pj  xj ; 8j 2 N ;

donde pj es el coeficiente de la fila p del vector columna B 1Nj , con j 2 N .





Como B 1b p < 0, si hay algn pj < 0, j 2 N , es decir, en el vector fila
p-simo de B 1N , la variable no bsica j podra incrementar su valor (xj en
la expresin anterior) desde cero, remplazando as en la base a xBp que pasara a
ser cero.


1
B bp
El nuevo valor de la variable no bsica xj sera p
> 0.
j

20/60

No todas las variables no bsicas que cumplan que pj < 0, j 2 N son


candidatas a entrar en la base remplazando a la bsica no factible.

Han de cumplir las condiciones de factibilidad del dual (ptimas del primal) en
trminos de costes reducidos. Si xj es la que entra, los nuevos costes reducidos,
cNi , en funcin de los antiguos, cOi , saldrn de esta frmula:
cNl D cOl

cOj

pl
; l D 1; : : : ; n .cNl D 0 si l D j /:
pj

Como todos los costes reducidos han de ser no negativos, la relacin jcOj =pj j
que sea menor, con pj < 0, determina el coste reducido que antes alcanza cero
y, por lo tanto, la variable xq que entra en la base.

El algoritmo dual del Smplex completo es este.


Paso 1 Calcular el vector de multiplicadores smplex resolviendo el sistema
B T  D cB . Determinar los costes reducidos de las variables no bsicas: cNj D cj T aj , para todo
j 2 N.
Paso 1 Comprobar la factibilidad del programa primal: Si xB  0, PARAR; la solucin es ptima. Si no,
continuar.
Paso 2 Determinar la variable bsica xjp que debe salir de la base: Escoger jp 2 fji 2 B W xji < 0g:
Paso 3 Comprobar la no factibilidad del problema: Calcular u resolviendo el sistema B T u D ep y hacer
j D uT aj , para todo j 2 N . Si j  0 para todo j 2 N , PARAR; el problema no tiene solucin.
Paso 4 Determinar la variable no bsica xq que ha de entrar en la base: Calcular (para que sus costes
reducidos sigan siendo de ptimo en todasmenos en la q que pasar
 a 0)
cNj
cNq
D mKn
W j < 0; j 2 N D :
q
j
Paso 5 Recalcular costes reducidos: Hacer cNj
cNj j , j 2 N , j 6D q y cNp
.
Paso 6 Adaptar la solucin y la matriz B: Calcular w resolviendo Bw D aq y hacer
xq
xji
B
B
N
jp
Ir al paso 1.

 D xjp =q
xji  wi ; 1  i  m; i 6D p
B C .aq ajp /epT
B [ fqgnfjp g
N [ fjp gnfqg
q:

Algoritmo dual del Smplex

21/60

22/60

Codificado para Matlab


function [x fobj pi sN iter B N Binv] = dual_simplex(c,A,b,eps1,B0)
%
Resuelve Max cx subject to Ax = b, x >= 0 mediante Simplex Dual. B0 base de partida.
[m,n]=size(A); c=c(:); b=b(:);
% Paso 0: Inicializar B, N, x_B y s_N
B = B0; N = setdiff(1:n,B);
xB=A(:,B)\b; x=zeros(n,1); x(B)=xB;
y = A(:,B)\c(B); sN = c(N)-A(:,N)*y;

-1
-T
% x =B b, lambda=B c
% B
T
B
% c =c -N lambda
% N N
Ninf Cr-inf);

iter = 0; disp(It. Sale B Entra B


Pinf
while 1 == 1
% Proceso iterativo
% Pasos 1 y 2: Comprobar optimalidad; si no, ha de dejar la base x_{B(i)}
[xBmin i] = min(xB);
% Valor ms negativo xb
if xBmin >= -eps1
% No hay no factibles, final
fobj=c*x; Binv=inv(A(:,B)); pi=Binv*c(B); return, end
% Paso 3 y 4: Ver no facti. y la variable no bsica que entra, x_{N(j)}
e = zeros(m,1); e(i) = 1;
% Negativos en vector T -T
v = A(:,B)\e;
%
w = N B e
w = A(:,N)*v;
%
i
zz = find(w<-eps1);
if isempty(zz), error(Problema no factible), end
[t ii] = min(-sN(zz)./w(zz));
% Coste reducido relacin con w menor
j = zz(ii);
% Entra no bsica j
% Paso 5: Recalcular costes reducidos: la j la rel. menor; dems=ant.+t*w
sN = sN + t*w; sN(j) = t;
% Paso 6: Adaptar solucin, xB, y datos
-1
-1
-1
d = A(:,B)\A(:,N(j));
% x =B b-B N (B b/w(j))
temp = B(i); B(i) = N(j); N(j) = temp; % B
j
theta=xB(i)/w(j); xB=xB-theta*d; xB(i)=theta; x=zeros(n,1); x(B)=xB;
iter = iter + 1;
fprintf(%3d%6d%7d %14.6f %3d %6d\n,iter,temp,B(i),...
sum(x(x<0)),sum(x<0),sum(sN<0));
end

Ejemplo Consideremos el siguiente problema:


x2 C 12x3

min.

5x1

s. a

3x1 C 2x2 C x3
D 10
5x1 C 3x2
C x4 D 16
x1 ; x2 ; x3 ; x4  0:

y resolvmoslo mediante ProgLineal_3():


>> c=[-5 -1 12 0];
A=[3 2 1 0;5 3 0 1];
b=[10;16];
B=[3 4];
>> [sol fobj pi cr it B N]=ProgLineal_3(c,A,b,eps,B)
It. Sale B Entra B
Cos. red.
fobj
1
4
1
-41.000000
40.000000
2
3
2
-0.400000
-16.400000
sol =
2
2
0
0
fobj =
-12
pi =
10.0000
-7.0000
cr =
7.0000
2.0000
it =
2
B =
2
1
N =
4
3

23/60

Ahora, aadimos una nueva columna al problema, de tal forma que quede:
x2 C 12x3

min.

5x1

x5

s. a

3x1 C 2x2 C x3
C x5 D 10
5x1 C 3x2
C x4 C x5 D 16
x1 ; x2 ; x3 ; x4 ; x5  0:

Lo podemos volver a resolver mediante ProgLineal_3():


>> c1=[c -1];
>> B1=[1 2];
>> A1=[A [1 1]];
>> [sol fobj pi cr it B N]=ProgLineal_3(c1,A1,b,eps,B1)
It. Sale B Entra B
Cre.
fobj
1
2
5
-4.000000
-12.000000
sol =
3.0000
0
0
0
1.0000
fobj =
-16
pi =
0
-1
cr =
12
1
2
it =
1
B =
1
5
N =
3
4
2

24/60

25/60

Aadamos ahora una inecuacin y una columna al problema original:


min. 5x1
s. a

x2 C 12x3

3x1 C 2x2 C x3
D 10
5x1 C 3x2
C x4
D 16
x1 C x2
x5 D 5
x1; x2; x3; x4; x5  0:

Una solucin de partida puede ser la del problema original 2 2 0 0T , con un


nuevo coeficiente que verifique la nueva condicin; es decir,
2 3
6
6
6
4

2
27
7
07 :
05
1

26/60

Como esta solucin no es factible del primal, pero la base es ptima en el


primal, reoptimizamos con dual_simplex():
>>
>>
>>
>>
A2

c2 = [c 0];
b2 = [b; 5];
B2=[1 2 5];
A2=[A [0;0]; 1 1 0 0 -1]
=
3
2
1
0
0
5
3
0
1
0
1
1
0
0
-1
>> [x fobj pi cr it B N]=dual_simplex(c2,A2,...
b2,sqrt(eps),B2)
It. Sale B Entra B
Pinf
Ninf
1
5
4
-0.000000
1
x =
-0.0000
5.0000
0
1.0000
0
fobj =
-5.0000

pi =
-4.0000
0.0000
7.0000
cr =
16.0000
7.0000
it =
1
B =
1
2
N =
3
5

27/60

Efectuemos ahora un cambio en el trmino de la derecha:


min. 5x1
s. a

x2 C 12x3

3x1 C 2x2 C x3
D 11
5x1 C 3x2
C x4 D 16
x1; x2; x3; x4  0:

Reoptimizamos tambin mediante dual_simplex() pues habr una no


factibilidad en el primal:
>> b3=[11;16];
>> B3=[1 2];
>> [x fobj pi cr iter B N Binv]=dual_simplex(c,A,b3,eps,B3)
It. Sale B Entra B
Pinf
Ninf
1
1
3
0.000000
0
x =
0
5.3333
0.3333
0
fobj =
-1.3333
pi =
12.0000
-8.3333

cr =
0.6667
8.3333
iter =
1
B =
3
2
N =
1
4
Binv =
1.0000
-0.6667
0
0.3333

Por ltimo, vamos a estudiar un cambio en la funcin objetivo: el coeficiente de


x3 pasa de ser 12 a 9.

28/60

x2 C 9x3

min.

5x1

s. a

3x1 C 2x2 C x3
D 10
5x1 C 3x2
C x4 D 16
x1 ; x2 ; x3 ; x4  0:

Volvemos a reoptimizar con ProgLineal_3():


>> c4=[-5 -1 9 0];
>> B4=[1 2];
>> [sol fobj pi cr it B N]=ProgLineal_3(c4,A,b,sqrt(eps),B4)
It. Sale B Entra B
Cos. red.
fobj
1
2
3
-1.000000
8.000000
sol =
3.2000
0
0.4000
0
fobj =
-12.4000
pi =
9.0000
-6.4000
cr =
0.2000
6.4000
it =
1
B =
1
3
N =
2
4

Funcin objetivo

Era este:

Cantidad total
Alfalfa
Vitaminas
Factor de crecimiento
Pescado
Protenas
Riboflavina
Niacina
cido pantotnico
Fsforo
Calcio
Sal 1
Sal 2

5,80 2,63
1

P ESCADO

FACTOR DE CRECIMIENTO

V ITAMINAS

29/60

A LFALFA

S AL

M INERALES

S OJA EN GRANO

H ARINA DE SOJA

C ARNE

El problema de la dieta (otra vez)

3,08 1,13 1,00 2,26 35,72 6,00 7,00


1

1
1

1
1
0,55
0,26
0,23
0,20
0,40
0,80
0,10
0,10

0,450
0,130
0,090
0,055
0,065
0,025

0,500
0,120
0,045
0,060
0,060 0,26
0,020 3
0,9
0,9

0,17
0,70
0,14
0,14
0,02
0,15
10
10

0,25 0,25
41,6
2
20,4 0,4
9
0,4
0,1 0,05
0,05 0,05

1
0,63
0,20
0,25
0,04
0,30
0,50

= 100

1
 1,1

5

5
 43
 70
 45
 16
 14
 35
 19
 24

30/60

Si introducimos las variables de holgura y no utilizamos la Fase I, se podra


aplicar el mtodo dual del Smplex aadiendo una variable artificial a la
condicin de igualdad e introducindola en la funcin objetivo con una gran
penalizacin (pondremos 1.000). La matriz de condiciones quedara:
1
0
0
0
0
0.55
0.26
0.23
0.2
0.4
0.8
0.1
0.1

1
0
0
0
0
0.45
0.13
0.09
0.055
0.065
0.025
0
0

1
1
0
0
0
0
0
0
0
0
0.5
0
0.12
0
0.045
0
0.06
0
0.06 0.26
0.02
3
0 0.9
0 0.9

1
0
0
0
0
0
0
0
0
0
0
10
10

1
1
0
0
0
0.17
0.7
0.14
0.14
0.02
0.15
0
0

1
1
1
0
0
0
1
0
0
0
1
0
0
0
1
0.25 0.25 0.63
41.6
2 0.2
20.4 0.4 0.25
9 0.4 0.04
0.1 0.05 0.3
0.05 0.05 0.5
0
0
0
0
0
0

0
1
0
0
0
0
0
0
0
0
0
0
0

0
0
1
0
0
0
0
0
0
0
0
0
0

0
0
0
1
0
0
0
0
0
0
0
0
0

0
0
0
0
1
0
0
0
0
0
0
0
0

0
0
0
0
0
1
0
0
0
0
0
0
0

0
0
0
0
0
0
1
0
0
0
0
0
0

0
0
0
0
0
0
0
1
0
0
0
0
0

0
0
0
0
0
0
0
0
1
0
0
0
0

0
0
0
0
0
0
0
0
0
1
0
0
0

0
0
0
0
0
0
0
0
0
0
1
0
0

0
0
0
0
0
0
0
0
0
0
0
1
0

0
0
0
0
0
0
0
0
0
0
0
0
1

Si definimos como base de partida las columnas 10 a 22, tendremos una


solucin no factible pero con costes reducidos ptimos.
Apliquemos pues el algoritmo Smplex dual.

1
0
0
0
0
0
0
0
0
0
0
0
0

Cargamos los datos desde el fichero donde est el problema.


>> load vitaminas-dual
>> B0
B0 =
10
11
12
13
14
>> bv
bv =
100.0000
1.0000
1.1000
5.0000
5.0000
43.0000
70.0000
45.0000
16.0000
14.0000
35.0000
19.0000
24.0000
>> cv
cv =
1.0e+003 *
Columns 1 through 8
0.0058
0.0026
0.0031
Columns 9 through 16
0.0070
0
0
Columns 17 through 22
0
0
0

15

16

17

18

19

31/60

20

21

22

0.0011

0.0010

0.0023

0.0357

0.0060

1.0000

Aplicamos el algoritmo dual del Smplex.


>> [x fobj pi cr iter B N ]=dual_simplex(cv,Avf,bv,...
sqrt(eps),B0)
It. Sale B Entra B
Pinf
Ninf
1
15
3
-556.516667
8
2
22
2
-6057.100000
9
3
3
6
-121.100000
9
4
16
15
-889.600000
7
5
2
7
-86.908193
6
6
14
2
-68.423548
5
7
19
4
-49.470279
6
8
10
3
-24.806534
4
9
20
5
-15.791616
3
10
18
1
-12.295514
3
11
12
8
-5.000000
1
12
13
9
0.000000
0
x =
15.9679
58.4301
5.9138
5.8891
1.2103
1.0000
1.5889
5.0000
5.0000
0
0.4889
0
0
0
20.2534
0
7.4017
0
0
0
5.0000
0

fobj =
396.3783
pi =
-2.7032
2.6566
0
5.0568
0.9198
10.9772
-0.0000
1.7305
0
3.3186
0.8790
0.3703
0
cr =
1.0e+003 *
0.0033
1.0027
0.0017
0.0009
0.0004
0.0027
0.0110
0.0051
0.0009
iter =
12
B =
3
11
N =
18
22

32/60

15

17

16

19

20

10

14

12

13

21

33/60

Para dotarnos de ms medios sencillos para conocer y resolver los problemas de


programacin lineal se ha desarrollado el programa PL_pd_simplex_1.


Analiza el problema que puede leerse con varios formatos y lo transforma


en forma estndar, si es el caso.

Calcula una solucin cualquiera del sistema de ecuaciones de las condiciones


mediante el operador \ de Matlab.

Resuelve el problema de optimizacin mediante el mtodo primal o dual


segn esa solucin sea factible o no.

function [sol fobj pi cr iter B N Binv] = PL_pd_simplex_1(c,A,b,base,file)


% Resuelve un problema de Programacin Lineal
%
T
%
Min c x subject to Ax = b, x >= 0
%
mediante los programas ProgLineal_3 o dual_simplex segn la base de partida
%
sea factible o no. Se puede dar la base o no.
%
Rutina asociada a Sensitivity_ProgLineal_3 a la que puede enviar datos.
if nargin==5
% Lectura de los datos desde fichero file en MPS
eval([!copy file d:\matlab_2009a\work\tmp\in.mps]);
LIPSO = D:\matlab_2009a\work; exit=mps2mat(LIPSO); fprintf(\n);
load D:\matlab_2009a\work\tmp\default; [m n]=size(A); c=c(:); A=full(A);
A=[A(:,n0+1:n) A(:,1:n0)]; c=[c(n0+1:n);c(1:n0)]; % Mover slacks al final de A
end
save PL_dat A b c
% Guardar datos relevantes para Sensitivity
eps1=eps^(2/3); [m n]=size(A); c=c(:);
if isempty(base)
xB=A\b; base=find(abs(xB)>0); nx=length(base);
if nx<m
bp = setdiff(1:n,base); base=[base;bp(1:m-nx)]; end % Por si algn x=0
xB=xB(base);
else xB=A(:,base)\b; end
B = base; N = setdiff(1:n,B);
x=zeros(n,1); x(B)=xB;
y = A(:,B)\c(B); sN = c(N)-A(:,N)*y;
if (any(x(B)<0))
% En la base valor negativo: no factible primal: dual
if any(sN<-eps1);
A = [A eye(m)]; c = [c; max(max(abs(A)))*100*ones(m,1)]; B=n+1:n+m;
fprintf(Primal-bigM\n);
bm=find(b<0);
if ~isempty(bm)
bl=length(bm); for i=1:bl, A(bm(i),n+bm(i))=-1; end, end
[sol fobj pi cr iter B N Binv] = ProgLineal_3(c,A,b,eps1,B);
NN=N<=n; N=N(NN); cr=cr(NN);
save PL_dat -append sol fobj pi cr iter B N Binv
return, end
fprintf(Dual\n);
[sol fobj pi cr iter B N Binv] = dual_simplex(c,A,b,eps1,B);
save PL_dat -append sol fobj pi cr iter B N Binv
else fprintf(Primal\n); % Base encontrada factible: resuelve con primal
[sol fobj pi cr iter B N Binv] = ProgLineal_3(c,A,b,eps1,B);
save PL_dat -append sol fobj pi cr iter B N Binv
end

34/60

Dieta: con
PL_pd_simplex no
es necesario aquella
variable artificial:

>> load vitaminas


>> Av_d=full(Av);
>> [sol fobj pi cr iter B N]=...
PL_pd_simplex(cv,Av_d,bv)
Dual
It. Sale B Entra B
Pinf
Ninf
1
16
19
-1579.781993
4
2
3
15
-43.883180
2
3
14
2
-34.832613
2
4
19
21
-92.210155
3
5
20
3
-4.839145
1
6
18
1
0.000000
0
sol =
15.9679
58.4301
5.9138
5.8891
1.2103
1.0000
1.5889
5.0000
5.0000
0
0.4889
0
0
0
20.2534
0
7.4017
0
0
0
5.0000
fobj =
396.3783

pi =
-2.7032
2.6566
0
5.0568
0.9198
10.9772
0
1.7305
0
3.3186
0.8790
0.3703
0
cr =
3.3186
10.9772
2.6566
5.0568
0.9198
0.3703
1.7305
0.8790
iter =
6
B =
15
4
5
6
7
8
9
11
2
21
17
1
3
N =
18
14

35/60

10

12

13

20

16

19

Formato

MPS (Mathematical Programming System), originalmente de IBM.

NAME
ROWS
N OBJETIVO
E CAN.TOT.
G ALFALFA
G VITAMINA
G FAC.CRE.
G PESCADO
G PROTEINA
G RIBOFLA.
G NIACINA
G ACI.PAN.
G FOSFORO
G CALCIO
G SAL1
L SAL2
COLUMNS
CARNE
CARNE
CARNE
CARNE
CARNE
PESCADO
PESCADO
PESCADO
PESCADO
PESCADO
SOJA-HAR
SOJA-HAR
SOJA-HAR
SOJA-HAR
SOJA-GRA
SOJA-GRA
SOJA-GRA
SOJA-GRA

Vitaminas

OBJETIVO
PROTEINA
NIACINA
FOSFORO
SAL1
OBJETIVO
PESCADO
RIBOFLA.
ACI.PAN.
CALCIO
OBJETIVO
PROTEINA
NIACINA
FOSFORO
OBJETIVO
PROTEINA
NIACINA
FOSFORO

5.8
0.55
0.23
0.4
0.1
7.0
1.0
0.2
0.04
0.5
2.63
0.45
0.09
0.065
3.08
0.5
0.045
0.06

CAN.TOT.
RIBOFLA.
ACI.PAN.
CALCIO
SAL2
CAN.TOT.
PROTEINA
NIACINA
FOSFORO

1.0
0.26
0.02
0.8
0.1
1.0
0.63
0.25
0.3

CAN.TOT.
RIBOFLA.
ACI.PAN.
CALCIO
CAN.TOT.
RIBOFLA.
ACI.PAN.
CALCIO

1.0
0.13
0.055
0.025
1.0
0.12
0.06
0.02

MINERAL.
MINERAL.
MINERAL.
SAL
SAL
ALFALFA
ALFALFA
ALFALFA
ALFALFA
ALFALFA
VITAMINA
VITAMINA
VITAMINA
VITAMINA
VITAMINA
FAC.CRE.
FAC.CRE.
FAC.CRE.
FAC.CRE.
FAC.CRE.

OBJETIVO
FOSFORO
SAL1
OBJETIVO
SAL1
OBJETIVO
ALFALFA
RIBOFLA.
ACI.PAN.
CALCIO
OBJETIVO
VITAMINA
RIBOFLA.
ACI.PAN.
CALCIO
OBJETIVO
FAC.CRE.
RIBOFLA.
ACI.PAN.
CALCIO

1.13
0.26
0.9
1.0
10.0
2.26
1.0
0.7
0.14
0.15
35.72
1.0
41.6
9.0
0.05
6.0
1.0
2.0
0.4
0.05

CAN.TOT.
ALFALFA
VITAMINA
FAC.CRE.
PESCADO
PROTEINA
RIBOFLA.
NIACINA
ACI.PAN.
FOSFORO
CALCIO
SAL1
SAL2

100.0
1.0
1.1
5.0
5.0
43.0
70.0
45.0
16.0
14.0
35.0
19.0
24.0

RHS
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
RHS2
ENDATA

CAN.TOT.
CALCIO
SAL2
CAN.TOT.
SAL2
CAN.TOT.
PROTEINA
NIACINA
FOSFORO

1.0
3.0
0.9
1.0
10.0
1.0
0.17
0.14
0.02

CAN.TOT.
PROTEINA
NIACINA
FOSFORO

1.0
0.25
20.4
0.1

CAN.TOT.
PROTEINA
NIACINA
FOSFORO

1.0
0.25
0.4
0.05

36/60

Cargando el problema de la Dieta desde su fichero MPS, con PL_pd_simplex:

37/60

>> [sol fobj pi cr iter]= PL_pd_simplex_1([],[],[],[],VITAM_dc.mps)


NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat doneSTATUS = 0
Primal-bigM
sol =
It. Sale B Entra B
Cos. red.
fobj
15.9679
1
24
8
-305308.280000
1568359.292000
5.0000
2
28
11
-301148.280000
1136218.492000
58.4301
5.9138
3
33
6
-87359.000000
982559.105769
5.8891
4
32
5
-17346.160000
750387.460697
1.2103
1.0000
5
26
2
-11962.734981
672947.609936
1.5889
6
23
7
-7879.097766
629741.195032
5.0000
7
31
13
-7802.734981
586419.693933
0
0.4889
8
27
18
-26294.839954
269939.908699
0
9
5
14
-6553.956082
165687.133822
0
10
29
19
-9507.714478
155691.598701
0
20.2534
11
22
16
-27116.168354
46733.747778
0
12
34
20
-4161.952696
26430.237043
4.5275
13
11
9
-4039.257391
26421.117043
0
0
14
16
24
-88742.920000
24048.972000
0
15
25
15
-3586.495609
6676.399405
5.0000
16
24
16
-2054.832754
6197.532417
0
0
17
30
11
-37244.880000
707.452000
0
18
16
5
-5.213325
711.897493
0
0
19
6
17
-77.295278
601.676937
0
20
14
10
-4.583216
570.822739
0
21
19
6
-8.036120
645.578439
0
0
22
18
3
-2.244385
559.192981
0
23
10
14
-3.736203
442.335161
0
24
14
1
-2.737159
445.641272
0
0
25
13
18
-3.977266
403.209734
=
26
20
21
-0.550016
400.494998 fobj
396.3783
27
18
4
-0.231097
399.013320 pi =
Columns 1 through 10
-2.7032
2.6566
0
Columns 11 through 13
0.8790
0.3703
0
cr =
10.9772
0.9198
3.3186
iter =
27

5.0568

0.9198

10.9772

-0.0000

1.7305

2.6566

5.0568

1.7305

0.8790

0.3703

3.31

Con linprog de Matlab, una sesin para Dieta sera como sigue.
>> lb=zeros(1,21);
>> options = optimset(LargeScale, off, Simplex, on, Display, Iter)
>> [x,fval,exitflag,output,lambda]=linprog(cv,[],[],Av_d,bv,lb,[],[],options)
Phase 1: Compute initial basic feasible point.
Iter
Infeasibility
0
378.1
1
297.36
2
255.173
3
215.273
4
166.74
5
152.354
6
150.459
7
80.7105
8
39.7026
9
37.6039
10
35.2884
11
11.1807
12
6.17907
13
3.78533
14
0.34
15
-0
Phase 2: Minimize using simplex.
Iter
Objective
f*x
0
708.542
1
602.242
2
570.823
3
567.359
4
548.379
5
442.335
6
436.35
7
403.21
8
400.495
9
397.745
10
396.378

Dual Infeasibility
A*y+z-w-f
9.77527
77.2953
7.28754
8.73213
3.1832
5.6131
3.29995
4.08198
0.596593
0.231097
0

38/60

Optimization terminated.
x =
15.9679
58.4301
5.9138
5.8891
1.2103
1.0000
1.5889
5.0000
5.0000
0
0.4889
0
0
0
20.2534
0
7.4017
0
-0.0000
0
5.0000
fval =
396.3783
exitflag =
1
output =
iterations: 10
algorithm: medium scale: simplex
cgiterations: []
message: Optimization terminated.
lambda =
ineqlin: [0x1 double]
eqlin: [13x1 double]
upper: [21x1 double]
lower: [21x1 double]

39/60

Si se quiere obtener ms informacin de la solucin:


>> lambda.eqlin
ans =
2.7032
-2.6566
0
-5.0568
-0.9198
-10.9772
0
-1.7305
0
-3.3186
-0.8790
-0.3703
0
>> lambda.lower
ans =
0
0
0
0
0
0
0
0
0
2.6566
0
5.0568
0.9198
10.9772
0
1.7305
0
3.3186
0.8790
0.3703
0

40/60

Con el programa Rsimplex_1:


>> [fobj niters x] = Rsimplex_1(VITAM_dc.mps)
1 archivo(s) copiado(s).
NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat
[m n]=[13 21]. Tiempo CPU:
0.0624; fun. obj.=
3.9638e+002
fobj =
3.963782645622545e+002
niters =
40
x =
0
0.488850287055962
0
0
0
20.253399923625853
0.000000000000000
4.527491511787425
0
0
0
5.000000000000000
15.967948585632787
5.000000000000000
58.430071834554020
5.913766761177310
5.889057162017851
1.210305369562065
1.000000000000000
1.588850287055962
5.000000000000000
>>

Mtodos de punto interior




41/60

Desarrollado espectacularmente en los ltimos veinte aos a raz de la


publicacin en 1984 de un innovador paper de Narendra Karmarkar, entonces en
los laboratorios Bell de EE.UU.

Narendra Krishna Karmarkar, India 1957-.

Basan su estrategia en la bsqueda del ptimo a travs de caminos que recorren


la zona interior de la regin factible; de ah su nombre.

Los ms eficientes aplican el mtodo de Newton, en sucesivas etapas, al sistema


de ecuaciones que resulta de aplicar las condiciones KKT al problema.
Han hecho converger en la prctica la Programacin Lineal y la No Lineal.

Formulacin del procedimiento general


El objetivo es, basndose en un procedimiento iterativo de direccin de descenso para, desde el interior de la regin factible, a partir de la resolucin
por Newton-Raphson del sistema de ecuaciones no lineales al que dan lugar
las condiciones KKT, obtener esa direccin, progresar a un nuevo punto lo
ms posible, y as ir acercndose al ptimo del problema.

Consideremos la formulacin ms completa del problema primal de


programacin lineal
minimizar c T x
sujeta a Ax D b
0x u
donde2 c; x; u 2 Rn; b 2 Rm y A 2 Rmn.
2

Si los lmites inferiores de las variables no son cero, se pueden escalar para que as lo sean.

42/60

43/60

El dual de Wolfe de ese problema es max. L.x; y; z; w/


s. a rx L.x; y; z; w/ D 0
z; w  0I
su funcin de Lagrange L.; ; ; / D c T x y T .Ax b/ wT .u

El gradiente de esta funcin de Lagrange con respecto a x es c

El dual es, ya simplificado,


maximizar y T b
sujeta a

wT u

A T y Cw zCc D 0
w; z  0

donde y 2 Rm; w 2 Rn; z 2 Rn.

x/

zT x.

AT y C w

z.

44/60

Las condiciones de KKT del problema primal y dual, incorporando un vector de


variables de holgura s, son
AT y C w

z C c D0
Ax D b
x C sDu
xi zi D 0;
si wi D 0;
x; z; s; w  0:

i D 1; : : : ; n
i D 1; : : : ; n

La cuarta y la quinta, no lineales, son las de holguras complementarias.




Las de no negatividad de las variables son las que complican estos mtodos.

Para resolver este sistema de ecuaciones, dado que es no lineal, se podra usar
Newton-Raphson, siempre que se partiese de un punto que cumpliese
estrictamente las condiciones de no negatividad de las variables.

Hay que tener cierto cuidado en el proceso pues, si la ecuacin sw D 0 se


linealiza como se hace en Newton-Raphson, se tiene que

45/60

sw C sw C ws D 0:


Si una variable, digamos wi , es cero, la ecuacin de Newton queda


si wi D 0, por lo que el paso wi D 0.

Desde ese momento esa variable quedara bloqueada en cero en todo el


proceso, lo que es muy perjudicial para el algoritmo pues ste no podra
recuperarla para ayudar a mejorar, junto con las dems, el camino al ptimo.
14.1.

x2 s2

iteraciones

PRIMAL-DUAL METHODS

401

central path C

x1 s1
Figure 14.2

Iterates of Algorithm 14.2, plotted in (xs) space.

Es crucial pues, en todo el proceso iterativo, mantener todas las variables


estrictamente positivas, aunque sea muy poco: una cantidad .
(14.3a), (14.3b), and (14.3d).) In the unusual geometry of Figure 14.2, the search directions
(x k , k , s k ) transform to curves rather than straight lines.
As Figure 14.2 shows (and the analysis conrms), the lower bound min on the
centering parameter ensures that each search direction starts out by moving away from the
boundary of N ( ) and into the relative interior of this neighborhood. That is, small

Es ms, es importante que todas las holguras complementarias si wi converjan a


cero al mismo ritmo:

46/60

14.1.

x2 s2

sik wik D k ! 0

cuando k ! 1:

iteraciones

PRIMAL-DUAL METHODS

401

central path C

x1 s1

Con ese objetivo se modifica cada condicin si wi haciendo si wi  D 0 para


tratar de centrar lo ms posible la trayectoria a seguir en el proceso, evitando
as acercarse a esos valores cero de las variables
Esto lo esquematiza en la figura para x1s1 y x2s2.
Figure 14.2 Iterates of Algorithm 14.2, plotted in (xs) space.

En cada punto del proceso se hace

(14.3a), (14.3b), and (14.3d).) In the unusual geometry of Figure 14.2, the search directions
(x k , k , s k ) transform to curves rather than straight lines.
As Figure 14.2 shows (and the analysis conrms), the lower bound min on the
centering parameter ensures that each search direction starts out by moving away from the
boundary of N ( ) and into the relative interior of this neighborhood. That is, small
steps along the search direction improve the centrality. Larger values of take us outside
the neighborhood again, since the error in approximating the nonlinear system (14.15) by
the linear step equations (14.16) becomes more pronounced as increases. Still, we are
guaranteed that a certain minimum step can be taken before we reach the boundary of
N ( ), as we show in the analysis below.
The analysis of Algorithm 14.2 appears in the next few pages. With judicious choices
of k , this algorithm is fairly efcient in practice. With a few more modications, it becomes
the basis of a truly competitive method, as we discuss in Section 14.2.
Our aim in the analysis below is to show that given some small tolerance > 0, the
algorithm requires O(n| log |) iterations to reduce the duality measure by a factor of , that
is, to identify a point (x k , k , s k ) for which k 0 . For small , the point (x k , k , s k )
satises the primal-dual optimality conditions except for perturbations of about in the
right-hand side of (14.3c), so it is usually very close to a primal-dual solution of the
original linear program. The O(n| log |) estimate is a worst-case bound on the number
of iterations required; on practical problems, the number of iterations required appears

N
xN T zN C sN T w
 D  g; donde g D
;
2n
siendo el numerador la denominada brecha o gap de dualidad, y el denominador
los dos grupos de n variables que contribuyen al gap.  es un porcentaje,
 k 2 .0; 1/  0;9995, de lo que se desea reducir el gap en cada iteracin.
k

En cada etapa del proceso iterativo, estos mtodos resuelven ligeras variantes
del sistema no lineal KKT
8 T
A y Cz wDc

<
Ax D b
f .x; y; z; s; w/ 
xCsDu

x ;z;s;w>0
X Z D e

:
W S D e

47/60

donde X , S , Z y W
son matrices diagonales con coeficientes xj , sj , zj y wj ,
 La frmula ms aceptada de Mehrotra de combinar estas dos
qu direccin
de avance seguir, consiste
respectivamente, y eopciones
es el sobre
vector
de coeficientes
1. en llevar a


cabo dos pasos en una etapa, denominados predictor y


corrector:
 Predictor: se resuelve la aproximacin lineal: la direccin de
descenso puro de Newton, o de escalado afn, con  D 0.

De estas resoluciones se va obteniendo el denominado camino central central


 Corrector y centrado: para compensar la linealizacin anterior
path, si  0, hacia
el ptimo.
Es primordial
introduciendo
ms informacin
de segundo no
ordendesviarse
y centrar en mucho de l de
torno al camino
path), mediante el parmetro .
cara a evitar caer en valores
cerocentral
de (central
las variables.
400

CHAPTER 14.

INTERIOR-POINT METHODS

central path neighborhood

Camino central

62/72

Figure 14.1

Central path, projected into space of primal variables x, showing a

A este planteamiento esquemtico del procedimiento de resolucin se llega


tambin si en el problema original se incorporan las condiciones de no acercarse
a cero de las variables x i y si mediante un trmino en la funcin objetivo que
se haga muy grande barrera cuando esas variables tomen ese valor: su
logaritmo, por ejemplo:
0
1
n
n
X
X
T
@
log xj C
log sj A
minimizar c x 

48/60

j D1

sujeta a

j D1

Ax D b
x C sDu
x; s > 0:

Problema denominado de barrera logartmica del primal, para un escalar .




Su funcin de Lagrange es, simplificando la notacin,


cT x

 log x

 log s

y T .Ax

b/

wT .x C s

u/ :

Las condiciones KKT de este problema son


T

A y Cz

donde z D X 1e; w D S

Ax D b
w C c D0
x C sDu
1. THE BARRIER PROBLEM
X Z e D e
S W e D e;

279

e. Son casi idnticas a las anteriores.

Cuando  ! 1, las soluciones del problema barrera son el centro analtico de


(a) =
(b) =1
la regin factible del problema primal.
8

49/60

1. THE BARRIER PROBLEM

279

=0.01
=1
8

=0.01

camino central

F IGURE 16.1.
(a) through (c) show
level sets of the
El algoritmos reducen paso a paso =0.01
segn
se Parts
aproximan
al ptimo
delbarrier
primal.
=1

function for three values of . For each value of , four level sets
are shown. The maximum value of the barrier function is attained
inside the innermost level set. The drawing in part (d) shows the
=
central path.

Al  ! 0, la solucin del problema barrera converge al centro analtico del


conjunto de las soluciones ptimas del primal (camino central).
8

=1

62/76

Volviendo a la resolucin del sistema de ecuaciones f .x; y; z; s; w/ D 0


mediante Newton-Raphson, el nuevo punto hacia la solucin de ese sistema,
 D x; y; z; s; wT , saldr de resolver el modelo de desarrollo de Taylor de
primer orden


f . k / C f 0  k  kC1  k D 0;
 1
es decir, vk D f0  k
f . k /; siendo vk la direccin de Newton en la
iteracin k y f 0  k la matriz jacobiana del sistema.

La aproximacin lineal del sistema, es decir,


32 3
2
A 0
60 0
4I I
Z 0
0W

0
AT
0
0
0

0
I
0
X
0

0
x
I 7 6 s 7
0 5 4 y 5
z
0
w
S

rb
rc
6
7
r
u
4
5
e X Z e
e S W e;

r b D b Ax
donde r c D c A T y z C w , y su resolucin, determinar el nuevo punto
r u D u x s:
donde moverse.

50/60

51/60

Esa direccin se podra mejorar considerablemente ampliando el modelo de


desarrollo de Taylor de f .x; y; z; s; w/ D 0 a segundo orden de derivadas, es
decir,
1
fi .v/ C rf .v/T v C vT r 2f .v/v D 0:
2
 
01
y la de
La matriz Hessiana de las condiciones de complementariedad sera
10
las dems cero.

La direccin de avance saldra en este caso de resolver


2
32 3 2
A 0
60 0
4I I
Z 0
0W

0
AT
0
0
0

0
I
0
X
0

0
x
I 7 6 s 7
0 5 4 y 5
z
0
w
S

6
D4

e
e

rb
rc
7
ru
5:
X Z e X Z e
S W e S W e

Sanjay Mehrotra propuso cmo actuar con estas dos direcciones: combinarlas en
una etapa del proceso iterativo en dos pasos: los denominados predictor y
corrector:

52/60

The Open Operational Research Journal, 2009, Volume 3

Goran Lesaja

Sanjay Mehrotra, India (EE.UU.)

The step size is chosen in such a way that iterates stay in


the one of the above horn neighborhoods

 k = max   :

where x( ) = x +  d x , s( ) = s +  ds ,


k

( ) =

X ( )s( )  ( )e   ( ),  [0,  ] , (3.19)

7.

where

x T ( )s( )
.
n

Update x k+1 = x k +  k d x , y k+1 = y k +  k d y ,

s k+1 = s k +  k ds .

= k + descenso
1 and go to step 3. puro de Newton, o de escalado
8.
Set kde
Predictor: se usa la (3.20)
direccin
The graphical representation of the IPM algorithm is
Although general Newtons Method (NM) is not
given in Fig. (1).
afn, con  D 0.
necessarily globally convergent, by using the above

T
x( ) = x +  d x , s( ) = s +  ds , ( ) = x ( )s( ) .
n

technique, global convergence is guaranteed. Moreover, fast


local convergence (quadratic or at least superlinear) is
preserved. Now, the first step of the barrier algorithm BM
can be completed by calculating the new iterates
x k +1 = x k +  k d x , y k +1 = y k +  k d y , s k +1 = s k +  k ds . (3.21)

The second step of BM is the calculation of k+1 using


the last equation in (3.20). It can be shown that the
sequence { k } is decreasing at least at a constant rate which
is the key to proving that the global convergence of the
method is polynomial in the number of variables and chosen
accuracy. Finally, let us mention again that BM is an
iterative algorithm. An iterate (x k , y k , s k ) is an  approximate optimal solution if
Ax k  b   P ,

AT y k + s k  c   D , (x k )T s k   G

(3.22)

Fig. (1).

The above algorithm has favorable convergence


properties. For certain choice of the parameters and using the
neighborhood N 2 ( ) , the following convergence results can
be obtained.

Corrector y centrado: para compensar la linealizacin anterior, se introduce


la informacin de segundo
orden
y la direccin
se will
centra hacia el camino

Global convergence:
The algorithm IPM
achieve an   approximate optimal solution in
Algorithm (IPM)
central.
O ( n log1  ) iterations, where  = min { ,  ,  } .
Initialization

for a given
 ( P ,  D ,  G ) > 0 .

The Interior-Point Algorithm can now be summarized as


follows.

Local convergence: For a sufficiently large

k there

53/60

Si en la aproximacin lineal de Newton anterior se despejan


s D u x s
z D X 1 . e
w D S 1 . e

x
XZe
SW e

de la tercera
Z x/
de la cuarta
W r u C W x/ de la quinta

el sistema se puede expresar en funcin de x y y como sigue:



  
1 T
x
D A
r c X 1 .e X Z e/ C S 1 .e S W e
D
y
A 0
r
b

donde D D X Z C S


W r u/

Todos los mtodos de punto interior resuelven un sistema como ste, o alguna
variante.

Se puede reducir ms eliminando x sin ms que multiplicar el primer


subconjunto de ecuaciones por AD y sumar el segundo; resultan las ecuaciones
normales,


54/60

ADA T y D r b C AD r c
CS 1 . e

X 1 . e X Z e/
S W e W r u/ :

Resolver este sistema lineal es la parte crtica y de ms trabajo del algoritmo.


Como la matriz ADA T es simtrica y definida positiva o semidefinida positiva,
se puede factorizar por Cholesky, aunque hay que cuidar mucho qu se hace.


Este procedimiento sigue lo apuntado con

r xz D  e

X Z e y r sw D  e

S W e.

 1
1. Formar la matriz D D X 1 Z C S 1 W
2. Hacer r c
r c X 1 r xz CS 1 .r sw W r u /
3. Resolver mediante Cholesky ADA T y D r b C ADr c
4. Calcular x
z
s
w

D
D
D
D

D.A T y r c /
X 1 . Z x C r xz /
r u x
S 1 . W s C r sw /

Una iteracin se completara determinando las amplitudes de paso, P y D , en


predictor y corrector, adaptando  y comprobando ptimo.

Dado x 0 ; y 0 ; z0 ; w0 ; s0 con x 0 ; z0 ; w0 ; s0 > 0.


Paso 1 Calcular la direccin predictor
o de escalado
3 2 afn:
2
3
A
60
4I
Z
0

Hacer
y

0 0
0 AT
I 0
0 0
W 0

0
I
0
X
0

x af
0
I 7 6 saf 7
0 5 4 y af 5
zaf
0
waf
S

55/60

D4

rb 3
rc
ru 5
XZe
SW e


af;P D Knf 2 0; 1jx; s C x af ; saf  0 ;
af;D D Knf h 2 0; 1jz; w C zaf ; waf  0 ;
T

T
i
1
x C af;P x
z C af;D z C s C af;P s
w C af;D w
af D 2n
 D

af


3
:

Paso 2 Calcular la direccin2corrector y centrado:


32 3
A 0 0 0 0
x c

60
4I

0
I
Z 0
0 W

AT

I I 7 sc
0 0 0 5 4 y c 5
zc
0 X 0
wc
0 0 S

2
D4

e
e

3
0
0
5
0
X af Z af e
S af W af e

Paso 3 Obtener la direccin de la iteracin: x; y; z; w; s D

x af ; y af ; zaf ; waf ; saf C x c ; y c ; zc ; wc ; sc : Hacer


max;P D Knf f 2 0; 1jx; s C x; s  0g
y P D P max;P ;
max;D D Knf f 2 0; 1jz; w C z; w  0g

D D D max;D :

Paso 4 Terminar iteracin y comprobar ptimo. Hacer x kC1 ; skC1 D x k ; sk C P x; s y


y kC1 ; zkC1 ; wkC1 D y k ; zk ; wk C D y; z; w.
Comprobar condiciones de ptimo. Si no, seguir.
Algoritmo predictor-corrector de punto interior de Mehrotra

function IntPointLP_2(A,b,c)
56/60
% Resuelve min px s.t. Ax=b, x>=0,
%
cuyo dual es max by s.t. Ay+z=c, z>=0. Mtodo Primal-Dual IPt
[m,n]=size(A); x=sqrt(n)*ones(n,1); y=zeros(m,1);
% Sol. inicial factible
z = x; bc = 1+max(norm(b),norm(c)); t0=cputime;
for iter = 1:100
Rd=A*y+z-c;
Rp=A*x-b;
Rc=x.*z;
residual=norm([Rd;Rp;Rc])/bc;
gap=mean(Rc);
fprintf(iter %2i: medidor duali.=%9.2e, error tot. rel.=%9.2e,iter,gap,residual);
fprintf(\tobj=%14.6e\n,c*x);
function [x y z A b c n0]=ProgLineal_InP_MPS_sc(file)
if residual<5.e-8, break, end
% Resuelve min cx s.t. Ax=b, x>=0, cuyo dual es max by s.t. Ay+z=c, z>=0. Interior Point.
Rc=Rc-min(.1,100*gap)*gap;
eval([!copy file D:\MATLAB2010b\work\tmp\in.mps]); LIPSO = D:\MATLAB2010b\work;
d=min(5.e+15,x./z);
ar=mps2mat(LIPSO); fprintf(\n); load D:\MATLAB2010b\work\tmp\default;
[m,n]=size(A); x=sqrt(n)*ones(n,1); y=zeros(m,1);
B=A*diag(d)*A;
z = x; bc = 1+max(norm(b),norm(c)); t0=cputime;
R=chol(B);
p = symamd(A*A);
% Reordenacin grado mnimo
fprintf(\n
No fac.
No fac.
Brecha
Error);
t1=x.*Rd-Rc;
fprintf(\n
primal
dual
dual
relati.\n);
t2=-(Rp+A*(t1./z));
fprintf( Iter
A*x-b
A*y+z-c
x*z
total\n);
dy=R\(R\t2);
fprintf( ---------------------------------------------------\n);
for
iter
=
1:100
dx=(x.*(A*dy)+t1)./z;
Rd=A*y+z-c; rrd=norm(Rd);
% No factibilidad dual
dz=-(z.*dx+Rc)./x;
Rp=A*x-b;
rrp=norm(Rp);
% No factibilidad priaml
tau=max(.9995,1-gap);
Rc=x.*z;
% No factibilidad complementariedad
residuo=norm([Rd;Rp;Rc])/bc;
ap=-1/min(min(dx./x),-1);
gap=mean(Rc);
% Brecha dual
ad=-1/min(min(dz./z),-1);
fprintf(%5i %15.2e %10.2e %11.2e %10.2e\n,iter,rrd,rrp,gap,residuo);
ap=tau*ap;
if residuo<5.e-10, break, end
Rc=Rc-min(.1,100*gap)*gap;
ad=tau*ad;
d=min(5.e+15,x./z);
x=x+ap*dx; z=z+ad*dz; y=y+ad*dy;
B=A*sparse(1:n,1:n,d)*A;
end
R=cholinc(sparse(B(p,p)),inf); % Cholesky incompleto
t1=x.*Rd - Rc; t2=-(Rp+A*(t1./z));
fprintf(Termina!\t[m n]=[%g %g]\tCPU=%g\n,m,n,cputime-t0);
dy=zeros(m,1);
x, y, z
dy(p)=R\(R\t2(p));
% Resuelve sistema
dx=(x.*(A*dy)+t1)./z;
fprintf(Fun, Obj= %14.6f\n,c*x);

El programa con y sin lectura de datos


a travs de ficheros .MPS

dz=-(z.*dx+Rc)./x;
tau=max(.9995,1-gap);
ap=-1/min(min(dx./x),-1);
% Amplitud de paso primal
ad=-1/min(min(dz./z),-1);
% Amplitud de paso dual
ap=tau*ap; ad=tau*ad;
x=x+ap*dx; z=z+ad*dz; y=y+ad*dy;
end
fprintf(Termina bien!\t[m n] = [%g %g]\tCPU = %g\n,m,n,cputime-t0);
f=c*x; fprintf(Fun. Obje.= %18.14f\n,f);

Resolvamos con este programa el problema de programacin lineal:


min. x1

3x2

s. a 2x1 C 3x2 C x3

D6
x1 C x2 C x4 D 1
x1 ; x2 ; x3 ; x4  0:

>> cEje1=[-1 -3 0 0];


>> AEje1=[2 3 1 0;-1 1 0 1];
>> bEje1=[6;1];
>> IntPointLP_1(AEje1,bEje1,cEje1)
iter 1: gap=4.00e+000, error tot. rel.=1.69e+000
iter 2: gap=1.12e+000, error tot. rel.=3.16e-001
iter 3: gap=3.00e-001, error tot. rel.=9.79e-002
iter 4: gap=6.71e-002, error tot. rel.=2.38e-002
iter 5: gap=6.74e-003, error tot. rel.=2.21e-003
iter 6: gap=6.77e-004, error tot. rel.=1.91e-004
iter 7: gap=4.62e-005, error tot. rel.=1.30e-005
iter 8: gap=2.15e-007, error tot. rel.=6.08e-008
iter 9: gap=4.68e-012, error tot. rel.=1.32e-012
Termina! [m n] = [2 4] CPU = 0.0312002
x =
0.6000
1.6000
0.0000
0.0000
y =
-0.8000
-0.6000
z =
0.0000
0.0000
0.8000
0.6000
Fun, Obj=
-5.400000

obj=-8.000000e+000
obj=-3.714339e+000
obj=-4.423752e+000
obj=-5.315741e+000
obj=-5.380112e+000
obj=-5.398613e+000
obj=-5.399908e+000
obj=-5.400000e+000
obj=-5.400000e+000

57/60

 La Dieta:

>> load vitaminas


>> Av_d=full(Av);
>> IntPointLP_1(Av_d,bv,cv)
iter 1: gap=2.10e+001, error tot. rel.=1.32e+000
obj= 2.961260e+002
iter 2: gap=1.27e+001, error tot. rel.=8.62e-001
obj= 3.454134e+002
iter 3: gap=7.00e+000, error tot. rel.=4.80e-001
obj= 3.635193e+002
iter 4: gap=2.47e+000, error tot. rel.=1.81e-001
obj= 3.884943e+002
iter 5: gap=6.83e-001, error tot. rel.=2.62e-002
obj= 4.007237e+002
iter 6: gap=1.63e-001, error tot. rel.=6.61e-003
obj= 3.974000e+002
iter 7: gap=1.93e-002, error tot. rel.=6.62e-004
obj= 3.965177e+002
iter 8: gap=1.94e-003, error tot. rel.=6.04e-005
obj= 3.963934e+002
iter 9: gap=1.95e-004, error tot. rel.=6.06e-006
obj= 3.963798e+002
iter 10: gap=3.83e-006, error tot. rel.=1.19e-007
obj= 3.963783e+002
iter 11: gap=1.49e-009, error tot. rel.=4.62e-011
obj= 3.963783e+002
Termina! [m n] = [13 21] CPU = 0.109201

x =
15.967948585969863
58.430071825246408
5.913766767060357
5.889057162222607
1.210305369941197
1.000000000555506
1.588850287092843
5.000000000293239
5.000000001617829
0.000000000555506
0.488850287092842
0.000000000293247
0.000000001617851
0.000000000134912
20.253399926042366
0.000000000856644
7.401722257701704
0.000000000450807
0.000000001677626
0.000000004009333
4.999999995990669
y =
-2.703193632507613
2.656560069064640
0.000000003039794
5.056784405320645
0.919806312736561
10.977248484804672
0.000000000073392
1.730542784359990
0.000000000200754
3.318574196209014
0.879025638141999
0.370319363423242
-0.000000000295456
z =
0.000000000093028
0.000000000025392
0.000000000252844
0.000000000252264
0.000000001229760
0.000000001490820
0.000000000934941
0.000000000297167
0.000000000297698
2.656560069064640
0.000000003039794
5.056784405320646
0.919806312736561
10.977248484804672
0.000000000073392
1.730542784359990
0.000000000200754
3.318574196209014
0.879025638141999
0.370319363423242
0.000000000295456
Fun, Obj=
396.378265

58/60

El problema de la dieta, una vez ms:

>> [x y z]=ProgLineal_InP_MPS_sc(vitam_dc.mps)
1 archivo(s) copiado(s).
NAME done
ROWS done
COLUMNS done
RHS done
RANGES done
BOUNDS done
reading done
mps2mat done
Status=0
No fac.
No fac.
Brecha
Error
primal
dual
dual
relati.
Iter
A*x-b
A*y+z-c
x*z
total
--------------------------------------------------1
3.56e+01
1.65e+02
2.10e+01
1.32e+00
2
2.74e+01
1.05e+02
1.27e+01
8.54e-01
3
1.52e+01
5.50e+01
6.86e+00
4.55e-01
4
2.69e+00
2.06e+01
2.34e+00
1.66e-01
5
1.34e-03
1.03e-02
4.39e-01
1.70e-02
6
4.10e-04
2.04e-03
1.46e-01
5.73e-03
7
2.05e-07
6.85e-05
1.60e-02
5.22e-04
8
1.03e-10
3.43e-08
1.61e-03
5.00e-05
9
5.55e-14
1.67e-11
1.61e-04
5.02e-06
10
7.67e-15
2.87e-12
2.63e-06
8.18e-08
11
2.60e-15
3.59e-12
6.99e-10
2.17e-11
Termina bien! [m n] = [13 21] CPU = 0.046875
Fun. Obje.= 396.37826456785990

x =
0.000000000261274
0.488850287073326
0.000000000137922
0.000000000760845
0.000000000063454
20.253399924763229
0.000000000402831
4.527491511994257
0.000000000212124
0.000000000788949
0.000000001885759
4.999999998114246
15.967948585791948
5.000000000760850
58.430071830165744
5.913766763954222
5.889057162113923
1.210305369740400
1.000000000261274
1.588850287073329
5.000000000137925
y =
-2.703193633520408
2.656560070409201
0.000000001429759
5.056784405939616
0.919806312588121
10.977248487287513
0.000000000034520
1.730542784589703
0.000000000154399
3.318574194419995
0.879025638629259
0.370319363433166
-0.000000000138967
z =
2.656560070409201
0.000000001429759
5.056784405939616
0.919806312588121
10.977248487287513
0.000000000034520
1.730542784589703
0.000000000154399
3.318574194419995
0.879025638629259
0.370319363433166
0.000000000138967
0.000000000043755
0.000000000140021
0.000000000011943
0.000000000118924
0.000000000118652
0.000000000578415
0.000000000701204
0.000000000439747
0.000000000139772

59/60

Un problema muy grande MarosR7

>> ProgLineal_InP_MPS_sc(marosr7.mps);
1 archivo(s) copiado(s).
NAME done ROWS done COLUMNS done RHS done RANGES done ...
No fac.
No fac.
Brecha
Error
primal
dual
dual
relati.
Iter
A*x-b
A*y+z-c
x*z
total
--------------------------------------------------1
9.34e+003 4.09e+005
9.41e+003 2.41e+000
2
9.24e+003 3.99e+005
9.10e+003 2.35e+000
3
9.03e+003 3.70e+005
8.93e+003 2.33e+000
4
8.45e+003 3.37e+005
8.04e+003 2.12e+000
5
7.47e+003 2.66e+005
6.73e+003 1.80e+000
6
5.78e+003 1.36e+005
5.06e+003 1.33e+000
7
2.99e+003 6.81e+001
2.71e+003 6.82e-001
8
9.40e+001 3.40e-002
2.29e+002 6.04e-002
9
4.62e+001 1.15e-003
1.13e+002 2.93e-002
10
2.56e+001 4.36e-004
6.43e+001 1.67e-002
11
1.68e+001 1.75e-004
3.97e+001 1.05e-002
12
8.07e+000 6.40e-005
2.02e+001 5.34e-003
13
4.69e+000 2.91e-005
1.17e+001 3.14e-003
14
2.43e+000 1.14e-005
6.15e+000 1.66e-003
15
1.55e+000 5.66e-006
3.84e+000 1.06e-003
16
7.76e-001 1.97e-006
1.92e+000 5.40e-004
17
4.03e-001 8.41e-007
1.04e+000 2.92e-004
18
1.60e-001 3.06e-007
4.63e-001 1.27e-004
19
5.96e-002 1.21e-007
2.05e-001 5.40e-005
20
1.76e-002 5.00e-008
8.44e-002 2.08e-005
21
4.67e-003 1.38e-008
2.85e-002 6.91e-006
22
1.45e-003 8.21e-009
1.33e-002 3.16e-006
23
2.95e-004 6.09e-009
2.97e-003 7.10e-007
24
1.48e-007 9.15e-009
2.98e-004 6.96e-008
25
4.40e-011 3.02e-009
8.96e-006 2.09e-009
26
1.66e-014 3.57e-009
8.10e-009 1.89e-012
Termina bien! [m n] = [3136 9408] CPU = 28.829
Fun. Obje.= 1497185.16653047850000

m D 3:137, n D 9:408 y nz D 151:120:

>> runlipsol(marosr7)
Running mps2mat ...
NAME done
ROWS done
COLUMNS done
RHS done
RANGES done
BOUNDS done
reading done
mps2mat done
Status=0mps2mat successful
Loading tmp\default.mat ...
Preprocessing ...
(m=3136, n=9408)
Dense columns (nnz/m > 0.1): 0
<<<<< This is MIIP algorithm >>>>>
min-degree ordering ... Done. CPU seconds: 0.015625
calling symfct.mex* ... Done. CPU seconds: 0
Residuals:
Primal
Dual
U-bounds
Gap
TR_error
--------------------------------------------------------Iter
0: 6.54e+05 1.01e+04 0.00e+00 4.15e+09 4.41e+05
Iter
1: 6.17e-10 2.80e+03 0.00e+00 1.08e+09 1.15e+05
Iter
2: 7.53e-09 7.37e+00 0.00e+00 3.04e+07 3.23e+03
Iter
3: 1.13e-09 6.24e-01 0.00e+00 5.70e+06 6.06e+02
Iter
4: 6.37e-10 2.29e-01 0.00e+00 2.24e+06 2.38e+02
Iter
5: 4.19e-10 6.35e-02 0.00e+00 9.35e+05 9.94e+01
Iter
6: 4.02e-10 1.21e-02 0.00e+00 3.85e+05 4.09e+01
Iter
7: 5.03e-10 1.96e-03 0.00e+00 1.39e+05 1.48e+01
Iter
8: 6.54e-10 3.68e-04 0.00e+00 4.47e+04 4.75e+00
Iter
9: 1.12e-09 1.01e-04 0.00e+00 1.63e+04 1.73e+00
Iter
10: 1.19e-09 2.09e-05 0.00e+00 3.95e+03 4.20e-01
Iter
11: 1.75e-09 2.04e-06 0.00e+00 7.28e+02 7.74e-02
Iter
12: 1.81e-09 2.49e-07 0.00e+00 2.42e+02 2.58e-02
Iter
13: 1.69e-09 1.77e-08 0.00e+00 2.63e+01 2.80e-03
Iter
14: 2.00e-09 1.99e-14 0.00e+00 1.43e-01 1.52e-05
Iter
15: 1.32e-09 3.51e-14 0.00e+00 7.14e-05 7.59e-09
MAROSR7
<* Converged! *>
Results (unprocessed) in results.mat
Solution xsol (processed) in solution.mat
Primal Obj =
1.4971851665e+06
[m n] = [3136 9408], nnz(A) = 144848, nnz(L) = 1198243
CPU seconds:
0.48 ... loading
0.02 ... preprocessing
7.20 ... solving
0.00 ... postprocessing
7.70 ... total

60/60

>> PLip_1(marosr7.mps)
1 archivo(s) copiado(s).
NAME done
ROWS done
COLUMNS done
RHS done
RANGES done
BOUNDS done
reading done
mps2mat done
Status=0
Preprocesado ...
(m=3136, n=9408)

<<<<< Alg_IP: Algoritmo de Punto Interior Predictor-Cor

Residuos: Primal
Dual
U-bounds
d-Gap
E
----------------------------------------------------Iter
0: 6.54e+05 1.01e+04 0.00e+00 4.149e+09 4.41
Iter
1: 6.41e-10 2.80e+03 0.00e+00 1.079e+09 1.14
Iter
2: 5.19e-09 7.37e+00 0.00e+00 3.038e+07 3.22
Iter
3: 7.99e-10 6.24e-01 0.00e+00 5.704e+06 6.06
Iter
4: 6.15e-10 2.29e-01 0.00e+00 2.241e+06 2.38
Iter
5: 3.42e-10 6.35e-02 0.00e+00 9.351e+05 9.93
Iter
6: 3.22e-10 1.21e-02 0.00e+00 3.845e+05 4.08
Iter
7: 3.84e-10 1.96e-03 0.00e+00 1.392e+05 1.48
Iter
8: 5.73e-10 3.68e-04 0.00e+00 4.469e+04 4.75
Iter
9: 7.16e-10 1.01e-04 0.00e+00 1.628e+04 1.73
Iter
10: 8.46e-10 2.09e-05 0.00e+00 3.950e+03 4.19
Iter
11: 1.62e-09 2.04e-06 0.00e+00 7.279e+02 7.73
Iter
12: 1.68e-09 2.49e-07 0.00e+00 2.423e+02 2.57
Iter
13: 2.39e-09 1.77e-08 0.00e+00 2.630e+01 2.79
Iter
14: 1.43e-09 1.98e-14 0.00e+00 1.428e-01 1.51
Iter
15: 1.89e-09 3.52e-14 0.00e+00 7.144e-05 7.59
MAROSR7
<* Converge! *>
Resultados (sin procesar) en results.mat
Solucin xsol (procesada) en solution.mat
Primal Obj =
1.4971851665e+06
[m n] = [3136 9408], nnz(A) = 144848
CPU seconds:
0.45 ... carga de datos
0.09 ... preprocessado
9.34 ... resolucin
0.00 ... postprocesado
9.89 ... total

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Programacin no lineal con condiciones

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_minimi_concond_2016.pdf

1/100

2/100

ndice


El problema

Condiciones de Karush-Kuhn-Tucker

Algoritmos


Programacin Cuadrtica

Programacin Cuadrtica Secuencial

Mtodos de puntos interiores

Formulacin del problema




3/100

El problema objeto de estudio de la programacin no lineal es este:


minimizar
f .x/
x 2Rn
sujeta a c i .x/ D 0;
cj .x/  0;

i 2 E;
j 2 I:

Las funcin objetivo f y las condiciones las funciones vectoriales c i y cj ,


son, en general, no lineales, continuas y tienen derivadas parciales continuas
hasta al menos primer orden. Los conjuntos E y I contienen los ndices de las
condiciones de igualdad y de desigualdad, o inecuaciones.


La regin factible, o conjunto de puntos factibles de un problema de


Programacin No Lineal PNL es


 D x W c i .x/ D 0; i 2 EI cj .x/  0; j 2 I :

Our rst example is a two-variable problem with a single equality constraint:

x1 + x2 de resolver
s.t.
x1 + x2 2  0
Ejemplo min
Se trata
2

(12.9)

Figure 12.3). In the language of (12.1), we


have f (x)  x
x1 +C
x2 ,xI  , E  {1}, and
minimizar
1
2
2
2
x)  x1 + x
2 2. We can see by inspection that the feasible set for this problem is the
2 not its interior.
le of radius 2 centered at the originjust
the boundary
circle,
sujeta
a xof12 this
Cx
2 D 0:
2
solution x is obviously (1, 1)T . From any other point on the circle, it is easy to
a way
move caso
that stays
feasible
is, remains
on theD
circle)
while
.
Entoeste
f .x/
xT1 C
x2, c1.x/
x12 C
x22decreasing
2, E f D
D(that
instance, from the point x  ( 2, 0) any move in the clockwise direction around the
le has the desired effect.

f1g y I D ;.

La representacin geomtrica del problema es la de la figura.


x2
c1

c1

c1

x1

x*

4/100

El punto ptimo es x  D 1 1T . Con el criterio de


minimizar, otros puntos de la circunferencia hacen que
f .x/ sea peor.
En el ptimo, el vector gradiente de la condicin
rc1 .x  / es paralelo al de la funcin objetivo rf .x  /
aunque con sentido opuesto. Existe un escalar 1 , en
Figure
12.3  D 1=2, tal que rf .x  / D  rc1 .x  /.
este caso
1
1
Problem (12.9), showing
constraint and function
gradients at various feasible
points.

Otra manera de ver el ptimo. Si en cualquier punto factible x del proceso de


optimizacin se lleva a cabo un pequeo desplazamiento s, para conservar la
factibilidad deber cumplirse que c.x C s/ D 0.
Por desarrollo en serie de Taylor,

5/100

0 D c.x C s/  c.x/ C rc.x/T s D rc.x/T s:




Ese mismo paso debera producir una mejora de f .x/, es decir


0 > f .x C s/

f .x/  rf .x/T s:

Cualquier direccin d  s=ksk en el sentido de ese paso que mejore la funcin


objetivo y verifique la condicin deber cumplir simultneamente que
rc.x/T d D 0 y rf .x/T d < 0:

Si no existe, el punto x podra ser un ptimo (al menos local).




La nica manera de que no exista una d que satisfaga simultneamente estos


dos requerimientos es que rf .x/ y rc.x/ sean paralelas.

Volviendo al problema general de PNL, su funcin de Lagrange es


308

CHAPTER 12.

THEORY

OF

L.x; / D f .x/
CONSTRAINED OPTIMIZATION

6/100

c.x/:

Denition 12.1.
The active set A(x) at any feasible x consists of the equality constraint indices from E
together with the indices of the inequality constraints i for which ci (x)  0; that is,

El gradiente de sta con respecto a x, rx L.x; /, es rf .x/

rc.x/.

A(x)  E {i I | ci (x)  0}.

At a feasible point x, the inequality constraint i I is said to be active if ci (x)  0


and inactive if the strict inequality ci (x) > 0 is satised.

La condicin de ptimo se puede enunciar para el ejemplo que estudiamos como


A SINGLE EQUALITY CONSTRAINT

rx L.x ; 1 / D 0.

EXAMPLE 12.1

A 1 se le denomina multiplicador de Lagrange de la condicin c1.x/ D 0.


Our rst example is a two-variable problem with a single equality constraint:
min x1 + x2

(12.9)

(see Figure 12.3). In the language of (12.1), we have f (x)  x1 + x2 , I  , E  {1}, and
2
c1 (x)  x12 + x
2 2. We can see by inspection that the feasible set for this problem is the
circle of radius 2 centered at the originjust the boundary of this circle, not its interior.
The solution x is obviously (1, 1)T . From any other point on the circle, it is easy to
nd a way to move that stays feasible
(that is, remains on the circle) while decreasing f .
For instance, from the point x  ( 2, 0)T any move in the clockwise direction around the
circle has the desired effect.

La condicin de que en un punto ptimo el gradiente de la funcin de Lagrange


sea cero es necesaria, pero no suficiente. En efecto, en el ejemplo, el punto
1 1T la cumple (con 1 D 1=2), pero no es el ptimo: de hecho es el
mximo.
x2

c1

c1

c1

x1

x*

x12 + x22 2  0

s.t.

Figure 12.3
Problem (12.9), showing
constraint and function
gradients at various feasible
points.

0 c1 (x + s) c1 (x) + c1 (x)T s,
7/100

so, to rst order, feasibility is retained if


c (x) + c (x) s 0.
(12.19)
Ejemplo Consideremos
la siguiente variante
del ejemplo anterior:
1

In determining whether a step s exists that satises both (12.13) and (12.19), we
consider the following two cases, which are illustrated in Figure 12.4.

min. x1 C x2

Case I: Consider rst the case in which x lies strictly inside the circle, so that the strict
inequality c1 (x) > 0 holds. In this case, any step vector s satises the condition2(12.19),
provided only that its length is sufciently small. In fact, whenever f (x)  1
0, we can
obtain a step s that satises both (12.13) and (12.19) by setting

s. a 2

x22  0:

El ptimo sigue siendo


el mismo. Su regin factible es la circunferencia anterior
s  f (x),
y su interior: la superficie geomtrica plana (crculo) contenida en ella.

c1

s
x
s

El gradiente de la condicin en cualquier punto del


extremo exterior de la regin factible apunta hacia
su interior.
La condicin de ptimo rf .x  / D 1 rc1 .x  / se
satisface con 1 D 1=2, signo opuesto al del
problema anterior.

Figure 12.4 Improvement directions s from two feasible points x for the problem
(12.18) at which the constraint is active and inactive, respectively.

small step s that both retains feasibility and decreases the objective functi
The main difference between problems (12.9) and (12.18) comes in th
feasibility condition. As in (12.13), the step s improves the objective func
8/100
if f (x)T s < 0. Meanwhile, s retains feasibility if
0 c1 (x + s) c1 (x) + c1 (x)T s,
so, to rst order, feasibility is retained if
c1 (x) + c1 (x)T s 0.

Razonando como antes, cualquier x no ser ptimo si se


puede
dar
sbothal(12.13
In determining
whether
a stepun
s existspaso
that satises
consider the following two cases, which are illustrated in Figure 12.4.
Case I: y
Consider
the case in which
lies strictly inside the circle,
final del cual se conserve la factibilidad de la condicin
se rst
mejore
la xfuncin
inequality c (x) > 0 holds. In this case, any step vector s satises the
only that its length is sufciently small. In fact, whenever
objetivo. Es decir, si rf .x/T s < 0 y se cumple queprovided
obtain a step s that satises both (12.13) and (12.19) by setting
1

s  f (x),

0  c.x C s/  c.x/ C rc.x/T s:

Consideraremos dos casos segn se aprecia en la figura.

c1

s
x
s

Figure 12.4 Improvement directions s from two feasible points


(12.18) at which the constraint is active and inactive, respectively.

s  f (x),
9/100

c1

s
x
s

Figure 12.4 Improvement directions s from two feasible points x for the problem
(12.18) at which the constraint is active and inactive, respectively.

Caso 1 El punto x est estrictamente dentro de la regin factible, c1.x/ > 0.


Cualquier paso s suficientemente pequeo seguir cumpliendo esta inecuacin
(como ratifica la figura).
De hecho, supuesta rf .x/ 0, para cualquier positivo suficientemente
pequeo el paso s D rf .x/ satisface la condicin anterior y que
rf .x/T s < 0.

feasibility condition. As in (12.13), the step s improves the objective function, to rst order,
if f (x)T s < 0. Meanwhile, s retains feasibility if

Caso 2 Si x esta
o frontera de la regin factible, c1.x/ D 0.
0 c (x en
+ s) el
c (x) extremo
+ c (x) s,
Las so,condiciones
paraif mejorar la funcin objetivo sern
to rst order, feasibility is retained
1

c1 (x) + c1 (x)T s 0.

10/100

(12.19)

rf .x/ s < 0 y rc1.x/T s  0:

In determining whether a step s exists that satises both (12.13) and (12.19), we
consider the following two cases, which are illustrated in Figure 12.4.

Case I: Consider rst the case in which x lies strictly inside the circle, so that the strict

0 holds. In this case, anyun


step vector
s satises the condition
(12.19),
inequality c (x) >determina
La primera
subespacio
abierto
y la segunda uno cerrado.
provided only that its length is sufciently small. In fact, whenever f (x)  0, we can
obtain a step s that satises both (12.13) and (12.19) by setting
Cualquier
direccin en el cono que genera la interseccin de ambos, como se ve
s  f (x),
en la figura que sigue,
mejorar la funcin objetivo.
1

c1

s
x
s

Figure 12.4 Improvement directions s from two feasible points x for the problem
(12.18) at which the constraint is active and inactive, respectively.

0

3973 68
953
882!
546

2
345
67
389

78 34 78425
4 "#$%&'

Si rf .x/ y rc1.x/ apuntan en la misma direccin la interseccin es el vaco y


rf .x/ D rc1.x/;

para algn 1  0:

11/100

El signo del multiplicador es importante en este caso pues si la condicin


anterior se cumpliese con un valor negativo de 1, rf .x/ y rc1.x/ apuntaran
en direcciones opuestas y constituiran el subespacio completo.

12/100

Las condiciones de ptimo se pueden plasmar, por lo razonado para este


ejemplo, en
rx L.x ; 1 / D 0
para algn 1  0
1 c1.x / D 0:

La segunda es la de complementariedad. Plasma el hecho de que el


multiplicador de Lagrange 1 slo debe ser estrictamente positivo cuando la
condicin est activa: es decir, c1.x/ D 0.


Para el ejemplo que consideramos:


En el Caso 1 c1.x/ > 0, por lo que se requiere que 1 D 0.
La otra condicin de ptimo hace que rf .x / D 0.

En el Caso 2 la segunda condicin permite que 1 tome valores


no negativos y la primera hace rf .x/ D 1rc1.x/.

Ejemplo Consideremos una variante ms del ejemplo que estudiamos:


minimizar x1 C x2

APTER

12.

THEORY

a I N E 2D O PxT1I M I ZxA2T I
ONSTRA
O N0;
Csujeta
2

OF

La regin factible es el semicrculo de la figura.

x2  0:
p

La solucin es x  D
2; 0T : Las dos condiciones
estn activas
Desde el ptimo, cualquier direccin d a lo largo de la
cual la funcin objetivo mejore, deber cumplir que
T 12.6
Figure
rc
 0; i 2 I D f1; 2g y rf .x/T d < 0.
i .x/ d
T
LaProblem
condicin(12.24),
rci .x/illustrating
d  0, i D
the1; 2, se cumple si d
est
dentro del
cuadrante
que definen rc1 .x/ y rc2 .x/,
gradients
of the
active constraints
pero cualquier vector en l cumple que rf .x/T d  0.

c2

f
c1

and objective at the solution.

is the
vector of del
Lagrange
multipliers.
ere
(1 , 2 )T de
 La funcin
Lagrange
problema
es The extension of condition
.22) to this case is

L.x; / D f .x/

x L(x , )  0,

1c1.x/

for some 0,


2c2.x/:
(12.26)

La condicin de ptimo, rx L.x ;  / D 0 para algn   0.


0
areyrequired
to be/ nonnegative.
ere the
0 means that all components
Lainequality
de complementariedad,
1 c1.x /ofD
2 c2.x
D 0.

applying the complementarity condition (12.23) to both inequality constraints, we obtain

13/100

14/100

p
2; 0T , se tiene que
En el punto ptimo, x D
 
 p 
 
1
0
2 2
rf .x / D
; rc1.x / D
; rc2.x / D
;
1
1
0


por lo que si
"
 D

1 #
p
2 2

se cumple que rx L.x ; / D 0. Todos los coeficientes de  tambin son


positivos.


Generalizando, en el ptimo, el gradiente de la funcin objetivo est (debe


estar) en el cono que generan los vectores gradiente de las condiciones.

15/100

Ejemplo Veamos este problema


min. .x1

1/2 C .x2

4 Consideremos por ejemplo el problema

s. a

x1 2x2 
1
1/2 C .x2 1/2
2x1 x2  1;

min. .x1
s. a

cuyo ptimo es

 1 1 T
3 3

Yinyu Ye, Stanford


1 1

cuyo ptimo es 3 3 T .

1/2

x1 2x2 
2x1 x2 

1
1;

MS&E311 Lecture Note #06

17

x2

x1
18/100

Minimization
Definicin324 Un Chapter
punto11x Constrained
que satisfaga
todas Conditions
las condiciones activas se dice regular

si los vectores gradiente del conjunto de condiciones activas en ese punto, A.x/ D E [
fi 2 I W c i .x/ D 0g, son linealmente independientes.

h(x*)T

plane
Por otro lado, el plano o Tangent
subespacio
tangente, T , es
x*


T
T D v W rc i .x/ v D 0; i 2 E [ j 2h(xI) = 0W cj .x/ D 0 :
S

(a)

c(x*)T

Plano tangente

c(x) = 0

16/100

12.2.

pT A N GTE N T C O N E A N D C O N S T R A I N T Q U A L I
Consideremos ahora el punto x D 2 0 del ejemplo del semicrculo.

17/100

c2

c1

Figure 12.7
Problem (12.24), illu
the gradients of the
constraints and obje
nonoptimal point.

Las dos condiciones estn tambin activas. La direccin d D 1 0T , como


descent step. Using the same reasoning as in the earlier examples, we nd that t
muchas otras,ofcumple
que
feasible descent d must satisfy
rci .x/T d  0; i 2 I D f1; 2gT ;

rf .x/T d
< 0:
c2 (x) d 0, f (x)T d < 0.
p
La condicin rx L.x; / D 0 slo se cumple cuando  D 1=.2 2/; 1T
that
por lo que noBysenoting
cumple
la no negatividad.


18/100

En el punto x D 1 0T , en el que slo est activa la segunda condicin, una d


tal que rc2.x/T d  0 y mejore f .x/, es decir, rf .x/T d < 0, dado que
 
 
1
0
rf .x/ D
; rc2.x/ D
;
1
1
slo lo cumple d D 1=2 1=4T . No obstante, no hay un 2 tal que
rf .x/ 2rc2.x/ D 0, por lo que no se cumplen tampoco todas las
condiciones de ptimo.

Condiciones de Karush-Kuhn-Tucker


Sea x  un punto regular y mnimo local del problema


minimizar
f .x/
x 2Rn
sujeta a c i .x/ D 0;
c i .x/  0;

i 2 E;
i 2 I:

Existe un vector de multiplicadores de Lagrange, , con coeficientes i ,


i 2 E [ I, tal que se cumple que
rx L.x ; / D rf .x /

T c.x / D 0;
c i .x / D 0; para
c i .x /  0; para
i  0; para
i c i .x / D 0; para

todo
todo
todo
todo

i
i
i
i

2 E;
2 I;
2 I;
2 E [ I:

19/100

20/100

OJO CON LOS SIGNOS DE LOS MULTIPLICADORES! Si se


mantiene la coherencia con la notacin y convencin de signos adoptada para
los multiplicadores , si hubiese inecuaciones o condiciones del tipo  0, stas
se introduciran en la funcin de Lagrange tambin con signo negativo, pero las
condiciones de punto ptimo exigiran que fuesen   0.

Es por esto que en muchas publicaciones la funcin de Lagrange incorpora las


condiciones con el multiplicador precedido del signo C, pero luego exigen que si
la inecuacin es  0, el multiplicador correspondiente debe ser  0. Igualmente,
si la inecuacin es  0, su multiplicador ha de ser  0.

21/100

Condiciones de ptimo de segundo orden




Sea x  un punto regular y mnimo local del problema no lineal que estamos
estudiando y  un vector de multiplicadores de Lagrange tales que .x ; /
cumplen las condiciones de KKT. Si T es el subespacio tangente en x , para
todo z 2 T se cumple que
2
L.x ; /z  0:
z T rx

2
Si en x  la matriz rx
L.x ; / es definida positiva, ese punto es el mnimo
local nico del problema.

22/100

Algoritmos de
Programacin No Lineal
con Condiciones

Programacin Cuadrtica


23/100

Tiene como objeto el estudio de problemas de optimizacin no lineales como


1 T
minimizar
x G x C xT g
2
n
x 2R
sujeta a aTi x D bi ; i 2 E;

aTi x  bi ;

i 2 I;

donde G nn es una matriz simtrica y g, x y ai ; i 2 E [ I, vectores Rn ! R.


La Programacin Cuadrtica guarda una relacin muy estrecha con la
Programacin Lineal


Si G es definida positiva, el problema puede resolverse algebraicamente.

Si G es semidefinida positiva, el problema en convexo y puede resolverse casi


como un problema de Programacin Lineal.

24/100

Programacin Cuadrtica con condiciones de igualdad


Mtodo del subespacio imagen de la matriz A


Se trata de resolver

1 T
T
x
G
x
C
x
g
minimizar
2
x 2Rn
sujeta a Ax D b;

donde A es una matriz m  n, m  n, que supondremos de rango completo.




La funcin de Lagrange de este problema es


1
L.x; / D x T G x C x T g
2

T .Ax

b/ :

Las condiciones de punto ptimo de Karush, Kuhn y Tucker son


AT  D 0

rx L.x; / D G x C g

Ax
En forma matricial,

G A
A 0

T

x
D


25/100

b D 0:


g
:
b

Es fcilmente demostrable que si G es definida positiva y A de rango completo,


la solucin nica de este problema es
 

 1 
x
G AT
g
D
:

A 0
b
De aqu se deduce con cierta facilidad que
 1

 D AG 1A T
AG 1g C b

1
T 

A 
g .
y que x D G

Ejemplo Resolvamos

26/100

min. 3x12 C 2x1x2 C x1x3 C 2;5x22 C 2x2x3 C 2x32


s. a

8x1

3x2

3x3

x1 C x3 D 3
x2 C x3 D 0

Las diversas matrices


2
6 2
G D 42 5
1 2

y vectores son
3
2
1
25 ; g D 4
4

La solucin mediante Matlab:

3


 
8
1
0
1
3
; bD
:
35 ; A D
0 1 1
0
3

>> G=[6 2 1;2 5 2;1 2 4];


>> c=[-8;-3;-3];
>> A=[1 0 1;0 1 1];
>> b=[3;0];
>> Gm1=inv(G);
>> l=(A*Gm1*A)\(A*Gm1*c+b)
l =
3.000000000000001
-2.000000000000000
>> x=G\(A*l-c)
x =
2.000000000000000
-1.000000000000000
1.000000000000000

Con el solver de Matlab para este propsito y fmincon:


G=[6 2 1;2 5 2;1 2 4];
c=[-8;-3;-3];
A=[1 0 1;0 1 1];
b=[3;0];
x=quadprog(G,c,[],[],A,b)
Optimization terminated: relative (projected) residual
of PCG iteration <= OPTIONS.TolFun.
x =
2.000000000000000
-1.000000000000000
1.000000000000000
options=optimoptions(fmincon,Display,iter-detailed);
x = fmincon(@Q1fun,[0;0;0],[],[],A,b,[],[],[],options)
First-order
Norm of
Iter F-count
f(x) Feasibility
optimality
step
0
4
0.000000e+00
3.000e+00
2.667e+00
1
9
1.347222e+00
1.500e+00
1.117e+01
2.614e+00
2
13
-3.198427e+00
8.882e-16
2.430e+00
2.949e+00
3
17
-3.497660e+00
4.441e-16
3.369e-01
4.059e-01
4
21
-3.500000e+00
0.000e+00
1.850e-07
3.286e-02
Optimization completed: The relative first-order optimality measure, 6.165186e-08,
is less than options.TolFun = 1.000000e-06, and the relative maximum constraint
violation, 0.000000e+00, is less than options.TolCon = 1.000000e-06.
Optimization Metric
relative first-order optimality =
6.17e-08
relative max(constraint violation) =
0.00e+00
x =
2.0000
-1.0000
1.0000

TolFun =
TolCon =

Options
1e-06 (default)
1e-06 (default)

27/100

28/100

La funcin que calcula los valores de la funcin objetivo para fmincon es esta.
function f=Q1fun(x)
% Ejemplo optimizacin cuadrtica 1
f=0.5*[x(1) x(2) x(3)]*[6 2 1;2 5 2; 1 2 4]*[x(1); x(2); x(3)]+...
[x(1) x(2) x(3)]*[-8;-3;-3];
end

Si utilizamos un software disponible en Internet

29/100

OPTI Toolbox, http://www.i2c2.aut.ac.nz/Wiki/OPTI/


de Jonathan Currie, del Industrial Information & Control Centre (I 2C 2), de la
AUT University, Auckland, New Zealand, muy utilizado como plataforma
general de pruebas, la sesin de Matlab correspondiente es la que sigue.
fun = @(x) 0.5*[x(1) x(2) x(3)]*[6 2 1;2 5 2; 1 2 4]*[x(1); x(2); x(3)]+...
[x(1) x(2) x(3)]*[-8;-3;-3];
A=[1 0 1;0 1 1];
b=[3;0];
x0=[0;0;0];
[x,fval,exitflag,info] = solve(Opt,x0)
opts = optiset(solver,ipopt);
iter objective
inf_pr inf_du lg(mu)||d|| lg(rg) alpha_du alpha_pr
Opt = opti(fun,fun,eq,A,b,options,opts)
0.0 0.00e+000
- 0.00e+000
------------------------------------------------------ 0 0.0000000e+000 3.00e+000 2.67e+000
1 4.2722222e+001 4.44e-016 1.16e+001 -11.0 4.67e+000
- 1.00e+000
Nonlinear Program (NLP) Optimization
2-2.5109957e+000 0.00e+000 1.69e+000 -11.0 2.28e+000
- 1.00e+000
min f(x)
3-3.5000000e+000 0.00e+000 1.44e-009 -11.0 3.90e-001
- 1.00e+000
s.t. rl <= Ax <= ru
------------------------------------------------------ x =
2.0000
Problem Properties:
-1.0000
# Decision Variables:
3
1.0000
# Constraints:
2
fval =
# Linear Equality:
2
-3.5000
-----------------------------------------------------exitflag =
Solver Parameters:
1
Solver:
IPOPT
info =
Objective Gradient:
@(x)mklJac(prob.fun,x,1) [numdiff]
Iterations: 3
Lagrangian Hessian:
Not Supplied
FuncEvals: [1x1 struct]
Hessian Structure:
Not Supplied
Time: 0.0034
-----------------------------------------------------Algorithm: IPOPT: Interior Point NL Solver
Status: Success
Lambda: [1x1 struct]

ls
0.00e+00
1.00e+00
1.00e+00
1.00e+00

30/100

Mtodo del subespacio ncleo de la matriz A




Este mtodo se usa cuando la matriz G es semidefinida positiva.

Se supone que A 2 Rmn, n  m, es de rango completo y se utiliza una matriz


Z G Z T , la hessiana reducida.

La matriz Z la conforman los vectores de una base del subespacio ncleo de A,


ker.A/, obtenida por ejemplo a partir de1
 
 
R
R
AT D Q
D Y Z
0
0
por lo que AZ D 0, y se supone que Z G Z T es definida positiva.
1

La matriz es m  m, Q, n  n, R, m  m, Y , n  m, Z , n  .n

m/.

Generalizando la idea de PL de ordenar A D B N , se puede hacer que el


vector de dimensin n, x, se estructure en dos partes, xy y x z , tales que

31/100

x D Y xy C Z x z

donde Z es la matriz n  .n m/ que conforma una base del ker.A/ e Y ,


n  m, una base de Im.A T /. Entonces Y Z es regular.


De acuerdo con esto, Y xy es una solucin de las condiciones Ax D b y Z x z


un desplazamiento a otro punto que verifique esas condiciones (en el subespacio
ncleo de A), pues AZ D 0.

01

505

03
404

02

6079

32/100

Si sustituimos x D Y xy C Z x z en las condiciones Karush, Kuhn y Tucker del


problema de Programacin Cuadrtica, G x A T  D g, Ax D b, resulta
que
G Y xy C G Z x z A T  D g
AY xy D b

Como A es de rango m y Y Z es regular, el producto A Y Z D AY 0


tiene rango m, por lo que AY es una matriz m  m regular y xy est
perfectamente definido: xy D .AY / 1 b.

Si Y se obtuvo por factorizacin QR de A T , entonces AY D R T , por lo que


py D R T b.

33/100

Si se premultiplica la primera condicin KKT por Z T se tiene que



Z T G Z x z D Z T G Y xy Z T g:

Como la hessiana reducida Z T G Z es definida positiva, se puede factorizar por


Cholesky y determinar x z . Luego se calcula x a partir de x D Y xy C Z x z .

Para obtener el vector de multiplicadores  se premultiplica por Y T la condicin


G x A T  D g y se resuelve el sistema
.AY /T  D Y T .g C G x/ :

Ejemplo Consideremos otra vez

34/100

min. 3x12 C 2x1x2 C x1x3 C 2;5x22 C 2x2x3 C 2x32


s. a

8x1

3x2

3x3

x1 C x3 D 3
x2 C x3 D 0:

Hacindolo con Matlab a mano:

>> G=[6 2 1;2 5 2;1 2 4];


>> c=[-8;-3;-3];
>> A=[1 0 1;0 1 1];
>> b=[3;0];
>> [Q R]=qr(A)
Q =
-0.7071
0.4082
-0.5774
0
-0.8165
-0.5774
-0.7071
-0.4082
0.5774
R =
-1.4142
-0.7071
0
-1.2247
0
0
>> Y=Q(:,1:m)
Y =
-0.7071
0.4082
0
-0.8165
-0.7071
-0.4082
>> Z=Q(:,m+1:n)
Z =
-0.5774
-0.5774
0.5774
>> xy=(A*Y)\b
xy =
-2.1213
1.2247

>> xyy=R(1:m,:)\b
% alternativa
xyy =
-2.1213
1.2247
>> xz=-(Z*G*Z)\(Z*G*Y*xy+Z*c)
xz =
-6.1489e-16
>> x=Y*xy+Z*xz
x =
2.0000
-1.0000
1.0000
>> la=(A*Y)\(Y*(c+G*x))
la =
3.0000
-2.0000
>> la=R(1:m,:)\(Y*(c+G*x))
la =
3.0000
-2.0000

35/100

Con el solver de Matlab otra vez para ver :

[x fval exitflag output lambda] = quadprog(G,c,[],[],A,b)


Optimization terminated: relative (projected) residual
of PCG iteration <= OPTIONS.TolFun.
x =
2.000000000000000
-1.000000000000000
1.000000000000000
fval =
-3.500000000000000
exitflag =
1
output =
iterations: 1
constrviolation: 4.440892098500626e-016
algorithm: [1x58 char]
firstorderopt: 0
cgiterations: 1
message: [1x91 char]
lambda =
eqlin: [2x1 double]
ineqlin: []
lower: []
upper: []
lambda.eqlin
ans =
-2.999999999999999
2.000000000000000

36/100

Programacin Cuadrtica con condiciones generales




Estudiamos ahora

1 T
minimizar
x G x C gT x
2
n

x 2R

sujeta a Ax D b
Cx  d

donde A es una matriz mA  n, mA  n, que supondremos de rango completo,


C otra matriz mC  n, tambin de rango completo y mC  n.


La funcin de Lagrange de este problema es


1
L.x; y; z/ D x T G x C g T x
2

y T .Ax

b/

zT .C x

d/ :

Gx C g

37/100

Las condiciones de Karush, Kuhn y Tucker son


AT y C T z D 0
Ax b D 0
Cx d  0
z0
zi .C x d/i D 0; i D 1; : : : ; mC :

Si se introduce el vector de variables de holgura s en C x


condiciones KKT quedan as:
Gx C g

AT y C T z D 0
Ax b D 0
s Cx C d D0
si zi D 0
.z; s/  0:

d  0 las

38/100

Ahora vamos a aplicar como hacamos en PL, un procedimiento de punto


interior predictor corrector para resolver el sistema de ecuaciones f .x; y; z; s/.
Es decir, a
2
3
T
T
Gx C g A y C z
6
7
Ax b
6
7
f .x; y; z; s/ D 6
7 D 0:
s
C
x
C
d
4
5
z;s>0
SZe

La ecuacin de Newton-Raphson para resolver este sistema es


2 3
x
6 7
6y 7
J 6 7 D f .x; y; z; s/;
4 z 5
s
donde J es la matriz jacobiana del sistema de ecuaciones.

39/100

Desarrollando queda
2

G A
6
6 A 0
6
4 C 0
0
0

donde r L D g C G x A T y
rA D Ax b
rC D s C x C d
r sz D e

S Z e:

32

C 0
x
76 7
0 0 7 6y 7
76 7 D
0 I 5 4 z 5
S Z
s

rL
6 7
6 rA 7
6 7;
4r C 5
r sz

CTz

e evita que s y z se acerquen demasiado a 0.

Como en el caso predictor-corrector de PL, primero se calcula la direccin de


escalado afn, x af ; y af ; zaf ; saf , o direccin pura de Newton, o
direccin predictor, resolviendo este ltimo sistema.

40/100

Una vez calculada esta direccin, se determina una amplitud de paso af a lo


largo de la misma de tal manera que se cumpla la factibilidad de z y s, es decir,
que
z C af x af  0
s C af saf  0;
teniendo en cuenta las ideas respecto al camino central central path
expuestas en Programacin Lineal.

Luego, para seguir con la direccin corrector hay que obtener primero el
parmetro de centrado,  para aproximarse al central path.

41/100

Para ello se calcula la brecha dual, o lo que no se cumple de la condicin de


complementariedad de s y z,
sT z
D
;
mC
as como la que predeca el paso avanzado, esto es,


af
af T
af
af
s
C

s
z
C

z
;
af D
mC
hacindose por fin
D

af


3
:

42/100

La direccin corrector, con informacin de segundo orden, se calcula resolviendo


32 3
2
2
3
T
T
rL
x
G A
C 0
6
6 A 0
7
rA
y 7
0 07
76
6
6
7:
D 4
5
4
5
4 C 0
5
rC
z
0 I
0

r sz C S af Z af e

 e

Por ltimo se calcula una amplitud de paso global de la iteracin, , que cumpla
la factibilidad de s y z llegndose, mediante un ltimo parmetro de seguridad o
amortiguacin, , al nuevo punto
x kC1 y kC1 zkC1 skC1T D x k y k zk sk T C x y z sT :

La mayor cantidad de trabajo de este procedimiento est en resolver los sistemas


de ecuaciones que definen las direcciones predictor y corrector.

43/100

En este sentido, la cuarta ecuacin del sistema matricial predictor anterior es


S z C Z s D

r sz

y de ah s D

.r sz C S z/ :

Despejando en la tercera
C T x

s D

rC )

C T x

.r sz C S x/ D

por lo que
C T x


El sistema queda as
2
G
AT
4 A 0
C
0

Z 1S z D

r C C Z 1r sz :

32 3
CT
x
0 5 4y 5 D
Z 1S
z

2
4
rC

3
rL
5:
rA
Z 1r sz

rC

function [x_f, y_f, z_f, s_f, fo, k] = pcQP_gen_2(G, g, A, b, C, d, x, y, z, s)


% Resuelve el problema de Programacin Cuadrtica
% min 0.5xGx + gx
% s. a
Ax = b
A=nA x n
%
Cx >= d
C=nC x n
% mediante el mtodo predictor corrector de punto interior. Parte de (x,y,z,s)

44/100

[nA n]=size(A); [nC ncc]=size(C); e=ones(n,1);


% OJO! n==ncc
k=0 ; maxk=200; eps_L=1e-9; bc=1+max(norm(b),norm(d));
if nargin<7, s=ones(nC,1); y=ones(nA,1); z=ones(nC,1); x=sqrt(n)*ones(n,1); end
% Residuos
rL = G*x + g - A*y - C*z;
rA = -A*x + b;
rC = -C*x + s + d;
rsz = s.*z;
mu = mean(rsz);

% Se resuelve direccin corrector


rsz = rsz + ds_a.*dz_a - sigma*mu*e;
rhs = [-rL; -rA; -rC+rsz./z];
dxyz = P*(L\(D\(L\(P*rhs))));
dx = dxyz(1:length(x));
dy = dxyz(length(x)+1:length(x)+length(y));
residuo=norm([rL;rA;rC;rsz])/bc;
dz = dxyz(length(x)+length(y)+1:length(x)+length(y)+length(z));
ds = -((rsz+s.*dz)./z);
%
Clculo
de alpha
fprintf(\n
No fac.
Error
Brecha
Error);
alpha = 1;
fprintf(\n
primal
Lagrang.
dual
relati.\n);
idx_z = find(dz<0);
fprintf( Iter
A*x-b, C*x-s-d
G*x+g-A*y-C*z
z*s
total\n);if isempty(idx_z)==0, alpha = min(alpha,min(-z(idx_z)./dz(idx_z))); end
= find(ds<0);
fprintf( --------------------------------------------------------------\n); idx_s
if isempty(idx_s)==0, alpha = min(alpha,min(-s(idx_s)./ds(idx_s))); end
% Obtencin nuevo punto
tau=max(.9995,1-mu)*alpha;
% Con factor eta=0.9995
while k<=maxk & residuo>eps_L
x = x+tau*dx; y = y+tau*dy; z = z+tau*dz; s = s+tau*ds; k = k+1;
% Se resuelve el sistema para determinar direccin de Newton pura: predictor% Recalcular
residuos en nuevo punto, brecha dual e imprimir iteracin
Mat = [G
-A
-C
; ...
rL = G*x + g - A*y - C*z;
rA
=
-A*x
+ b;
-A
zeros(nA,nA) zeros(nA,nC)
; ...
rC = -C*x + s + d;
nrC=norm([rA;rC]);
-C
zeros(nC,nA) sparse(-diag(s./z))];
rsz = s.*z;
rhs = [-rL; -rA; -rC+rsz./z];
mu = mean(rsz);
residuo=norm([rL;rA;rC;rsz])/bc;
fprintf(%5i %15.2e %17.2e %13.2e %10.2e\n,k,nrC,norm(rL),mu,residuo);
[L D P] = ldl(Mat);
end
dxyz_a = P*(L\(D\(L\(P*rhs))));
x_f = x; y_f = y; z_f = z; s_f = s; fo = 0.5*x*G*x+g*x;

dx_a
= dxyz_a(1:length(x));
dy_a
= dxyz_a(length(x)+1:length(x)+length(y));
dz_a
= dxyz_a(length(x)+length(y)+1:length(x)+length(y)+length(z));
ds_a
= -((rsz+s.*dz_a)./z);
% Clculo de alpha_af
alpha_a = 1;
idx_z = find(dz_a<0);
if isempty(idx_z)==0, alpha_a = min(alpha_a,min(-z(idx_z)./dz_a(idx_z))); end
idx_s = find(ds_a<0);
if isempty(idx_s)==0, alpha_a = min(alpha_a,min(-s(idx_s)./ds_a(idx_s))); end
mu_a = ((z+alpha_a*dz_a)*(s+alpha_a*ds_a))/nC;
% Affine duality gap
sigma = (mu_a/mu)^3;
% Centering parameter

45/100

Ejemplo Resolvamos el problema


2
4
1 T 4
minimizar 2 x 0
0
sujeta a

0
1
1

Utilizamos el script anterior

8
0
15 x C x T 4 65
6
1

x1 C x2 C x3 D 3
x0

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

G=[4 0 0;0 1 -1;0 -1 1];


g=[-8;-6;-6];
A=[1 1 1];
b=3;
C=eye(3);
d=zeros(3,1);
x=[1;1;1];
y=1;
s=y;
z=x;

46/100

>> [x1 y1 z1 s1 fo k]=pcQP_gen_2(G, g, A, b, C, d, x, y, z, s)


No fac.
Error
Brecha
Error
primal
Lagrang.
dual
relati.
Iter
A*x-b, C*x-s-d
G*x+g-A*y-C*z
z*s
total
-------------------------------------------------------------1
0.00e+000
8.66e-002
4.13e-002 3.76e-002
2
3.14e-016
4.33e-005
6.75e-004 4.84e-004
3
3.33e-016
2.17e-008
3.42e-007 2.45e-007
4
2.22e-016
6.65e-015
1.17e-013 8.38e-014
x1 =
0.500000000000166
1.249999999999917
1.249999999999917
y1 =
-6.000000000000002
z1 =
1.0e-012 *
0.670272053531211
0.006169231801483
0.006169231801483
s1 =
0.500000000000166
1.249999999999917
1.249999999999917
fo =
-18.500000000000000
k =
4

47/100

Con el solver quadprog de Matlab:

>> [x fval exitflag output lambda] =quadprog(G,g,-C,d,A,b,[0;0;0])


Warning: Large-scale algorithm does not currently solve this problem
formulation,
using medium-scale algorithm instead.
> In quadprog at 293
Optimization terminated.
x =
0.500000000000001
1.249999999999999
1.249999999999999
fval =
-18.499999999999996
exitflag =
1
output =
iterations: 1
constrviolation: -0.500000000000001
algorithm: medium-scale: active-set
firstorderopt: 3.552713678800501e-015
cgiterations: []
message: Optimization terminated.
lambda =
lower: [3x1 double]
upper: [3x1 double]
eqlin: 5.999999999999998
ineqlin: [3x1 double]

Con el fmincon de Matlab:

48/100

x = fmincon(@Q2fun,[0;0;0],[],[],A,b,[],[],[],options)
First-order
Iter F-count
f(x) Feasibility
optimality
0
4
0.000000e+00
3.000e+00
1.333e+00
1
8
-1.177778e+01
0.000e+00
7.000e+00
2
12
-1.831556e+01
0.000e+00
9.448e-01
3
16
-1.850000e+01
0.000e+00
1.164e-07

Norm of
step
2.380e+00
1.873e+00
3.719e-01

Optimization completed: The relative first-order optimality measure, 1.939322e-08,


is less than options.TolFun = 1.000000e-06, and the relative maximum constraint
violation, 0.000000e+00, is less than options.TolCon = 1.000000e-06.
Optimization Metric
relative first-order optimality =
1.94e-08
relative max(constraint violation) =
0.00e+00

TolFun =
TolCon =

Options
1e-06 (default)
1e-06 (default)

x =
0.5000
1.2500
1.2500

La funcin que calcula los valores de la funcin objetivo para fmincon es esta.
function f=Q2fun(x)
% Ejemplo optimizacin cuadrtica 1
f=0.5*[x(1) x(2) x(3)]*[4 0 0;0 1 -1; 0 -1 1]*[x(1); x(2); x(3)]+...
[x(1) x(2) x(3)]*[-8;-6;-6];
end

Programacin Cuadrtica Secuencial




Volvemos al problema general de Programacin No Lineal


minimizar
f .x/
x 2Rn

sujeta a ci .x/ D 0;
ci .x/  0;

49/100

i 2 E;
i 2 I:

La idea de los mtodos SQP (Sequential Quadratic Programming ) es desarrollar


un proceso iterativo en el que en cada punto .x k ; k / se modeliza el problema
mediante uno de programacin cuadrtica
2
minimizar
fk C rfkT p C 21 pT rxx
Lk p
p2Rn

sujeta a rci .x k /T p C ci .x k / D 0;
rci .x k /T p C ci .x k /  0;
cuyo ptimo llevar a .x k C p; kC1/, el nuevo punto.

i 2 E;
i 2 I;

50/100

Dados

Un punto de partida .x 0 ; 0 / y una tolerancia de ptimo.


Hacer k
0

Repetir Hasta que se satisfaga la convergencia:


2
Calcular fk , rfk , rxx
L, ck y rck .
Resolver el subproblema cuadrtico
2
Lk p k
minimizar
fk C rfkT p k C 21 p Tk rxx
p 2Rn
sujeta a rci .x k /T p k C ci .x k / D 0; i 2 E;
rci .x k /T p k C ci .x k /  0; i 2 I;

para determinar p k y nuevo vector k .


end

Hacer x kC1 D x k C pk , kC1

k y k

kC1

Algoritmo de Programacin Cuadrtica Secuencial


SQP

SQP slo con condiciones de igualdad




51/100

Ejemplo Resolvamos el siguiente problema:


minimizar x14
sujeta a

2x24

x34

x12x22

x14 C x24 C x34

8x12 C 14x22 C 7x32

x12x32

25 D 0

56 D 0

La funcin de Lagrange es Lk D x14 2x24 x34 x12x22


1 x14 C x24 C x34 25
2 8x12 C 14x22 C 7x32 56 .

Los diversos vectores y matrices del problema son


2
6
rfk D 4

4x13

x12x32

3
2
3
2x1 x22 2x1 x32
 3

4x13 2x1 x22 2x1 x32 41 x13 162 x1
3
3
4x1 4x2 4x3
7
5
8x23 2x12 x2
8x23 2x12 x2 41 x23 282 x2
; J Lk D 4
5; Jk D
16x
28x
14x
1
2
3
3
2
3
4x3 2x1 x3 41 x3 142 x3
4x33 2x12 x3
2

2
rxx
Lk D 4

12x12

2x22

2x32 121 x12


4x1 x2
4x1 x3

162
24x22

4x1 x2
2
2x1 121 x22
0

282
12x32

4x1 x3
0
2
2x1 121 x32

3
7
5
142

Para resolverlo, utilicemos este script de Matlab.

52/100

function [xs,lmdk,fs,k] = SQP_e(faname,gname,wname,x0,lmd0)


% sqp_e.m: SQP algorithm for nonlinear problems with equality constraints
%
% faname, gname, wname: funciones para f.o., gradientes y Hessiana Lag.
% x0, initial point; lmd0; initial Lagrange multiplier;
% xs, solucin; lmdk, mult. de Lagrange; fs, funcin objetivo; k, iter
xk = x0(:);
lmdk = lmd0;
n = length(xk); p = length(lmdk);
function L = w_ejsqp1(xlmdk)
% Hessiana de f.o. y condiciones de Ejemplo SQP1
p1 = p + 1; k = 0; d = 1; ze = zeros(p,p);
x = xlmdk(1:3); lmd = xlmdk(4:5);
while d >= sqrt(eps)
x1 = x(1); x2 = x(2); x3 = x(3); lm1 = lmd(1); lm2 = lmd(2);
fk = feval(faname,xk);
w11 = -12*x1^2-2*x2^2-2*x3^2-lm1*12*x1^2-16*lm2; w12 = -4*x1*x2; w13 = -4*x1*x3;
w22 = -24*x2^2-2*x1^2-12*lm1*x2^2-28*lm2; w33 = -12*x3^2-2*x1^2-12*lm1*x3^2-14*lm2;
Gk = feval(gname,xk);
L = [w11 w12 w13; w12 w22 0; w13 0 w33];
ak = fk(2:p1); gk = Gk(:,1); Ak = Gk(:,2:p1);
xlmdk = [xk; lmdk];
Lk
= feval(wname,xlmdk);
xz
= [Lk -Ak; -Ak ze]\[Ak*lmdk-gk; ak];
d_x
= xz(1:n);
xk
= xk + d_x;
lmdk = Ak\(Lk*d_x+gk);
d = norm(d_x); k = k + 1;
El subproblema cuadrtico se resuelend
ve con el procedimiento del subespacio
disp(Vector solucin:); xs = xk
disp(Funcin objetivo:); fk = feval(faname,xs); fs = fk(1)
imagen de
para programacin cuadisp(Nmero de iteraciones:); k

drtica con condiciones de igualdad.

function z = f_ejsqp1(x)
% Funcin objetivo y condiciones de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
fk = -x1^4-2*x2^4-x3^4-x1^2*x2^2-x1^2*x3^2;
ak = [x1^4+x2^4+x3^4-25; 8*x1^2+14*x2^2+7*x3^2-56];
z = [fk; ak];
function z = g_ejsqp1(x)
% Gradientes de f.o. y condiciones de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
gk = [-4*x1^3-2*x1*x2^2-2*x1*x3^2; -8*x2^3-2*x1^2*x2; -4*x3^3-2*x1^2*x3];
Ak = [4*x1^3 4*x2^3 4*x3^3; 16*x1 28*x2 14*x3];
z = [gk Ak];

53/100

Apliqumosle los datos del problema.


>> x0=[3;1;3];
>> lmd0 = [-1 -1];
>> [xs,lmds,fs,k] = SQP_e(f_ejsqp1,g_ejsqp1,w_ejsqp1,x0,lmd0)
Vector solucin:
xs =
1.874065458268392
0.465819644836092
1.884720444741611
Funcin objetivo:
fs =
-38.284827869947819
Nmero de iteraciones:
k =
7
xs =
1.874065458268392
0.465819644836092
1.884720444741611
lmds =
-1.223463560484408
-0.274937102065629
fs =
-38.284827869947819
k =
7

54/100

Comprobemos ahora que el punto obtenido es un mnimo local.


>> A=[4*xs(1)^3 4*xs(2)^3 4*xs(3)^3; 16*xs(1) 28*xs(2) 14*xs(3)]
A =
26.327781168218593
0.404308983401344 26.779398394895583
29.985047332294279 13.042950055410584 26.386086226382556
>> kA=null(A)
kA =
-0.696840008344593
0.222860949715932
0.681723550907565
>> L = w_ejsqp1([xs;lmds])
L =
6.278649119268822 -3.491906024680684 -14.128357935929984
-3.491906024680684 -1.347992348176401
0
-14.128357935929984
0
6.350246509661261
>> kA*L*kA
ans =
20.441122695387470

Qu se hace en el cuadro?

% Jacobiana en el ptimo

% Subespacio ncleo de A

% Hessiana en el ptimo

Vamos a resolver el mismo caso con el software IPOPT, que pasa por ser el
mejor de los actualmente en el mercado para Programacin No Lineal.

Tendremos que informarle de dnde estn las funciones que calculan la funcin
objetivo, y su gradiente, si queremos, y las condiciones y los gradientes de estas.
Usaremos este pequeo programa para hacerlo.

55/100

function x = IPOPT_ejsqp1
x0=[3; 1; 3];
options.ub=[Inf;Inf;Inf];
options.lb=[-Inf;-Inf;-Inf];
options.cl = zeros(1,2);
options.cu = zeros(1,2);

% Condiciones igual a cero

options.ipopt.print_level
options.ipopt.hessian_approximation
options.ipopt.derivative_test
options.ipopt.derivative_test
funcs.objective
funcs.constraints
funcs.gradient
funcs.jacobian
funcs.jacobianstructure
funcs.hessian
funcs.hessianstructure

=
=
=
=
=
=
=

% Punto de partida
% Cotas superiores de las variables
% Cotas inferiores de las variables

=
=
=
=

5;
exact;
% Matriz Hessiana si
first-order;
second-order;

@f_ejsqp1;
% Dnde estn funciones
@const_ejsqp1;
@g_ejsqp1;
@jacobian_ejsqp1;
@() sparse(ones(2,3));
@hessian_ejsqp1;
@() sparse(tril(ones(3)));

[x info] = ipopt(x0,funcs,options);

% Se ejecuta IPOPT

end
function f = f_ejsqp1(x)
% Funcin objetivo
x1 = x(1); x2 = x(2); x3 = x(3);
f = -x1^4-2*x2^4-x3^4-x1^2*x2^2-x1^2*x3^2;
end

function g = g_ejsqp1(x)
% Gradiente de la funcin objetivo
x1 = x(1); x2 = x(2); x3 = x(3);
g = [-4*x1^3-2*x1*x2^2-2*x1*x3^2; -8*x2^3-2*x1^2*x2; -4*x3^3-2*x1^2*x3];
end
function c = const_ejsqp1(x)
% Condiciones del problema
x1 = x(1); x2 = x(2); x3 = x(3);
c = [x1^4+x2^4+x3^4-25; 8*x1^2+14*x2^2+7*x3^2-56];
end
function J = jacobian_ejsqp1(x)
% Jacobiana de las constraints
x1 = x(1); x2 = x(2); x3 = x(3);
J1 = [4*x1^3 4*x2^3 4*x3^3; 16*x1 28*x2 14*x3];
J = sparse(J1);
end
function H = hessian_ejsqp1(x, sigma, lambda)
% Matriz hessiana de f. Laplace
x1 = x(1); x2 = x(2); x3 = x(3);
w11 = -12*x1^2-2*x2^2-2*x3^2; w12 = -4*x1*x2; w13 = -4*x1*x3;
w22 = -24*x2^2-2*x1^2; w33 = -12*x3^2-2*x1^2;
H = [w11 w12 w13; w12 w22 0; w13 0 w33];
H = sigma*H+lambda(1)*[12*x1^2 0 0; 0 12*x2^2 0; 0 0 12*x3^2]+...
lambda(2)*[16 0 0; 0 28 0; 0 0 14];
H = sparse(tril(H));
end

56/100

Partiendo del mismo punto x0, Los resultados que se obtienen son los que
siguen.
>> IPOPT_ejsqp1
This is Ipopt version trunk, running with linear solver mumps.
Starting derivative checker for first derivatives.
Starting derivative checker for second derivatives.

(scaled)
Objective...............: -2.2788588017827323e+001
Dual infeasibility......: 7.4606987254810520e-013
Constraint violation....: 1.3816108750890836e-012
Complementarity.........: 0.0000000000000000e+000
Overall NLP error.......: 1.3816108750890836e-012

No errors detected by derivative checker.


Number of nonzeros in equality constraint Jacobian...:
Number of nonzeros in inequality constraint Jacobian.:
Number of nonzeros in Lagrangian Hessian.............:

6
0
6

Total number of variables............................:


variables with only lower bounds:
variables with lower and upper bounds:
variables with only upper bounds:
Total number of equality constraints.................:
Total number of inequality constraints...............:
inequality constraints with only lower bounds:
inequality constraints with lower and upper bounds:
inequality constraints with only upper bounds:

3
0
0
0
2
0
0
0
0

iter
0
1
2
3
4
5
6
7

objective
-2.5400000e+002
-9.8397946e+001
-5.1217894e+001
-3.9660992e+001
-3.8369140e+001
-3.8292391e+001
-3.8284834e+001
-3.8284828e+001

inf_pr
inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
1.38e+002 4.28e-001 -1.0 0.00e+000
- 0.00e+000 0.00e+000
4.06e+001 6.25e+000 -1.0 1.32e+000
- 1.00e+000 1.00e+000h
8.96e+000 3.08e+000 -1.0 5.83e-001
- 1.00e+000 1.00e+000h
9.26e-001 2.85e+000 -1.0 2.12e-001
- 1.00e+000 1.00e+000h
6.58e-002 2.29e-001 -1.0 5.09e-002
- 1.00e+000 1.00e+000h
5.59e-003 4.10e-003 -1.7 1.25e-002
- 1.00e+000 1.00e+000h
4.41e-006 2.80e-006 -3.8 4.07e-004
- 1.00e+000 1.00e+000h
1.49e-012 7.46e-013 -8.6 2.48e-007
- 1.00e+000 1.00e+000h

Number of Iterations....: 7

Number of
Number of
Number of
Number of
Number of
Number of
Number of
Total CPU
Total CPU

0
1
1
1
1
1
1
1

objective function evaluations


objective gradient evaluations
equality constraint evaluations
inequality constraint evaluations
equality constraint Jacobian evaluations
inequality constraint Jacobian evaluations
Lagrangian Hessian evaluations
secs in IPOPT (w/o function evaluations)
secs in NLP function evaluations

EXIT: Optimal Solution Found.


ans =
1.8741
0.4658
1.8847
>> IPOPT_ejsqp1

(unscaled)
-3.8284827869949901e+001
1.2533973858808168e-012
1.4921397450962104e-012
0.0000000000000000e+000
1.4921397450962104e-012

=
=
=
=
=
=
=
=
=

8
8
8
0
8
0
7
0.000
0.000

57/100

Vamos a resolver el mismo caso con la funcin fmincon de Matlab.

Tendremos que informarle igualmente de dnde estn las funciones que calculan
la funcin objetivo, y su gradiente si queremos, y las condiciones y los
gradientes de estas.

En este caso la funcin objetivo y su gradiente estn en fg_ejsqp1.m y las


condiciones y sus gradientes en cg_ejsqp1.m.

58/100

Estas son esas funciones.

function [fo gfo] = fg_ejsqp1(x)


% Funcin objetivo y su gradiente de Ejemplo SQP1
x1 = x(1); x2 = x(2); x3 = x(3);
fo = -x1^4-2*x2^4-x3^4-x1^2*x2^2-x1^2*x3^2;
gfo = [-4*x1^3-2*x1*x2^2-2*x1*x3^2; -8*x2^3-2*x1^2*x2; -4*x3^3-2*x1^2*x3];
end
function [c ceq cg ceqg] = cg_ejsqp1(x)
% Condiciones y gradientes de Ejemplo SQP1
x1 =
c
ceq
cg
ceqg
end

x(1); x2 = x(2); x3 = x(3);


= [];
= [x1^4+x2^4+x3^4-25; 8*x1^2+14*x2^2+7*x3^2-56];
= [];
= [4*x1^3 4*x2^3 4*x3^3; 16*x1 28*x2 14*x3];

59/100

Partiendo del mismo punto x0, Los resultados que se obtienen son los que
siguen.
>> options = optimset(Algorithm,sqp,...
Display,iter,GradObj,on,GradConstr,on...
);
>> [x fval mflag output lambda grad hessian]=fmincon(@fg_ejsqp1,[3;1;3],...
[],[],[],[],[],[],@cg_ejsqp1,options)
Norm of First-order
Iter F-count
f(x) Feasibility Steplength
step optimality
0
1 -2.540000e+002 1.380e+002
4.166e+002
1
3 -1.031438e+002 4.531e+001 1.000e+000 1.703e+000 2.546e+001
2
5 -5.555541e+001 2.211e+001 1.000e+000 1.085e+000 3.733e+001
3
7 -3.931698e+001 4.846e+000 1.000e+000 6.290e-001 2.616e+001
4
9 -3.443752e+001 3.801e-001 1.000e+000 1.880e-001 1.320e+001
5
16 -3.451286e+001 5.603e-001 2.401e-001 2.620e-001 1.133e+001
6
23 -4.743444e+001 6.339e+000 1.681e-001 7.912e-001 3.875e+000
7
25 -3.884668e+001 4.724e-001 1.000e+000 1.616e-001 2.638e+000
8
27 -3.837025e+001 6.995e-002 1.000e+000 6.153e-002 4.865e-001
9
29 -3.830612e+001 1.596e-002 1.000e+000 2.845e-002 4.268e-002
10
31 -3.828490e+001 5.415e-005 1.000e+000 1.961e-003 4.825e-003
11
33 -3.828483e+001 2.474e-009 1.000e+000 1.083e-005 3.709e-005
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
x =
1.874064803822328
-0.465819854015786
1.884721085084425
fval =
-38.284827873204847

mflag =
1
output =
iterations:
funcCount:
algorithm:
message:
constrviolation:
stepsize:
firstorderopt:
lambda =
eqlin: [0x1
eqnonlin: [2x1
ineqlin: [0x1
lower: [3x1
upper: [3x1
ineqnonlin: [0x1
grad =
-40.455060168650469
4.080648472401320
-40.018154736754951
hessian =
14.871537376429519
-4.562119880847577
-10.877223066124762

11
33
sequential quadratic programming
[1x782 char]
2.473605320574279e-009
1
3.709210533962449e-005
double]
double]
double]
double]
double]
double]

-4.562119880847577 -10.877223066124762
7.568783635756974 -0.927972279190895
-0.927972279190895 10.903957285682973

60/100

SQP slo con condiciones de desigualdad




Sigamos con SQP y apliqumosla ahora a una variante del problema en la que
slo hay condiciones de desigualdad.

Ejemplo Resolvamos este problema:



x3/2 C .x2 x4/2
1   
1
0 x1
x1 x2 4
C x1 x2 2 C 34  0
0 1 x2
0
" 11 #
  
5 3 x3
2
35
1
x

C x3 x4 13
x
0
3
4
8
2
3 5 x4

minimizar 12 .x1
sujeta a

61/100

Los diversos vectores y matrices del problema son


rfk
Jk

2
Lk
rxx

3
2
x1 x3
x4 7
6x
D 4 2
x3 x1 5
x4 x2

x1 =2 C 0;5 2x2
0
D
0
0
.5x3 C 3x4 /=4 C 11=2
2
3
1 C 1 =2
0
1
0
6
7
0
1 C 21
0
1
6
7
D 6
7
1
0
1 C 52 =4
32 =4 5
4
0
1
33 =4
1 C 52 =4

0
.3x3 C 5x4 /=4 C 13=2


y

Para resolver los subproblemas cuadrticos utilizaremos un mtodo de punto


interior primal dual un poco ms simple que el predictor-corrector que acabamos
de ver.

Este script puede resolver este tipo de problemas.


function [xs,fs,k] = SQP_ie_1(fun,x0,mu0,epsi)
% SQP algorithm for nonlinear problems with inequality constraints.
% x0, punto de partida; mu0, multiplicadores de Lagrange; epsi, tolerancia ptimo
% xs, ptimo; fs, funcin objetivo solucin; k, iteraciones
xk = x0(:); muk = mu0(:); n = length(x0); q = length(muk);
q1 = q + 1; k = 0; In = eye(n); d = 1;
while d >= epsi
[fck gAk Lk] = fun([xk;muk]);
ck = fck(2:q1);
gk = gAk(:,1);
Ak = gAk(:,2:q1);
%options = optimset(Display,off);
%[d_x,fval,exitflag,output,lambda] = quadprog(Lk,gk,-Ak,ck,[],[],[],[],[],options);
[d_x muk] = qp_path_ie(Lk,gk,Ak,-ck,zeros(n,1),epsi);
xk = xk + d_x;
d
= norm(d_x); k = k + 1;
end
disp(ptimo:); xs = xk, muk
% lambda.ineqlin si quadprod
disp(Funcin objetivo:); fck = f_ejsqp2([xs;muk]); fs = fck(1)
disp(Iteraciones:); k
function [fck gAk Lk] = f_ejsqp2(x)
% Funcin objetivo, condiciones gradientes y der_2 Lag del ejemplo sqpej_2
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4);
fk = 0.5*((x1-x3)^2+(x2-x4)^2);
ck = [-(x1^2/4+x2^2)+x1/2+0.75; -(5*x3^2+6*x3*x4+5*x4^2)/8+(11*x3+13*x4)/2-35/2];
fck = [fk; ck];
gk = [x1-x3, x2-x4, x3-x1, x4-x2];
Ak = [-x1/2+.5, -2*x2, 0, 0; 0, 0, -(5*x3+3*x4)/4+11/2, -(3*x3+5*x4)/4+13/2];
gAk = [gk Ak];
mu = x(5:6); mu1 = mu(1); mu2 = mu(2);
y11 = 1+mu1/2; y22 = 1+2*mu1; y33 = 1+5*mu2/4; y34 = 3*mu2/4;
Lk = [y11, 0, -1, 0; 0, y22, 0, -1; -1, 0, y33, y34; 0, -1, y34, y33];

62/100

63/100

El procedimiento de punto interior lo realiza este otro script

function [xs muk] = qp_path_ie(H,p,A,b,x0,epsi)


% Punto interior primal-dual path-following con partida no factible para prog. cua.
% x0, punto de partida A*x0 - b > 0;
% xs, ptimo; fs, funcin objetivo en la solucin; muk, multiplicadores en ptimo
n = length(x0); q = length(b); a_max = 1-1e-5; x = x0(:);
s = ones(q,1); mu = ones(q,1); k = 0;
rsz = s.*mu;
gap = mean(rsz);
while gap > epsi
% Proceso iterativo
rs = -A*x + b + s;
rl
= H*x + p - A*mu;
d_x = -(H + A*diag(mu./s)*A)\(A*((rsz - rs.*mu)./s) + rl); % Newton KKT.
d_s = A*d_x-rs;
d_mu = -(rsz + mu.*d_s)./s;
% Amplitud de paso
ind = find(d_s < 0); a_p=1;
if isempty(ind)==0, a_p = min(a_p,min(-s(ind)./d_s(ind)));
end
ind = find(d_mu < 0); a_d=1;
if isempty(ind)==0, a_d = min(a_d,min(-mu(ind)./d_mu(ind))); end
a_k = a_max*min([1 a_p a_d]);
% Nuevo punto
x
= x + a_k*d_x; mu = mu + a_k*d_mu; s = s+a_k*d_s;
rsz = s.*mu;
gap = mean(rsz); k = k + 1;
end
xs = x; muk = mu;

64/100

Apliqumosle los datos del problema.


>> x0=[1 0.5 2 3];
>> mu0=[1 1];
>> [xs,fs,k] = SQP_ie_1(@f_ejsqp2,x0,mu0,1e-5)
ptimo:
xs =
2.0447
0.8527
2.5449
2.4856
muk =
0.9575
1.1001
Funcin objetivo:
fs =
1.4583
Iteraciones:
k =
7
xs =
2.0447
0.8527
2.5449
2.4856
fs =
1.4583

65/100

Resolvamos el mismo problema con la funcin fmincon de Matlab.

La funcin objetivo y su gradiente estn en fg_ejsqp2.m y las condiciones y


sus gradientes en cg_ejsqp2.m.
function [fo fog] = fg_ejsqp2(x)
% Funcin objetivo y gradiente del ejemplo ejsqp2
x1 = x(1); x2 = x(2); x3 = x(3); x4 = x(4);
fo = 0.5*((x1-x3)^2+(x2-x4)^2);
fog = [x1-x3, x2-x4, x3-x1, x4-x2];
end
function [c ceq cg ceqg] = cg_ejsqp2(x)
% Funcin objetivo, condiciones gradientes y der_2 Lag del ejemplo sqpej_2
x1 =
c =
cg =
ceq
ceqg
end

x(1); x2 = x(2); x3 = x(3); x4 = x(4);


-[-(x1^2/4+x2^2)+x1/2+0.75; -(5*x3^2+6*x3*x4+5*x4^2)/8+(11*x3+13*x4)/2-35/2];
-[-x1/2+.5, -2*x2, 0, 0; 0, 0, -(5*x3+3*x4)/4+11/2, -(3*x3+5*x4)/4+13/2];
= [];
= [];

Partiendo del mismo punto x0, y con los mismos parmetros de optimizacin,
los resultados que se obtienen son los que siguen.

>> [x fval mflag output lambda grad hessian]=fmincon(@fg_ejsqp2,[1;0.5;2;3],...


[],[],[],[],[],[],@cg_ejsqp2,options)
Norm of First-order
Iter F-count
f(x) Feasibility Steplength
step optimality
0
1
3.625000e+000 0.000e+000
1.500e+000
1
3
8.841912e-001 8.125e-001 1.000e+000 1.346e+000 3.066e+000
2
5
1.292252e+000 1.222e-001 1.000e+000 5.150e-001 3.150e-001
3
7
1.455222e+000 3.965e-003 1.000e+000 9.376e-002 7.193e-002
4
10
1.456116e+000 1.796e-003 7.000e-001 4.723e-002 1.198e-002
5
12
1.458272e+000 1.488e-005 1.000e+000 6.361e-003 9.076e-004
6
14
1.458290e+000 6.578e-009 1.000e+000 1.439e-004 3.903e-005
7
16
1.458290e+000 8.607e-012 1.000e+000 6.809e-006 2.100e-007
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
x =
2.044749645910814
0.852715981057535
2.544913047857301
2.485632846451933
fval =
1.458290458968075
mflag =
1

66/100

67/100

output =
iterations:
funcCount:
algorithm:
message:
constrviolation:
stepsize:
firstorderopt:
lambda =
eqlin: [0x1
eqnonlin: [0x1
ineqlin: [0x1
lower: [4x1
upper: [4x1
ineqnonlin: [2x1
grad =
-0.500163401946486
-1.632916865394398
0.500163401946486
1.632916865394398
hessian =
1.379465461685063
-0.173824495237544
-0.999742693536608
-0.132078313168329

7
16
sequential quadratic programming
[1x782 char]
8.606670931499139e-012
1
2.099667071320255e-007
double]
double]
double]
double]
double]
double]

-0.173824495237544
2.586140075166582
0.067423868800302
-0.902783042682583

-0.999742693536608
0.067423868800302
2.367844422245836
0.727009339021801

-0.132078313168329
-0.902783042682583
0.727009339021801
1.431944391971096

SQP con condiciones de todo tipo




Tratemos por ltimo el problema general


minimizar
f .x/
x 2Rn

sujeta a ci .x/ D 0;
ci .x/  0;

68/100

i 2 E;
i 2 I:

La estrategia sigue siendo la misma, pero con tres mejoras:




Una funcin de mrito, que indique lo que mejora la funcin objetivo de un


paso a otro y cmo se van cumpliendo las condiciones.

El clculo de una amplitud de paso en la direccin calculada en el


subproblema cuadrtico.

2
La adaptacin de rxx
L en cada iteracin, no clculo de nuevo.

69/100

Las funciones de mrito, y filtros, pretenden ponderar adecuadamente en un


proceso de optimizacin el mejorar la funcin objetivo y que se cumplan las
condiciones. Hay muchas en las referencias de la literatura; la que emplearemos
aqu es
X
X
2
./ D f .x k C pk / C
ci .x k C pk /
i ci .x k C pk /
i2E

i2I

donde es un nmero suficientemente grande.




Reducir esta funcin reducir la funcin objetivo a lo largo de p y lo que no se


cumplen las condiciones de igualdad y de desigualdad (  0).

El clculo de la amplitud de paso se har mediante backtracking.

2
La adaptacin de rxx
L se har con la frmula BFGS, que conocemos.

function [xk,lak,muk,fk,k] = sqp_general_1(fn,gn,x0,p,q,epsi)


% SQP algorithm for general nonlinear programming problems
% x0, punto inicial; lmd0, mu0, multiplicadores de Lagrange; epsi, tolerancia
% xs, solucin; fs, funcin objetivo; k, iteraciones
xk
= x0(:); n = length(xk); In = eye(n); Zk = In; p1 = p + 1; muk=ones(q,1);
[fk ak ck]
= fn(xk);
[gk Aek Aik] = gn(xk);
k = 0; d = 1; beta=0.5; rho=0.01;
while d >= epsi
options = optimset(Display,off);
%[d_x,fval,exitflag,output,lambda] = quadprog(Zk,gk,-Aik,ck,-Aek,ak,[],[],zeros(n,1),options);
[d_x d_y d_z] = pcQP_gen_2(Zk, gk, Aek, -ak, Aik, -ck); % Subproblema por punto int.
alpha=1;
for kk=1:10
% Backtracking linesearch
xnew
= xk+alpha*d_x; [fkn akn ckn] = fn(xnew);
merit_old = fk+100*sum(ak.^2)-sum(ck.*muk);
merit_gra = gk+2*100*Aek*ak-Aik*muk;
merit_new = fkn+100*sum(akn.^2)-sum(ckn.*d_z);
if merit_new < merit_old+alpha*rho*merit_gra*d_x, break
else alpha=alpha*beta;
end
end
d_x = alpha*d_x; xk = xk + d_x;
[gk1 Aek1 Aik1] = gn(xk);
gama_k = (gk1-gk)-(Aek1-Aek)*d_y-(Aik1-Aik)*d_z; % Frmula BFGS
qk
= Zk*d_x; dg = d_x*gama_k; ww = d_x*qk;
if dg >= 0.2*ww, thet = 1; else thet = 0.8*ww/(ww-dg); end
eta = thet*gama_k + (1-thet)*qk;
phi = 1/ww; cta = 1/(d_x*eta);
Zk = Zk + cta*(eta*eta) - phi*(qk*qk);
% Nueva hessiana fun. de Lagrange
Aek = Aek1; Aik = Aik1; gk = gk1;
[fk ak ck] = fn(xk);
muk = d_z; lak = d_y; d = norm(d_x); k = k + 1;
end
function [fk ak ck] = f_ex15_4(x)
x1 = x(1); x2 = x(2);
fk = x1^2 + x2;
ak = x1^2 + x2^2 - 9;
ck = [x1-1; -x1+5; x2-2; -x2+4];

function [gk Aek Aik] = g_ex15_4(x)


x1 = x(1); x2 = x(2);
gk = [2*x1; 1];
Aek = [2*x1 2*x2]; Aik = [1 0; -1 0; 0 1; 0 -1];

70/100

71/100

Ejemplo Resolvamos el siguiente problema no lineal:


minimizar x12 C x2

sujeta a

x12 C x22

Ax  b
donde

1
6
6 1
AD6
4 0
0

3
0
7
07
7
15
1

9D0

1
6 7
6 57
y b D 6 7:
4 25
4

Los diversos vectores y matrices del problema son


2

72/100

2x1 2x2
 
6 1 07
2x1
6
7
07
rfk D 1
y Jk D 6 1
4 0 15
0
1

Apliquemos el programa:
>>
>>
>>
>>
xs

p=1;
q=4;
x0=[4 3];
[xs lak muk fs k]=sqp_general_1(@f_ex15_4,@g_ex15_4,x0,p,q,1.e-10)
=
1.000000000000160
2.828427124751375
lak =
0.176776695296306
muk =
1.646446609401296
0.000000000000000
0.000000000000000
0.000000000000000
fs =
3.828427124751695
k =
6

73/100

Las funciones a las que llama el script anterior para calcular la funcin
objetivo, las condiciones, gradientes y jacobianas de este ejemplo son estas.

function [fk ak ck] = f_ex15_4(x)


x1 = x(1); x2 = x(2);
fk = x1^2 + x2;
ak = x1^2 + x2^2 - 9;
ck = [x1-1; -x1+5; x2-2; -x2+4];
function [gk Aek Aik] = g_ex15_4(x)
x1 = x(1); x2 = x(2);
gk = [2*x1; 1];
Aek = [2*x1 2*x2]; Aik = [1 0; -1 0; 0 1; 0 -1];

74/100

Resolvamos el mismo problema con la funcin fmincon de Matlab.

La funcin objetivo y su gradiente estn en fg_ejsqp3.m y las condiciones y


sus gradientes en cg_ejsqp3.m.
function [fo fog] = fg_ejsqp3(x)
x1 = x(1); x2 = x(2);
fo = x1^2 + x2;
fog = [2*x1; 1];
end
function [c ceq cg ceqg] = cg_ejsqp3(x)
x1 = x(1); x2 = x(2);
c
= -[x1-1; -x1+5; x2-2; -x2+4];
ceq = x1^2 + x2^2 - 9;
ceqg = [2*x1 2*x2];
cg
= -[1 0; -1 0; 0 1; 0 -1];
end

Partiendo del mismo punto x0, y con los mismos parmetros de optimizacin,
los resultados que se obtienen son los que siguen.
>> [x fval mflag output lambda grad hessian]=fmincon(@fg_ejsqp3,[4;3],...
[],[],[],[],[],[],@cg_ejsqp3,options)
Norm of First-order
Iter F-count
f(x) Feasibility Steplength
step optimality
0
1
1.900000e+001 1.600e+001
5.000e+000
1
3
5.562500e+000 8.563e+000 1.000e+000 2.926e+000 2.313e+000
2
5
4.007813e+000 1.047e+000 1.000e+000 1.023e+000 1.010e+000
3
7
3.833776e+000 3.029e-002 1.000e+000 1.740e-001 8.322e-002
4
9
3.828432e+000 2.856e-005 1.000e+000 5.344e-003 2.051e-003
5
11
3.828427e+000 2.549e-011 1.000e+000 5.049e-006 1.816e-006
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
x =
1.000000000000000
2.828427124750697
fval =
3.828427124750697
mflag =
1
output =
iterations: 5
funcCount: 11
algorithm: sequential quadratic programming
message: [1x782 char]
constrviolation: 2.549249700223299e-011
stepsize: 1
firstorderopt: 1.816258994868925e-006
lambda =
eqlin: [0x1 double]
eqnonlin: -0.176776374224092
ineqlin: [0x1 double]
lower: [2x1 double]
upper: [2x1 double]
ineqnonlin: [4x1 double]
grad =
2
1
hessian =
7.282321097662638
0.203510246567942
0.203510246567942
0.006185913353082

75/100

76/100

Mtodos de puntos interiores




Consideraremos el problema general:


minimizar
f .x/
x 2Rn

sujeta a ci .x/ D 0;
ci .x/  0;

i 2 E;
i 2 I:

Escrito con variables de holgura:


minimizar f .x/
x ;s

sujeta a

c E .x/ D 0
c I .x/ s D 0
s  0:

77/100

Las condiciones KKT de este problema se escriben as


rf .x/

A TE .x/y

A TI .x/z D 0

Sz

e D 0

c E .x/ D 0

c I .x/

s D 0;

debiendo ser  D 0, s  0 y z  0.
Las matrices A E y A I son las jacobianas de las condiciones c E .x/ y c I .x/,
respectivamente y y y z sus multiplicadores de Lagrange. S es una matriz
diagonal cuyos coeficientes son los de s.


La segunda ecuacin, con  D 0, es la de complementariedad.

78/100

Como razonbamos en Programacin Lineal, para solventar la dificultad que


supone la no negatividad de esas variables, se introduce un  > 0 denominado
parmetro barrera que haga que S z D e a lo largo del proceso de
optimizacin, lo que permitir que s y z se mantengan estrictamente positivas.
Recalculando  de iteracin en iteracin, y haciendo que tienda a cero en el
global del proceso se acabar consiguiendo cumplir las condiciones KKT.

Si esto lo acompasamos con la mejora de una funcin de mrito que equilibre la


minimizacin de f .x/ con el que se cumplan las condiciones, esa convergencia
llevar a un mnimo local o global del problema.

A este mismo enfoque se llega si, como en Programacin lineal una vez ms, se
considera el problema barrera del original en el que la funcin objetivo es
Pm
f .x/  i D1 log si .

79/100

Si se aplica el mtodo de Newton para resolver el sistema de ecuaciones que


determinan las condiciones KKT del problema, se tiene en cada iteracin un
sistema como ste
32 3
2 2
2
3
T
T
T
T
rxx L 0

A E .x/ A I .x/

6 0 Z
6
6
4A E .x/ 0
A I .x/ I

px

76 p 7
76 s 7
76 7 D
54py 5

rf .x/

6
6
6
4

A E .x/y
Sz

c E .x/
c I .x/

pz

e
s

donde L es la funcin de Lagrange del problema


L.x; s; y; z/ D f .x/

y T c E .x/

zT .c I .x/

s/ :

A I .x/z

7
7
7;
5

80/100

Despus de obtenida la solucin de ese sistema de ecuaciones, se determina un


nuevo punto del proceso iterativo .x C; sC; y C; zC/ tal que
x C D x C smax ps ;

y C D y C zmax py ;
donde

sC D s C smax p s

zC D z C zmax p z;

smax D mKax f 2 .0; 1 W s C ps  .1

zmax D mKax f 2 .0; 1 W z C pz  .1

con  2 .0; 1/: normalmente 0;995.

 /sg ;
 /zg ;

81/100

El proceso parara cuando el error

E.x; s; y; zI / D mKax krf .x/

A TE .x/y

kc E .x/k; kc I .x/

A TI .x/zk; kS z

ek;

skg

estuviese dentro de una tolerancia adecuada.




Para facilitar la resolucin del sistema de ecuaciones anterior, la matriz se


reescribe en forma simtrica de esta manera:
3
32
3
2
2 2
T
T
T
T
rxx L

6 0

6
6
4A E .x/ 0
A I .x/

A E .x/ A I .x/

donde D S

6
7
I 7
76 ps 7
76
7D
0 54 py 5

I
1

px

Z.

pz

rf .x/

6
6
6
4

A E .x/y

S

A I .x/z

c E .x/
c I .x/

7
7
7;
5

82/100

El algoritmo bsico de punto interior para Programacin No lineal es este.

Dados Una f .x/, un punto inicial, una B 0 si es el caso, un  > 0,


unos ;  2 .0; 1/, una tol.  y  t ol

Repetir hasta que E.x; s; y; z; 0/   t ol

Repetir hasta que E.x; s; y; z; /  

Resolver sistema KKT: obtener p D .p x ; p s ; p y ; p z /


Calcular smax , zmax ; hacer p w D .p x ; p s /.

Calcular amplitudes de paso s y z que cumplan


 .x k C s p x ; sk C s p s /   .x k ; sk / C s r .x k ; sk ; p w /T p

Obtener .x kC1 ; skC1 ; y kC1 ; zkC1 /


Si cuasi Newton, adaptar B k , k
end
Hacer 
end

 y adaptar 

kC1

83/100

Aceptabilidad del paso de Newton




Uno de las cuestiones siempre presente en todos los procedimientos que


estudiamos es el dar el paso ms adecuado en la direccin de bsqueda.

En el caso del mtodo primal-dual, para calcular esa amplitud de paso, se usa
una funcin de mrito en trminos de la funcin barrera:
 .x; s/ D f .x/

m
X
iD1

log si C kc E .x/k C kc I .x/

sk;

donde las normas pueden ser a 1 o la 2 y  un parmetro que pondere el peso


del incumplimiento de los factores a los que afecta con el de los logaritmos.

84/100

En la determinacin de la amplitud de paso, una vez calculado el paso p.x; s/ y


los smax y zmax , mediante backtracking u otra estrategia similar, se calculan
s 2 .0; smax ;

z 2 .0; zmax

que proporcionen un decremento suficiente en la funcin de mrito anterior.




El nuevo paso ser


x C D x C s p s ;

y C D y C z p y ;

s C D s C s p s

z C D z C z p z :

85/100

Aproximacin cuasi Newton




2
La idea es adaptar en cada paso del proceso iterativo la matriz rxx
L mediante
una frmula adecuada: BFGS, por ejemplo, u otras.

Si es BFGS, la aproximacin B de esa matriz estara dada, de iteracin en


iteracin, por la expresin
B kC1 D B k
donde

xk D xk

xk

B k x k x Tk B k
l k l Tk
C T ;
x Tk B k x k
l k xk

l k D rx L.x k ; sk ; y k ; zk /

rx L.x k 1; sk ; y k ; zk /:

86/100

Implementacin prctica en Matlab




Vamos a implementar en Matlab un caso particular del problema:


minimizar
f .x/
x 2Rn

sujeta a c.x/  0:


El caso en el que haya adems condiciones de igualdad es esencialmente similar,


aunque complica un poco la formulacin.

87/100

Lo que sigue es una adaptacin de lo que hace el programa LOQO, uno de lo


ms afamados para resolver problemas de Programacin No Lineal de todo tipo.

Escrito con variables de holgura, el problemas es


minimizar f .x/
x ;s

sujeta a c.x/

sD0
s  0:

Su funcin de Lagrange
L.x; s; ; / D f .x/

T .c.x/

s/

T s:

88/100

Las condiciones de ptimo de KKT de este problema son estrictamente


rf .x/

A T .x/ D 0
D
c.x/ s D 0
si i D 0
s  0:

Para evitar la condicin de no negatividad del vector s se introduce esta


formulacin equivalente del problema (tradicional como vimos en PL)
X
minimizar f .x/ 
ln si
x;s

sujeta a

c.x/

s D 0;

cuya funcin de Lagrange es


L.x; s; ; / D f .x/

ln si

T .c.x/

s/ :

Sus condiciones KKT son

89/100

rf .x/

A T .x/ D 0
sD0

c.x/

S

e C  D 0;

que, si nos fijamos bien, son idnticas a las anteriores, salvo el escalar  (que no
el vector ) que es el que tiene como objetivo que las variables del vector s no
se acerquen mucho a cero.


Si a la tercera ecuacin se le multiplica por S se llega al conocido sistema


primal-dual, bsico en el algoritmo que implementamos.

Aplicndole Newton, en cada paso se resuelve el siguiente sistema


2
32
3 2
3
T
T
2
rxx
L 0

6
4 0

Ak

x k

Ak

rf .x/ C A k k

k S k 54 sk 5 D4 e S k k e
k
I 0
c k C sk

76

7
5:

90/100

La matriz de este sistema no es simtrica pero puede hacerse as:


multipliquemos la primera ecuacin por I y la segunda por S k 1:
2
32
3 2
3
T
Hk
0
A k x k
k
6
7
6
7
6
7
1
6 0
7
6
7
6
7
D
S

I
s

k
k
4
54 k 5 4 k 5 ;
Ak
I
0
k
k
donde H k D H .x; / D r 2f .x/
A k D rc.x/

 k D rf .x/
k D S k 1e
k D s k

ck:

i r 2ci .x/

A Tk k D g k
k

A Tk k

91/100

El vector k mide la no factibilidad del problema primal. Por analoga con


Programacin Lienal,  k mide lo lejos que est .x k ; k / de ser un punto
factible del problema dual.

El algoritmo procedera iterativamente a partir de la direccin


x k ; sk ; k T , supuesto que sea de descenso, obtenindose un nuevo
punto
x kC1 D x k C k x k
skC1 D sk C k sk
kC1 D k C k k

calculando para ello la amplitud de paso k que minimiza una funcin de mrito
adecuada.

92/100

La funcin de mrito que se puede usar es


;.x; s/ D f .x/

ln si C

ks
2

c.x/k22 ;

donde  cambia de iteracin en iteracin, tendiendo a cero, y es una


constante que penalice la no factibilidad del primal y que haga que la direccin
sea realmente de descenso en ;.x; s/ si el problema no es convexo.


Si el problema no es convexo, la matriz hessiana de la funcin de Lagrange del


problema hay que modificarla en cada iteracin para que sea definida positiva.
Para ello se hace
O k D H k .x k ; k / C I;
H
escogindose  a partir del valor propio ms pequeo de H k .x k ; k /.

93/100

El listado que sigue recoge todas las consideraciones que acabamos de hacer.
Esta basado en los artculos de LOQO y unos scripts suministrados por
Andreas Antoniou, Profesor de la Universidad de Victoria de Canad.

function [xk,yk,lmdk,fs,ck,k,L] = NLP_IP_nc(fcname,gname,hname,x0,y0,lmd0,tau0)


% Mtodo de punto interior para min. f(x)
%
s. a g(x) >= 0
xk = x0(:); yk = y0(:); q = length(y0); lmdk = lmd0(:);
tau = tau0; n = length(x0); E2 = eye(n); ei = 5e-4; eo = 1e-5;
q1 = q + 1; L = 0; K = 0; do = 1;
% Bucle exterior
while do >= eo,
xk0 = xk; yk0 = yk; lmdk0 = lmdk;
k = 0; di = 1;
% Bucle interior
while di >= ei,
bt = 0;
fck = feval(fcname,xk); Gk = feval(gname,xk);
fk = fck(1);
ck = fck(2:q1);
gk = Gk(:,1);
Ak = Gk(:,2:q1);
yki = 1./yk;
wwk = yki.*lmdk;
Yki = diag(yki); Lk = diag(lmdk);
xlk = [n;q;xk;lmdk];
Hk = feval(hname,xlk);
ew = min(eig(Hk));
if ew <= 0
eb = -1.2*ew + 1e-6;
Hk = Hk + eb*E2;
end
Nk = Hk + Ak*(Lk*Yki)*Ak;
R
= cholinc(sparse(Nk),inf);
Nki = R\(R\eye(n));
% Mat = [-Hk
zeros(n,q) Ak
;...
gak = tau*yki - lmdk;
%
zeros(q,n) -diag(wwk) -eye(q)
;...
rk = yk - ck;
%
Ak
-eye(q)
zeros(q)];
dx = Nki*(-gk + tau*Ak*yki + Ak*(wwk.*rk));
% [L D P] = ldl(Mat);
dL = wwk.*(rk - Ak*dx) + gak;
% rhs = [gk-Ak*lmdk; -gak; rk];
dy = Ak*dx - rk;
% [dx; dy; dL] = P*(L\(D\(L\(P*rhs))));
% Comprobar si la direccin obtenida es de descenso en funcin de mrito
ksi = gk - tau*Ak*yki;
sk = -ksi*(Nki*ksi) + tau*(yki*rk) + ksi*(Nki*Ak)*(wwk.*rk)...
-bt*norm(rk)^2;
if sk >= 0,
bmin = (sk+bt*norm(rk)^2)/(norm(rk)^2);
% bmin = sk/(norm(rk)^2);
bt
= 10*bmin;
end

94/100

% Clculo de line search en x e y


awk = max([-dy./yk; -dL./lmdk]);
ak
= 0.95/awk;
aks = lsearch_merit(fcname,xk,yk,dx,dy,ak,tau,bt);
xk
= xk + aks*dx;
yk
= yk + aks*dy;
lmdk = lmdk + aks*dL;
k = k + 1;
di = aks*(norm(dx) + norm(dy) + norm(dL));
end
% Recalcular parmetro de barrera tau.
tsi = q*min(yk.*lmdk)/(yk*lmdk);
tau = 0.1*(min([0.05*(1-tsi)/tsi,2]))^3*(yk*lmdk)/q;
K = k + K; L = L + 1;
do = norm(xk-xk0) + norm(yk-yk0) + norm(lmdk-lmdk0);
end
fck = feval(fcname,xk); fs = fck(1); k = K;
function [a psm] = lsearch_merit(fcname,xk,yk,dx,dy,ak,tau,bt)
aa = (0:0.01:1)*ak;
ps = zeros(101,1);
for i = 1:101
ai = aa(i);
xki = xk + ai*dx;
yki = yk + ai*dy;
fci = feval(fcname,xki);
fi = fci(1);
cki = fci(2:end);
yci = yki - cki;
ps(i) = fi - tau*sum(log(yki)) + 0.5*bt*(yci*yci); % F. mrito
end
[psm ind] = min(ps); a = min(1,aa(ind));

95/100

Ejemplo Resolvamos el siguiente problema no lineal de la coleccin de K.


Schittkowski:
minimizar .x1 2/2 C .x2 1/2
sujeta a

0;25x12
x1

Partiremos del punto x 0 D 2; 2T .




x22 C 1  0

2x2 C 1 D 0:

Como hay una condicin de igualdad, vamos a resolver


minimizar .x1
sujeta a

2/2 C .x2

0;25x12
x1

1/2

x22 C 1  0

2x2 C 1  0

x1 C 2x2

1  0:

Los diversos vectores y matrices del problema son:


rfk D

2 .x1
2 .x2



0;5x1
2/
; Jk D
1
1/

>>
>>
>>
>>
>>
xs

Usemos el programa:

2x2
2

y Hk D

96/100

2 C 0;51
0
:
0
2 C 21


x0=[2;2];
y1=[1;1;1];
lmd1=[1;1;1];
mu1=0.001;
[xs,yk,lmdk,fs,ck,k,L] = NLP_IP_nc(f_ex15_8,g_ex15_8,h_ex15_8,x0,y1,lmd1,mu1)
=
0.822466525719178
0.911233262859589
yk =
1.0e-003 *
0.541144176123609
0.000000000000000
0.000000000000000
lmdk =
1.0e+012 *
0.000000000000000
3.876880823233180
3.876968062445849
fs =
1.394464616674418
ck =
1.0e-003 *
0.541144176123609
0
0
k =
59
L =
3

97/100

Las functions para calcular la funcin objetivo, condiciones, gradientes,


jacobianas y hessianas son estas.

function z = f_ex15_8(x)
x1 = x(1); x2 = x(2);
ck = [-0.25*x1^2-x2^2+1; x1-2*x2+1; -x1+2*x2-1];
fk = (x1-2)^2+(x2-1)^2;
z = [fk; ck];
end
function z = g_ex15_8(x)
x1 = x(1); x2 = x(2);
Ak = [-0.5*x1, -2*x2; 1, -2; -1, 2];
gk = [2*(x1-2); 2*(x2-1)];
z = [gk, Ak];
end
function z = h_ex15_8(xlk)
lmdk = xlk(5:7);
lmd1 = lmdk(1); lmd2 = lmdk(2); lmd3 = lmdk(3);
z = [2+0.5*lmd1, 0; 0, 2+2*lmd1];
end

98/100

Vamos a resolver el mismo caso con la funcin fmincon de Matlab.

% Script de prueba de fmincon


% Resuelve el problema Ex15_8
x0=[2;2];
options = optimset(Algorithm,interior-point,...
Display,iter,GradObj,on,GradConstr,on,...
Hessian,user-supplied,HessFcn,@hess_ex158_M);
[x fval mflag output lambda grad hessian]=fmincon(@f_ex158_M,x0,...
[],[],[],[],[],[],@g_ex158_M,options)

99/100

Las funciones f_ex158_M, g_ex158_M y hess_ex158_M que proporcionan los


datos son:

function [f g] = f_ex158_M(x)
x1 = x(1); x2 = x(2);
f = (x1-2)^2+(x2-1)^2;
g = [2*(x1-2); 2*(x2-1)];
end
function [c ceq cg ceqg] = g_ex158_M(x)
x1 = x(1); x2 = x(2);
c
= 0.25*x1^2+x2^2-1;
ceq = x1-2*x2+1;
cg
= [0.5*x1; 2*x2];
ceqg = [1;-2];
end
function h = hess_ex158_M(x,lambda)
h = [2 0;0 2]+lambda.ineqnonlin(1)*[0.5 0;0 2];
end

Estos son los resultados.

100/100

>> Script_fmincon_ex158
Iter F-count
0
1
1
2
2
3
3
4
4
5
5
6
6
7

f(x)
1.000000e+000
5.198962e-001
1.280727e+000
1.498705e+000
1.416079e+000
1.393937e+000
1.393468e+000

Feasibility
4.000e+000
7.344e-001
6.368e-002
0.000e+000
0.000e+000
0.000e+000
0.000e+000

First-order
optimality
1.332e+000
6.048e-001
2.827e-001
5.490e-002
1.215e-002
2.554e-004
1.417e-006

Norm of
step
1.107e+000
4.740e-001
1.000e-001
3.685e-002
1.009e-002
2.146e-004

Local minimum found that satisfies the constraints.


Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
x =
0.822874584569342
0.911437292284671
fval =
1.393467596850670
mflag =
1
output =
iterations: 6
funcCount: 7
constrviolation: 0
stepsize: 2.146411271157580e-004
algorithm: interior-point
firstorderopt: 1.416750245231135e-006
cgiterations: 0
message: [1x782 char]
lambda =
eqlin: [0x1 double]
eqnonlin: 1.594492450496799
ineqlin: [0x1 double]
lower: [2x1 double]
upper: [2x1 double]
ineqnonlin: 1.846594194644163
grad =
-2.354250830861316
-0.177125415430658
hessian =
2.923297097322081
0
0
5.693188389288325

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Derivacin e Integracin
de funciones

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_derivacin_integracin_funciones_2016.pdf

1/59

ndice

2/59

Introduccin

Derivacin numrica de funciones

Frmulas centradas de segundo orden o superior

Extrapolacin de Richardson

Frmulas derivadas del polinomio de interpolacin de


Newton

Derivacin simblica con Matlab

Integracin de funciones


Frmulas de Newton-Cotes

Frmulas abiertas y cerradas

Mtodo de Romberg

Cuadratura de Gauss-Legendre

Cuadratura adaptativa

Introduccin


3/59

Como sabemos:
La derivada de una funcin en un punto es el valor del lmite, si existe, del
Numerical
Differentiation
cociente
incremental
de dicha funcin en el punto cuando el incremento de
la variable tiende a cero.

Differentiation is inherently sensitive, as small


perturbations in data can cause
large
f .x C h/
df .x/ changes
D lKm
f 0 .x/ D
in result
h!0
dx
h

f .x/

Es una medida de la rapidez con la que cambia el valor de dicha funcin

Differentiation is inverse of integration, which


cambie
el valor
de of
su smoothing
variable independiente.
is segn
inherently
stable
because
effect

For example, two functions shown below have


Mientras que la integracin produce un efecto
very similar definite integrals but very different

de amortiguacin de las
oscilaciones en los......datos,
la derivacin evidencia esas oscilaciones.
.....................
........... ..... .....
.................. .. .......... .....................
. .......
....... ..
.
.
.
.
.
.
.... .
..............
..............
.
.
.
.....
.....
.
.
.
.
.
.....
.
.
.
.
.
.
....
.
.........
.
.
.
........
.
....
.
.
....
.
.
.
.
.
.
.
.
.....
....
.
.
.......................................................................................................................................................................................

Las dos funciones de la figura tienen integrales


muy parecidas mientras que sus derivadas en
distintos puntos pueden diferir bastante.

4/59

La derivacin numrica evala numricamente la derivada de una funcin a partir


de valores numricos de dicha funcin, sin necesidad por tanto de conocer la
expresin analtica de dicha derivada. Es muy sensible a pequeas perturbaciones
en los datos o a la precisin de estos.

Si se necesita derivar funciones cuyos valores se conocen slo en un conjunto


dado de puntos concretos, lo ms aconsejable es ajustar alguna funcin continua
a esos puntos y derivar luego la funcin obtenida.

Si los datos presentan un cierto patrn de continuidad, se puede interpolar una


funcin.

Si se sabe que tienen ruido, lo ms probable es que se requiera una aproximacin


mediante mnimos cuadrados o splines.

Derivacin numrica de funciones




5/59

Para calcular numricamente la derivada de f W R ! R se puede considerar una


aproximacin intuitiva de su definicin:
f 0.x/ D

df .x/
f .x C h/
D lKm
h!0
dx
h

f .x/

D 

f .x C h/
h

f .x/

es decir, la lnea secante (o cuerda) en dos puntos prximos.




Geomtricamente se pueden considerar tres variantes

Geomtricamente se pueden considerar tres variantes


f(x+h)

f(x)

f 0 .x/ D

Aproximacin

x+h

f .x C h/
h

f(x)

Frmula adelantada

f(xh)

f(xh)

f(x)

xh

f .x/

f(x+h)

f 0 .x/ D

f .x/

f .x
h

Frmula atrasada

xh

h/

f 0 .x/ D

f .x C h/

x+h

f .x
2h

Frmula centrada

h/

Consideremos el desarrollo en serie de Taylor,

6/59

f 00 .x/ 2 f 000 .x/ 3


f .x C h/ D f .x/ C f .x/h C
h C
h C 
2
6
f 00 .x/ 2 f 000 .x/ 3
0
f .x h/ D f .x/ f .x/h C
h
h C 
2
6
0

Si despejamos de la primera igualdad f 0.x/ se obtiene la frmula hacia adelante


de su aproximacin:
f 0 .x/ D

f .x C h/
h

f 00 .x/
f .x C h/
h C  
2
h

f .x/

f .x/

ms un resto de primer orden: O.h/.




Si despejamos de la segunda igualdad, igualmente f 0.x/, se obtiene la frmula


hacia atrs de su aproximacin:
0

f .x/ D

f .x/

f .x
h

h/

f 00 .x/
f .x/
C
h C  
2

ms un resto tambin de primer orden: O.h/.

f .x
h

h/

7/59

Restando las dos desigualdades y despejando f 0.x/ se llega a la frmula centrada:


0

f .x/ D

f .x C h/

f .x
2h

h/

f 000 .x/ 2
f .x C h/ f .x
h C  
6
2h

h/

El resto en este caso es de segundo orden, O.h2/.




Sumando las dos desigualdades y despejando f 00.x/ se obtiene la frmula


centrada de la segunda derivada:
00

f .x/ D


f .x C h/
f .x C h/

2f .x/ C f .x
h2
2f .x/ C f .x
h2

con un resto de segundo orden, O.h2/.

f .4/ .x/ 2
h C 
12

h/
h/

En el clculo numrico de derivadas en entornos de precisin finita se cometen


errores significativos. Por ejemplo, la aproximacin de las derivadas de e x produce
estos resultados:

8/59

f .x/ D e x; x D 1

f .xCh/ f .x/
h

error

f .x/ f .x h/
h

f .xCh/ f .x h/
2h

error

f .xCh/ 2f .x/Cf .x h/
h2

1e-01
1e-02
1e-03
1e-04
1e-05
1e-06
1e-07
1e-08
1e-09
1e-10
1e-11
1e-12
1e-13
1e-14

2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046
2.718281828459046

2.858841954873879
2.731918655787080
2.719641422532781
2.718417747078483
2.718295419912308
2.718283186986525
2.718281963964841
2.718281777447373
2.718281599811689
2.718278935276429
2.718270053492232
2.718270053492233
2.713385072183882
2.664535259100375

0.140560126414833
0.013636827328035
0.001359594073736
0.000135918619438
0.000013591453263
0.000001358527479
0.000000135505795
0.000000051011673
0.000000228647357
0.000002893182616
0.000011774966813
0.000011774966813
0.004896756275163
0.053746569358670

2.586787173020957
2.704735610978304
2.716923140478667
2.718145918900738
2.718268237122956
2.718280469604650
2.718281693070423
2.718281866265215
2.718282043900898
2.718283376168528
2.718314462413217
2.718714142702083
2.722266856380883
2.753353101070388

2.722814563947418
2.718327133382692
2.718282281505724
2.718281832989611
2.718281828517632
2.718281828295587
2.718281828517632
2.718281821856294
2.718281821856293
2.718281155722479
2.718292257952725
2.718492098097158
2.717825964282383
2.708944180085382

0.004532735488372
0.000045304923646
0.000000453046678
0.000000004530565
0.000000000058586
0.000000000163458
0.000000000058586
0.000000006602752
0.000000006602752
0.000000672736567
0.000010429493679
0.000210269638112
0.000455864176663
0.009337648373664

2.720547818529218
2.718304480877620
2.718282054114951
2.718281777447373
2.718278935276430
2.717381875072532
2.708944180085381
-8.881784197001249
-444.0892098500623
-44408.92098500623
-4440892.098500623
-444089209.8500624
-88817841970.01249
-8881784197001.250

Como vimos al hablar de errores, estos disminuyen a medida que aumenta h


desde valores prximos a la precisin de la mquina, alcanzan un mnimo,
aproximadamente en h D log10.eps/=2 para la derivada adelantada y atrasada,
y luego aumentan otra vez debido a los errores de redondeo y la precisin de la
mquina en las operaciones.

9/59

Un pequeo script de Matlab para calcular esa tabla y ver grficamente la


evolucin del error es este.
% Fichero Derivadas_ex_1.m para simular derivacin de e^x
h = 1; e=exp(1);
f=fopen(Salida_derivadas_1,w);
for i=1:14
h=h/10;
der1 = (exp(1+h)-e)/h; err1=abs(der1-e); der2=(e-exp(1-h))/h;
der3 = (exp(1+h)-exp(1-h))/2/h; err2=abs(der3-e);
der4 = (exp(1+h)-2*e+exp(1-h))/(h*h);
fprintf(f,%6.0e %18.15f %18.15f %18.15f %18.15f %18.15f %18.15f %18.15f\n,...
h,e,der1,err1,der2,der3,err2,der4);
end
fclose(all);
h=0.5; R=zeros(32,3);
for i=1:32
fd=(exp(1+h)-e)/h;
cd=(exp(1+h)-exp(1-h))/(2*h);
R(i,:)=[h abs(fd-e) abs(cd-e)];
h=h/2;
end
loglog(R(:,1),R(:,2),+,R(:,1),R(:,3),or)
legend(Derivadas avanzadas,Derivadas centradas,Location,NorthWest);
xlabel(h);
ylabel(error);

10/59

El grfico de los errores de las derivadas adelantadas y centradas que produce,


para diversos h, es el de la figura.
0

10

Derivadas adelantadas
Derivadas centradas

-2

10

-4

10

error

-6

10

-8

10

-10

10

-12

10

-10

10

-9

10

-8

10

-7

10

-6

10

-5

10
h

-4

10

-3

10

-2

10

-1

10

10

11/59

Frmulas centradas de segundo orden o superior




A la ya conocida de O.h2/ vamos aadir la de cuarto orden. Se desarrollan en


serie de Taylor f .x 2h/ y f .x h/:
3

C O.h5 /
f .x C 2h/ D f .x/ C f 0 .x/2h C f 00 .x/ 4h2 C f 000 .x/ 8h3 C f .4/ .x/ 16h
4

f .x

2h/ D f .x/

f 0 .x/2h C f 00 .x/ 4h2

h/ D f .x/

f 0 .x/h C f 00 .x/ h2

f 000 .x/ 8h3 C f .4/ .x/ 16h


C O.h5 /
4
3

f .x C h/ D f .x/ C f 0 .x/h C f 00 .x/ h2 C f 000 .x/ h3 C f .4/ .x/ h4 C O.h5 /


f .x

f 000 .x/ h3 C f .4/ .x/ h4 C O.h5 /

12/59

Restando dos a dos:


f .x C 2h/

f .x C h/


f .x
f .x

2h/ D f 0 .x/4h C f 000 .x/ 16h


C O.h5 /
3

h/

D f 0 .x/2h C f 000 .x/ 2h3 C O.h5 /:

Restando a la primera diferencia la segunda multiplicada por 8


f .x C2h/

8f .x Ch/ C 8f .x h/

f .x 2h/ Df 0 .x/ .4h

16h/ C O.h5 /;

y de aqu a
f 0 .x/ D

f .x C 2h/ C 8f .x C h/ 8f .x
12h

h/ C f .x

2h/

C O.h4 /:

13/59

Otras frmulas centradas de segundo y cuarto orden son las que siguen (notacin
fk D f .x C kh/, k D 3, 2, 1, 0, 1, 2, 3).
Frmulas centradas de orden O.h2 /


f 00 .x/ 
f 000 .x/ 
f .4/ .x/ 
f 0 .x/

f1 f 1
2h
f1 2f0 Cf 1
h2
f2 2f1 C2f 1 f
2h3
f2 4f1 C6f0 4f
h4

2
1

Frmulas centradas de orden O.h4 /


f 00 .x/ 
f 000 .x/ 
f .4/ .x/ 
f 0 .x/

f2 C8f1 8f 1 Cf 2
12h
f2 C16f1 30f0 C16f 1 f 2
12h2
f3 C8f2 13f1 C13f 1 8f 2 Cf 3
8h3
f3 C12f2 39f1 C56f0 39f 1 C12f
6h4

Se pueden tambin obtener frmulas parecidas para las derivadas adelantadas y


atrasadas.

14/59

Extrapolacin de Richardson

Lewis Fry Richardson, Reino


Unido, 1881-1953.

Su idea es extrapolar el valor de f .0/ calculando el valor de f a varios pasos h


de distancia de f .0/ de cara conocer el comportamiento de esa funcin cuando
h ! 0.

Supongamos que
f .h/ D a0 C a1hp C O.hr /

segn tiende h ! 0 para algn p y r tales que r > p.




Supongamos que se conocen los valores de p y r, pero no los de a0 y a1


(precisamente f .0/ D a0 es lo que se quiere obtener). Igualmente, que se ha
calculado ya f para dos pasos h y h=q, siendo q cualquier entero positivo.

15/59

Se tendr que
f .h/ D a0 C a1hp C O.hr /
f .h=q/ D a0 C a1.h=q/p C O.hr / D a0 C a1q

p p

h C O.hr /:

ste es una sistema de dos ecuaciones lineales con dos incgnitas: a0 y a1.


Si se resuelve, se obtiene que


a0 D f .h/ C

f .h/
q

f .h=q/
r
C
O.h
/;
p
1

cuya precisin ahora es O.hr /, mejor que la anterior O.hp /, pues r > p.

16/59

Ejemplo Usaremos la extrapolacin de Richardson para mejorar la precisin


con la que se calcula la derivada de sen.x/ en x D 1.

Utilizando la frmula adelantada de derivacin se tiene que


F .h/ D a0 C a1h C O.h2/
por lo que aqu p D 1 y r D 2.

Si se usan los valores h D 0;5 y h D 0;25 (es decir q D 2), se tiene que
F .h/ D
F .h=2/ D

sen.1 C h/
h

sen.1/

sen.1;5/ sen.1/
D 0;312048
0;5

sen.1;25/ sen.1/
D 0;430055:
0;25

Extrapolated value is then given by


17/59

F (0) = a0 = F (h) +


F (h) F (h/2)
(1/2) 1

El valor extrapolado es=


entonces
2F (h/2) F (h) = 0.548061
4

El valor extrapolado es entonces

FF.h/
.h/ F
F .h=2/
.h=2/ D 2F .h=2/ F .h/ D 0;548061;
F .0/
D
a
D
F
.h/
C
0
2F .h=2/ F .h/ D 0;548061;
F .0/ D a0 D F .h/ C .1=2/ 1 D
.1=2/ 1

For comparison, correctly rounded result is given


frente
exacto
es cos.1/
0;540302.
frente al exacto
esquecos.1/
DD0;540302.
byal que
cos(1)
=
0.540302
F.

......
.
1.0 ...
.. Valor extrapolado
.. ...
.. ......
.........
..... Valores
... calculados
0.5... ......................................................
.
.
.....................
..
.
..
..
..
........................................................................................... h

0.25

0.5

21/63

57

Frmulas basadas en el polinomio de interpolacin de


Newton

18/59

Se utiliza cuando se trata de derivar una funcin de la que se conocen slo unos
datos. En especial cuando esos datos estn desigualmente espaciados.

A esos datos, .x0; f .x0//, .x1; f .x1// ; : : :, se les interpola el polinomio de


Newton
p.x/ D b0 C b1.x x0/ C b2.x x0/.x x1/
donde

b0 D f .x0/;


f .x1/
b1 D
x1

f .x0/
;
x0

b2 D

f .x2 / f .x1 /
x2 x1

x2

f .x1 / f .x0 /
x1 x0

x0

Luego se deriva el polinomio y se evala para los distintos puntos:


p 0 .x/Db1 Cb2 .x

x0 /C.x


x1 / que para xDx0 ; p 0 .x0 /Db1 Cb2 .x0

x1 /:

19/59

Las derivadas adelantadas, centradas y atrasadas, en x0 por ejemplo, se pueden


calcular haciendo en ese polinomio x1 D x0 C h y x2 D x0 C 2h. Con la
notacin abreviada,
b1 D

f1

f0
h

b2 D

f1 f0
h

f2 f1
h

2h

f0

2f1 C f2
:
h2

A partir de ah,
p 0.x0/ D b1 Cb2.x0
D

3f0 C4f1 f2
;
2h

x1 / D b 1

b2h D 2 f12hf0

f0 2f1 Cf2
h
2h2

que es la frmula adelantada.




Para x1 D x0 C h y x2 D x0 h se tendra la frmula centrada y con


x1 D x0 h y x2 D x0 2h la atrasada.

20/59

Derivacin simblica con Matlab




Con las utilidades simblicas de Matlab se pueden obtener las frmulas


simblicas de las derivadas de diversas funciones.

Por ejemplo:

>> syms x;
>> f=sin(3*x);
>> f1=diff(f)
f1 =
3*cos(3*x)
>> f2=sin(x)^7
f2 =
sin(x)^7
>> f3=diff(f2)
f3 =
7*cos(x)*sin(x)^6

21/59

Aqu se pueden ver otras formas asociadas.


% Fichero Derivada_quiver_1.m
g=@(x,y) y-x-2*x.^2-2.*x.*y-y.^2;
[x,y]=meshgrid(-2:.1:0, 1:.1:3); z=g(x,y);
figure, mesh(x,y,z)
[gx,gy]=gradient(z,0.25);
figure
cs=contour(x,y,z); clabel(cs); hold on
quiver(x,y,-gx,-gy);
hold off

-5
-3

2.8
-4
2.6
2.4
-2
2.2
2

-1

1.8
1.6
0

1
1.4
0

1.2
-1
1
-2

-1.8

-1.6

-1.4

-1.2

-1

-0.8

-0.6

-0.4

-0.2

22/59

ndice


Introduccin

Derivacin numrica de funciones

Integracin de funciones


Frmulas de Newton-Cotes

Frmulas abiertas y cerradas

Mtodo de Romberg

Cuadratura de Gauss-Legendre

Cuadratura adaptativa

Integracin de funciones


23/59

Dada una funcin f W R ! R su integral definida en a b,


I.f / D

f .x/ dx;

a
Georg Friedrich Bernhard Riemann, Alemania, 1826-1866.

se define como el lmite de las sumas de Riemann,


n
X
.xi C1 xi / f .ti /; x1 D a; xnC1 D b; xi  ti  xi C1
Rn D
i D1

cuando la particin en subintervalos de a; b se hace muy fina.




La integral de Lebesgue generaliza la nocin de la integral de Riemann para


extender el concepto de rea bajo una curva e incluir funciones discontinuas.
Henr Lon Lebesgue, Francia 1875-1941

La integracin numrica, o cuadratura, se refiere al clculo numrico de esa


integral. Es necesaria cuando:

24/59

1. La funcin f .x/ slo se conoce en punto concretos.


2. No se conoce la primitiva de la funcin f .x/.
R =2 p
R 1 x2
3. La primitiva no es calculable: 0 e dx o 0
1 C cos2.x/ dx.

4. Aunque se conozca la primitiva de la funcin, su clculo es tan costoso que es


mejor usar un mtodo aproximado o ms sencillo para calcularla.
5. Otras causas : : :

Para integrar una funcin f .x/ complicada, se puede sustituir por un polinomio
pn.x/ que interpola puntos concretos de aquella en el intervalo dado y luego se
realiza la integracin exacta de este polinomio.

Se llama grado de precisin de la frmula de integracin al mximo grado de los


polinomios que son integrados exactamente por dicha frmula.

25/59

Para calcular numricamente el valor de una integral se recurre por lo general a


un sumatorio de ciertos valores de la funcin, o de una aproximacin, en unos
puntos llamados nodos, multiplicados por unos coeficientes de ponderacin
denominados pesos:

f .x/ dx D

n
i

wi f .xi /:

iD1

Esta sustitucin supone cambiar un sumatorio infinito (la integral) por un


sumatorio finito, por lo que se producir un error de truncamiento.

Frmulas de Newton-Cotes


Roger Cotes, Inglaterra, 16821716.

26/59

Obtenidas a partir del polinomio de interpolacin de Newton de la funcin a


integrar con argumentos igualmente espaciados (frmula de diferencias finitas).
Regla del trapecio
pol. primer grado

Regla de Simpson
pol. segundo grado

Regla de Simpson 83
pol. tercer grado

Regla de Boole
pol. cuarto grado

x1

x0

f .x/dx 

h
.f0 C f1 /
2

error D

h3 00
f ./
12

f .x/dx 

h
.f0 C 4f1 C f2 /
3

error D

h5 .4/
f ./
90

f .x/dx 

3h
.f0 C 3f1 C 3f2 C f3 /
8

error D

3h5 .4/
f ./
80

f .x/dx 

2h
.7f0 C 32f1 C 12f2 C 32f3 C 7f4 / error D
45

x1

x0

x1

x0

x1

x0

donde fk indica f .x0 C kh/.

8h7 .6
f ./
945

El clculo de los errores de las restantes frmulas de New


Frmula compuesta
del trapecio
es bastante
laborioso y no se incluye en estas trasparenci
Interpretacin grfica de la regla trapezoidal y las dos reg
 Resulta de aplicar
la regla o frmula del trapecio polinomio de primer grado
Simpson:

27/59

a los m subintervalos en el que se divide el original a; b.

m
l
i

f .x/ dxD

i D1

xi

xi

f .x/ dx 

h
h
.f0 Cf1 / C    C .fm 1 Cfm /
2
2

h
D .f0 C 2f1 C 2f2 C    C 2fm
2

C fm / :

Frmulas abiertas y cerradas

28/59

El error que se comete es

0
f .x/ dx D

hB
@
2

m
i

1
.fi

C
C fi /A

a
12

h2 f 00 ./:

iD1

Pongamos todo en un script de Matlab para

Z
0

1
dx.
.1 C x/

function T = trapezrule(f,a,b,m)
% Integracin trapecio compuesto
x = linspace(a,b,m+1);
T = (f(a)+f(b))/2;
for i = 1:m-1
T = T + f(x(i+1));
end
T = T*(b-a)/m;
end

% subintervalos
% comienzo y final
% interior intervalo
% multiplica por h

function f = intfun_1(x)
% Funcin que se integra
f = 1./(1+x);
end

29/59

Hagamos sobre la marcha alguna prueba. El valor exacto es ln.2/.


>> for k=0:8
disp(trapezrule(@intfun_1,0,1,2^k))
end
0.750000000000000
0.708333333333333
0.697023809523809
0.694121850371850
0.693391202207527
0.693208208269249
0.693162438883403
0.693150995228108
0.693148134232443
>> log(2)
ans =
0.693147180559945

de Newton-Cotes (4/4)
Distancia entre puntos h=(ba)/2M
k

ETSII-UPM

30/59

los
errorescompuesta
de las restantes
frmulas de Newton-Cotes
Thomas Simpson, Inglaterra,
Frmula
del Simpson
borioso y no se incluye en estas trasparencias. 1710-1761.
n grfica de la regla trapezoidal y las dos reglas de
 Sigue
estrategia
la frmula del trapecio, pero ajustando una parbola
Error
de la
la misma
regla de
Simpsondecompuesta:
a tres puntos de cada subintervalo.

Interpretacin geomtrica:

Si a; b se subdivide en m intervalos, habr 2m C 1 puntos de abscisas


xi D a C ih, i D 0; 1; : : : ; 2m. La distancia entre los puntos ser
h D .b a/=2m.

31/59

La integral es
l

m l
i

f .x/ dxD

i D1

xi

f .x/ dx 

xi 1

h
.f0 C4f1 Cf2/ C
3

h
h
C .f2 C4f3 Cf4/ C    C .f2m 2 C4f2m 1 Cf2m/
3
3
h
D .f0 C 4f1 C 2f2 C 4f3 C 2f4    C 2f2m
3

El error que se comete,


0

f .x/ dx D

m
i

hB
@
3

i D1

C 4f2m

C f2m/ :

1
.f2i

C 4f2i

C
C f2i /A

b a 4 .4/
h f ./:
180

32/59

Hagmoslo en Matlab para

Z
0

1
dx.
1Cx

function I = simpson_1(f,a,b,n)
% Integracin de f en [a,b] con la regla de Simpson en n+1
%
puntos igualmente espaciados
h = (b-a)/n;
xi = a:h:b;
I = (h/3)*(f(xi(1))+2*sum(f(xi(3:2:end-2)))+4*sum(f(xi(2:2:end)))+f(xi(end)));
end

function f = intfun_1(x)
% Funcin que se integra
f = 1./(1+x);
end

33/59

Si lo probamos:
>> for k=0:8
disp(simpsons(@intfun_1,0,1,2^k))
end
1.166666666666667
0.694444444444444
0.693253968253968
0.693154530654531
0.693147652819419
0.693147210289823
0.693147182421455
0.693147180676343
0.693147180567221
>> log(2)
ans =
0.693147180559945

La precisin es apreciablemente superior.

cepto de frmula de integracin abierta

Se llama abierta a una frmula de integracin numrica que no evala la


uncin
integrando
en uno o y
en cerradas
los dos extremos del intervalo.
Frmulas
abiertas
Las frmulas abiertas son tiles cuando no se conoce la funcin en un extremo
tiene un valor infinito (integrales impropias).
 Se llama abierta a una frmula de integracin numrica que no evala la funcin
Un caso de gran inters prctico son las frmulas de Adams, que utilizan n
integrando en uno o en los dos extremos del intervalo.
untos, pero slo desean calcular la integral en el ltimo tramo (ver figuras)

34/59

Newton-Cotes abierta

NewtonCotes cerrada

on-Cotes

ms Las frmulas abiertas son tiles cuando no se conoce la funcin en un extremo o
tiene un valor infinito (integrales impropias).

35/59

La regla del punto medio, aplicable a funciones cuya segunda derivada es


continua en a; b, es muy til en estos casos.
l

x0

x1

h3 00
f .x/ dx D hf .w/ C f .c/;
24

donde h D .x1 x0/, w es el punto medio, es decir x0 C h=2 y c est entre x0


y x1. Su versin compuesta es
1
0
l

B
f .x/ dx D h @

m
i
i D1

C .b
f .wi /A C

a/h2 00
f .c/:
24

Ejemplo Aproximemos
compuesta; m D 10.

sen.x/
dx con la regla del punto medio
x

Los puntos medios son 0;05, 0;15; : : : ; 0;95 y la formula dara lo que sigue:
1
!
10
X
f .x/ dx  0;1
f .mi / D 0;94620858:
0

No est mal; la cifra correcta con 15 dgitos es


>> syms x;
>> f = sin(x)/x
f =
sin(x)/x
>> F = int(f, x)
F =
sinint(x)
>> int(f, x, 0, 1)
ans =
sinint(1)
>> format long
>> sinint(1)
ans =
0.946083070367183

0;946083070367183.

36/59

37/59

Otra regla til aplicable a las frmulas de Newton-Cotes es


x4

x0


4h
2f .x1/
f .x/ dx D
3

donde h D .x4
x0 < c < x 4 .



14h5 .4/
f .x2/ C 2f .x3/ C
f .c/;
45

x0/=4, x1 D x0 C h, x2 D x0 C 2h, x3 D x0 C 3h y

Existen bastantes otras, por ejemplo,

x6



6h
41h7 .6/
f .x/ dx D
11f .x1 / 14f .x2 /C26f .x3 / 14f .x4 /C11f .x5 / C
f .c/;
20
140

x0

donde x0 < c < x6.

uncin integrando en uno o en los dos extremos del intervalo.


Las frmulas abiertas son tiles cuando no se conoce la funcin en un extremo
o tiene un valor infinito (integrales impropias).
Un caso de gran inters prctico son lasJohn
frmulas
de Adams, que utilizan n
Couch Adams, Reino
puntos, pero slo desean calcular la integral
el ltimo tramo (ver figuras)
Unido, en
1819-1892.

38/59

Un caso de apreciable inters prctico son las frmulas de Adams que utilizan n
on-Cotes
puntos, pero slo desean calcular la integral en el ltimo tramo (como se aprecia
en la figura).


ms

Adams abierta

Adams cerrada

39/59

Mtodo de Romberg

Werner Romberg, Alemania,


1909-2003.

Est basado en la extrapolacin de Richardson. Permite mejorar recursivamente la


aproximacin de las frmulas compuestas con poco trabajo adicional.

Se divide a; b en un nmero de subintervalos potencia de 2: 1, 2, 4, 8; : : : y se


calculan las integrales con la frmula del trapecio.
Los resultados se denominan R11, R21, R31; : : : Ri1.

A partir de estas integrales, mediante extrapolacin de Richardson, se calculan


otras R22, R32; : : : ; Ri2, de error menor: O.h4/.

40/59

Por ejemplo, si se desea trabajar con i D 4, y el valor de la funcin en


f .a/ D f1, f2, f3, f4, f5, f6, f7, f8, f9 D f .b/, se tendr que
R11 D

b a
2

R21 D

h2
2

.f .a/ C f .b// D

h1
2

.f1 C f9/
 h2
f .a/ C f .b/ C 2f aCb
D 2 .f1 C 2f5 C f9/
2

1
R
2 11

C h2f5

R31 D

h3
.f1
2

C 2f3 C 2f5 C 2f7 C f9/

D
R41 D
D

1
R
2 21
h4
2

C h3 .f3 C f7/

f1 C 2f2 C 2f3 C 2f4 C 2f5 C 2f6 C 2f7 C f9

1
R
2 31

C h4 .f2 C f4 C f6 C f8/

41/59

Las extrapolaciones que se hacen son, a partir de Richardson,


22R21 R11
R22 D
3
22R31 R21
R32 D
3
22R41 R31
R42 D
3

Con una frmula de recurrencia para cada coeficiente j k, k > 1,


Rj k

4k 1Rj;k
D
4k

1
1

Rj
1

1;k 1

42/59

Al final se llega a una tabla general


R11
R21 R22
R31 R32 R33
R41 R42 R43 R44
:::
:::

43/59

Este programa implementa el mtodo de Romberg.


function R = romberg(f, a, b, n)
% Calcula una integral definida en el intervalo [a,b] mediante la
%
tabla de n filas segn la frmula de Romberg
R = zeros(n,n);
h = (b-a)./(2.^(0:n-1));
R(1,1) = (b-a)*(f(a)+f(b))/2;
for i = 2:n
subtotal = 0;
for j=1:2^(i-2)
subtotal = subtotal + f(a+(2*j-1)*h(i));
end
R(i,1) = R(i-1,1)/2+h(i)*subtotal;
for k=2:i
R(i,k) = (4^(k-1)*R(i,k-1)-R(i-1,k-1))/(4^(k-1)-1);
end
end
end

Si lo probamos para integrar la funcin

ln.x/ dx se tiene
1

>> romberg(@log,1,2,4)
ans =
0.346573590279973
0
0
0
0.376019349194069
0.385834602165434
0
0
0.383699509409442
0.386259562814567
0.386287893524509
0
0.385643909952095
0.386292043466313
0.386294208843096
0.386294309086248
>> 2*log(2)-1
ans =
0.386294361119891
>> format short e
>> romberg(@log,1,2,5)
ans =
3.4657e-001
0
0
0
0
3.7602e-001 3.8583e-001
0
0
0
3.8370e-001 3.8626e-001 3.8629e-001
0
0
3.8564e-001 3.8629e-001 3.8629e-001 3.8629e-001
0
3.8613e-001 3.8629e-001 3.8629e-001 3.8629e-001 3.8629e-001
>> 2*log(2)-1-ans(5,5)
ans =
1.8772e-010
>> syms x;
>> f = log(x)
f =
log(x)
>> F = int(f, x)
F =
x*(log(x) - 1)
>> int(f, x, 1, 2)
ans =
log(4) - 1
>> format long
>> log(4)-1
ans =
0.386294361119891

% Comprobacin del resultado numrico

% Hagamos todo de forma simblica

% Primitiva de la integral

44/59

Mtodo
Gauss-Legendre
Cuadratura
dede
Gauss-Legendre

(1/6) Andrien-Marie

45/59

Legendre,
Francia, 1752-1833.
ETSII-UPM

Caractersticas del mtodo de Gauss-Legendre

Se permite variar la posicin de los nodos para mejorar el orden del mtodo.
Se trabaja en un intervalo de integracin normalizado [1, 1].
 En este procedimiento
se permite variar la posicin de los nodos para mejorar la
Con n puntos de integracin y n pesos por determinar se pueden satisfacer 2n
precisin delcondiciones,
resultado.como por ejemplo integrar exactamente las 2n primeras potencias
de x (desde x0 a x2n1). Con esto el mtodo ser de orden 2n1 pues integrar
exactamente cualquier polinomio de dicho grado.
cmo
se puedeuna
obtener
mejor
aproximacin con slo
Las
 En la figura
se siguientes
muestrafiguras
cmomuestran
se puede
obtener
mejor
aproximacin
con dos nodos haciendo que no sean los extremos del intervalo.

dos nodos haciendo que no sean los extremos del intervalo.

-1

-1

Se trabaja en un intervalo de integracin normalizado: 1; 1.

46/59

La frmula general de la cuadratura de Gauss-Legendre es

f .x/ dx 

n
i

ci f .xi /;

i D1

donde los nodos, xi , son las races de los polinomios de Legendre de grado n en
el intervalo 1; 1.


Los coeficientes, o pesos, ci , estn tabulados para integrar exactamente


polinomios de hasta grado 2n 1.

Con n puntos de integracin, y n pesos por determinar, se pueden satisfacer 2n


condiciones, como por ejemplo integrar exactamente las 2n primeras potencias de
x, desde x 0 a x 2n 1. Con esto el mtodo ser de orden 2n 1 de precisin pues
integrar exactamente cualquier polinomio de dicho grado.

47/59

n
2

15C2 30
q 35p
2 30
- 15 35
q
p
15 2 30
q 35p
15C2 30
35

p
- 1=3
p
1=3
p
- 3=5
0
p
3=5
q
p

nodos xi
= -0,57735026918963
= 0,57735026918963
= -0,77459666924148
= 0,00000000000000
= -0,77459666924148
= -0,86113631159405
= -0,33998104358486
= 0,33998104358486
= 0,86113631159405
-0,93246951420315
-0,66120938646626
-0,23861918608320
0,23861918608320
0,66120938646626
0,93246951420315

coeficientes ci
1
= 1,00000000000000
1
= 1,00000000000000
5=9 = 1,55555555555555
8=9 = 1,88888888888888
5=9 = 1,55555555555555

p
90 5 3
180
p
90C5 3
180
p
90C5 3
180
p
90 5 3
180

= 0,34785484513745
= 0,65214515486255
= 0,65214515486255
= 0,34785484513745
0,17132449237917
0,36076157304814
0,46791393457269
0,46791393457269
0,36076157304814
0,17132449237917

Nodos y pesos, n D 2; : : : 5, para la cuadratura de Gauss-Legendre

48/59

Ejemplo Aproximemos la integral

x2
2

dx

usando cuadratura de Gauss-Legendre.




El valor exacto con 14 dgitos es

1,71124878378430.

>> format long


>> syms x;
>> f = exp(-x^2/2)
f =
exp(-x^2/2)
>> int(f, x, -1, 1)
ans =
2^(1/2)*pi^(1/2)*erf(2^(1/2)/2)
>> double(ans)
ans =
1.711248783784298

49/59

Con dos nodos, la aproximacin es


l

e
1

x2
2

dx  c1 f .x1 / C c2 f .x2 / D 1  f .

Con tres nodos 59 f .

3/5/ C 9 f .0/ C 9 f .

1/3/ C 1  f .

3/5/

1/3/

 1,69296344978123:

 1,71202024520191.

Con cuatro c1f .x1/ C c2f .x2/ C c3f .x3/ C c4f .x4/  1,71122450459949:

50/59

Para calcular en a; b los n nodos y pesos de Gauss-Legendre.


function [x,w]=lgwt(N,a,b)
%
% Calcula los N nodos y pesos de Gauss-Legendre en el intervalo [a,b]
%
para el clculo de integrales definidas.
% Si se quiere calcular la integral de f(x) es ese intervalo
%
calcular el valor de f(x) en todos los puntos del vector x.
%
La integral es sum(f.*w);
N=N-1; N1=N+1; N2=N+2; xu=linspace(-1,1,N1);
y =cos((2*(0:N)+1)*pi/(2*N+2))+(0.27/N1)*sin(pi*xu*N/N2);
L =zeros(N1,N2);
% Legendre-Gauss Vandermonde Matrix
Lp=zeros(N1,N2);
% Derivative of LGVM
% Calcular ceros del Polinomio de Legendre de orden N+1
% mediate Newton-Raphson
y0=2;
while max(abs(y-y0))>eps
% Tolerancia de nuevos puntos: eps
L(:,1) =1; Lp(:,1)=0;
L(:,2) =y; Lp(:,2)=1;
for k=2:N1
L(:,k+1)=((2*k-1)*y.*L(:,k)-(k-1)*L(:,k-1))/k;
end
Lp = (N2)*( L(:,N1)-y.*L(:,N2) )./(1-y.^2);
y0 = y; y = y0-L(:,N2)./Lp;
end
x=(a*(1-y)+b*(1+y))/2;
% Pasar de [-1,1] to [a,b]
w=(b-a)./((1-y.^2).*Lp.^2)*(N2/N1)^2; % Clculos de pesos
end

51/59

Calculemos la integral del ejemplo anterior,

x2
2

dx.

>> [x,w]=lgwt(6,-1,1);
>> f=exp(-(x.^2)/2);
>> sum(f.*w)
ans =
1.711248771041351

Con 8 nodos y con la rutina de integracin quad de Matlab:


>> [x,w]=lgwt(8,-1,1);
>> sum(exp(-(x.^2)/2).*w)
ans =
1.711248783780728
>> quad(exp(-(x.^2)/2),-1,1,1.e-14)
ans =
1.711248783784298

Para aproximar una integral en un intervalo cualquiera a; b se tiene que


0
1
b
n


i
.b a/ zi C .b C a/ C
b aB
ci f
f .x/ dx 
@
A:
2
2
a

52/59

iD1

Aproximemos por ejemplo la integral


l

ln.x/ dx

usando cuadratura de Gauss-Legendre. De la ecuacin anterior,


l 2
l 1 

zC3 1
ln.x/ dx D
ln
dz:
2
2
1
1
Con cuatro nodos, la aproximacin es 0,38629449693871.
Comparada con la exacta, 2 ln 2 1, es decir 0,38629436111989, no est nada mal.

53/59

Integrales mltiples


La cuadratura de Gauss se puede utilizar para realizar integrales mltiples


aplicndola sucesivamente a cada una de las variables, como por ejemplo:
Z 1Z 1
Z 1
Z 1X
n
n
X

ci f .i ; / d D ci f .i ; / d
f .; / d d D
1

1 i D1

i D1

n
n
n X
n
X
X
X
D
ci
cj f .i ; j / D
ci cj f .i ; j /:
iD1

j D1

iD1 j D1

54/59

Cuadratura adaptativa


La idea es utilizar una tctica divide y vencers subdividiendo el intervalo de


integracin segn los tramos de variabilidad de la funcin.

Se comienza dividiendo a; b en dos subintervalos iguales y se utilizaR la frmula


b
de Simpson con h D .b a/=2 para calcular una aproximacin I1  a f .x/dx.
Rm

Se hace lo mismo con h=2 para obtener IL 


donde m D .a C b/=2.

Luego, por extrapolacin de Richardson, se calcula I2 D IL C IR e


I3 D I2 C I215I1 .

f .x/dx y IR 

Rb
m

f .x/dx,

55/59

Si recordamos los errores que se cometan con la frmula de Simpson,


Z b
h
h5 .4/
f .c0/;
f .x/dx D .f0 C 4f1 C f2/
3
90
a
para dos subintervalos
Z b
f .x/dx D IL
a

h5 f .4/ .c1 /
32 90

D IL C IR

C IR

h5 f .4/ .c2 /
32 90

h5 f .4/ .c3 /
:
16 90

Restando este resultado de la expresin anterior queda


I1

.IL C IR / D h5 f


.4/ .c

0/

90

15 3 f .4/ .c3 /
h 90 :
16

h5 f .4/ .c3 /
16 90

56/59

Como el error de I1 .IL C IR / es 15 veces el de la aproximacin IL C IR de la


integral, se comprueba si

I1 .IL C IR / < 15  t ol
y si no lo es, se dividen los dos subintervalos a; m y m; b en dos cada uno
hasta que se llegue a la precisin adecuada.

57/59

Pasemos a Matlab esta forma de operar.

function [q fnct] = quadadapt(f,a,b,tol)


% Evalua la integral de f(x) en [a,b]
global fnct
% Veces que se evala la funcin
if nargin<4 || isempty(tol), tol=1.e-6; end
fnct = 0;
c = (a+b)/2;
fa = f(a);
fc = f(c);
fb = f(b);
fnct = fnct+3;
q = quadstep(f,a,b,tol,fa,fc,fb);
end

function q = quadstep(f,a,b,tol,fa,fc,fb)
% Subfunction recurrente de quadadapt
global fnct
h = b-a; c = (a+b)/2;
fd = f((a+c)/2);
fe = f((c+b)/2);
fnct = fnct+2;
q1 = h/6 * (fa+4*fc+fb);
q2 = h/12 * (fa+4*fd+2*fc+4*fe+fb);
if abs(q2-q1) <= tol
q = q2+(q2-q1)/15;
else
qa = quadstep(f,a,c,tol,fa,fd,fc);
qb = quadstep(f,c,b,tol,fc,fe,fb);
q = qa + qb;
end
end

Si lo utilizamos para integrar

2


2
7

58/59

 
1
3
sen
C dx, se obtiene esto:
x
2
sin(1/x)+3/2

>> f1_Heath_2=@(x)sin(1./x)+3/2;
>> [q fnct]=quadadapt(f1_Heath_2,2/(7*pi),2/pi,1.e-14)
q =
0.984511912667507
fnct =
3949
%% Comprobacin con cuadratura adaptativa de Simpson de MATLAB
>> [q2 fnct1]=quad(f1_Heath_2,2/(7*pi),2/pi,1.e-14)
q2 =
0.984511912667507
fnct1 =
2069
%% Cuadratura adaptativa de Lobatto de MATLAB
>> [q2 fnct1]=quadl(f1_Heath_2,2/(7*pi),2/pi,1.e-14)
q2 =
0.984511912667507
fnct1 =
1308

2.5

1.5

0.5
0.1

0.15

0.2

0.25

0.3

0.35
x

0.4

0.45

0.5

0.55

0.6

El nmero de veces que se evala la funcin es sensiblemente diferente con los


mtodos probados.

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Integracin de

Ecuaciones Diferenciales Ordinarias

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_integracin ODE_2016.pdf

1/62

2/62

ndice


Introduccin

Integracin numrica de ecuaciones diferenciales ordinarias


(ODEs)


Mtodo de Euler

Mejoras en el mtodo de Euler

Mtodo de Taylor

Mtodos de Runge-Kutta

Mtodos implcitos y problemas stiff

Introduccin


3/62

Una ecuacin diferencial se define en la forma explcita as:

dy
D y 0 D f .t; y/;
dt

siendo y.0/ D y0:

El orden de una ecuacin diferencial es el de su mxima derivada.

Las ecuaciones diferenciales relacionan las variables de un problema a escala


diferencial, en la cual son independientes de las condiciones de contorno
(geometra, condiciones iniciales; : : :)

Son el denominador comn de la abstraccin de una amplia familia de


problemas de ingeniera en los que se estudia cmo y por qu varia en el tiempo
el comportamiento de sistemas fsicos, econmicos, sociales, etc.

4/62

Ejemplo La ecuacin logstica, o funcin logstica,


y 0 D cy.1

y/

modeliza el crecimiento del tamao de una poblacin, que es proporcional al


tamao actual, y, y a la capacidad remanente (funcin de los recursos
disponibles).


Esta ecuacin diferencial tiene infinitas soluciones. Si se le especifica una


condicin de partida, inmediatamente se identifica qu solucin de esas infinitas
se tiene.

Para poder integrar una ecuacin diferencial es necesario definir las condiciones
de contorno.

5/62

Un problema de valor inicial es el que define la ecuacin diferencial y una


condicin, o valor inicial, en un intervalo a  t  b. En conjunto,
8
0

< y D f .t; y/

y.a/ D y

: t 2 a; b:

Resulta til pensar en la evolucin de una ecuacin diferencial en el tiempo


como la de un cuerpo dentro de un campo de fuerzas o de pendientes (como el
de la figura, referida a la ecuacin logstica).
y = 5*y*(1-y)

y = 5*y*(1-y)

1,2

1,2

0,8

0,8

En el lado derecho se
han dibujado, en el mismo campo de fuerzas, las
dos soluciones que corresponden a y.0/ D 0;2 y
y.0/ D 1;26.

0,6

0,6
y

y
0,4

0,4

0,2

0,2

-0,2

-0,2

-0,4

-0,4
0

0,2

0,4

0,6

0,8

1,2
t

1,4

1,6

1,8

2,2

0,2

0,4

0,6

0,8

1,2
t

1,4

1,6

1,8

2,2

6/62

Tipos de ecuaciones diferenciales:


Ecuaciones diferenciales ordinarias EDO De primer orden: una
variable dependiente y una variable independiente. Problemas de valor inicial
y problemas de contorno.
Sistemas de ecuaciones diferenciales N variables dependientes
relacionadas por N ecuaciones diferenciales.
Ecuaciones en derivadas parciales Una variable dependiente y varias
variables independientes. Problemas elpticos, parablicos e hiperblicos.

7/62

Integracin numrica de EDO u ODE




Slo se pueden integrar analticamente algunas ecuaciones diferenciales.

La integracin numrica permite resolver con precisin y rapidez un gran


nmero de problemas prcticos.

La integracin numrica no obtiene una funcin analtica y.t / que satisface la


ecuacin diferencial anterior, sino un conjunto de valores discretos yk que se
corresponden con otros tantos, tk , de la variable independiente t.

8/62

Si se desean resultados para otros valores de t se pueden utilizar los mtodos de


interpolacin vistos previamente.

Conocida la funcin yi en el instante ti los integradores numricos calculan el


valor yi C1 en ti C1 D ti C h mediante una expresin del tipo
yi C1 D yi C h;
donde  es un trmino que incorpora informacin de la derivada y 0.

9/62

Los mtodos de integracin numrica que veremos se clasifican en:


De paso simple y paso mltiple Los de paso simple calculan la solucin
yi C1 en el instante ti C1 a partir del valor de la funcin yi en el instante ti .
Por ejemplo, en el mtodo de Euler
yi C1 D yi C f .ti ; yi /h:
 Los mtodos de paso mltiple calculan la solucin yi C1 en ti C1 a partir del

valor de la funcin y en los instantes ti , ti 1; : : : ; ti nC1. Por ejemplo, en el


mtodo de Heun

h
yiC1 D yi C f .ti ; yi / C f ti C1; yi C hf .ti ; yi / :
2

10/62

Mtodos explcitos e implcitos Los mtodos explcitos permiten hallar


yi C1 directamente sin tener que resolver un sistema de ecuaciones no
lineales.
Por ejemplo, Runge-Kutta de orden dos
yiC1 D yi C .a1k1 C a2k2/ h;
donde
k1 D f .ti ; yi /
k2 D f .ti C p1h; yi C q11k1h/:
 Los mtodos implcitos necesitan resolver un sistema de ecuaciones no

lineales pues yi C1 aparece a ambos lados de la ecuacin.


Por ejemplo, la regla trapezoidal
yi C1


1
D yi C f .ti ; yi / C f .ti C1; yiC1/ h:
2

11/62

Mtodo de Euler

Formulado por Leonhard Euler, Basilea 1707San Petersburgo 1783.

Sigue la idea intuitiva de la geometra de los grficos de los campos de fuerzas o


pendientes.
Por qu no resolver una ecuacin diferencial siguiendo las flechas, partiendo
de un punto inicial?

Desde el punto de arranque hay que moverse una pequea distancia, siguiendo
una pendiente, llegndose a un nuevo punto .t1; y1/ en el que se revala la
pendiente, luego hay que moverse con esa nueva pendiente otro poco, etc.

La aproximacin ser buena si la pendiente no cambia mucho sbitamente.

12/62

Si por ejemplo se trata de resolver


8
0
3

< y D ty C t

y.0/ D y

: t 2 0; 1;

que discurre en el campo de fuerzas de la figura, con la solucin exacta


partiendo de y.0/ D 1.
y = t*y+t
2

1,8

1,6

1,4

1,2

0,8

0,6

0,4

0,2

0
0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

13/62

La relacin general de recurrencia del mtodo de Euler la define


yiC1 D yi C f .ti ; yi /h
en la que f .ti ; yi / es la pendiente en cada punto su derivada y h el paso que
se da con esa inclinacin.

Si usamos Euler en el ejemplo, con h D 0;1, resulta la lnea en rojo.


y = t*y+t
2

1,8

1,6

1,4

1,2

0,8

0,6

0,4

0,2

0
0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

Es muy fcil de aplicar aunque no muy preciso, pues la derivada en


(ti, yi) no es suficientemente representativa del paso h.

LaInterpretacin
interpretacin geomtrica
de lo que sucede es esta:
geomtrica:

14/62

HUURU

YDORUH[DFWR
YDORUDSUR[LPDGR

yi+1= yi+f(ti ,yi)h


h

yi
ti

ti+1

Se producen errores de truncamiento en cada punto, por retener slo dos


trminos en el desarrollo de Taylor, y en el total, as como de redondeo en los
clculos del proceso. El global es O.h/.

15/62

Si ensayamos todo esto en un script de Matlab, puede resultar este:


% Script del mtodo de Euler con Matlab, Euler_2_S.m
% y(t)=t*y+t^3; solucin analtica exacta y(t)=3*exp^(t^2/2)-t^2-2
h = 0.1; h1 = 0.01
t = 0:h:1; t1 = 0:h1:1;
yx(1)=1.0; yx1(1)=1.0

% Pasos de integracin h=0,1 y h=0,01


% Punto de partida

for i=1:length(t)-1
k1 = t(i)*yx(i)+t(i)^3;
yx(i+1) = yx(i)+h*k1;
end
for i=1:length(t1)-1
k11 = t1(i)*yx1(i)+t1(i)^3;
yx1(i+1) = yx1(i)+h1*k11;
end
y=3*exp(t.^2/2)-t.^2-2;

% Bucle del proceso de integracin


% Nuevo punto: valor de y
% Bucle del proceso de integracin
% Nuevo punto: valor de y

% Solucin exacta

% Grficos
plot(t,yx,b--,t,y,r-,t1,yx1,k--);
legend(Aproximacin h=0,1,Exacto y,aproximacin h=0,01);
title(Paso de Euler, h=0,1 y h=0,01);
xlabel(t);
ylabel(y*(t), y(t)); axis([0 1 0.95 2]);
% Tabla
for i=1:length(t)
disp(sprintf(t=%5.3f,
end

y(t)=%6.4f,

y*(t)=%6.4f,t(i),y(i),yx(i)));

16/62

Con pasos h D 0;1 y h D 0;01 se obtiene lo que sigue.


Paso de Euler, h=0,1 y h=0,01
2
Aproximacin h=0,1
Exacto y
aproximacin h=0,01

1.9
1.8
1.7

y*(t)=1.0000
y*(t)=1.0000
y*(t)=1.0101
y*(t)=1.0311
y*(t)=1.0647
y*(t)=1.1137
y*(t)=1.1819
y*(t)=1.2744
y*(t)=1.3979
y*(t)=1.5610
y*(t)=1.7744

1.6
y*(t), y(t)

>> Euler_2_S
t=0.000, y(t)=1.0000,
t=0.100, y(t)=1.0050,
t=0.200, y(t)=1.0206,
t=0.300, y(t)=1.0481,
t=0.400, y(t)=1.0899,
t=0.500, y(t)=1.1494,
t=0.600, y(t)=1.2317,
t=0.700, y(t)=1.3429,
t=0.800, y(t)=1.4914,
t=0.900, y(t)=1.6879,
t=1.000, y(t)=1.9462,

1.5
1.4
1.3
1.2
1.1
1
0

0.1

0.2

0.3

0.4

0.5
t

0.6

0.7

Con el paso de integracin h D 0;1 los errores son apreciables.

0.8

0.9

Mejoras del mtodo de Euler

17/62

Mtodo de Heun

Formulado por Karl Heun, Alemania, 1859-1929.

Su idea es utilizar en .ti ; yi / un valor promedio de la derivada en ese punto y en


.ti C1; yiC1/.

Como no se conoce el valor yi C1, se calcula con el mtodo de Euler,


yiC1 D yi C hf .ti ; yi /.

El nuevo valor de yi C1 ser


yi C1 D yi C


h
f .ti ; yi / C f .tiC1; yiC1/ :
2

18/62

El mtodo se conoce como predictor-corrector. El error es O.h3/.

Una variante, denominada mtodo del trapezoide, consiste en hacer iterar el


yi C1, en cada nuevo paso, de acuerdo
con la frmula


j

yi C1 D yi C

h
2

j 1

f .ti ; yi / C f ti C1 ; yiC1

j
j 1
hasta que se cumpla una tolerancia de yi C1 yi C1 .

Ejemplo Integremos la ecuacin y 0 D 4e 0;8t 0;5y en el intervalo t D 0; 4


de tal forma que en t D 0, y D 2. El paso ha de ser h D 1. Lo haremos con el
mtodo de Euler y con el de Heun, sin y con iteracin (trapezoide). En Matlab:

19/62

function [t,yx,y,y_h,y_hi] = Heun_4(dydt,tspan,y0,h,es,maxit)


% Mtodo de Heun para integrar una ODE
% dydt: funcin que evala la ODE; tspan: intervalos de clculo
% y0: punto de partida; h: paso; es: tolerancia de iteracin corrector
% maxit: mximo de iteraciones; yx: valor exacto; y: valor con Euler
% y_h: valor con Heun sin itera.; y_hi: con iteracin
if nargin<6, maxit = 50; end; if nargin<5, es = 0.0001; end
ti = tspan(1); tf = tspan(2); t = (ti:h:tf); n = length(t);
if t(n)<tf, t(n+1)=tf; n=n+1; end
% Por si acaso, un intervalo ms en t
y = y0*ones(n,1); y_h = y; y_hi = y;
% Inicializar valores
yx = 4/1.3*(exp(0.8*t)-exp(-0.5*t))+2*exp(-0.5*t); % Valor exacto
for i = 1:n-1
hh = t(i+1) - t(i); iter = 0;
k1 = dydt(t(i),y(i)); k2 = dydt(t(i),y_h(i)); k3 = dydt(t(i),y_hi(i));
y(i+1)
= y(i)
+ k1*hh;
y_h(i+1) = y_h(i) + hh/2*(k2+dydt(t(i+1),y_h(i)+hh*k2));
y_hi(i+1) = y_hi(i)+ k3*hh;
while 1
yold= y_hi(i+1); k2 = dydt(t(i+1),y_hi(i+1));
y_hi(i+1) = y_hi(i) + (k3+k2)*hh/2;
iter = iter + 1;
if y_hi(i+1)~=0, ea = abs((y_hi(i+1)-yold)/y_hi(i+1))*100; end
if ea<=es || iter>=maxit, break, end
end
end

% Derivadas
% Euler
% Heun sin iteracin

% Heun con iteracin

plot(t,yx,b--,t,y,r-,t,y_h,k--,t,y_hi,:); xlabel(t); ylabel(y);


title(Solucin de y=4e^{(0.8t)}-0.5y); grid on
legend(Exacto,Euler,Heun,Heun con it.,Location,NorthWest);

function dp = dpdt_Heun_c(t, p)
dp = 4*exp(0.8*t)-0.5*p;

20/62

El resultado es este.
Solucin de y'=4e(0.8t)-0.5y
90
Exacto
Euler
Heun
Heun con it.

80

70

60

>> [t,yx,y,y_h,y_hi]=Heun_4(@dpdt_Heun_c,[0 4],2,1);


>> [t,yx,y,y_h,y_hi]
ans =
0
2.0000
2.0000
2.0000
2.0000
1.0000
6.1946
5.0000
6.7011
6.3609
2.0000
14.8439
11.4022
16.3198
15.3022
3.0000
33.6772
25.5132
37.1992
34.7433
4.0000
75.3390
56.8493
83.3378
77.7351

50
y

40

30

20

10

0.5

1.5

2
t

2.5

3.5

21/62

Mtodo del punto medio




En vez de utilizar el promedio de las derivadas en los puntos .ti ; yi / y


.ti C1; yiC1/, se utiliza una aproximacin de la derivada en el punto medio:


h
h
yi0 C 1 D f ti C ; yi C1=2 ;
yi C1=2 D yi C f .ti ; yi /;
2
2
2
por lo que


yi C1 D yi C hf ti C1=2; yi C1=2 :


Este procedimiento se conoce tambin como Euler corregido. Est relacionado


con el mtodo de integracin de Newton-Cotes.

El error que produce es O.h2/.

22/62

Mtodo de Taylor

Basado en su desarrollo en serie, formulado en 1715 por Brook Taylor, Reino


Unido, 1685-1731: El original parece debe al escocs James Gregory, 1638-1675.

Si se desarrolla en serie de Taylor y.t / en el punto ti , suponiendo que y.t / tiene


derivadas continuas hasta orden n C 1, se tiene que
2

y.ti C1/ D y.ti / C hy 0.ti / C h2 y 00.ti / C h3 y 000.ti / C    C hn y .n/.ti / C O.hnC1/:




Si f es derivable,
y 0 D f .t; y/
y 00 D f 0 D f t C fy  y 0 D f t C fy  f
y 000 D f 00 D f t t C 2f ty  f C fyy  f 2 C f t  fy C fy2  f
::
:

23/62

Sustituyendo estas expresiones en el desarrollo en serie se obtiene el mtodo de


Taylor del orden de precisin que se desee.

Su gran inconveniente es que las derivadas de orden superior a uno en este


caso sera el mtodo de Euler pueden ser muy complicadas de calcular.

24/62

Mtodos de Runge-Kutta

Son una familia de mtodos desarrollados a partir del trabajo de los alemanes
Carl David Tolm Runge, 1856-1927, y Martin Wilhelm Kutta 1867-1944.

Consiguen la precisin del mtodo de Taylor sin necesidad de calcular derivadas


de orden elevado.

El avance se realiza mediante una expresin general


yi C1 D yi C h;

con  D a1k1 C a2k2 C    C ankn;

y donde los coeficientes ai son unos pesos de aproximaciones ki de las distintas


derivadas por medio de la funcin f .t; y/ evaluada en distintos puntos.

25/62

Los valores de las ki se obtienen mediante las frmulas


k1 D f .ti ; yi /

k2 D f ti Cp1h; yi Cq11k1h

k3 D f ti Cp2h; yi Cq21k1hCq22k2h
:::
kn D f ti Cpnh; yi Cqn 1;1k1hCqn 1;2k2hC   C qn

1;n


1 kn 1 h :

Cada valor de ki depende de los ks ya calculados, por lo que la evaluacin de


estas frmulas es sencilla si se conocen los coeficientes.

Los ps y qs son coeficientes numricos que se calculan imponiendo la condicin


de que el error sea del mismo orden que en el mtodo de Taylor de orden similar.

26/62

Deduccin de las frmulas de Runge-Kutta de orden 2




Son


yi C1 D yi C a1k1 Ca2k2 h;
donde
k1 D f .ti ; yi /  fi
k2 D f .ti Cp1h; yi Cq11k1h/:

El mtodo de Taylor, reteniendo trminos hasta orden dos, establece que


yi C1


h2 00
h2
f ti C fyi  fi :
D yi C hy .ti / C y .ti / D yi C hfi C
2
2
0

27/62

Desarrollando en serie las frmulas de Runge-Kutta se tiene que




yiC1 D yi C.a1k1 Ca2k2/h D yi C a1f .ti ; yi /Ca2f .ti Cp1h; yi Cq11k1h/ h



D yi Ca1fi h C a2 fi Cf ti p1hCfyi fi q11k1h h:


Comparando las dos expresiones se llega a estas tres ecuaciones con cuatro
incgnitas:
1
1
y a2q11 D :
a1 C a2 D 1;
a2p1 D
2
2

Dando valores a a2 se obtienen distintas frmulas de Runge-Kutta de orden 2


(con error local de truncamiento O.h3/).
1.- a2 D

1
2

28/62

! p1 D q11 D 1: Mtodo de Heun



yi C1 D y1 C h2 k1 C k2
k1 D f .ti ; yi /
k2 D f .ti C h; yi C k1 h/:

2.- a2 D 1 ! p1 D q11 D 1=2: Mtodo del Punto Medio


yi C1 D y1 C k2 h
k1 D f .ti ; yi /
k2 D f .ti C h=2; yi C k1 h=2/:

3.- a2 D 2=3 ! p1 D q11 D 3=4: Mtodo de Ralston



yiC1 D y1 C h2 13 k1 C 23 k2
k1 D f .ti ; yi /
k2 D f .ti C 34 h; yi C 34 k1 h/:

Anthony Ralston,
EE.UU.
1930-.

Frmulas de Runge-Kutta de orden superior a 2




Orden 3, con error O.h4/:


D
D
D
D

yi C1
k1
k2
k3

29/62

h
6

y1 C k1 C 4k2 C k3
f .ti ; yi /

f ti C 12 h; yi C 21 hk1
f .ti C h; yi k1h C 2k2h/ :

Orden 4, con error O.h5/:


yiC1 D y1 C h6 k1 C 2k2 C 2k3 C k4
k1 D f .ti ; yi /

k2 D f ti C 21 h; yi C 21 hk1

1
1
k3 D f ti C 2 h; yi C 2 hk2
k4

D f .ti C h; yi C k3h/ :

Kutta de orden 4 (clsico, error local O(h5))

l mtodo de integracin de EDOs ms utilizado.


Interpretacin
La interpretacin geomtrica
de la frmulageomtrica
de orden 4 es la esta.

k4


k2
k1
yi

k3

yi+1
k4

Cada una de las ks representa una pendiente. El resultado es una media


ponderada de esas pendientes.

30/62

31/62

Orden 5, Butcher, con error O.h6/:


h
.7k1 C 32k3 C 12k4 C 32k5 C 7k6/
yi C1 D y1 C 90
k1 D f .ti ; yi /

k2 D f ti C 41 h; yi C 41 hk1

1
1
1
k3 D f ti C 4 h; yi C 8 hk1 C 8 hk2

k4 D f ti C 12 h; yi 12 hk2 C hk3

3
3
9
k5 D f ti C 4 h; yi C 16 hk1 C 16 hk4

k6

D f ti C h; yi

3
hk1
7

C 27 hk2 C 12
hk3
7

12
hk4
7


C 87 hk5 :

Para aumentar en una unidad el orden del Runge-Kutta clsico de orden cuatro
hacen falta dos evaluaciones de funcin adicionales.

En general no se suelen utilizar frmulas de Runge-Kutta de orden muy elevado


porque el aumento de precisin no compensa el trabajo adicional.

32/62

Ejemplo de recapitulacin



Vamos a integrar la ODE y 0 D y 1t 2t , empleando Euler, Heun,
Runge-Kutta y la rutina de Matlab ode45 muy habitual para estos
problemas, que usa Runge-Kutta con una precisin alta.

La condicin de partida es que y 0 D 0, en t D 0.

La frmula analtica de este problema no se conoce, por lo que se suple con la


integracin numrica.

Este es el script que lo lleva a cabo.

33/62

function test_ode45_1(relerr,abserr)
% Comparacin de mtodos explcitos para igual evaluaciones de f
clear all, close all
ecdif=@ec04;
tspan=[0,2];

% ecuacin diferencial a integrar: en ec04.m


y0=0;
h=.25;

% Diversos mtodos con mismas llamadas a f


[T1,Y1]=eulere(ecdif,tspan,y0,h/4);
% Euler
[T2,Y2]=heun(ecdif,tspan,y0,h/2);
% Heun
[T3,Y3]=rk4(ecdif,tspan,y0,h);
% Runge-Kutta orden 4
options = odeset(RelTol,1.e-9,AbsTol,1.e-12);
[T4,Y4]=ode45(ecdif,tspan,y0,options); % Exacto: R-K de Matlab
plot(T1,Y1,:r);
axis([tspan(1), tspan(2), 0, .6]);
xlabel(tiempo); ylabel(y);
hold on;
grid
plot(T2,Y2,--g);
plot(T3,Y3,-.b);

function [T,Y]=heun(f,tspan,y0,h)
% Mtodo de Heun
n=(tspan(2)-tspan(1))/h+1;
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
y=y0; t=tspan(1);
for i=2:n
t1=t+h;
yp=f(t,y);
% predictor con Euler explcito
y1=y+h*yp;
y1n=y+h*(yp+f(t1,y1))/2; % corrector con la regla trapezoidal
T(i,:)=t1; Y(i,:)=y1n;
% tiempo valor de la funcin
t=t1; y=y1;
% se actualizan t e y
end, end

% intervalos de ejes

plot(T4,Y4,-k);

function yprima=ec04(t,y)
% solucin exacta desconocida
if t==0, yprima=1; else yprima=y*(-2*t+1/t);
end

end

function [T,Y]=eulere(f,tspan,y0,h) % Mtodo de Euler


n=fix((tspan(2)-tspan(1))/h+1);
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
y=y0; t=tspan(1);
for i=2:n
y1=y+h*f(t,y); t1=t+h;
% Frmula de Euler
T(i,:)=t1; Y(i,:)=y1;
% tiempo valor de la funcin
t=t1; y=y1;
% se actualizan t e y
end, end

function [T,Y]=rk4(f,tspan,y0,h)
% Runge-Kutta orden 4
n=fix((tspan(2)-tspan(1))/h+1);
T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));
y=y0; t=tspan(1);
for i=2:n
t1=t+h;
k1=h*f(t,y);
% clculo de los coeficientes k
k2=h*f(t+h/2,y+k1/2);
k3=h*f(t+h/2,y+k2/2);
k4=h*f(t+h,y+k3);
y1=y+(k1+2*k2+2*k3+k4)/6;
T(i,:)=t1; Y(i,:)=y1;
% tiempo valor de la funcin
t=t1; y=y1;
% se actualizan t e y
end, end
end

34/62

Este es el resultado:
Solucin de y'=y(1/t-2t)
Euler
Heun
rk4
ode45

0.5

0.4

0.3

0.2

0.1

0.2

0.4

0.6

0.8

1
tiempo

1.2

1.4

1.6

1.8

35/62

Mtodos Runge-Kutta de paso variable




Hasta ahora hemos supuesto que h era fijo. En un intervalo de integracin


0; T , sin embargo, puede haber subintervalos de mayor o menor variacin de la
funcin y.t / que conviene tratar con ms detalle, con pasos mayores o ms
pequeos, segn que la dificultad (o el error) sea menor o mayor.

Para cambiar el paso, con un coste razonable de tiempo de clculo, es necesario


estimar la magnitud del error local de truncamiento, lo cual puede hacerse con
dos frmulas de distinto orden o utilizando dos pasos diferentes: h y h=2,
habitualmente.

Los mtodos de Runge-Kutta de paso variable, tambin denominados


embebidos, o encajados, resuelven el problema dos veces usando los pasos h y
h=2, y comparan los resultados

36/62

Mtodo Runge-Kutta-Fehlberg


Su nombre viene de Runge, Kutta y Erwin Fehlberg, Alemania, 1911, EE.UU.,


1990.

Usa frmulas Runge-Kutta de orden 4 y 5 respectivamente, concretamente,


k1 D hf .ti ; yi /
k2 D hf ti C 41 h; y1 C 14 k1
k3 D hf ti C 38 h; y1 C
k4 D hf ti C

12
h; y1
32

k5 D hf ti C h; y1 C
k6 D hf ti C 21 h; y1

3
k
32 1

1932
k
2197 1

439
k
216 1

25
k
216 1

1408
k
2565 3

zi C1 D yi C

16
k
135 1

6656
k
12825 3

7200
k
2197 2

8k2 C

8
k
27 1

yi C1 D yi C

9
k
32 2

C 2k2

2197
k
4104 4

28561
k
56430 4

7296
k
2197 3

3680
k
513 3
3544
k
2565 3
1
k
5 5

845
k
4104 4

1859
k
4104 4

11
k
40 5

9
k
50 5

2
k
55 6

37/62

La estimacin del error que se comete en el paso es


1

128
2197
1
2

ei C1 D jzi C1 yi C1j D h 360 k1 4275 k3 75240 k4 C 50 k5 C 55 k6.

Para una tolerancia del error, T ol y un paso inicial h, se calculan para empezar
y1, z1 y e1. Si se cumple que
ei
< T ol;
jyi j
en este caso para i D 1, el valor de z1 sustituye a y1 y se procede al siguiente
paso. Si no se cumple esa relacin, se ensaya con

h D 0;8

T oljyi j
ei

 15

y se vuelven a calcular los parmetros del paso.

hi

38/62

La rutina de Matlab ode45 usa una variante de este mtodo de 1980,


denominada de Dormand-Prince por sus autores, cuyas frmulas son
k1 D hf .ti ; yi /
k2 D hf ti C 15 h; y1 C 15 k1
k3 D hf ti C

3
h; y1
10

3
k
40 1

k4 D hf ti C 45 h; y1 C

44
k
45 1

k5 D hf ti C 89 h; y1 C

19372
k
6561 1

zi C1 D yi C

35
k
384 1

56
k
15 2

9017
k
3168 1

k6 D hf ti C h; y1 C

500
k
1113 3

9
k
40 2

32
k
9 3

25360
k
2187 2
355
k
33 2

125
k
192 4

64448
k
6561 3

46732
k
5247 3

2187
k
6784 5

212
k
729 4

49
k
176 4

11
k
84 6

5103
k
18656 5

k7 D hf .ti C h; zi C1 /
yi C1 D yi C

5179
k
57600 1

7571
k
16695 3

393
k
640 4

92097
k
339200 5

187
k
2100 6


C 14 k7 :

39/62

La estimacin del error que se comete en el paso es


71
71
71
k3 C 1920
k4
eiC1 D jziC1 yi C1j D h 57600 k1 16695

17253
k
339200 5

22
k
525 6

1
k .
40 7

No es necesario calcular yiC1, slo ei C1.




Si se cumplen las tolerancias, zi C1 ser el nuevo punto y k1 ser k7, por lo que
no se desperdician clculos.

40/62

Mtodos implcitos y problemas rgidos o stiff




En los mtodos explcitos una frmula determina explcitamente una nueva


aproximacin yiC1 a partir de datos de h, ti y yi .

Hay un tipo de problemas, denominados stiff rgidos, para los que los mtodos
explcitos evolucionan mal hacia la solucin.

Son aquellos que convergen relativamente rpido hacia una solucin estable pero
que tienen componentes transitorios importantes con un decaimiento o
amortiguacin mucho ms rpido.

Suelen modelizar procesos fsicos con varios componentes con escalas de tiempo
dispares. El intervalo de tiempo con el que se les estudia puede ser bueno para
uno de ellos pero no para todos.

41/62

Estudiemos por ejemplo la ecuacin diferencial



0
2
y D y t C 2t;
t > 0;

y0 D y.0/;

cuya solucin analtica es


y.t / D y0e

C t 2:

Si es un nmero real grande, la solucin vara rpidamente hasta que el


componente exponencial se desvanece o amortigua.

A partir de entonces prevalece el componente polinmico de variacin lenta.

En la figura se observa lo apuntado. La lnea continua azul es la solucin de la


ecuacin, la discontinua verde el componente exponencial es la que se
desvanece antes. La roja corresponde al componente polinmico de variacin en
el tiempo mucho ms lenta.

42/62

1.4

0.9
1.2
0.8
1

0.7

0.6

0.8

0.5

0.6
0.4

0.3

0.4

0.2
0.2
0.1
0

0.1

0.2

0.3

0.4

0.5
t

0.6

0.7

0.8

0.9

0.1

0.2

0.3

0.4

0.5
t

0.6

0.7

0.8

0.9

Figure 2.2.2: Euler solution (dash-dot) due to a perturbation (dashed) of =


introduced at time = 0 4.
y

(solid)

Stiness not only depends on the dierential equation under consideration, but the in-

Si se introduce una pequea perturbacin


t 2of absolute
en stability
t Dof a numerical
0;4, la
terval ofdel
interest,componente
the accuracy criteria, and the region
method. For nonlinear systems
solucin exacta se restablece enseguida. En cambio, ely mtodo
de Euler
= f ( y)
producira, con un h D 2, una perturbacin
se ira
stiness will importante
be related to the magnitudes que
of the eigenvalues
of the Jacobian f ( y).
These eigenvalues may have vastly dierent sizes that vary as a function of . Thus,
restableciendo despus.
detecting stiness can be a signicant problem in itself.
0

In order to solve sti problems we'll need a numerical method with a weaker stability

El mtodo de Euler haca atrs




43/62

Acta de la siguiente manera:


y0 D y.0/
yi C1 D yi C hf .ti C1; yiC1/ :
La segunda expresin se obtiene de utilizar la aproximacin atrasada de la
derivada en ti C1, es decir y 0.tiC1/, en vez de la avanzada en ti como el mtodo
de Euler.

La informacin que se considera en cada paso tiene en cuenta los dos lados del
intervalo ti ; ti C h.

Euler hacia atrs es implcito, lo que significa que no da directamente una


frmula para la nueva aproximacin yi C1 sino que sta se obtiene mediante un
proceso ms elaborado.

44/62

Ese proceso, para la ecuacin diferencial anterior, sera





2
yiC1 D yi C h
yi C1 t C 2t

D yi hyiC1 C h t 2 C 2t :
Al final

yi C1 D

yi C h t C 2t
:
1 C h

Si a esta frmula se le aplica un mtodo iterativo de punto fijo el de Newton


por ejemplo

y C h t 2 C 2t
y ! g.y/ D
;
1 C h
como g 0.y/ D 1=.1 C h/ < 1, para cualquier positivo, el proceso
converger a un punto estacionario.

45/62

Apliquemos estas ideas en un cdigo de Matlab.


function [wi, win, y, ti] = back_euler_1 ( t0, x0, tf, N, TOL, Nmax )
%
% Backward Euler con y=-alpha(y-t^2)+2t
%
Punto de arranque, t0, x0; final, tf; puntos N
if nargin<6, Nmax=100; end, if nargin<5, TOL=0.00001; end, close all
ti = [t0 zeros( 1,N )]; wi = zeros(1,N+1); win = zeros(1,N+1);
wi(1) = x0; win(1) = x0; x01 = x0; y(1) = x0;
h = ( tf-t0)/N;
for i = 1:N
w0 = x0;
for j = 1:Nmax
top = (w0 - x0) - h*beuler_1(t0+h,w0);
bot = 1 - h*dbeuler_1(t0+h,w0);
dw = top/bot;
w0 = w0-dw;
if abs(dw)<TOL, break; end;
end;
x0 = w0;
x01 = x01+h*beuler_1(t0,x01);
t0 = t0 + h; ti(i+1) = t0;
wi(i+1) = x0; win(i+1) = x01; y(i+1) = y(1)*exp(-10*t0)+t0^2;
end
plot(ti,wi,ti,win,ti,y), xlabel(Tiempo); ylabel(y)
legend(Back. Euler, Euler, Exacto)
end

function f = beuler_1(t, p)
f = -10*(p-t^2)+2*t;
end
function df = dbeuler_1(t, p)
df = -10;
end

46/62

El resultado de >> back_euler_1(0,1,1.1,8); es este.


1.4
Back. Euler
Euler
Exacto

1.2

0.8

0.6
y

0.4

0.2

-0.2

-0.4

0.2

0.4

0.6

0.8
Tiempo

1.2

1.4

47/62

Mtodos multipaso

Los mtodos que hemos analizado hasta ahora son monopaso, o de paso
sencillo. El valor de yiC1 se calcula a partir de la informacin de un nico punto.

Los multipaso utilizan la informacin de ms puntos anteriores.


Su objetivo es hacer menos evaluaciones de la funcin para el mismo orden de
error que los de paso sencillo.

El mtodo de Adams-Bashforth-Moulton de orden cuatro, por ejemplo, slo


necesita dos evaluaciones de funcin por etapa, frente a las cuatro del mtodo
clsico de Runge-Kutta. Debe el nombre a John Couch Adams, Reino Unido,
1819-1892, Francis Bashforth, Reino Unido, 1819-1912, y Forest Ray Moulton,
EE.UU., 1872-1952.

48/62

Los mtodos multipaso necesitan la ayuda de otros para dar los primeros pasos y
no se adaptan bien a discontinuidades en la solucin: discontinuidades en las
fuerzas aplicadas, impactos, enlaces que aparecen o desaparecen, etc.

Tienen la forma general


yiC1 D

m
X
j D1

j yiC1

Ch

m
X

j f ti C1 j ; yi C1

j D0

Si 0 D 0, el mtodo es explcito; si 0 0, implcito.




Los parmetros i y i se calculan mediante interpolacin polinmica.

Un mtodo de dos pasos explcito, o abierto, por ejemplo, sera



yi C1 D 1yi C h 1yi0 C 2yi0 1
(se indica y 0 D f .; /):

49/62

Para calcular 1, 1 y 2 se interpola forzando a que la frmula sea exacta para


los primeros tres monomios: 1, t y t 2.

Si y.t/ D 1, entonces y 0.t / D 0 y se consigue as la primera ecuacin


1 D 1  1 C h .1  0 C 2  0/ :

Si y.t/ D t, entonces y 0.t / D 1 y tenemos la segunda



tiC1 D 1ti C h 1  1 C 2  1 :

Si y.t/ D t 2, entonces y 0.t / D 2t y tenemos la tercera


ti2C1

1ti2

C h 1  2ti C 2  2ti

50/62

Estas tres ecuaciones se deben cumplir para cualesquiera valores de ti , por lo


que podemos hacer ti 1 D 0, h D 1 (entonces ti D 1 y ti C1 D 2) y resolvemos
el sistema lineal resultante 3  3 dando 1 D 1, 1 D 32 , 2 D 21 .

La frmula resultante del mtodo explcito de dos pasos es


yi C1

h
D yi C 3yi0
2

yi0 1


;

que se conoce como la frmula del Mtodo Adams-Bashforth de segundo orden.

Tambin as se desarrolla la frmula implcita, o cerrada, de dos pasos:



yi C1 D 1yi C h 0yi0 C1 C 1yi0 :

Para calcular 1, 0 y 1 forzaremos como antes a que la frmula resultante sea


exacta para los primeros tres monomios: 1, t y t 2. Se obtienen estas tres
ecuaciones

1 D 1  1 C h 0  0 C 1  0

tiC1 D 1ti C h 0  1 C 1  1

2
2
tiC1 D 1ti C h 0  2ti C1 C 1  2ti :

Haciendo ti D 0 y h D 1 (por lo que ti C1 D 1), y resolviendo el sistema 3  3


resultante se llega a que 1 D 1, 0 D 12 y 1 D 12 . La frmula resultante es

h 0
yiC1 C yi0 ;
2
que da lugar al mtodo implcito conocido como el mtodo del trapezoide, o
Mtodo de Adams-Moulton de un paso.
yi C1 D yi C

51/62

Algunas de las frmulas ms utilizadas:

52/62

Frmulas de multipaso explcitas de Adams-Bashforth

Error

2 yi C1 D yi C

h
2

3 yi C1 D yi C

h
12

23fi

16fi

C 5fi

4 yi C1 D yi C

h
24

55fi

59fi

C 37fi

5 yi C1 D yi C

h
720

3fi

fi

1901fi

5 3 00
h f ./
12

2744fi

3 4 000
h f ./
8

251 5 .4/
h f ./
720

9fi

C 2616fi

1274fi

C 251fi

95 6 .5/
h f ./
288

Frmulas de multipaso implcitas de Adams-Moulton

Error

2 yi C1 D yi C

h
2

3 yi C1 D yi C

h
12

5fi C1 C 8fi

4 yi C1 D yi C

h
24

9fi C1 C 19fi

5 yi C1 D yi C

h
720

3fi C1

fi

1 3 00
h f ./
12


fi

5fi

251fiC1 C 646fi

1 4 000
h f ./
24


C fi

264fi

19 5 .4/
h f ./
720


C 106fi

19fi

27 6 .5/
h f ./
1440

53/62

Mtodos predictor-corrector


Combinan mtodos explcitos e implcitos en cada intervalo mediante un paso


predictor, que estima la solucin en el nuevo punto, y otro corrector, que la
mejora.

Vencen as la dificultad de contar con un buen punto de partida para comenzar


el proceso de integracin.

54/62

El mtodo de Adams-Bashforth-Moulton de cuarto orden, por ejemplo:




Utiliza Adams-Bashforth de cuarto orden como predictor:



yiC1

h
55fi
D yi C
24

Evala la funcin en el nuevo punto


fiC1

C 37fi

ti C1; yiC1

9fi

ti C1; yiC1

Utiliza Adams-Moulton de cuarto orden como corrector:


yi C1 D yi C

Df

59fi

h
9fiC1 C 19fi
24

5fi

1 C fi


2 :

Finalmente evala de nuevo la funcin en el punto ti C1; yiC1



fi C1 D f ti C1; yi C1 :

Se conoce como mtodo PECE (predice, evala, corrige, evala).

55/62

El mtodo de Milne-Simpson:


Utiliza como predictor


yiC1 D yi

3C

4h
2fi
3

fi

1 C 2fi


2 :

Como corrector
yi C1 D yi

1C


h 
fiC1 C 4fi C fi 1 :
3

Tambin se usa como corrector el de Hamming:


yi C1 D

9yi

yi

C 3h

fiC1
8

C 2fi

2fi


:


Utilicemos y 0 D 4 t t 3 y 2 para probar el mtodo predictorcorrector de
Adams-Bashforth-Moulton de segundo orden con las condiciones iniciales
y.0/ D 0;5 y en el intervalo de tiempo 0; 2.

El siguiente programa hace el trabajo.

function [t,y]=Adams_Bas_Moul(inter,ic,n)
% Mtodo predictor-corrector de orden 2 de Adams-Bashforth-Moulton
h=(inter(2)-inter(1))/n; y(1)=ic; t(1)=inter(1); s=2;
for i=1:s-1
% Trapezoide de un paso para
t(i+1)=t(i)+h;
%
inicializacin
y(i+1)=trapstep(t(i),y(i),h);
f(i)=ydot(t(i),y(i));
end
for i=s:n
% Mtodo multipaso
f(i)=ydot(t(i),y(i));
t(i+1)=t(i)+h;
y(i+1)=ab2step(t(i),i,y,f,h);
f(i+1)=ydot(t(i+1),y(i+1));
y(i+1)=am1step(t(i),i,y,f,h);
end
[T4,Y4]=ode45(@ydot,inter,ic); close all, plot(t,y,T4,Y4)
xlabel(Tiempo); ylabel(y)
legend(Adams-Bash.-Moul., ode45)
end
function y=trapstep(t,x,h)
% Un paso con trapezoide
z1=ydot(t,x); g=x+h*z1; z2=ydot(t+h,g);
y=x+h*(z1+z2)/2;
end

56/62

function z=ab2step(t,i,y,f,h) % Paso Adams-Bashforth orden 2


z=y(i)+h*(3*f(i)-f(i-1))/2;
end
function z=am1step(t,i,y,f,h)
z=y(i)+h*(f(i+1)+f(i))/2;
end

% Paso Adams-Moulton orden 2

function z=ydot(t,y)
z=4*(t-t^3)*y^2;
end

% Funcin que se integra

57/62

El resultado de >> Adams_Bas_Moul([0 2],0.5,20); es este.


1,
Adams-Bash.-Moul.
ode45

0,9
0,8
0,7
0,6

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

0,5

1,

1,5
Tiempo

2,

2,5

58/62

Sistemas de ecuaciones diferenciales


ordinarias


En ingeniera, economa y ciencias sociales muchos sistemas se modelizan o


simulan mediante sistemas de ecuaciones diferenciales. Basta para ello que el
sistema tenga ms de un grado de libertad o que haya que integrar una
ecuacin diferencial de orden superior a 1.

Ejemplos son los puntos movindose en el plano o en el espacio, el movimiento


de un slido rgido sin restricciones, mecanismos, vehculos, etc.

59/62

En general, un sistema de ecuaciones diferenciales ordinarias tiene la forma


9
0
y1 D f1 t; y1; y2; : : : ; yn >
>
>
=
0
y2 D f2 t; y1; y2; : : : ; yn
y 0 D f .t; y/:
:::
>
>

>
0
yn D fn t; y1; y2; : : : ; yn ;

Al aplicar los mtodos vistos hasta ahora hay que tener en cuenta que la
variable dependiente y, la funcin f y los coeficientes ki si se usa
Runge-Kutta son vectores.

El mtodo de Euler se aplicara en la forma vectorial


y 0 D f .t; y/

y i C1 D y i C hf .ti ; y i /:

60/62

Ecuaciones diferenciales de orden superior




Una ecuacin diferencial de orden n puede tener esta expresin


d ny
.n/
0
00
000
.n
D
y
D
f
t;
y;
y
;
y
;
y
;
:
:
:
y
dt n

1/

y.t0/ D y0
y 0.t0/ D y00
y 00.t0/ D y000

.n
y .n 1/.t0/ D y0


1/

Esta ecuacin se puede transformar en un sistema de n ecuaciones diferenciales


de orden uno.

61/62

Si se introducen las nuevas variables


y1 D y; y2 D y 0; y3 D y 00; : : : ; yn D y .n

1/

se tendr que
y10
y20
y30

D
D
D
:::
yn0 1 D
yn0 D

y2
y3
y4

9
>
>
>
>
>
>
>
>
=

y 0 D f .t; y/;

>
>
>
>
>
yn
>
>
>
f .x; y1; y2; : : : ; yn/ ;

obtenindose as un sistema de n ecuaciones diferenciales de primer orden con n


incgnitas, al que habra que aadirle las condiciones iniciales y.t0/ D y 0.

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Integracin de ecuaciones diferenciales ordinarias con

Condiciones de Contorno o Frontera

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_integracin_problemas_contorno_2016.pdf

1/37

2/37

ndice


Introduccin

El mtodo del disparo

El mtodo de las diferencias finitas

Mtodos de colocacin y de elementos finitos

Introduccin

3/37

En este tema analizamos los problemas que se pueden modelizar mediante una
ecuacin diferencial de segundo orden con condiciones en dos puntos dados,
a; b, extremos de un intervalo de estudio.

Son los denominados problemas de ecuaciones diferenciales con valores en la


frontera, o problemas de contorno. Se formulan as:
y 00 D f .t; y; y 0/;

y.a/ D ;

y.b/ D :

Para definir la solucin se necesitan dos condiciones de contorno:




Si se dan para un mismo punto, se tiene un problema de valor inicial como


los que hemos estudiado.

Si se dan para dos puntos, se tiene un problema de valores en la frontera.

El mtodo del disparo




4/37

Se basa en encontrar la ecuacin diferencial que tiene la misma solucin del de


contorno que se estudia.
ChE-401: Computational Methods in Chem. Eng.

Shooting method

Con tal fin se genera una sucesin de problemas de valor inicial que converja al
dado.

En cada uno se estima y 0.a/, la derivada pendiente de y en el extremo


izquierdo del intervalo.
Luego se resuelve (se dispara) hacia y.b/ y se obtiene el valor real yb en b.
Chemical Engineering Dep.

Prof. Ibrahim S. Al-Mutaz

King Saud University

Chemical

ChE-401: Computational Methods in Chem. Eng.

Se itera hasta que ySolution


cerca deProblems
y.b/- Shooting
como method
sea necesario.
Boundary-Value
b estoftan

5/37

De forma ms estructurada, si se define la funcin

F .s/ D

< Diferencia entre yb e y.b/; donde

y.t / es la solucin del problema de valor inicial,

: con y.a/ D y y y 0 .a/ D s;


a

el problema con valores de frontera se reduce a resolver la ecuacin


F .s/ D 0:

Para resolver esta ecuacin se puede utilizar el mtodo de la biseccin, por


ejemplo, informando al programa correspondiente de qu dos valores s0 y s1
hacen que F .s0/F .s1/ < 0.

6/37

Ejemplo Resolvamos mediante el mtodo del disparo este problema:


8
00

< y D 4y

y.0/ D 1

: y.1/ D 3:

Escribamos la ecuacin diferencial como un sistema de dos ecuaciones de orden


uno:
y0 D v
v 0 D 4y:

En Matlab la ecuacin diferencial queda:

function z=F(s)
%
a=0; b=1; yb=3;
ydot = @(t,y) [y(2); 4*y(1)];
[t,y]= ode45(ydot,[a,b],[1,s]);
z
= y(end,1)-yb
end

Comprobamos que F . 1/  1;0512 y que F .0/  0;7622 por lo que


podemos invocar el programa del fichero Bisec_y.m empezando en el intervalo
1; 0. Es decir,

7/37

>> [ss,t,y]=Bisec_y(@F,[-1,0]);
>> ss
ss =
-0.4203
>> plot(t,y)
>> xlabel(Tiempo); ylabel(y)
>> legend(y(t), y(t),Location,NorthWest)

El resultado de la evolucin en el tiempo de y e y 0 es este.


6,
y(t)
y'(t)
5,

4,

3,
y, y'

2,

1,

0,

-1,
0,

0,1

0,2

0,3

0,4

0,5
Tiempo

0,6

0,7

0,8

0,9

1,

8/37

Mtodo de las diferencias finitas




Su intencin es reemplazar en una malla de puntos en el intervalo de estudio las


derivadas en la ecuacin diferencial por su aproximacin por diferencias fintas.

De esta forma se obtiene un sistema de ecuaciones ms o menos grande de


acuerdo con lo tupida que sea esa malla. Luego se resuelve.

Si y.t/ es una funcin con derivadas continuas al menos hasta cuarto orden,
sabemos que
0

y .t / D

y.t C h/

y.t

h/

2h

h2 000
y ./
6

y que
y 00.t / D

y.t C h/

2y.t/ C y.t
h2

h/

h2 000
y ./:
12

conditions are substituted in the system of equations where they are needed.
9/37

y
1

w1
w2
ya

y1
y2

wn1
wn
yn1

t0

t1

t 2 ...

yn

tn1 tn

yb
tn+1

Figure 7.6 The Finite Difference Method for BVPs. Approximations wi , i = 1, . . . , n for
the correct values yi at discrete points ti are calculated by solving a linear system of
objetivo
equations.es reemplazar los y1 , y2 ; : : : ; yn reales de la trayectoria por sus

El
aproximaciones por diferencias finitas, wi .

After the substitutions, there are two possible situations. If the original boundary value
problem was linear, then the resulting system of equations is linear and can be solved by
 Si el problema
de contorno
original
es lineal
problemaproblem
se convierte
entonces then
Gaussian
elimination
or iterative
methods.
If theel original
was nonlinear,
resolver system
un sistema
ecuaciones
lineales;equations,
si no es lineal,
en lo
propio.
theenalgebraic
is a de
system
of nonlinear
requiring
more
sophisticated
approaches. We begin with a linear example.

10/37

Ejemplo Resolvamos mediante diferencias finitas este problema:


8
00

< y D 4y

y.0/ D 1

: y.1/ D 3:

La aproximacin de la ecuacin diferencial y 00 D 4y por diferencias finitas en ti


es
wiC1 2wi C wi 1
4wi D 0;
h2
o, lo que es lo mismo,

2
wi 1 C
4h
2 wi C wi C1 D 0:

11/37

Si se divide el intervalo de estudio en tres tramos, n D 3, el parmetro


h D 1=.n C 1/ D 1=4, por lo que habr tres ecuaciones.

Introduciendo que w0 D 1 y que w4 D 3 se llega al sistema



2
1C
4h
2 w1 C w2 D 0

2
w1 C
4h
2 w2 C w3 D 0

w2 C
4h2 2 w3 C 3 D 0:

Sustituyendo el valor de h a este sistema con matriz tridiagonal


3
2 3
2
9
2
3
1 0
1
7 w1
6 7
6 4 9
6 1
4 5 6 7
17
4
5 w2 D 4 05 :
4
w3
0 1 49
3

12/37

Resolviendo este sistema se obtiene la solucin de esta tabla.


i
0
1
2
3
4

ti
0;00
0;25
0;50
0;75
1;05

wi
1;0000
1;0249
1;3061
1;9138
3;0000

yi
1;0000
1;0181
1;2961
1;9049
3;0000

Las diferencias son O.10 2/. Para obtener ms precisin habra que aumentar n.

13/37

En general, si h D .b a/=.n C 1/ D 1.n C 1/ el sistema de matriz tridiagonal


que se obtiene en este ejemplo es de la forma
3
2 2
2 13
4h
2
1
0
 0
0
0
2
3
4h2 2
1
 0
0
0
7 w1
6 1
2
7 6 w2 7 6 007
6 0
1
4h
2  0
0
0
7 6 w3 7 6 :7
6 ::
::
::: :::
:::
7 6 : 7 D 6 ::7 :
6 :
0
:
7 4 :: 5 6 7
6
::: :::
0
0
1
0
7 wn 1
6 0
4 05
5
4 0
:::
0
0
0

4h2 2
1
0

 0

4h

wn

Los errores en este mtodo vienen de la aproximacin de las derivadas y de la


resolucin del sistema de ecuaciones.

Para valores de h mayores que la raz cuadrada de la precisin de la mquina, ,


prevalecen los de la aproximacin, O.h2/.

Ejemplo Resolvamos ahora mediante diferencias finitas este otro problema:


8
00

<y D y

y2

y.0/ D 1

: y.1/ D 4:

La discretizacin de la ecuacin diferencial en ti lleva a


wi C1

2wi C wi
h2

wi C wi2 D 0

o
wi
para 2  i  n



2 C h2 wi C h2wi2 C wiC1 D 0;

1.

Las condiciones de contorno aaden



ya
2 C h2 w1 C h2w12 C w2 D 0

wn 1
2 C h2 w1 C h2wn2 C yb D 0:

14/37

15/37

En este caso tenemos un sistema de ecuaciones no lineales que podemos


resolver mediante Newton-Raphson. La frmula de recurrencia en este caso es
wkC1 D wk

J .wk / 1f .wk /:

La funcin vectorial es
2

ya

6
6 w1
6
f .wk / D 6
6
6
4wn 2
wn
donde ya D 1 y yb D 4.


3
2 C h2 w1 C h2w12 C w2

7
2 C h2 w2 C h2w22 C w3 7
7
:::
7;
7

7
2
2 2
2 C h wn 1 C h wn 1 C wn5

2
2 C h wn C h2wn2 C yb

16/37

Su matriz Jacobiana

2 2
2
2Ch

2h w1

6
6
6
6
6
4

1
2h2 w1

0
 ::
:
2 C h2
:::

0
::
:

1
:::

:::




:::

0
::
:

0

2 C h2

2h2 w1
1

3
7
7
7
7:
7
5

1
2h2 wn

2 C h2

Cada fila i es la derivada parcial de la ecuacin nmero i de f con respecto a


cada wj .

17/37

Si organizamos todo el procedimiento en un fichero .m de Matlab:


4.5

function w1=nlbvpfd(inter,bv,n)
% Diferencias finitas no lineal para resolver BVP
%
inter, intervalo de integracin; bv, valores de contorno;
%
n, nmero de pasos.
a=inter(1); b=inter(2); ya=bv(1); yb=bv(2);
h=(b-a)/(n+1); w=zeros(n,1); w1=w+0.01;
while abs(w1-w)>sqrt(eps)
% Iteraciones de Newton-Raphson
w=w1;
w1=w-jac(w,h,n)\f7(w,h,bv,n);
end
close all, plot ([a a+(1:n)*h b],[ya w1 yb]);
end

3.5

2.5

function y=f7(w,h,bv,n)
y=zeros(n,1);
y(1)=bv(1)-(2+h^2)*w(1)+h^2*w(1)^2+w(2);
y(n)=w(n-1)-(2+h^2)*w(n)+h^2*w(n)^2+bv(2);
for i=2:n-1
y(i)=w(i-1)-(2+h^2)*w(i)+h^2*w(i)^2+w(i+1);
end
end

function a=jac(w,h,n)
a=zeros(n,n);
for i=1:n
a(i,i)=2*h^2*w(i)-2-h^2;
end
for i=1:n-1
a(i,i+1)=1;
a(i+1,i)=1;
end
end

1.5

0.1

0.2

0.3

0.4

0.5

0.6

La respuesta se consigue con >> w=nlbvpfd([0 1],[1 4],40);

0.7

0.8

0.9

18/37

Mtodos de colocacin y de elementos finitos




La idea que comparten estos dos mtodos es la de convertir el problema en el de


resolver un conjunto de ecuaciones algebraicas mediante la aproximacin de la
ecuacin diferencial por
y.t / D c11.t / C    C cnn.t /;
donde las i son funciones base definidas en el intervalo a; b y los ci
parmetros que hay determinar.

Las funciones base pueden ser polinomios, funciones trigonomtricas, splines u


otras funciones simples.

La determinacin de una solucin aproximada de la ecuacin diferencial se


reduce a encontrar los valores de los ci .

19/37

El enfoque de la colocacin consiste en usar la aproximacin de y.t / en un


conjunto de n puntos a D t1 <    < tn D b, denominados puntos de
colocacin, en los que se fuerza a que la solucin aproximada y.t / satisfaga la
ecuacin diferencial.

Esto lleva a un sistema de ecuaciones lineales, o no lineales, en los que se


calculan los ci . La idea es parecida a la de la interpolacin.

El mtodo de los elementos finitos aproxima mediante mnimos cuadrados los ci


de tal forma que se minimice la suma al cuadrado de las desviaciones entre los
valores exactos en unos puntos de la ecuacin diferencial y los aproximados.

20/37

Mtodo de colocacin

Resolvamos la ecuacin

8
00

< y D 4y

y.0/ D 1

: y.1/ D 3:


Se eligen como funciones base monomios j .t / D t j 1, para 1  j  n.


La solucin ser de la forma y.t / D

Pn

j D1 cj j .t /

Pn

j D1 cj t

j 1

Se formularn n ecuaciones con las n incgnitas c1; : : : ; cn. La primera y la


ltima son las condiciones en la frontera:
n
X
cj j .0/ D y.0/ D 1
c1 D
c1 C    C cn D

j D1
n
X

cj j .1/ D y.1/ D 3:

j D1

Las otras n 2 ecuaciones resultan de evaluar la ecuacin diferencial


P
y 00 D f .t; y; y 0/ en ti , 2  i  n 1, siendo y.t / D jnD1 cj t j 1. Es decir
1
0
n
n
n
X
X
X

 j 3

j
1
j 1 j 2 cj t
D f @t; cj t ; cj j 1 t j 2A :
j D1

En el ejemplo,
n h
X
j D1

j D1

1 j

j
2 ti

j 1
4ti

cj D 0;

j D1

i D 2; : : : ; n

1:

21/37

22/37

Las n ecuaciones forman un sistema Ac D b, donde la matriz de coeficientes


A est definida as,
8

1 0 0  0

<

j
Aij D
j 1 j 2 ti

1 1 1  1

fila i D 1
3

j 1

4ti

filas i D 2; : : : ; n
fila i D n

y b D 1 0 0    0 3T .


Los ti de la malla que se usan son los uniformemente espaciados


ti D a C

i
n

1
.b
1

a/ D en el caso del ejemplo a

i
n

1
:
1

23/37

Para n D 2 el sistema queda




   
1 0 c1
1
D
;
1 1 c2
3

y la solucin es c D 1 2T . Es decir y.t / D c1 C c2t D 1 C 2t.




Para n D 4 el sistema es
2
4

1
4
4
1

0
4  1=3 2
4  2=3 2
1

32 3

0
0
c1
2
3
4  .1=3/ 6  1=3 4  .1=3/ 5 4c2 5
c3
4  .2=3/2 6  2=3 4  .2=3/3
c4
1
1

cuya solucin es c D 1;0000


y.t /  1

23
D

1
405 ;
0
3

0;1886 1;0273 1;1613T . Es decir,


0;1886t C 1;0273t 2 C 1;161t 3 :

24/37

El grfico de lo obtenido en el ejemplo es este.

3
Exacta
y(t)=1+2t
2

y(t)=1-0.1886t+1.0273t +1.1613t
2.5

1.5

0.5

0.1

0.2

0.3

0.4

0.5
Tiempo

0.6

0.7

0.8

0.9

25/37

El ejemplo que hemos utilizado para introducir el mtodo era lineal, pues as lo
era la ecuacin diferencial. Si fuese no lineal, habra que utilizar el mtodo de
Newton-Raphson para resolver el sistema de ecuaciones no lineales que resultase.

Igual que hemos utilizado monomios como funciones base para aplicar el
mtodo, se puede recurrir a cualesquiera otras: polinomios de Chebyshev,
funciones trigonomtricas, etc.

26/37

Mtodo de los elementos finitos de Galerkin

El mtodo de los elementos finitos, formulado por Boris Grigoryevich Galerkin,


Rusia 1871-1945, minimiza el cuadrado del error de la aproximacin de la
ecuacin diferencial a lo largo de la solucin. Aboca a un sistema de ecuaciones
lineales diferente del anterior.

Si en el procedimiento general anterior se usan como funciones base unos splines


nos referimos al mtodo de los elementos finitos. Las splines son distintas de
cero en un corto espacio de t .

En el caso de la colocacin, los ci se obtenan forzando a que la solucin


aproximada satisficiese exactamente las condiciones de contorno y los puntos de
colocacin.

El mtodo de los elementos finitos para resolver

27/37

8
00
0

< y D f .t; y; y /

y.a/ D y

: y.b/ D y ;
b

escoge una solucin aproximada y de tal forma que el residuo r D y 00


lo ms pequeo posible.

f sea

Anlogamente a como vimos para mnimos cuadrados, esto se consigue


eligiendo y de tal forma que el vector de residuos sea ortogonal al espacio
vectorial del conjunto de las soluciones de la ecuacin diferencial.

Para un intervalo a; b se define el espacio vectorial de las funciones integrables


cuadradas
(
)
Z b

L2a; bD funciones y.t / en a; b


y.t /2dt existe y es finita :
a

28/37

En este espacio se define el producto interior


Z b
y1.t /y2.t /dt;
hy1; y2i D
a

con las propiedades habituales:


1. hy1; y2i  0;
2. hy1 C y2; zi D hy1; zi C hy2; zi, siendo y escalares;
3. hy1; y2i D hy2; y1i.
Dos funciones y1 e y2 son ortogonales en L2a; b si hy1; y2i D 0.


Como este espacio es de dimensin infinita, no podemos hacer r D y 00 f


ortogonal al mismo en sentido estricto, pero si escoger una base que comprenda
lo ms posible del mismo en el sentido finito de lo clculos.

Hay dos ideas principales detrs del mtodo de Galerkin:

29/37

1- Minimizar el vector residuo r forzando a que sea ortogonal, en el sentido del


producto interior anterior, a un conjunto de
base 0.t /,

R b n C00 2 funciones
1.t /; : : :, nC1.t /. Es decir forzar a que a y
f i dt D 0, o que
b

00

f .t; y; y 0 /i .t/ dt

y .t/i .t/ dt D

forma dbil

para cada 0  i  n C 1.
2- Utilizar integracin por partes para eliminar las segundas derivadas.
Teniendo en cuenta que
b

b
y .t/i .t/ dt D i .t/y 0 .t/a
00

D i .b/y 0 .b/

y 0 .t/i0 .t/ dt
Z b
a
i .a/y 0 .a/
y 0 .t/i0 .t/ dt:
a

Utilizando la forma dbil y esta expresin resulta un conjunto de ecuaciones


l

f .t; y; y 0 /i .t/ dt D i .b/y 0 .b/

i .a/y 0 .a/

y 0 .t/i0 .t/ dt:

30/37

Resolvindolas se determinan los ci de


y.t / D

nC1
X

ci i .t /:

i D0

Esas dos ideas hacen conveniente usar funciones base i .t / elementos


finitos muy simples, como lo son los B-splines.

Para ello, en los puntos t0 < t1 <    < tn < tnC1 sobre el eje t, para
i D 1; : : : ; n, se define

i .t / D

8
t

< i

ti 1
ti 1

ti C1 t
tiC1 ti

:0

para ti

< t  ti

para ti < t < ti C1


en otros casos.

31/37

Y, tambin,
0.t/ D

8
<

t1 t
ti t0

:0

para t0  t < t1
en otros casos7.3

y nC1.t / D

8
<

t tn
tnC1 tn

para tn < t  tnC1

0 ElementenMethod
otros casos.
Collocation and the Finite
| 369
:

y
1

0 1 2

t0

t1

t2

n1 n n+1

t 3 ...

tn1 tn

tn+1

Figure 7.10 Piecewise-linear B-splines used as nite elements. Each i (t), for
1 i n, has support on the interval from ti1 to ti+1 .

Estas funciones satisfacen que i .tj / D

1 si i D j
0 si i j:

for each i that can be solved for the ci in the functional form
y(t) =

n+1


ci i (t).

(7.23)

32/37

Para un conjunto de datos .ti ; ci /, se define la B-spline lineal por tramos


S.t / D

nC1
X

ci i .t /:

i D0

Se puede comprobar que S.tj / D




PnC1
iD0

ci i .tj / D cj .

S.t/ es una funcin lineal por tramos que interpola los puntos .ti ; ci /. Adems,
los ci son las soluciones en los puntos ti de la aproximacin de la ecuacin
diferencial.

33/37

Para calcular los ci : el primero y el ltimo se obtienen por colocacin:


y.a/ D

nC1
X

ci i .a/ D c00.a/ D c0

i D0

y.b/ D

nC1
X

ci i .b/ D cnC1nC1.b/ D cnC1:

i D0

Los dems, usando las ecuaciones de los elementos finitos:


Z b
Z b
f .t; y; y 0/i .t / dt C
y 0.t /i0 .t / dt D 0;
a

sustituyendo y.t / por


ci i .t /,
Z b
Z
 X

X
i .t /f t;
cj j .t /;
cj j0 .t / dt C
a

b
a

i0 .t /

cj j0 .t / dt D 0:

34/37

Suponiendo que los puntos en t estn uniformemente espaciados un paso h, hay


que calcular todas estas integrales para cada i D 1; : : : ; n:
b

Z
i .t/i C1 .t/ dt D

D
b

t2
2h



Z b
t
t
t
1
dt D
h
h
h
a
3 h
t
3h2 D h6
h

t
h

2

b
0
.t/ dt
i0 .t/iC1


0 2

i .t/
a


dt

i .t/ dt D 2
Z

t2
h2

1
h

h

Z
D

dt D 2
0

2

1
h

1
h
2

2
dt D h
3

dt D

1
h

2
dt D :
h

Si la ecuacin diferencial es lineal, las ecuaciones de los ci tambin.

35/37

Ejemplo Mediante elementos finitos, resolvamos

8
00

< y D 4y

y.0/ D 1

: y.1/ D 3:


Sustituyendo la ecuacin diferencial en las expresiones de los ci se tiene para


cada i
l 1
!
nC1
nC1
0 D

4i .t/

nC1
i
j D0

j D0

cj j .t/ C

cj j0 .t/i0 .t/ dt

j D0

 Z
cj 4

Z
i .t/j .t/ dt C

j0 .t/i0 .t/ dt


:

Usando las expresiones de las B-splines para i D 1; : : : ; n y teniendo en cuenta


que c0 D f .a/ y cnC1 D f .b/, las ecuaciones que resultan son estas:

36/37

2

1
h

c0 C

8

2
h

c1 C

2

1
h

c2 D 0

2

1
h

c1 C

8

2
h

c1 C

2

1
h

c1 D 0

h
3
h
3

hC
3
hC
3

h
3
h
3

::
: 0
1
h

2

h
3

cn

8

hC
3

2
h

cn C

2

h
3

1
h

cnC1 D 0:

Como c0 D ya D 1 y cnC1 D yb D 3 el sistema resultante es este


2
32 3 2
3
c1
ya
0  0
: : : : : : ::: 7 6
7 6
7
7 6 c2 7 6 0 7
6 7 6
7
: : : 07
7 6 ::: 7 D 6 ::: 7 ;
6 7 6
7
: : : : : : 7
5 4cn 15 4 0 5

6
60
6
6:
4 ::

0 

donde

cn

2
2
8
y D h
D hC
3
h
3

yb

1
:
h

Si recopilamos todo lo necesario en un fichero .m de Matlab para este caso:

37/37

function c=Galerkin_ef_1(inter,bv,n)
% Elementos finitos de ejemplo clase
%
inter, intervalo de integracin; bv, valores de contorno;
%
n, nmero de pasos.
a=inter(1); b=inter(2); ya=bv(1); yb=bv(2);
h=(b-a)/(n+1);
alfa=(8/3)*h+2/h; beta=(2/3)*h-1/h;
e=ones(n,1);
M=spdiags([beta*e alfa*e beta*e],-1:1,n,n);
d=zeros(n,1); d(1)=-ya*beta; d(n)=-yb*beta;
c=M\d;
end

Resolviendo con la orden


c=Galerkin_ef_1([0 1],[1 3],3)
se llega a la solucin de la tabla que sigue.
i
0
1
2
3
4

ti
0;00
0;25
0;50
0;75
1;05

ci
1;0000
1;0109
1;2855
1;8955
3;0000

yi
1;0000
1;0181
1;2961
1;9049
3;0000

Las diferencias son O.10 2/. Para obtener ms precisin habra que aumentar n.

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales


Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3
Matemticas de EspecialidadIngeniera Elctrica

Resolucin numrica de

Ecuaciones en Derivadas Parciales

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_solucin_ecuaciones_derivadas_parciales_2016.pdf

1/66

2/66

ndice


Introduccin a las EDP

Resolucin de ecuaciones parablicas




Por diferencias adelantadas

Por diferencias atrasadas

El mtodo de Crank-Nicolson

Resolucin de ecuaciones hiperblicas

Resolucin de ecuaciones elpticas

Mtodo de las diferencias finitas

Mtodo de los Elementos Finitos

Resolucin de EDP no lineales

Ecuaciones en Derivadas Parciales

3/66

Una ecuacin en derivadas parciales de orden n es una ecuacin


matemtica en la que aparece una funcin desconocida, que depende de al
menos dos variables independientes, junto a algunas de sus derivadas
parciales hasta orden n respecto a dichas variables.

Las EDP se emplean en la formulacin de modelos matemticos de procesos y


fenmenos de la fsica y otras ciencias que suelen estar distribuidos en el espacio
y el tiempo.

Se modelizan de esta forma la propagacin del sonido o del calor, la


electrosttica, la electrodinmica, la dinmica de fluidos, la elasticidad, la
mecnica cuntica, las emisiones de contaminantes, los fenmenos
meteorolgicos, la valoracin de opciones y derivados financieros y muchos
otros.

4/66

Una EDP es lineal si lo es respecto de la funcin desconocida1 y de todas sus


derivadas parciales.

Una solucin de una EDP es una funcin que resuelve la ecuacin, o que la
convierte en una identidad cuando se sustituye en la ecuacin.

Excepto en casos de geometra sencilla, las ecuaciones en derivadas parciales son


muy difciles de resolver analticamente.

Numricamente se pueden resolver problemas de geometra muy complicada y


cercana a la de los problemas reales.

Cuando la funcin incgnita slo depende de una variable se trata de una ecuacin diferencial ordinaria de orden n.

5/66

Una ecuacin en derivadas parciales de la funcin u.x1; :::xn/ tiene la forma


general
2u
2u
@u
@u
@
@
F .x1; : : : ; xn; u; @x ; : : : ; @x ; @x @x ; @x @x ; : : :/ D 0.
n
1
1 1
1 2

F es lineal en u y sus derivadas si


F .u C w/ D F .u/ C F .w/
y
F .ku/ D k  F .u/:

Dada una funcin u.x; y/, en las EDP es muy comn significar las derivadas
parciales empleando subndices (notacin tensorial). Esto es:
ux D

@u
.x; y/
@x

uxy

@2 u
@
D
.x; y/ D
@y @x
@y

uxx

@2 u
D 2 .x; y/:
@x


@u
.x; y/
@x

Si la funcin u es continua en un cierto dominio y tiene derivadas parciales


continuas hasta orden 2, por el teorema2 de Schwarz se sabe que uxy D uyx :

En la fsica matemtica se usa el operador nabla, que en coordenadas


cartesianas se escribe como r D .@x ; @y ; @z / para las derivadas espaciales, y
con un punto, u,
P para las derivadas que involucran el tiempo.
2

Por Karl Hermann Amandus Schwarz, Prusia 1843-Alemania 1921.

6/66

7/66

Ejemplos de EDP


Una EDP lineal de primer orden:


ux .x; y/ uy .x; y/ C 2u.x; y/ D ux
2

C uy

2

uy C 2u D 6.
D 0.

Una EDP no lineal de primer orden: ux

Una EDP no lineal de segundo orden: u  uxy C ux D y.

Algunas EDP lineales de segundo orden:


Ec. de Laplace

uxx .x; y/ C uyy .x; y/ D 0:

Ec. del calor

u t .t; x/

uxx .t; x/ D 0:

Ec. de ondas

u t t .t; x/

uxx .t; x/ D 0:

8/66

En este breve recorrido por las EDP nos limitaremos a estudiar la resolucin
numrica de las de segundo orden con dos variables independientes, con esta
forma

o, abreviadamente,

Auxx C Buxy C C uyy C F ux ; uy ; u; x; y D 0:

Esta ecuacin, en un punto dado .x; y/, puede ser:

Parablica si B 2
Hiperblica si B 2
Elptica
si B 2

4AC D 0:
4AC > 0:
4AC < 0:

9/66

La diferencia prctica de estos tipos de ecuaciones es que las parablicas e


hiperblicas estn definidas en un intervalo o regin abierto. Para resolverlas se
imponen condiciones de contorno a una variable en general al tiempo en la
frontera de uno de sus extremos y se parte de l.

Las ecuaciones elpticas suelen tener condiciones de contorno en toda la frontera


de esa regin

10/66

Resolucin de ecuaciones parablicas




La ecuacin del calor general


u t D Duxx
representa la temperatura, x, mediada a lo largo de una barra homognea
unidimensional.

Sus variables independientes son x y t.

Esta ecuacin modeliza cmo se propaga el calor de una zona de alta


temperatura a las dems.

La constante D > 0 se denomina coeficiente de difusin y representa la


difusividad trmica del material de la barra.

11/66

La ecuacin tiene infinitas soluciones por lo que se necesitan condiciones


adicionales para definir una particular.

En un intervalo finito, el problema formulado en toda su dimensin es este:


8

u t D Duxx

< u.x; 0/ D f .x/

u.a; t/ D l.t/

: u.b; t/ D r.t/





para todo a  x  b; t  0
para todo a  x  b
para todo t  0
para todo t  0:

La funcin f .x/ define la distribucin de temperaturas en la barra al


comienzo del tiempo de estudio en el intervalo a; b.
l.t/ y r.t /, para t  0, la temperatura en los extremos de la barra.
La constante D es la que gobierna la velocidad de transferencia del calor.

Resolucin por diferencias adelantadas


la EDP en 0; T generando una malla de las
variables independientes y considerando slo los nudos de la misma.

 La idea se basa en discretizar


8 Partial Differential Equations
t
T

x
a

Figure 8.1 Mesh for the Finite Difference Method. The lled circles represent known

Los puntos
slidos son conocidos: definen las condiciones iniciales y de
initial and boundary conditions. The open circles represent unknown values that must be
determined.
contorno;
los puntos huecos los que calcular el procedimiento.


its approximation
at (xse
M en
and uno
N be discreto
the total number
of steps
in the xfinito
and t de
El problema
continuo
as
con un
nmero
i , tconvierte
j ) by wij . Let
directions,
and let ho=no
(b lineales.
a)/M and k = T /N be the step sizes in the x and t directions.
ecuaciones
lineales,
The discretization formulas from Chapter 5 can be used to approximate derivatives in

12/66

13/66

Sea u.xi ; tj / la solucin exacta en .xi ; tj / y wij la aproximada. Denominemos


como M y N el nmero total de intervalos o pasos en x y en t.

Sean h D .b

La aproximacin de segunda derivada centrada respecto de x es



1
uxx .x; t /  2 u.x C h; t / 2u.x; t / C u.x h; t / ;
h

2
con un error O h uxxxx .c1; t /=12 , donde x h < c1 < x C h.

La primera derivada adelantada respecto de t es



1
u t .x; t / 
u.x; t C k/ u.x; t / ;
k

a/=M y k D T =N los tamaos de paso en las direcciones x y t .

con un error O.ku t t .x; c2/=2/, donde t < c2 < t C h.

Sustituyendo estas expresiones en la ecuacin del calor en el punto .xi ; tj /,


queda


D
1
wiC1;j 2wij C wi 1;j  wi;j C1 wij ;
h2
k
con un error de truncamiento local dado por O.k/ C O.h2/.

Despejando wi;j C1 tenemos la frmula de recurrencia en el tiempo:



w
2w
C
w
wi;j C1 D wij C Dk
iC1:j
ij
i 1;j
h2
D  wi C1;j C .1

2 /wij C  wi

1:j ;

donde Dk= h2.




8.1 Parabolic Equations | 377


En la figura se ven los puntos afectados por esta expresin.
j+1
j
i1 i i+1

14/66

Las condiciones de contorno y las iniciales dan valores a wi0; i D 0; : : : ; M y


w0j y wMj ; j D 0; : : : ; N .

En forma matricial, los valores de wi;j C1 en


mediante la frmula wj C1 D Awj C sj , o
2
1 2 
0 
"
# 6
::
w1;j C1
6  1 2  : :
::
D6
 1 2 : :
:
6 0:
:::
::: :::
wm;j C1
4 ::
0



La matriz A es m  m, donde m D N

 1

el tiempo tj C1 se determinan
3
0
#
"
#
:: 7"
: 7 w1j
w0;j
:
::
:
0 7
:
7 :: C 
wmC1;j
 5 wmj
2

1.

El vector sj indica las condiciones en la frontera (contorno) que se imponen al


problema: las temperaturas en los extremos de la barra.

Lo expuesto es un procedimiento explcito dado que se determinan nuevos


valores a partir de los previos inmediatos en el tiempo.

15/66

16/66

Si elaboramos un script de Matlab con este algoritmo para D D 1, la


funcin f .x/ D sen2.2x/ y las condiciones iniciales u.0; t / D u.1; t / D 0
para todo t, nos puede salir algo parecido a esto:
function w=heatfd(xl,xr,yb,yt,M,N)
% Ecuacin del calor por diferencias avanzadas
%
Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x)sin(2*pi*x).^2;
l=@(t)0*t;
r=@(t)0*t;
D=1;
h=(xr-xl)/M; k=(yt-yb)/N; m=M-1; n=N;
sigma=D*k/h/h;
a=diag(1-2*sigma*ones(m,1))+diag(sigma*ones(m-1,1),1);
a=a+diag(sigma*ones(m-1,1),-1);
lside=l(yb+(0:n)*k); rside=r(yb+(0:n)*k);
w(:,1)=f(xl+(1:m)*h);
for j=1:n
w(:,j+1)=a*w(:,j)+sigma*[lside(j); zeros(m-2,1); rside(j)];
end
w=[lside; w; rside];
x=(0:m+1)*h; t=(0:n)*k;
mesh(x,t,w)
view(60,30);axis([xl xr yb yt -1 1])
end

17/66

Los dos grficos ilustran la aproximacin por diferencias adelantadas de la


ecuacin del calor para h D 0;1 y dos valores k D 0;004 y k > 0;005, es decir
>>w=heatfd(0,1,0,1,10,250) y >>w=heatfd(0,1,0,1,10,193). En este
ltimo caso el mtodo es inestable como se observa.

Se puede probar que el mtodo es estable si, para D > 0,

Dk
h2

< 12 .

18/66

Resolucin por diferencias atrasadas




La forma de trabajar anterior se puede mejorar en ciertos casos usando la


alternativa implcita: aproximacin de las derivadas mediante diferencias
atrasadas (recordemos Euler hacia atrs):
 k
1
u.x; t / u.x; t k/ C u t t .x; c0/;
ut D
k
2
donde t

k < c0 < t para aproximar uy .

La ecuacin del calor en el punto .xi ; ti / resulta


1
wij
k

wi;j

D
D 2 wi C1;j
h

2wij C wi

con un error de truncamiento local O.k/ C O.h2/.

1;j

19/66

El sistema de ecuaciones similar al anterior quedara


3
21 C 2 
0

0
:
:
  



6  1 C 2  : : :: 7 w:1j
w1;j 1
w0;j
::
::
:
6 0
::
D
C
:
:
 1 C 2 : :
0 7
:
5
4 :
w
w
w
mj
m;j 1
mC1;j
:
:
:
::
0

::


El programa anterior:

::
0

::

 1 C 2

function w=heatbd(xl,xr,yb,yt,M,N)
% Ecuacin del calor por diferencias avanzadas
%
Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x)sin(2*pi*x).^2;
l=@(t)0*t;
r=@(t)0*t;
D=1;
h=(xr-xl)/M; k=(yt-yb)/N; m=M-1; n=N;
sigma=D*k/h/h;
a=diag(1+2*sigma*ones(m,1))+diag(-sigma*ones(m-1,1),1);
a=a+diag(-sigma*ones(m-1,1),-1);
lside=l(yb+(0:n)*k); rside=r(yb+(0:n)*k);
w(:,1)=f(xl+(1:m)*h);
for j=1:n
w(:,j+1)=a\(w(:,j)+sigma*[lside(j); zeros(m-2,1); rside(j)]);
end
w=[lside; w; rside];
x=(0:m+1)*h; t=(0:n)*k;
mesh(x,t,w)
view(60,30);axis([xl xr yb yt -1 1])
end

20/66

Resolviendo con este programa el problema anterior con


>>w=heatbd(0,1,0,1,10,10) se llega a la solucin de la grfica que sigue.
Obsrvese que el k que se utiliza ahora es 0;1 en vez del anterior 0;004.

0.5

-0.5

-1
0
0.2
0.4

1
0.8

0.6

0.6
0.8

0.4
1

0.2
0

El mtodo es estable para cualesquiera h y k, con D > 0.

21/66

El mtodo CrankNicolson

Este mtodo formulado en 1947 por John Crank, Reino Unido, 1916-2006, y
Phyllis Nicolson, Reino Unido, 1917-1968 es una combinacin de los dos
anteriores, explcito e implcito, con un error O.h2/ C O.k 2/.

Usa la diferencia atrasada para la derivada respecto del tiempo y una


combinacin ponderada uniformemente de derivada atrasada y adelantada para
el resto de la ecuacin. En concreto, reemplaza u t por la frmula de la
diferencia atrasada

1
wij wi;j 1
k
y uxx por la diferencia
mixta




1 wi C1;j 2wij Cwi 1;j
1 wi C1;j 1 2wi;j 1 Cwi 1;j 1
C2
:
2
h2
h2

22/66

Haciendo otra vez  D Dk= h2, la ecuacin del calor se puede reordenar as

h
2wijEquations
2wi;j 1 D  wi C1;j
al Differential

2wij C wi

1;j

C wi C1;j

2wi;j

C wi

i
1;j 1

oorbien
Dw
C+
wi C1;j
i 1;j
i C1;k =
i 1;j 1
1C
i;ji,j11
1 , 1 ,
ww
+C
(2 .2
+C
22/w
)wij ij w
wi+1,j
wi1,j
+.2
(2 2/w
2 )w
wi+1,j
i1,j

lo
que leads
llevatoa the
la grfica
nudos
afectados
which
templatede
shown
in Figure
8.7. de esta figura.
j+1
j
i1 i i+1
Figure 8.7 Mesh points for CrankNicolson Method. At each time step, the open circles
are the unknowns and the lled circles are known from the previous step.
T

23/66

Si wj D w1j ; : : : ; wmj T , el mtodo de Crank-Nicolson en forma matricial es



Awj D Bwj 1 C  sj 1 C sj ;
donde

2
2 C 2

0
6

2 C 2

6
6
AD6 0

2 C 2
6 :
:::
:::
4 ::
0

0


:::

0
::
:


:::

0
::
:

7
7
7
:::
;
0 7
7
:::
 5
 2 C 2

y
2
6
6
6
BD6
6
4

2

0
::
:
0


2

0
2


:::


El vector sj D w0j ; 0; : : : ; wmC1;j T .


2

:
2 : :
0
:::
:::

0
 2 2

3
7
7
7
7:
7
5

24/66

El programa de Matlab que implementa el mtodo es ste:


function w=Crank_Nicolson(xl,xr,yb,yt,M,N)
% Ecuacin del calor por Crank-Nicolson
%
Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x)sin(2*pi*x).^2;
l=@(t)0*t;
r=@(t)0*t;
D=1;
h=(xr-xl)/M; k=(yt-yb)/N; m=M-1; n=N; close all
sigma=D*k/h/h;
a=diag(2+2*sigma*ones(m,1))+diag(-sigma*ones(m-1,1),1);
a=a+diag(-sigma*ones(m-1,1),-1);
b=diag(2-2*sigma*ones(m,1))+diag(sigma*ones(m-1,1),1);
b=b+diag(sigma*ones(m-1,1),-1);
lside=l(yb+(0:n)*k); rside=r(yb+(0:n)*k);
w(:,1)=f(xl+(1:m)*h);
for j=1:n
sides=[lside(j)+lside(j+1); zeros(m-2,1); rside(j)+rside(j+1)];
w(:,j+1)=a\(b*w(:,j)+sigma*sides);
end
w=[lside; w; rside];
x=(0:m+1)*h; t=(0:n)*k;
mesh(x,t,w)
view(60,30);axis([xl xr yb yt -1 1])
end

25/66

Si lo utilizamos con >>w=Crank_Nicolson(0,1,0,1,10,10) para el mismo


problema se llega a la solucin de la grfica.

0.5

-0.5

-1
0
0.2
0.4

1
0.8

0.6

0.6
0.8

0.4
1

0.2
0

El mtodo es estable para cualesquiera h > 0 y k > 0, con D > 0.

Resolucin de ecuaciones hiperblicas




La ecuacin de onda, con velocidad de onda c, es


u t t D c 2uxx
para a  x  b y t  0. Representa la evolucin en el tiempo de una onda
propagndose en la direccin x en un medio dado.

Para especificar su evolucin en el tiempo es necesario conocer la forma inicial


de la onda y su velocidad inicial en cada punto.

Esta ecuacin modeliza una amplia variedad de fenmenos, desde las ondas
magnticas en la atmsfera del Sol hasta cmo oscila la cuerda de un violn.

La funcin u.x; y/ representa, por ejemplo, la amplitud de la vibracin de la


cuerda del violin o, para una onda viajando en el aire, la presin local del aire.

26/66

Formulado en su totalidad para especificar una solucin concreta sera:


8
u t t D c 2 uxx

< u.x; 0/ D f .x/


u t .x; 0/ D g.x/

u.a; t/ D l.t/

:
u.b; t/ D r.t/

para todo a  x  b; t  0
para todo a  x  b
para todo a  x  b
para todo t  0
para todo t  0:

Para resolverlo se puede aplicar diferencias adelantadas a partir de una malla


CHAPTER 8 Partial Differential Equations
como la que consideramos anteriormente, esto es


t
T

x
a

Figure 8.1 Mesh for the Finite Difference Method. The lled circles represent known

Los puntos son


.xiboundary
; tj /, conditions.
donde The
xi open
D circles
a Crepresent
ih y unknown
tj D jvalues
k, that
conmustpasos
h y k.
initial and
be
determined.
La aproximacin
a la solucin u.xi ; tj / se representa mediante wij .

27/66

28/66

Para discretizar la ecuacin de onda, las segundas derivadas se reemplazan por


sus aproximaciones por diferencias centradas en las direcciones t y x, es decir
wi;j C1

2wij C wi;j
k2

c2

wi

1;j

2wij C wiC1;j
D 0:
h2

Haciendo  D ck= h, la explicitacin de la solucin para el siguiente paso en el


tiempo es

wi;j C1 D 2 2 2 wij C  2wi 1;j C  2wiC1;j wi;j 1:

Como se necesita la aproximacin en dos pasos anteriores, j 1 y j , para el


primer paso en el tiempo se utiliza la aproximacin de la derivada con la frmula
centrada
wi;j C1 wi;j 1
u t .xi ; tj / 
2k
en la que sustituyendo el primer paso en el tiempo .xi ; t1/

29/66

g.xi / D u t .xi ; t0/ 

wi1

wi; 1
;
2k

o en otras palabras,
wi; 1  wi1

2kg.xi /:

Sustituyendo esta ltima expresin en la frmula del siguiente paso en el tiempo


para j D 0 resulta que
wi1 D 1

2
 wi0 C kg.xi / C
wi
2
2

1;0

C wi C1;0 ;

que es donde entra la informacin de la velocidad inicial g.x/.

30/66

Escribiendo el mtodo en forma matricial,


2

6
6
6
AD6
6
4

2
2


0
:::
0


2

2
2
:::


0
2
2 2 2
:::
0


:::
:::
:::
2

0
::: 7
7
7
0 7:
7
2 5
2 2 2

La ecuacin de inicio es
2

3
w
00
2
3
2
3
2
3
6
w11
w10
g.x1 /
0 7
6
7
4 ::: 5 D 1 A 4 ::: 5 C k 4 ::: 5 C 1  2 6 ::: 7 :
7
6
2
2
4
0 5
wm1
wmo
g.xm /
wmC1;0

31/66

Las de los subsiguientes pasos, contando con las condiciones de partida,


2
3
l.tj /
2
3
2
3 2
3
6 0 7
w1;j C1
w1j
w1;j 1
6
7
6 :: 7
6 :: 7 6 :: 7
6
7
:
4 : 5 D A 4 : 5 4 : 5 C  2 6 :: 7 :
6
7
4 0 5
wm;j C1
wmj
wm;j 1
r.tj /

32/66

En Matlab, la solucin de la ecuacin de onda para f .x/ D sen.x/, con


c D 2 y g.x/ D l.x/ D r.x/ D 0 es sta:
function w=wavefd(xl,xr,yb,yt,M,N)
% Ecuacin de onda por diferencias avanzadas
%
Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x) sin(pi*x); g=@(x) 0*x; l=@(t) 0*t; r=@(t) 0*t;
c=2; close all
h=(xr-xl)/M; k=(yt-yb)/N; m=M-1; n=N;
sigma=c*k/h;
a=diag(2-2*sigma^2*ones(m,1))+diag(sigma^2*ones(m-1,1),1);
a=a+diag(sigma^2*ones(m-1,1),-1);
% Matriz A
lside=l(yb+(0:n)*k); rside=r(yb+(0:n)*k);
w(:,1)=0.5*a*f(xl+(1:m)*h)+k*g(xl+(1:m)*h);
% Cond. iniciales
w(:,2)=a*w(:,1)-w(:,1)+sigma^2*[lside(1); zeros(m-2,1); rside(1)];
for j=2:n
w(:,j+1)=a*w(:,j)-w(:,j-1)+sigma^2*[lside(j); zeros(m-2,1); rside(j)];
end
w=[lside; w; rside];
% + cond. contorno
x=(0:m+1)*h; t=(0:n)*k;
mesh(x,t,w);
% Plot 3-D
view(60,30); axis([xl xr yb yt -1 1])
end

33/66

Si lo utilizamos con >> w=wavefd(0,1,0,1,20,40); para el problema


propuesto, se llega a la solucin de la grfica.

El mtodo es inestable cuando el paso en el tiempo k es grande con respecto al


del espacio h. es estable si c > 0 y  D ck= h  1.

34/66

Por ejemplo, con >> w=wavefd(0,1,0,1,20,35); ocurre esto.

A la cantidad ck= h se le conoce com el nmero o condicin CFL, formulado en


1928 por los alemanes Richard Courant, 1888-1972, Kurt Friedrichs, 1901-1982
y Hans Lewy 1904-1988.

35/66

Resolucin de ecuaciones elpticas




Las ecuaciones elpticas modelizan estados estacionarios: la distribucin de


temperaturas en una regin delimitada por fuentes de calor a determinadas
temperaturas, potenciales electrostticos, gravitatorios, etc.

Si se tiene una funcin u.x; y/ que admite derivadas de segundo orden


continuas, se define el operador Laplaciana de u como
u D r ru D r 2u D uxx C uyy :

Pierre-Simon Laplace, Francia, 1749-1827.

Para una funcin continua f .x; y/, la EDP


@2u @2u
u.x; y/ D 2 C 2 D f .x; y/
@x
@y
se denomina ecuacin de Poisson.

Simon Denis Poisson, Francia, 1781-1840.

La ecuacin de Poisson con f .x; y/ D 0 se denomina Ecuacin de Laplace.


Una solucin de sta es una funcin armnica.

La ecuaciones de Laplace y Poisson estn presentes por doquier en la fsica


clsica pues sus soluciones representan la energa potencial.

36/66

Un campo elctrico E es el gradiente de un potencial electrosttico u, es decir


ED

ru:

El gradiente del campo est relacionado con la densidad de carga, , por la


ecuacin de Maxwell

rE D ;
"
donde " es la permisividad elctrica. En conjunto,


u D r ru D
;
"
ecuacin de Poisson del potencial u. En el caso de que la carga sea cero, el
potencial satisface la ecuacin de Laplace u D 0.

James Clerk Maxwell, Reino Unido, 1831-1879

37/66

38/66

Mtodo de las diferencias finitas




Para estudiar el mtodo resolveremos la ecuacin de Poisson u D f en el


rectngulo xl ; xr  y
8 b ; y t de un plano, con las condiciones de

u.x; yb / D g1 .x/

< u.x; y / D g .x/


t

Johann Peter Gustav Lejeune


Dirichlet, Alemania, 1805-1859.

contorno de Dirichlet:
u.xl ; y/ D g3 .y/

:
D g4 .y/:Equations
r ; y/
400 | CHAPTER 8 u.x
Partial
Differential

y esta malla:
yt

yb

w1n w2n w3n

wmn

w12 w22 w32

wm 2

w11 w21 w31

wm1

xl

con M D m

xr

yt

vm+1 vm+2 vm+3


x yb

v1

v2

v3

xl

Figure 8.12 Mesh for nite difference solver of Poisson equation with
1 intervalos en la
direccin horizontal y N D n 1 en vertical.
conditions. (a) Original numbering system with double subscripts. (b) Num

(8.39) for linear equations, with single subscripts, orders mesh points across

39/66

Mediante diferencias finitas centradas, la ecuacin de Poisson u D f tiene la


forma
u.x h;y/ 2u.x;y/Cu.xCh;y/
2
C
O.h
/C
2
h
C u.x;y
donde h D .xr

k/ 2u.x;y/Cu.x;yCk/
k2

xl /=M y k D .y t

yb /=N .

En trminos de la solucin aproximada wij  u.xi ; yj /, puede escribirse


wi 1;j 2wij Cwi C1;j
h2

donde xi D xl C .i


C O.k 2/ D f .x; y/;

wi;j 1 2wi;j Cwi;j C1


k2

1/h y yj D yb C .j

D f .xi ; yj /

1/k, para 1  i  m y 1  j  n.

Las ecuaciones en los wij son lineales por lo para determinarlos hay que
construir un sistema de mn incgnitas con una matriz A mnmn.

40/66

Cada nudo de la malla tendr su correspondiente ecuacin lineal, incluidas los


que representan las condiciones de contorno.

Para establecer adecuadamente el sistema de ecuaciones hay volver a etiquetar


los nudos de forma que se evite la confusin de los dobles subndices. Se adopta
el esquema que sigue, en el que vi C.j 1/m D wij :
wmn

wm 2
wm 1
xr

vmn

yt

x yb

vm+1 vm+2 vm +3

v2m

v1

vm

xl

v2

v3

xr

nite difference solver of Poisson equation with Dirichlet boundary

Para construir el sistema Av D b, para un nudo .i; j / de la malla cuya


ecuacin es la p, los coeficientes Apq para varios q son estos:
x
i
x
i
i C1
i 1
i
j
i
j

y
j

Ecuacin nmero p
i C .j 1/m

y
j
j
j
C1
1

Coeficiente nmero q
i C .j 1/m
i C 1 C .j 1/m
i 1 C .j 1/m
i C jm
i C .j 2/m

41/66

De acuerdo con ella, en la ecuacin p, los coeficientes q, en la fila Apq de A son


1/m;i C.j 1/m

1/m;i C1.j 1/m

1/m;i 1C.j 1/m

AiC.j
Ai C.j
Ai C.j

1/m;i Cj m

1/m;i C.j 2/m

Ai C.j
AiC.j

El trmino de la derecha del nudo .i; j / es biC.j


Slo quedaran las condiciones de contorno.

2
h2

2
k2

1
h2
1
h2
1
k2
1
:
k2

1/m

D f .xi ; yj /.

En Matlab, estructurar todo para resolver la ecuacin de Poisson con


m D n D 5 en el rectngulo 0; 1  1; 2 y con las condiciones de Dirichlet
u.x; 1/
u.x; 2/
u.0; y/
u.1; y/

lleva a esto:

D
D
D
D

ln.x 2 C 1/
ln.x 2 C 4/
2 ln y
ln.y 2 C 1//

function w=Poisson(xl,xr,yb,yt,M,N)
% Ecuacin de Poisson por diferencias finitas
%
Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x,y) 0; g1=@(x) log(x.^2+1); g2=@(x) log(x.^2+4);
g3=@(y) 2*log(y); g4=@(y) log(y.^2+1);
m=M+1; n=N+1; mn=m*n; close all
h=(xr-xl)/M; h2=h^2; k=(yt-yb)/N; k2=k^2;
x=xl+(0:M)*h; y=yb+(0:N)*k;
A=zeros(mn,mn); b=zeros(mn,1);
for i=2:m-1
for j=2:n-1
A(i+(j-1)*m,i-1+(j-1)*m)=1/h2; A(i+(j-1)*m,i+1+(j-1)*m)=1/h2;
A(i+(j-1)*m,i+(j-1)*m)=-2/h2-2/k2;
A(i+(j-1)*m,i+(j-2)*m)=1/k2; A(i+(j-1)*m,i+j*m)=1/k2;
b(i+(j-1)*m)=f(x(i),y(j));
end
end
for i=1:m
j=1; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g1(x(i));
j=n; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g2(x(i));
end
for j=2:n-1
i=1; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g3(y(j));
i=m; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g4(y(j));
end
v=A\b;
w=reshape(v(1:mn),m,n);
mesh(x,y,w)
end

42/66

43/66

Si lo utilizamos con >> w=Poisson(0,1,1,2,4,4); para el problema


propuesto, se llega a la solucin de la grfica.

1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
2
1.8

1
1.6

0.8
0.6

1.4

0.4

1.2

0.2
1

44/66

Para encontrar el potencial electrosttico en el rectngulo 0; 1  0; 1,


suponiendo que no hay carga en el interior y las siguientes condiciones de
contorno
D
D
D
D

u.x; 0/
u.x; 1/
u.0; y/
u.1; y/

sen.x/
sen.x/
0
0

cambiando en el programa anterior las funciones de partida, haciendo


>> w=Poisson_1(0,1,0,1,10,10); queda
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
1
0.8

1
0.6

0.8
0.6

0.4

0.4

0.2

0.2
0

Mtodo de los elementos finitos, FEM

45/66

Ejemplo de aplicacin del MEF


ETSII-UPM

Los FEM para resolver ecuaciones diferenciales requieren estas etapas:


I. Reformulacin del problema en forma dbil o variacional.
II. Divisin del dominio de variables independientes en subdominios, llamados
elementos finitos, asociados a un espacio vectorial de dimensin finita.
III. Obtencin de la proyeccin del problema original sobre el espacio de
elementos finitos, lo que lo convierte en un sistema de ecuaciones lineales
de grandes dimensiones que se resuelve.

46/66

Los pasos anteriores permiten convertir un problema de clculo en derivadas


parciales en un problema de lgebra lineal.

La discretizacin en elementos finitos ayuda a construir un algoritmo de


proyeccin sencillo, logrando adems que la solucin por este mtodo sea
generalmente exacta en un conjunto finito de puntos. Estos puntos coinciden
usualmente con los vrtices de los elementos finitos o puntos destacados de los
mismos.

Los elementos finitos tienen formas geomtricas sencillas (tringulos,


rectngulos, tetraedros, prismas, etc.) que se unen entre s en unos puntos
llamados nodos. Dentro de cada elemento las variables dependientes se
interpolan a partir de sus valores en los nodos.

intricacies of the problem itself. For some of the exercises and in forthcoming
will complicate things a little bit.
In this initial section there is going to be a lot of new stuff. Take your tim
carefully, because we will be using this material during the entire course.
47/66

Seguiremos el principio de actuacin del mtodo3 de Galerkin aplicado a la


The physical domain
ecuacin elptica con las condiciones de Dirichlet que1.1sigue

The first thing we have to describe is the geometry (the physical setting of th
You have a sketch of it in Figure 1.1.

SD

u C ru D f .x; y/ dentro de la regin o dominio R


u D g.x; y/ sobre la frontera o borde S

SN

Figure 1.1: The domain and the Dirichlet and Neumann boundar

donde la solucin, u.x; y/, se define sobre una regin R en un plano limitado
por una borde o frontera S, continua por tramos de Dirichlet y Neumann.

We are thus given a polygon in the plane R2 . We call this polygon . It


is a closed polygonal curve . (There is not much difference if we suppose t
3

La idea es, a partir de un espacio vectorial de funciones integrables al cuadrado


en la regin R, espacio de Lebesgue, que volvemos a definir como




L2.R/D funciones .x; y/ enR .x; y/2 dx dy existe y es finita ;


R

minimizar el cuadrado del error de la ecuacin elptica forzando a que el residuo


u.x; y/ C r.x; y/u.x; y/ f .x; y/ sea ortogonal a un subespacio de L2 .R/.
3

Por Boris Grigoryevich Galerkin, Rusia 1871-1945, aunque descubierto por Walther Ritz, Suiza, 1878-1909.

48/66

Designaremos mediante L20.R/ el subespacio de L2.R/ de las funciones que son


cero en el borde o frontera S de la regin R.

Si las funciones 1.x; y/; 2.x; y/; : : : ; P .x; y/ son una base del subespacio
L2.R/, la condicin de ortogonalidad tiene esta forma


u C ru f p dx dy D 0
R

u C ru p dx dy D
R

f p dx dy;
R

para cada 1  p  P . A esta forma se le denomina forma dbil de la ecuacin


elptica.

49/66

La primera identidad de Green

George Green, Reino Unido 1793-1841

dice que si R es una regin, con frontera S continua a trozos, u y v funciones


continuas4 y n el vector unitario normal hacia afuera a lo largo de la frontera,

Z
@u
ru  rv:
vu D v dS
@n
S
R
R



La derivada direccional es @u
D
ru

n
;
n
x y , donde .nx ; ny / es el vector
@n
unitario normal hacia afuera en la frontera S de R.

La identidad de Green aplicada a la forma dbil resulta


@u
p dS
@n
S

rup dx dy D
f p dx dy:

ru  rp dx dy C
R

La funcin v se denomina de prueba.

(1)

50/66

La idea fundamental de los elementos finitos es aproximar u en la forma


dbil por
P
X
vq q .x; y/
w.x; y/ D
qD1

y despus determinar las constantes vq .




Supongamos para ello que p pertenece a L20.R/, es decir, P .S / D 0.


Sustituyendo la aproximacin por w.x; y/ en el resultado de aplicar la identidad
de Green (1), se tiene que, para cada p en L20.R/,
P
X

s
R

qD1

vq rq  rp dx dy C

P
X
qD1

vq q p dx dy D

f p dx dy
R

51/66

Factorizando las constantes vp ,


P
i

rq  rp dx dy

vq

rq p dx dy

Z
D

f p dx dy;
R

qD1

que es una ecuacin lineal para cada p en las incgnitas v1; : : : ; vP .




En forma matricial ser Av D b. Los coeficientes de la fila p de A y b son


apq D

rq  rp dx dy

rq p dx dy
R

y
bp D

f p dx dy
R

functions of x, y that live on triangles in the plane. For concreteness, let the region R b
a rectangular
grid. W
rectangle, and
form a triangulation
with nodes
 Qu funciones
j ) chosen from
explcitas
se pueden elegir
para (x
losi , yelementos
finitos
p ?
52/66
will reuse the M N grid from the previous section, shown in Figure 8.16(a), where
set m = M + 1 and n = N + 1. As before, we will denote the grid step size in the x and
5
directions
as h andlineales
k, respectively.
Figure 8.16(b)
shows
the triangulation
the rectangu
 Utilizaremos
B-splines
por tramos
basadas
en tringulos
en unof plano.
region that we will use.

Aqu se ve una triangularizacin de la regin R rectangular mallada M  N .

yt

yb

w1n w2n w3n

wmn

w12 w22 w32

wm2

w11 w21 w31

wm1

xl

xr

yt

w1n w2n w3n

wmn

wm2
wm1

yb
xl

xr

Figure 8.16 Finite element solver of elliptic equation with Dirichlet boundary conditions.

(a) Mesh is same as used for nite difference solver. (b) A possible triangulation of the region. Eac

Esta triangularizacin
.m DofMsixCdifferent
1; n D Ntriangles.
C 1/ da lugar a P D mn funciones
interior point is a vertex
lineales for tramos, p , cada una de las cuales toma el valor 1 en un punto de la
malla y 0 en los mn 1 restantes.
5

Recordemos, las B-splines (basis splines) son curvas hechas con trozos polinmicos de grado p .

53/66

Usando la numeracin introducida al presentar esta malla, las 1; : : : ; mn se


determinan mediante la igualdad iC.j 1/m.xi ; yj / D 1 y
iC.j 1/m.xi 0 ; yj 0 / D 0 para los dems puntos de la malla .xi 0 ; yj 0 /, si son
lineales en los tringulos.

Cada p .x; y/ es derivable, excepto en los bordes o aristas de los tringulos, por
lo que son funciones de L2.R/ integrables de Riemann.

Se cumple adems para las aproximaciones que


w.xi ; yj / D

m X
n
X

viC.j

1/m i C.j 1/n .xi ; yj /

D vi C.j

1/m ;

i D1 j D1

para i D 1; : : : ; m, j D 1; : : : ; ; n. Es decir, en cada punto .xi ; yj / la


aproximacin w de la solucin correcta u ser la que se obtenga al resolver
Av D b.

54/66

Para completar la exposicin del procedimiento FEM queda el clculo de los


coeficientes de la matriz A y del trmino independiente b.

Para ello, si definimos el baricentro de una regin del plano como el punto
.x;
N y/
N donde

y dx dy
x
dx
dy
; yN D R
:
xN D R
1
dx
dy
1
dx
dy
R
R
Si R es un tringulo de vrtices .x1; y1/, .x2; y2/ y .x3; y3/ su baricentro es
xN D

x1 C x2 C x3
;
3

yN D

y1 C y2 C y3
:
3

Tendremos en cuenta que el valor medio de una funcin lineal L.x; y/ en una
regin
plana R es L.x;
N y/,
N el valor en el baricentro. En otras palabras,

N y/
N  rea.R/.
R L.x; y/ dx dy D L.x;

El desarrollo en serie de Taylor de una funcin de dos variables dice que


f .x; y/ D f .x;
N y/
N C @f
.x;
N y/.x
N
@x
CO .x

x/
N 2; .x

x/.y
N

x/
N 2; .x

D L.x; y/ C O .x


x/
N C @f
.x;
N y/.y
N
@y

y/
N


y/
N 2

y/;
N .y
x/.y
N

y/;
N .y


y/
N 2 :

En consecuencia,6

f .x; y/ dx dy D
R

O .x

L.x; y/ dx dy C
R

x/
N 2 ; .x

x/.y
N

y/;
N .y


y/
N 2 dx dy

Drea.R/  L.x;
N y/
N C O.h4 / D rea.R/  f .x;
N y/
N C O.h4 /;

donde h es el dimetro de R, la distancia ms grande entre dos puntos de R.




55/66

Por otro lado, si .x; y/ es una funcin lineal en el tringulo T de vrtices


.x1; y1/, .x2; y2/ y .x3; y3/, que cumple que .x1; y1/ D 1, .x2; y2/ D 0 y
.x3; y3/ D 0, entonces .x;
N y/
N D 1=3.
6

Regla del punto medio en dos dimensiones.

Si 1.x; y/ y 2.x; y/ son dos funciones lineales en ese mismo tringulo, que
cumplen que 1.x1; y1/ D 1, 1.x2; y2/ D 0, 1.x3; y3/ D 0, 2.x1; y1/ D 0,
2.x2; y2/ D 1 y 2.x3; y3/ D 0 y f .x; y/ es una funcin continua y derivable
dos veces, con
"
#

56/66

1 1 1
d D det x1 x2 x3
y1 y2 y3

entonces
a/ el tringulo T tiene un rea igual a jd j=2

b/ r1 .x; y/ D y2 d y3 ; x3 d x2

.x2 x3 /2 C .y2 y3 /2
c/
r1  r1 dx dy D
2jd j
T

.x1 x3 /.x2 x3 / .y1 y3 /.y2 y3 /


d/
r1  r2 dx dy D
2jd j
T

4
e/
f 1 2 dx dy D f .x;
N y/jd
N j=18 C O.h / D
f 12 dx dy
T

f 1 dx dy D f .x;
N y/jd
N j=6 C O.h4 /;

f/
T

donde .x;
N y/
N es el baricentro de T y h D dime.T /.

8.3 Elliptic
| 411 hexagonal
Para obtener A, consideremos el .xi ; yj / en el interior
en Equations
esta figura

57/66

(xi,y j+1)

(xi 1,y j )

1
(xi 1,y j 1)

(xi+1,y j+1)

5
4

(xi+1,y j )

3
2

(xi ,y j 1)

8.17 Detail of the (i, j) interior point from Figure 8.16(b). Each interior point (xi , yj )
que no est enFigure
la frontera
S del rectngulo mallado considerado. Est rodeado
is surrounded by six triangles, numbered as shown. The B-spline function i+(j1)m is linear,
takes the
1 at the center,
and is zero
outside of thesees
six lineal
triangles. y toma el valor 1 en el
de seis tringulos.
Lavalue
funcin
B-spline
iC.j
1/m
centro y 0 fuera de esos tringulos.

The triangles have horizontal and vertical sides h and k, respectively. For the rst integral,
summing from triangle 1 to triangle 6, respectively, we can use Lemma 8.10(c) to sum the
six contributions

Como p D q D i 2C .j2 1/m


el coeficiente
Ai C.j 1/m;iC.j
1/m est compuesto
k
h
h2 + k 2
k2
h2
h2 + k 2
2(h2 + k 2 )
+ son
+ cero fuera
+
+ esos
+ seis tringulos.
=
.
(8.54)
de dos integrales,2hkque
2hk
2hk
2hk de2hk
2hk
hk
For the second integral of (8.51), we use Lemma 8.10(e). Again, the integrals are zero except
for the six triangles shown. The barycenters of the six triangles are

Los 6 tringulos tienen lados horizontales


k. La primera integral,
2 h y verticales
1

B1 = (xi h, yj k)
2
2
2
h
Ck
2
2
2
2
2
2
2
2
3 Ck
3k
h
h
Ck
k
C 2hk
C 1h 2hk
C22hk
C 2hk
C h 2hk
D
. Los
desde el tringulo 1 al 6, es 2hk
hk
baricentros de los seis

2
B2 = (xi
k) 13 k 
B1 Dh,xyi j
3 h; yj
3
1 3
2
B2 D xi
3 h; yj
3k
1
B3 1D xi C 13 h;1yj
h,
y
k)
B
=
(x
+

tringulos 3son i B4 3D xi jC 23 h;3yj C 331kk


B5 2D xi C 13 h;1yj C 32 k
1
1
B6 Dh,xyi j +
B4 = (xi +
j C 3k :
3 h; yk)
3
3

La segunda integral es

58/66

.hk=18/ r.B1 / C r.B2 / C r.B3 / C r.B4 / C r.B5 / C r.B6 /

por lo que sumando las dos se tiene que



AiC.j

1/m;iC.j 1/m

2 h2 Ck 2
hk

hk
r.B1 / C r.B2 / C r.B3 / C r.B4 / C r.B5 / C r.B6 /:
18

De la misma forma,
Ai C.j

1/m;i 1C.j 1/m

k
h

Ai C.j

1/m;i 1C.j 2/m


hk 
r.B
/
C
r.B
/
1
2
18

1/m;i C.j 2/m

h
k


hk 
r.B
/
C
r.B
/
2
3
18

1/m;i C1C.j 1/m

k
h


hk 
r.B
/
C
r.B
/
3
4
18


hk 
r.B
/
C
r.B
/
4
5
18

k
h

Ai C.j
Ai C.j

AiC.j

1/m;i C1Cj m

Ai C.j

1/m;i Cj m


hk 
r.B
/
C
r.B
/
6
1
18


hk 
r.B5 / C r.B6 /
18

59/66

Para calcular los coeficientes de b se procede de forma similar resultando que,


para p D i C .j 1/m,
bi C.j

1/m


hk 
f .B1 / C f .B2 / C f .B3 / C f .B4 / C f .B5 / C f .B6 / :
6

Para los elementos finitos en la frontera, i C.j 1/m no pertenece a L20.R/ por lo
que se usan Ai C.j 1/m;iC.j 1/m D 1 y bi C.j 1/m D g.xi ; yj / para garantizar la
condicin de Dirichlet vi C.j 1/m D g.xi ; yj / en el punto frontera .xi ; yj /.

60/66

En Matlab para la ecuacin de Poisson se consigue esto:


function w=Poisson_FEM_1(xl,xr,yb,yt,M,N)
% Ecuacin de Poisson por Elementos Finitos
%
Entrada: [xl,xr], tiempo[yb,yt], pasos M, tiempos N
f=@(x,y) 0; r=@(x,y) 0; g1=@(x) log(x.^2+1); g2=@(x) log(x.^2+4); g3=@(y) 2*log(y); g4=@(y) log(y.^2+1);
m=M+1; n=N+1; mn=m*n; close all
h=(xr-xl)/M; h2=h^2; k=(yt-yb)/N; k2=k^2; hk=h*k;
x=xl+(0:M)*h; y=yb+(0:N)*k;
% valores para la mesh
A=zeros(mn,mn); b=zeros(mn,1);
for i=2:m-1
% puntos del interior
for j=2:n-1
rsum=r(x(i)-2*h/3,y(j)-k/3)+r(x(i)-h/3,y(j)-2*k/3)+r(x(i)+h/3,y(j)-k/3);
rsum=rsum+r(x(i)+2*h/3,y(j)+k/3)+r(x(i)+h/3,y(j)+2*k/3)+r(x(i)-h/3,y(j)+k/3);
A(i+(j-1)*m,i+(j-1)*m)=2*(h2+k2)/(hk)-hk*rsum/18;
A(i+(j-1)*m,i-1+(j-1)*m)=-k/h-hk*(r(x(i)-h/3,y(j)+k/3)+r(x(i)-2*h/3,y(j)-k/3))/18;
A(i+(j-1)*m,i-1+(j-2)*m)=-hk*(r(x(i)-2*h/3,y(j)-k/3)+r(x(i)-h/3,y(j)-2*k/3))/18;
A(i+(j-1)*m,i+(j-2)*m)=-k/h-hk*(r(x(i)-h/3,y(j)-2*k/3)+r(x(i)+h/3,y(j)-k/3))/18;
A(i+(j-1)*m,i+1+(j-1)*m)=-k/h-hk*(r(x(i)+h/3,y(j)-k/3)+r(x(i)+2*h/3,y(j)+k/3))/18;
A(i+(j-1)*m,i+1+j*m)=-hk*(r(x(i)+2*h/3,y(j)+k/3)+r(x(i)+h/3,y(j)+2*k/3))/18;
A(i+(j-1)*m,i+j*m)=-k/h-hk*(r(x(i)+h/3,y(j)+2*k/3)+r(x(i)-h/3,y(j)+k/3))/18;
fsum=f(x(i)-2*h/3,y(j)-k/3)+f(x(i)-h/3,y(j)-2*k/3)+f(x(i)+h/3,y(j)-k/3);
fsum=fsum+f(x(i)+2*h/3,y(j)+k/3)+f(x(i)+h/3,y(j)+2*k/3)+f(x(i)-h/3,y(j)+k/3);
b(i+(j-1)*m)=-h*k*fsum/6;
end
end
for i=1:m
j=1; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g1(x(i));
j=n; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g2(x(i));
end
for j=2:n-1
i=1; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g3(y(j));
i=m; A(i+(j-1)*m,i+(j-1)*m)=1; b(i+(j-1)*m)=g4(y(j));
end
v=A\b;
w=reshape(v(1:mn),m,n);
mesh(x,y,w)
end

Si lo utilizamos con >> w=Poisson_FEM_1(0,1,1,2,4,4); se llega a


2

1.5

0.5

0
2
1
0.8

1.5

0.6
0.4
1

0.2
0

Con >> w=Poisson_FEM_1(0,1,1,2,20,20);


2

1.5

0.5

0
2
1
0.8

1.5

0.6
0.4
1

0.2
0

61/66

Resolucin de EDP no lineales




Utilizaremos la estrategia del mtodo de las diferencias atrasadas.

La aplicaremos a una tpica ecuacin no lineal en derivadas parciales,


u t C uux D Duxx
conocida como la ecuacin de Burgers.

Est presente en mecnica de fluidos, flujo de trfico, acstica, etc. Si D > 0,


modeliza fluidos viscosos; si D D 0, fluidos invscidos o sin viscosidad.

Johannes Martinus Burgers, Paises Bajos,


1895-1981

62/66

63/66

APTER 8 Partial Differential Equations

Utilizaremos una discretizacin como la de la ecuacin del calor.


t
T

x
a

Figure 8.1 Mesh for the Finite Difference Method. The lled circles represent known
and boundary
conditions.
open circles
unknown values
that must y
be de contorno
Los puntosinitial
slidos
son los
queThedefinen
lasrepresent
condiciones
iniciales
determined.
(conocidos); los huecos, los que calcular el mtodo.

its approximation at (xi , tj ) by wij . Let M and N be the total number of steps in the x and t
 Si wij es directions,
and let h = (bde
a)/M
and k = T en
/N be
in the x anddiferencias
t directions.
la aproximacin
la solucin
.xthei ; step
tj /,sizes
aplicando
The discretization formulas from Chapter 5 can be used to approximate derivatives in
atrasadas the
a xuand
en los applying
otros trminos
de u t Cformula
uux DforDu
se tiene
i yt centradas
directions. For example,
the centered-difference
the xx
second
derivative to the x variable yields

wij wi;j 1
wiC1;j wi 1;j 
D
C
w
D
w
2w
C
w
ij
i C1;j
ij
i 1;j :
1 2h
k
h2
uxx (x, t) 2 (u(x + h, t) 2u(x, t) + u(x h, t)),
(8.4)
h
with error h2 uxxxx (c1 , t)/12; and the forward-difference formula for the rst derivative

que

64/66

Reordenando,
h
wij C 2h
wij wi C1;j

wi

1;j

 wi C1;j

2wij C wi

1;j

wi;j

D 0;

donde  D Dk= h2.




Al ser una ecuacin no lineal en w, se resolver por Newton-Raphson.

Si se hace zi D wij , en la etapa de tiempo j se trata de resolver la ecuaciones


en las variables z1; : : : ; zm


k
zi ziC1 zi 1
 ziC1 2zi C zi 1
wi;j 1 D 0;
Fi .z1; : : : ; zm/ D zi C 2h
para i D 1; : : : ; m. El trmino wi;j

se conoce de la etapa anterior.

La primera y la ltima de estas ecuaciones se reemplazan por las condiciones de


contorno apropiadas. As, para el caso de la ecuacin de Burgers con
condiciones de Dirichlet
8
< ut C uux D Duxx

65/66

u.x; 0/ D f .x/ para xl  x  xr


u.xl ; t / D l.t / para todo t  0
u.xr ; t / D r.t / para todo t  0;

F .z ; : : : ; z / D z

las ecuaciones 1 y m son F 1.z1; : : : ; zm/ D z1


m 1
m
m


l.tj / D 0
r.tj / D 0:

Para aplicar Newton-Raphson la Jacobiana del sistema,


2
6 
6
6
6
6
6
J .z/D6
6
6
6
6
4

1
kz2
2h

0
1C2 C k.z32h z1 /


kz3
2h

J .z/ D @@F
z,

es
3

2
 C kz
2h

1C2 C k.z42h z2 /
::
:

3
 C kz
2h
::
:

kzm
2h

::
1

1C2 C k.zm 2hzm


0

La frmula de recurrencia zkC1 D zk

J .zk / 1 F .zk /

2/

m
 C kz2h

7
7
7
7
7
7
7
7
7
17
7
5

Ejemplo Resolvamos la ecuacin de Burgers

El cdigo que lo hace es:

Con

u t C uux D Duxx

< u.x; 0/ D 2D  sen.x/ para 0  x  1


C cos.x/

u.0;
t
/
D
0
para todo t  0

: u.1; t / D 0 para todo t  0:

function w=Burgers(xl,xr,tb,te,M,N)
% Ecuacin de Burges; diferencias atrasadas; In [xl,xr], tiempo[tb,te], M, N
alfa=5; beta=4; D=0.05;
f=@(x) 2*D*beta*pi*sin(pi*x)./(alfa+beta*cos(pi*x));
l=@(t) 0*t; r=@(t) 0*t;
m=M+1; n=N; close all
h=(xr-xl)/M; k=(te-tb)/N; sigma=D*k/h/h;
w(:,1)=f(xl+(0:M)*h); w1=w;
for j=1:n
for it=1:4
DF1=diag(1+2*sigma*ones(m,1))+diag(-sigma*ones(m-1,1),1);
DF1=DF1+diag(-sigma*ones(m-1,1),-1);
DF2=diag([0;k*w1(2:m-1)/(2*h)],1)-diag([k*w1(2:m-1)/(2*h);0],-1);
DF=DF1+DF2;
F=-w(:,j)+(DF1+DF2/2)*w1;
DF(1,:)=[1 zeros(1,m-1)]; DF(m,:)=[zeros(1,m-1) 1];
F(1)=w1(1)-l(j); F(m)=w1(m)-r(j);
w1=w1-DF\F;
% Newton-Raphson
end
w(:,j+1)=w1;
end
x=xl+(0:M)*h; t=tb+(0:n)*k; mesh(x,t,w)
end

>> w=Burgers(0,1,0,2,250,250);

se obtiene

66/66

Potrebbero piacerti anche