Está en la página 1de 275

MECÁNICA COMPUTACIONAL I

Capítulo 1

Introducción a la Computación
Contenido

– Ejemplos de problemas en Ingeniería Mecánica.

– Modelos numéricos. Cifras significativas. Error absoluto y relativo.


Exactitud y precisión. Aproximaciones y tipo de errores.

– Algoritmos: descripción y objetivos.

– Operadores: lógicos, aritméticos y relacionales

– Representación de números en el computador

– Introducción a la programación en MatLab


Solución de problemas en ingeniería

Solución de problemas: combinación entre técnica e


inteligencia
1. Pasos típicos:
– Existencia de una necesidad ligada a un entorno
2. Planteamiento inicial del problema
3. Análisis inicial
ƒRevisar la problemática planteada en su
entorno.
ƒ¿Qué se quiere?
ƒ¿Qué se requiere?
Solución de problemas en ingeniería

4. Formulación del problema


ƒSatisface requerimientos de los involucrados:
el de la necesidad y el que lo va a resolver
5. Propuesta de modelo base
ƒModelo conceptual
6. Formulación del modelo matemático
ƒAñade nuevas restricciones al modelo
7. Determinar soluciones al modelo matemático
ƒAnalíticas ó Numéricas
Solución de problemas en ingeniería

8. Análisis de la solución
ƒVerificar consistencia con la situación
planteada
ƒ¿Cumple las expectativas?
ƒ¿Permite hacer predicciones?

9. Aplicación de los resultados o reformulación del


problema o modelos
Solución de problemas en ingeniería

EJEMPLO: Una nueva empresa desea construir paracaídas.


Para ello requiere conocer la cantidad de tela por
paracaídas y solicita su recomendación como
especialista.
1. Necesidad : Determinar la cantidad de tela por paracaídas

Entorno:

(a) Lanzamiento en caída libre

(b) Resistencia máxima de un ser humano a impactos


Solución de problemas en ingeniería

2. Planteamiento inicial del problema: Determinar la cantidad


de tela por paracaídas.

3. Análisis inicial

– Cantidad de tela dependerá de la forma, tamaño,


peso, etc.

– La velocidad final máxima del sujeto es el parámetro


crucial para determinar si el paracaídas funciona y, en
consecuencia la cantidad de tela que requiere cada
paracaídas

4. Formulación del problema: ¿Qué velocidad máxima, si la


hubiere, alcanza un paracaidista de masa m que se lanza
desde un avión a una altura h?
Solución de problemas en ingeniería

5. Propuesta de modelo base

– Caída libre

– No hay interacción con el medio externo

6. Formulación del modelo matemático


dv
F = ma = m = mg
dt

7. Determinar soluciones al modelo matemático

v = 2 gh
Solución de problemas en ingeniería

8. Análisis de la solución

– No existe una velocidad limite salvo la impuesta por la


altura

– No aparece la cantidad de tela como un parámetro

9. Aplicación de los resultados o reformulación del problema


o modelos

– Debemos incluir la fricción con el aire


Solución de problemas en ingeniería
Re-formulación del modelo matemático

5. Propuesta de modelo base

– Caída libre

– Resistencia del aire es importante

6. Formulación del modelo matemático

dv FR = −Cv
F = ma = m = mg + FR
dt
C es un coeficiente que toma en cuenta los efectos de resistencia
del medio ambiente

7. Determinar soluciones al modelo matemático


gm ⎛ − (C )t ⎞
v(t ) = ⎜1 − e m ⎟
C ⎝ ⎠
Solución de problemas en ingeniería

8. Análisis de la solución
gm
– Existe una velocidad limite dada por v=
C
– Modelo satisface expectativas

9. Aplicación de los resultados o reformulación del problema


o modelos

– Conocidas las condiciones del problema (m, C, g)


podemos determinar la velocidad limite.

– Por ejemplo para m= 68.1 Kg, C= 12.5 Kg/s y g=9.8


m/s2 obtenemos:
v = 53.4m / s
Solución de problemas en ingeniería

Pudiéramos determinar inclusive la evolución de la


velocidad en el tiempo. En ese caso tendríamos:
Velocidad de caída del paracaídista (Analítica)
60

50

40
v(m/s)

30

20

10

0
0 10 20 30 40 50
t(s)
Solución de problemas en ingeniería
Buscando la solución de la EDO (MATHEMATICATM)

DSolveA9y'@tD y@tD, y@0D 0=, y@tD, tE


C
In[1]:= g−
m
− Ct i Ct y
m j
j− 1 + m z
z gm
Out[1]= ::y@tD →
k { >>
C

−dv
Ct
i
F = ma = m m =j
j− 1 ++ FmR y
Ct
z
z g m FR = −Cv
In[4]:= SimplifyA
dt k { E
mg
C
i
j − Ct y
m z
j1 − z gm
k {
Out[4]=
7. Determinar
C soluciones al modelo matemático
Modelos numéricos
Aplicación de un modelo numérico

Supongamos que no podemos hallar la solución analítica.


Un posible modelo numérico podría ser obtenido a partir
de
dv
F = ma = m = mg − Cv
dt
De la definición de derivación obtenemos
v ( t + Δt ) − v ( t ) ⎡ C ⎤
v ( t + Δt ) ≈ v ( t ) + ⎢ g − v ( t ) ⎥ Δ t
C
≈ g − v (t )
Δt m ⎣ m ⎦

Conocida la velocidad en el instante inicial (t=0) podemos


calcularla en el instante t=Δt. Luego, con esta nueva
velocidad, el cálculo se repite de manera iterativa para
obtener la velocidad en cada instante Δt
Modelos numéricos
Comparación entre velocidad analítica y numérica
60

50

v (m /s ) 40

30

20

10

0
0 10 20 30 40 50
t(s)

–Las predicciones de velocidad terminal coinciden

–Sin embargo durante los instantes iniciales se producen


discrepancias entre los valores teóricos y numéricos
Modelos numéricos

Error relativo
10

8
-v)/v*100

6
num

4
(v

0
0 10 20 30 40 50
t(s)

Estudiar la naturaleza de estos métodos y la manera en las


cuales sus descripciones reflejan de manera fidedigna la
realidad es el objeto de los métodos numéricos.
Introducción a MATLAB

¿Cómo se construyeron los gráficos mostrados en las láminas


anteriores?
MATLAB®
“MATLAB® es un lenguaje de alto rendimiento para computación
técnico-científica.
Integra computación, visualización y programación en un
ambiente amigable.
Usos típicos incluyen aplicaciones matemáticas, implementación
de algoritmos, manejo de datos y visualización científica y
manejo de datos.
Permite resolver muchos problemas de ingeniería, especialmente
aquellos en cuya formulación pueden emplearse matrices y
vectores en una fracción del tiempo que tomaría escribir un
programa en un lenguaje no interactivo como C o Fortran.”
(Tomado del manual de MATLAB)
Introducción a MATLAB

Cuando inicia una sección en MATLAB:

Directorio de Trabajo

WorkSpace

Ventana de Comandos

Historia de comandos
Introducción a MATLAB

Las gráficas anteriores fueron


generadas utilizando los
comandos
>> t=linspace(0,50);

>> v=(g*m/C)*(1-exp(-(C/m)*t));

>> plot(t,v)

Para obtener
Introducción a MATLAB

Algunos aspectos:

–Variables

–Uso de punto y coma

–Manejo de matrices y vectores

–Optimizando aspecto del gráfico


Cifras significativas

– El concepto de cifra significativa o dígito ha sido


desarrollado para designar formalmente la
confiabilidad de un valor numérico.

– Los dígitos significativos de un número son


aquellos que pueden ser empleados con
confianza.
– Ello corresponde a dígitos
ciertos más un dígito
estimado. Por ejemplo, en
el manómetro de la figura,
los dígitos ciertos serían
49, mientras que para el
caso de tres cifras se
pudiese escribir 49.5.
Cifras significativas

Los ceros no son siempre cifras significativas. Esto


depende de su localización respecto al punto decimal.

Los valores

0.00001845, 0.0001845, 0.001845

tienen todos cuatro cifras significativas.

Similarmente, cuando se tienen ceros al final de algunos


números, no esta claro el significado de los mismos. Por
ejemplo:

453.00

puede tener 3, 4 ó 5 cifras significativas, dependiendo de


cuantos de esos ceros se conocen con confianza.
Cifras significativas

Esta incertidumbre puede ser resuelta al emplear


notación científica. Los valores:

4.53·102

4.530·102

4.5300·102

designan que el número se conoce con tres, cuatro y


cinco cifras significativas, respectivamente.
Cifras significativas

Este concepto de cifras significativas tiene dos


implicaciones importantes para el estudio de los métodos
numéricos [Chapra]:
– Los métodos numéricos producen resultados aproximados.
Por esto se debe desarrollar un criterio para especificar la
confiabilidad de los resultados. Una forma puede ser en
términos de cifras significativas.

– Aunque números tales como π, e y √7 representan


cantidades matemáticas específicas, no pueden ser
representados exactamente por una cantidad limitada de
dígitos.
Errores absoluto y relativo

Error absoluto: si p* es una aproximación al valor


verdadero p, el módulo de la diferencia entre las dos
cantidades se conoce como error absoluto. Su valor está
definido por:
εa = p − p* ,

que proporciona una medida de la desviación de p


respecto a p*.

El inconveniente de esta cantidad es que el valor


resultante no facilita la apreciación del error, a menos
que se conozca la magnitud de las cantidades p y p*
involucradas.
Errores absoluto y relativo

Error relativo: si p* es una aproximación al valor


verdadero p, la relación entre el error absoluto y el
módulo del valor verdadero p se conoce como error
relativo. Su valor está definido por:

p − p*
εr = , p≠0 ,
p
Esta medida nos permite apreciar mejor cuán cerca se
encuentra realmente el valor aproximado del valor real.
Sin embargo, para valores cercanos a cero, esta
representación del error puede llevar a falsas
interpretaciones.
Exactitud y Precisión

La exactitud se refiere a la cercanía de un valor calculado


o medido respecto al valor real.

La precisión se refiere a la proximidad que presentan


valores calculados o medidos respecto a otros.
bias
Precisión

La precisión hace referencia


al número de cifras
(c) (d)
significativas representando
la dispersión en cálculos o
medidas repetitivas de un
valor particular.
(a) (b)

Exactitud
Exactitud y Precisión

En la mayoría de aplicaciones que surgen en la práctica los


problemas son tan complejos que no pueden ser resueltos
por técnicas analíticas o exactas. Así, casi nunca existirá un
patrón o referencia para juzgar a la solución numérica.

Por ende, nunca debe hablarse en métodos numéricos de


la exactitud de un esquema de solución o algoritmo, en
contraste debe hablarse en términos de precisión,
enfatizando con ello que el esquema numérico converge a
una solución.

Así que en análisis numérico el escenario asumido es (c),


debiéndose determinar obligatoriamente el eventual bias
presente de manera de garantizar que este también tiende
a cero a medida que el algoritmo converge a una eventual
solución.
Aproximaciones y errores

Errores por truncamiento: errores asociados a la


utilización de una cantidad finita de términos en el
cálculo en la aplicación de un método numérico. Por
ejemplo, al utilizar tres términos de una serie de Taylor
para aproximar un valor f(x):

f ′′ ( x0 ) ⋅ ( x − x0 )
2

f ( x ) = f ( x0 ) + f ( x0 ) ⋅ ( x − x0 ) +

2!
(
+ O ( x − x0 )
3
)
se tiene que se comete un error por el hecho de truncar
el desarrollo. El término O((x-x0)3) indica que se está
cometiendo un error debido al truncamiento de la serie
de Taylor del orden de (x-x0)3. Por supuesto, al utilizar
más términos puede disminuir el orden de magnitud del
error cometido.
Aproximaciones y errores

Errores por redondeo: todos los dispositivos de


cálculo representan números con alguna imprecisión.

Los computadores digitales siempre almacenan las


cantidades numéricas con una cantidad finita de cifras
significativas, de forma que los valores verdaderos no
pueden ser representados exactamente.

A esto se llama un “error de redondeo”, ya que la


fracción decimal esta redondeada.
Algoritmos

Un algoritmo es una secuencia de pasos lógicos


requeridos para realizar una tarea específica, tal como
resolver un problema matemático.
Para cumplir con este objetivo, un buen algoritmo debe
tener los siguientes atributos:
– Cada paso debe ser determinístico, esto es, cada
enunciado debe ser independiente de las demás partes
del proceso.
– El proceso siempre debe terminar después de una
cantidad finita de pasos.
– El algoritmo debe ser lo suficientemente general como
para poder manejar la mayoría de las situaciones que
pueda presentar en el problema.
Ejemplo de Algoritmo

Ejemplo 1: Algoritmo para la solución de un problema


simple de sumar dos números:

Paso 1: Inicio del cálculo

Paso 2: Leer el valor del primer término A.

Paso 3: Leer el valor del segundo término B.

Paso 4: Sumar A y B y almacenar la respuesta en C.

Paso 5: Mostrar la solución C.

Paso 6: Fin del calculo.


Algoritmo

Para resolver de forma eficiente y adecuada problemas


más complejos, es indispensable estar familiarizado con
el problema a resolver, así como con sus posibles
soluciones.

Es conveniente tener a la mano toda la información


disponible acerca de tales soluciones, de forma que el
algoritmo pueda tener los atributos mencionados
anteriormente.

Este aspecto se presenta en el siguiente ejemplo.


Ejemplo de Algoritmos

Ejemplo 2: Hallar la solución a una ecuación de


segundo grado de la forma:
a ⋅ x2 + b ⋅ x + c = 0

La ecuación tiene dos soluciones, cuya naturaleza


,
depende de una cantidad llamada discriminante
d = b 2 − 4a ⋅ c
Si d > 0, se tienen soluciones reales y distintas dadas
por:
−b+ d −b− d
x1 = x2 =
2⋅a 2⋅a
Para d = 0, se tienen soluciones reales e iguales,
b
x 1,2 = −
2⋅a
Ejemplos de Algoritmos

Para d < 0, se tienen soluciones complejas conjugadas,


cuyas partes real e imaginaria se obtienen con
b -d
xr = − xi =
2⋅a 2⋅a

y las soluciones se presentan como:

x 1 = x r + x ii x1 = x r -x i i

Con toda esta información disponible, es posible escribir


un buen algoritmo. La lámina siguiente muestra un
algoritmo basado en esta información
Ejemplo

Algoritmo para resolver una ecuación de segundo


grado:

Inicio α β

Leer valores si no
de a, b, c d>0
xr = -b / 2a
xi = √(-d) / 2a
2
d = b – 4•a•c x1 = (-b + √d) / 2a
x2 = (-b - √d) / 2a x = -b / 2a

Mostrar “x1,2 = “,
no Mostrar
d≥0 β Mostrar xr,“±”,xi,“i”
“x1 = “, x1 “x1,2 = “, x
“x2 = “, x2
si

α
Fin Fin
Ejemplo MATLAB

% Programa SolEcSegGr
xr=-b/(2*a);
% SolEcSegGr halla las raices de una ecuación de segundo grado
xi=sqrt(abs(d))/(2*a);
% a x^2 + b x + c = 0
disp([' x1 = ' num2str(xr) ' + i ' num2str(xi)]);
disp([' x2 = ' num2str(xr) ' - i ' num2str(xi)]);
clear all;
end
disp([' Solucion de una ecuacion de segundo grado ']);
disp([' Introduccion de los coeficientes A,B y C ']);
a = input('a = ');
b = input('b = ');
c = input('c = ');

% Calculo del discriminante

d = b^2 - 4*a*c;
if d>=0
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
disp([' x1 = ' num2str(x1)]);
disp([' x2 = ' num2str(x2)]);
else
Operadores aritméticos, relacionales y lógicos

• Los algoritmos asociados a los métodos numéricos


siempre requieren que se realicen acciones y
comparaciones entre valores y eventos que ocurren
dentro de los mismos.

• Estas acciones y comparaciones son realizadas por los


operadores (símbolos que, en general, indican alguna
relación entre dos o más objetos denominados
operandos).

• Los operadores se clasifican en tres grandes grupos:


aritméticos, relacionales y lógicos.

• También por la cantidad de operandos que afectan, los


operadores pueden ser unarios, cuando operan sobre un
solo elemento, o binarios, cuando actúan sobre dos
elementos.
Operadores aritméticos

– Estos operadores son los más conocidos, y están


formados por los símbolos +, -, *, /, y ocasionalmente
algún otro símbolo que realiza alguna operación
especial.

– Estos operadores realizan, como su nombre lo indica,


operaciones aritméticas: suma, resta, multiplicación y
división.

– El - y él +, además funcionan como operadores


unarios, cambiando o dejando igual el signo del
operando.
Operadores aritméticos

Ejemplo Resultado
Símbolo Operación Tipo
de uso
+ suma (adición) binario a+b a+b
- resta (sustracción) binario a-b a-b
* multiplicación binario a*b a*b
(producto)
/ división (cociente) binario a/b a/b
+ mismo signo unario +a A
- cambio de signo unario -a -a
Operadores relacionales

– Se trata de los operadores >, <, ≥, ≤, etc., los cuales


comparan los valores relativos de los operandos.

– El resultado de una operación relacional es uno de los


valores CIERTO o FALSO, los cuales son conocidos
como valores lógicos.

– En general, indistintamente del lenguaje de


programación puede afirmarse que el valor CIERTO
es cualquier número distinto de cero (típicamente 1)
mientras que FALSO siempre es cero.
Operadores relacionales

Ejemplo de Resultado
Símbolo Operación Tipo
uso
CIERTO o
> mayor a binario a>b
FALSO
CIERTO o
≥ mayor o igual a binario a≥b
FALSO
CIERTO o
< menor a binario a<b
FALSO
CIERTO o
≤ menor o igual a binario a≤b
FALSO
CIERTO o
= igual a binario a=b
FALSO
CIERTO o
≠ distinto a binario a≠b
FALSO
Operadores lógicos

– Los menos utilizados en la actividad cotidiana, pero


ampliamente conocidos en el ámbito computacional.

– Estos operadores actúan sobre valores lógicos y el


resultado de una operación lógica es un valor lógico.

– Existe una amplia variedad de operadores lógicos,


pero los más utilizados se muestran en la tabla de la
lámina siguiente.

– Los símbolos para representar un operador lógico


varían en los distintos sistemas de cómputo, por lo
que se muestra el nombre en inglés en lugar de un
símbolo particular.

– Los nombres entre paréntesis son los equivalentes


en español.
Operadores lógicos

Ejemplo Resultado
Nombre Operación Tipo
de uso
CIERTO si a y b son
AND (Y) Y lógico binario a AND b ciertos, FALSO en
cualquier otro caso
FALSO si a y b son
OR (O) O lógico binario a OR b falsos, CIERTO en
cualquier otro caso
CIERTO si a es
NOT (NO) Negación unario NOT a FALSO, FALSO si a es
CIERTO
CIERTO si a y b
XOR tienen el mismo valor,
O exclusivo binario a XOR b
(XOR) FALSO en cualquier
otro caso.
Operadores lógicos

– Otra representación del resultado de la acción


de estos operadores es (I):

AND OR
a b CIERTO FALSO a b CIERTO FALSO

CIERTO CIERTO FALSO CIERTO CIERTO CIERTO

FALSO FALSO FALSO FALSO CIERTO FALSO


Operadores lógicos

– Otra representación del resultado de la acción


de estos operadores es (II):

NOT XOR
a
a ----- CIERTO FALSO
b

CIERTO FALSO CIERTO CIERTO FALSO

FALSO CIERTO FALSO FALSO CIERTO


Opciones para representar a los algoritmos

Diagramas de bloque

Los diagramas de bloque son una representación


gráfica de los algoritmos.

Estos emplean una serie de bloques y flechas, cada


una de las cuales representa una operación o paso
del algoritmo.

Las flechas representan la secuencia de


implementación de las operaciones.

Algunos símbolos de uso frecuente y su significado se


muestran en la tabla presentada en la lámina
siguiente.
Opciones para representar a los algoritmos

Símbolo Significado Símbolo Significado


Decisión. Indica
Terminador. Inicio o
bifurcación del flujo
fin de programa
del algoritmo
Proceso. Indica
Conector. Enlaza
cálculo o
diagramas en la
manipulación de
misma página
datos
Conector. Enlaza
Datos. Indica entrada
diagramas en
o salida de datos
distintas páginas
Opciones para representar a los algoritmos

Seudo-código o seudo-lenguaje
Esta técnica emplea enunciados en inglés o español en
lugar de los símbolos gráficos de los diagramas de bloque.
En general, no existe un estándar aceptado
internacionalmente para representar algoritmos en seudo-
lenguaje.
Sin embargo, para entenderse con otros es necesario fijar
una convención.
Los enunciados forman estructuras que se clasifican en tres
grandes grupos: secuencias, repetición y selección o
decisión.
Opciones para representar a los algoritmos

Las palabras que denotan enunciados de selección y


repetición se escriben normalmente en mayúsculas,
mientras que el resto de los enunciados se escribe en
minúsculas.
Cualquier algoritmo en seudo-lenguaje estará compuesto
de palabras reservadas e identificadores.
Las palabras reservadas son aquellas que se reserva la
convención elegida para representar a las estructuras de
control, tales como condicionales y lazos.
Los identificadores son los nombres de las variables que
emplea el algoritmo, en el ejemplo 2 estas serían los
nombres a, b y c de los coeficientes del polinomio.
En las tablas siguientes se muestran las estructuras de
control de la convención propuesta.
Opciones para representar a los algoritmos

Secuencias:

Estructura Significado
Paso 1; 1.Las secuencias son tareas específicas que
debe realizar el programa, tal como leer un
Paso 2;
valor de la consola o evaluar una fórmula.
Paso 3;
2.Estos enunciados son ejecutados en orden
. secuencial, de izquierda a derecha y de
arriba hacia abajo, es decir en el mismo
.
orden en el que leemos.
.
3.El operador coma “,” permite representar
Paso n; en una sola línea varias secuencias cuando
estas son lo suficientemente sencillas.
//...
Paso 1, Paso 2, Paso n;
Ejemplo MATLAB

% Programa Secuencia

% Demuestra como se programan secuencias

disp([' Hallar la velocidad de un móvil en caída libre al contacto con el piso'])

g = -9.8; % m/s^2

v0 = 0; % m/s

y0 = 20; %m

y = 0; %m

disp([' Vo = ' num2str(v0) ' m/s ']);

disp([' y0 = ' num2str(y0) ' m ']);

disp([' y = ' num2str(y) ' m ']);

vf = sqrt(v0^2 + 2*g*(y-y0));

disp([' Vf = ' num2str(vf) ' m/s ']);


Opciones para representar a los algoritmos

Repeticiones (1)
MIENTRAS (Condición) 1. Las sentencias son ejecutadas
secuencialmente mientras la condición
Sentencias 1;
sea cierta.
Sentencias 2;
2. Se utiliza cuando no se sabe de
. antemano cuantas repeticiones serán
requeridas.
.
3. Siempre verifica la condición al
.
principio de cada iteración.
Sentencias n;
4. Si la primera vez que se verifica la
FIN MIENTRAS condición esta resulta FALSA, las
sentencias no se ejecutan nunca.
Ejemplo MATLAB

% Programa mientras

% Demostración de la estructura de repetición while

num = input(' numero (>0) = ')

cont=0;

while num > 1

num = num/2;

cont = cont + 1;

end

disp([' Resultado = ' num2str(num)]);

disp([' Numero de divisiones = ' num2str(cont)]);


Opciones para representar a los algoritmos

Repeticiones (2)

HACER 1. Las sentencias son ejecutadas


Sentencias 1; secuencialmente mientras que la
condición sea cierta.
Sentencias 2;
2. Se utiliza cuando no se conoce de
. antemano cuantas iteraciones serán
. requeridas.

. 3. Esta estructura ejecuta las sentencias


al menos una vez antes de verificar la
Sentencias n; condición, es decir, la verificación siempre
MIENTRAS (Condición); se hace al final de cada iteración.
Opciones para representar a los algoritmos

Repeticiones (3)
PARA Inicio Hasta Fin 1. Siempre se compone de tres partes, a
Incrementar Inc saber: Inicio (inicialización del contador
de control del lazo), Fin (condición de
Sentencias 1;
salida del lazo, mientras esta sea cierta se
Sentencias 2; continúa iterando) y Inc (que representa
el incremento o decremento del contador
.
de control).
.
2. Las sentencias son ejecutadas
. secuencialmente una cantidad predefinida
de veces.
Sentencias n;
3. La condición del lazo se verifica al
FIN PARA
comienzo de cada iteración, si esta
resulta falsa a priori nunca se ejecutaran
las sentencias respectivas.
Ejemplo MATLAB

% Programa para
% Demostración de la estructura de repetición para
disp([' Hallar la suma de los primeros n enteros'])

n = input(' numero (entero) = ');


acum = 0;
for i=1:n
acum=acum +i;
end
disp([' n = ' num2str(n)]);
disp([' Suma = ' num2str(acum)]);
Opciones para representar a los algoritmos

Decisiones (1)
//Condicional de una sola 1. Si la condición es cierta, se ejecutan
alternativa secuencialmente las sentencias.
SI (Condición) 2. Si la condición es no cierta, la
ejecución del algoritmo continúa en el
Sentencias 1;
primer enunciado que siga a la palabra
Sentencias 2; reservada FIN SI.
. 3. La versión corta ahorra la necesidad
de dibujar una línea y emplear la
.
palabra FIN SI, pero sólo aplica sobre
. sentencias sencillas. Es decir aquellas
que pueden ser separadas por el
Sentencias n;
operador coma o porque se trata de un
FIN SI solo estamento.
//Sintaxis corta
SI (Condición) Sentencia;
Opciones para representar a los algoritmos

Decisiones (2)
//Condicional de doble 1. Si la condición es cierta, se ejecutan
alternativa secuencialmente únicamente los
SI (Condición) enunciados que se encuentran entre las
Sentencias 1; palabras SI y SINO.
Sentencias 2; 2. Si la condición no es cierta, se
. ejecutan secuencialmente únicamente los
enunciados que se encuentran entre las
.
palabras SINO y FIN SI.
Sentencias n;
SINO 3. En cualquiera de los dos casos, la
ejecución del algoritmo continúa en el
Sentencias n + 1;
primer enunciado que siga a la palabra
Sentencias n + 2; FIN SI.
.
4. Esta estructura provee la bifurcación
. típica en computación donde debe
Sentencias n + m; decidirse que camino tomar al llegar a
FIN SI una intersección.
Ejemplo MATLAB

% Programa SolEcSegGr
if d>=0
% SolEcSegGr halla las raices de una
x1=(-b+sqrt(d))/(2*a);
% ecuación de segundo grado
% a x^2 + b x + c = 0 x2=(-b-sqrt(d))/(2*a);

disp([' x1 = ' num2str(x1)]);


clear all; disp([' x2 = ' num2str(x2)]);
disp([' Solucion de una ecuacion de segundo grado ']); else
disp([' Introduccion de los coeficientes A,B y C ']); xr=-b/(2*a);
a = input('a = '); xi=sqrt(abs(d))/(2*a);
b = input('b = '); disp([' x1 = ' num2str(xr) ' + i '
c = input('c = '); num2str(xi)]);
disp([' x2 = ' num2str(xr) ' - i '
num2str(xi)]);
% Calculo del discriminante
end

d = b^2 - 4*a*c;
Opciones para representar a los algoritmos

En todas las estructuras de control anteriores se enfatizan


las palabras reservadas en negritas y mayúsculas

El texto en cursivas precedido por un doble slash (“//”)


corresponde a los comentarios opcionales que pueden
insertarse en el seudo-código.

Siempre deben escribirse comentarios en el código, de


manera de documentar el algoritmo lo suficiente como
para que pueda ser entendido por otra persona.

Las condiciones lógicas de los lazos siempre deben ir entre


paréntesis, esta condición es obligatoria

Las líneas verticales delimitan el conjunto de sentencias


que están subordinadas a la estructura de control que las
precede.
Ejemplo

Desarrollar un algoritmo en seudo-lenguaje que calcule


n
Sum = ∑ xi = x1 + x2 + … + xn −1 + xn ,
i =1

donde n y los números x1, x2,...,xn son conocidos.

ENTRADA: n, x1, x2,...,xn


SALIDA: suma de los valores xi
//Inicialización del acumulador
Sum = 0;
PARA i = 1 HASTA n INCREMENTAR i EN 1
Sum = Sum + xi; //Acumular la suma
FIN PARA
IMPRIMIR Sum;
Ejemplo

Para constatar que el algoritmo cumple correctamente


con su cometido, puede realizarse un proceso de
verificación llamado “corrida en frío”.

La misma consiste en suponer unos valores de entrada


y ejecutar el algoritmo, anotando los valores
intermedios de las variables de manera que se pueda
observar su evolución.

A continuación se muestra la corrida en frío para el


algoritmo anterior, suponiendo que n = 3, x1 = 1,
x2 = 2, x3 = 3.
Ejemplo

Corrida en frío: n = 3; x1 = 1, x2 = 2, x3 = 3
Sum = 0, i = 1 (i = 1 al comienzo de la estructura
PARA – FIN PARA)
Pregunta: (i = 1) ≤ 3 ? ⇒ si ⇒ Sum = 0 + 1 = 1,
i=1+1=2 ,
Pregunta: (i = 2) ≤ 3 ? ⇒ si ⇒ Sum = 1 + 2 = 3,
i=2+1=3 ,
Pregunta: (i = 3) ≤ 3 ? ⇒ si ⇒ Sum = 3 + 3 = 6,
i=3+1=4 ,
Pregunta: (i = 4) ≤ 3 ? ⇒ no ⇒ fin de estructura
PARA – FIN PARA ,
Mostrar Sum = 6 .
Ejemplo

Construya un algoritmo que tenga como entrada un


número real x ∈ [0, π/4], el valor de sen(x), una
tolerancia de error TOL y un número máximo de
iteraciones M y que muestre a la salida cuántos
términos de la serie de MacLaurin de la función seno
se necesitan para aproximar el valor del sen(x) con la
tolerancia de error TOL. Si se requiere más de M
términos, entonces se debe detener el algoritmo y
mostrar un mensaje de error.

La serie de MacLaurin para la función seno es


x3 x5 x7 n
− 1i +1 ⋅ x 2i −1
sen( x ) = x − + − + ... = ∑ .
3! 5! 7! i =1 (2i − 1)!
Ejemplo

ENTRADA: x, sen(x), TOL, M


SALIDA: Número de términos o mensaje de error
//Inicialización de los parámetros
n = 0, sum = 0, F = sin(x), signo = 1;
//lazo de cálculos
HACER
n = n + 1;
sum = sum + (signo * x2n-1) / (2 * n - 1)!;
error = | sum – F |;
signo = -1 * signo;
MIENTRAS ((n ≤ M) Y (error ≥ TOL));
SI (n ≤ M)
Mostrar “Se requieren “, n, “ términos”;
SINO
Mostrar “El método fallo”;
FIN SI
Ejemplo: Fortran (1)

!****************************************************************************
!
! PROGRAM: Num_Ter_Seno
!
! PURPOSE: Calcula el número de términos para aproximar la función seno
! utilizando el desarrollo en serie de Mclaurin
!
! ENTRADA: x, sen(x), TOL, M
! SALIDA: Número de términos o mensaje de error
!****************************************************************************

program Num_Ter_Seno
implicit none
integer M,n,fact,i
double precision x,TOL,sum,F,signo,error,term

! Datos de entrada
write(*,*)" x (radianes) = "
read(*,*) x
write(*,*)" Tolerancia = "
read(*,*) TOL
write(*,*)" Número de términos = "
read(*,*) M
Ejemplo: Fortran (2)

! Inicialización de los parámetros

n=0
sum = 0.0
F = sin(x)
signo = 1.0

! Primera aproximación

error = 2.*TOL

! lazo de cálculos

do while ((error.gt.TOL).and.(n.le.M))
n = n + 1;
! calculo del factorial
fact=1
do i=1,2*n-1
fact=fact*i
enddo
sum = sum + (signo * (x**(2*n-1))/fact)
term = (signo * (x**(2*n-1))/fact)
error = abs(sum-F)
write(*,*)n," ",sum," ",error," ",term
signo = (-1.)*signo
enddo
Ejemplo: Fortran (3)

if(n.le.M) then
write(*,*)"Se requieren", n," términos"
else
write(*,*)"El método falló"
endif

end program Num_Ter_Seno


Representación de números en el computador

Palabra: unidad fundamental de representación de la


información
– Arreglo de dígitos binarios o bits que son representados en la
memoria de la computadora. Ejemplo: 1110101; 101110010

– Los números se almacenan típicamente en una palabra o


más.

Sistema de números: manera de representar


cantidades numéricas

–Base: número utilizado como referencia para construir


el sistema

–Sistema de números más común es el decimal o en


base 10.
Representación de números en el computador

10 símbolos (0-9) son utilizados para la representación de las


cantidades

Ejemplo: 409 = 4•102 + 0•101 + 9•100

Sistemas de uso extendido: binario (base 2), hexadecimal


(base 16)

Ejemplo Binario = 110

La equivalencia entre un sistema y otro se obtiene de manera


sencilla

Ejemplos: (110)2=1*22+1*21+0*20=4+2+0=(6)10

(83)10=1*26+0*25+1*24+0*23+0*22+1*21+1*20=(1010011)2
Representación de números en el computador

–Dependiendo de la cantidad de bits (o longitud de


palabra) las máquinas tienen un limite para almacenar
números enteros.

Ejemplo: máquina de siete bits, el limite es:


(±111111)2=(± 63)10

El conjunto de números enteros que pueden ser


representados (obviando el signo) es entonces:
000 0=0x2 + 0x2 +0x2
2 1 0 100 4=1x2 2 + 0x21 +0x20
001 1=0x2 + 0x2 +1x2
2 1 0 101 5=1x2 2 + 0x21 +1x20
010 2=0x2 + 1x2 +0x2
2 1 0 110 6=1x2 2 + 1x21 +0x20
011 3=0x2 + 1x2 +1x2
2 1 0 111 7=1x2 2 + 1x21 +1x20

0 1 2 3 4 5 6 7
Representación de números en el computador

Representación de punto flotante

–El número es representado como una parte fraccional o


mantisa (m) , y la base (b) elevada a un exponente (e):

n = m ⋅ be ,
– La mantisa es usualmente normalizada y escogida en
el rango [0;1).

Ejemplo: 1/56 =0.01785714…se expresa como


0.1785*101

No hay ceros a la derecha del punto decimal


Representación de números en el computador

–En sistema binario tendremos que por ejemplo


0.1010 = 1x 2 −1 + 0 x 2 −2 + 1x 2 −3
⎡⎛ 1 ⎞ ⎛ 1 ⎞ ⎤
(0.1010 )2 = ⎢⎜ ⎟ + ⎜ ⎟ ⎥ = (0.625 )10
⎣⎝ 2 ⎠ ⎝ 8 ⎠ ⎦10
O, convirtiendo de decimal a binario
12 .875 = (8 + 4 + 0 + 0 + 0.5 + 0.25 + 0.125 )10
1x 2 3 + 1x 2 2 + 0 x 21 + 0 x 2 0 + 1x 2 −1 + 1x 2 − 2 + 1x 2 −3
1 1 0 0. 1 1 1
1100.111
Representación de números en el computador

– Los limites de la representación están dados por la


cantidad de bits disponible para almacenar números.

– Con N bits tenemos: 1 signo número, 1 signo del


exponente, 2 ó 3 para el exponente y N-4 ó N-3 para
la mantisa. Ejemplo: con 10 bits tenemos:

(a) ± ± EEMMMMMM ó (b) ± ± EEEMMMMM

– Estas consideraciones establecen no solo un limite


sino el conjunto de números que se pueden
representar

– Ejemplo: el conjunto de números que se puede


representar con aritmética de 7 bits es: ± ± EEMMM
Representación de números en el computador

–Estas consideraciones establecen no solo un limite sino


el conjunto de números que se pueden representar

–Ejemplo: el conjunto de números que se puede


representar con aritmética de 7 bits es: ± ± EEMMM

–Veamos las mantisas que podemos representar con tres


bits
.000 0=0x2-1 + 0x2-2 +0x2-3 .100 0.5=1x2-1 + 0x2-2 +0x2-3
.001 0.125=0x2-1 + 0x2-2 +1x2-3 .101 0.625=1x2-1 + 0x2-2 +1x2-3
.010 0.25=0x2-1 + 1x2-2 +0x2-3 .110 0.75=1x2-1 + 1x2-2 +0x2-3
.011 0.375=0x2-1 + 1x2-2 +1x2-3 .111 0.875=1x2-1 + 1x2-2 +1x2-3
0.1
0
0.0000 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
Representación de números en el computador

–Luego, el número de números que podemos


representar sobre la recta reales limitado y, pueden
darse los siguientes casos:

(a)Se requiere un número mayor de bits

(b)El número no puede representarse ni aún utilizando


un número infinito de bits (por ejemplo 1/3 en sistema
decimal 0.333333….)

Como consecuencia de esto, usted verá que en algunos


casos, los instrumentos que usted utiliza (programas o
calculadoras) introducen o modifican dígitos durante las
operaciones.

En algunas plataformas es posible incrementar el número


de bits (doble precisión).
MECÁNICA COMPUTACIONAL I

Capítulo 1

Introducción a la Computación
MECÁNICA COMPUTACIONAL I

Capítulo 2

Solución de ecuaciones no –lineales


Contenido

– Búsqueda de raíces: introducción

– Métodos gráficos

– Métodos cerrados: Teorema de Bolzano. Criterios de parada. Método de


la bisección. Interpolación lineal (normal y modificado). Criterios de
convergencia y análisis de errores.

– Métodos abiertos: Newton–Raphson. Método de punto fijo. Criterios de


parada. Aceleración de Aitken: método de Steffensen.

– Método de la secante. Newton relajado. Newton modificado.


Búsqueda de Raíces: Introducción

¿Cómo hallar la raíz de una ecuación no lineal o


trascendente?
f ( x) = 0

Toda función de una variable puede ser expresada como


f(x)=0.

Por ejemplo hallar x que satisface


sen( x) = x
se puede expresar como
f ( x) = sen( x) − x = 0
Búsqueda de Raíces: Generalidades

Cuando se desea hallar raíces de ecuaciones, ciertas


preguntas deben formularse respecto al método a
utilizar:

¿Se buscará la raíz una sola vez o deberá buscarse varias


veces?

¿Qué grado de precisión se desea?

¿Qué tan rápido debe ser el método que empleemos?

¿Debe ser robusto?

¿La función es un polinomio?

¿La función es continua o posee singularidades?


Búsqueda de Raíces: Generalidades

Dependiendo de las repuestas a las preguntas anteriores


se escogerá el método.

En general no existe un método que se adapte a todas


las circunstancias.

Tres clases de métodos están disponibles

a)Métodos gráficos
Una gráfica permite estimar la ubicación de la raíz

b)Métodos cerrados
La raíz se busca dentro de un intervalo particular

c)Métodos abiertos
La raíz se busca a partir de un punto particular
Métodos gráficos

Utilizando cualquier procedimiento se traza una gráfica


de la función. La raíz se selecciona visualmente.

Diversas situaciones se presentan


f ( x) f ( x)
No hay raíces

Una raíz Una raíz Múltiples


raíces

a b x a b x

Dos raíces

Las condiciones particulares de la situación bajo análisis


determinará la raíz a buscar
Métodos gráficos

Ejemplo: hallar la raíz de f ( x) = cos( x) − sen( x) =0


2
x f(x)
0 1 1.5
0.2 0.78139725
0.4 0.53164265
0.6 0.26069314 1
0.8 -0.02064938
1 -0.30116868 0.5
1.2 -0.56968133
1.4 -0.81548259
f(x )

1.6 -1.02877313 0
1.8 -1.20104973
2 -1.32544426 0 2 4 6 8 10
2.2 -1.39699752
-0.5
2.4 -1.4128569
2.6 -1.37239013 -1
2.8 -1.27721049
3 -1.1311125
3.2 -0.93992063 -1.5
3.4 -0.71125709
3.6 -0.45423797 -2
3.8 -0.17910982
4 0.10315887 x
Supongamos que la raíz de interés está cercana a 4
Métodos gráficos

Luego, en el nuevo intervalo de búsqueda


x f(x)
3.8 -0.17910982
3.81 -0.16507284
3.82 -0.15101936
Raíces de cos(x)-sen(x)=0
3.83 -0.13695077
3.84 -0.12286849 0.15
3.85 -0.10877392
3.86 -0.09466848 0.1
3.87 -0.08055356
3.88 -0.0664306 0.05
3.89 -0.05230099
3.9 -0.03816615 0
f(x)

3.91 -0.02402749 3.8 3.85 3.9 3.95 4


3.92 -0.00988643 -0.05
3.93 0.00425562
3.94 0.01839724 -0.1
3.95 0.03253703
3.96 0.04667356 -0.15
3.97 0.06080542
3.98 0.0749312 -0.2
3.99 0.08904949 x
4 0.10315887

El proceso continua hasta que se “encuentra” la raíz.


Métodos gráficos

El método gráfico permite obtener fácilmente una


primera aproximación a la raíz, sin embargo es muy poco
preciso.

No obstante, permite hallar rápidamente un intervalo en


el cual realizar la búsqueda.

Estos intervalos pueden ser utilizados por métodos


cerrados, los cuales son capaces de encontrar la raíz, de
manera mas eficiente.

Los métodos cerrados se basan en el teorema de


Bolzano el cual se desarrolla a continuación.
Teorema de Bolzano

Teorema de Bolzano: dado un intervalo cerrado [a,b] y


una función continua f(x), existe al menos una solución a
la ecuación trascendente f(x)=0 si f(a)*f(b)§0.

y
f(b)

a f(x)=0
b x

f(a)
Teorema de Bolzano

El teorema de Bolzano garantiza la existencia de una raíz


si existe un cambio de signo en el intervalo [a,b], pero la
antítesis es falsa, sino existe un cambio de signo,
también puede existir una raíz en [a,b].
y
f(b) y
f(b)

f(a) f(a)

a b x

a f(x)=0 b x

f(x1 )=0 f(x2 )=0

Los métodos numéricos que están basados en el teorema


de Bolzano se denominan “métodos cerrados”, ya que
exigen como argumento un intervalo cerrado donde la
función experimente un cambio de signo.
Método de la Bisección

Suponga que una función continua f definida sobre el


intervalo [a,b] es conocida, con f(a) y f(b) de signo
opuesto.

Entonces según el teorema de Bolzano existe x en [a,b]


tal que f(x)=0. Este método divide el intervalo cerrado
inicial en dos mitades en cada paso, ubicando después a
la mitad que contiene a x.

Esto significa que un estimado mejorado que se


aproxima a la raíz viene dado por c tal que
a+b
c=
2
Método de la Bisección

y
f(b)

c0 c2
a c0 c2
c1
c1 b x
f (c2)
f (c0) f (c2)
f(a)
f (c0)

El algoritmo implementará este método introduciendo


instrucciones como:

SI (f(a) * f(c) < 0) b = c;


SINO a = c;
Método de la Bisección

– Luego el algoritmo continúa ejecutándose, dividiendo


cada intervalo cerrado que contenga a la raíz en dos
mitades y eligiendo aquella que satisface el teorema de
Bolzano.

– ¿Cuándo debe detenerse este proceso iterativo?.

– Para responder esta interrogante y proponer un


algoritmo completo para el método de la bisección, debe
hacerse un breve paréntesis en esta discusión para
tratar en detalle a los criterios de parada de los
algoritmos para resolver ecuaciones no lineales.
Criterios de parada

Los distintos criterios de parada se enumeran a


continuación:
–Error Local: εn+1=|xn+1 -xn|, donde x n es la n-ésima
aproximación a raíz x.
–Desviación: δn= |f(xn)|.
–Número máximo de iteraciones (NMax) o criterio de
seguridad.
El error local compara los valores de iteraciones sucesivas,
es decir mide la precisión del esquema iterativo.
Si el algoritmo esta convergiendo, esto es aproximándose a
la solución, el error local debe disminuir enfatizando que
existe una marcada tendencia a la repetición producto de
la convergencia.
Criterios de parada

Sin embargo debe verificarse por otra vía que no existe un


error sistemático, para ello debe emplearse a la
desviación, esta mide directamente que tan alejada puede
estar una aproximación a la raíz.
Finalmente, el criterio de seguridad o del número máximo
de iteraciones acota el proceso iterativo restringiéndolo
estrictamente a una cantidad definida de iteraciones, este
criterio permite detener al algoritmo cuando se alcanza un
limite de iteraciones permisibles.

Los dos primeros criterios tienen una tolerancia asociada,


esta referencia al valor aceptable o razonable por debajo
del cual puede considerarse que se ha alcanzado una
solución que satisface las expectativas de un usuario del
algoritmo.
Criterios de parada

Estas tolerancias son constantes reales positivas


denotadas en lo sucesivo, tolerancia de error local εTOL, y
tolerancia de desviación, δTOL .
El número máximo de iteraciones, NMax, es un numero
natural mayor de cero.
Algoritmo del método de la Bisección
Ejemplo del método de la Bisección

Resuélvase la siguiente ecuación trascendente empleando


el método de la bisección, en el intervalo [0,1]. El error
máximo permitido es de 0.0005
f ( x ) = 6 x3 − 5 x 2 + 7 x − 2 = 0

Los resultados de la ejecución del algoritmo del método de


la bisección se muestran en la tabla.

n x1 x2 f(x1) f(x2) x3 f(x3) Prueba Error


1 0 1 -2 6 0.5 1 0 0.5
2 0 0.5 -2 1 0.25 -0.46875 1 0.25
3 0.25 0.5 -0.46875 1 0.375 0.23828125 0 0.125
4 0.25 0.375 -0.46875 0.23828125 0.3125 -0.117675781 1 0.0625
5 0.3125 0.375 -0.117675781 0.23828125 0.34375 0.059143066 0 0.03125
6 0.3125 0.34375 -0.117675781 0.059143066 0.328125 -0.02948761 1 0.015625
7 0.328125 0.34375 -0.02948761 0.059143066 0.3359375 0.014763832 0 0.0078125
8 0.328125 0.3359375 -0.02948761 0.014763832 0.33203125 -0.00737679 1 0.00390625
9 0.33203125 0.3359375 -0.00737679 0.014763832 0.333984375 0.003689662 0 0.001953125
10 0.33203125 0.333984375 -0.00737679 0.003689662 0.333007813 -0.001844512 1 0.000976563
Error máximo en el método de la Bisección

Una aproximación del error máximo cometido al utilizar el


método de bisección es obtenido muy fácilmente al
considerar que, inicialmente, el error máximo es dado por
(b − a) (b − a)
ε (1)
= =
2 21

El error máximo luego de la primera iteración el error


máximo es:
(b − a)
(b − a)
ε (2) = 2 =
2 22
Luego de n iteraciones el error máximo es dado por:
(b − a)
(b − a)
ε (n) = 2 =
2 2n
Error máximo en el método de la Bisección

En consecuencia, aún cuando no se conoce la raíz exacta


de la ecuación f(x)=0, es posible calcular fácilmente una
cota para el error.

Además, podemos fácilmente estimar la cantidad de


iteraciones necesarias para obtener la raíz con una cota
de error dada ε a partir de:
(b − a)
n
≤ε
2
(b − a)
≤ 2n
ε
⎛ (b − a) ⎞
ln ⎜ ⎟
ε
n≥ ⎝ ⎠
ln 2
Error máximo en el método de la Bisección

En nuestro ejemplo anterior, si se quisiera calcular, el


número de iteraciones necesarias para hallar la raíz con
un error máximo de 0.01 tendríamos
⎛ (b − a) ⎞ ⎛ (1 − 0) ⎞
ln ⎜ ⎟ ln ⎜ ⎟
ε
n≥ ⎝ ⎠= ⎝ ⎠ = 6.64
0.01
ln 2 ln 2

Luego, puesto que n es entero tendremos n=7

n x1 x2 f(x1) f(x2) x3 f(x3) Prueba Error


1 0 1 -2 6 0.5 1 0 0.5
2 0 0.5 -2 1 0.25 -0.46875 1 0.25
3 0.25 0.5 -0.46875 1 0.375 0.23828125 0 0.125
4 0.25 0.375 -0.46875 0.23828125 0.3125 -0.117675781 1 0.0625
5 0.3125 0.375 -0.117675781 0.23828125 0.34375 0.059143066 0 0.03125
6 0.3125 0.34375 -0.117675781 0.059143066 0.328125 -0.02948761 1 0.015625
7 0.328125 0.34375 -0.02948761 0.059143066 0.3359375 0.014763832 0 0.0078125
8 0.328125 0.3359375 -0.02948761 0.014763832 0.33203125 -0.00737679 1 0.00390625
9 0.33203125 0.3359375 -0.00737679 0.014763832 0.333984375 0.003689662 0 0.001953125
10 0.33203125 0.333984375 -0.00737679 0.003689662 0.333007813 -0.001844512 1 0.000976563
Método de Interpolación lineal

El método de la bisección es relativamente sencillo de


implementar y el análisis de error es bastante obvio, sin
embargo, no es muy eficiente.

Para la mayoría de las funciones podemos mejorar la


tasa de convergencia a la raíz.

El método de la bisección se fundamenta en la división


del intervalo [a,b] en mitades iguales, sin embargo, no
se considera las magnitudes de las ordenadas f(a) y
f(b).

Por ejemplo, si f(a) es más cercana a cero que f(b), es


más probable que la raíz esté más cercana de la abscisa
a que de b.
Método de Interpolación lineal

El método de la interpolación lineal consiste


precisamente en unir dichos puntos con una línea recta,
como se muestra en la figura.

f (b )
c
a
b

f (a)

La intersección de ésta recta con el eje de las abscisas


representa el estimado mejorado de la raíz, es decir:
f (b ) − f ( a ) f (b )
y − f (b ) = ( x − b ) ⇒ c = b − (b − a )
(b − a ) y =0 f (b ) − f ( a )
x=c
Método de Interpolación lineal

Luego de obtener este estimado, se evalúa la función en


ese punto, f(c), verificando después cual intervalo
satisface el teorema de Bolzano, análogamente al
procedimiento descrito en el método de bisección:
SI (f(a) * f(c) < 0) b = c;
SINO a = c;

y
f(b)

c0 c1
a c0 c1
b x
f (c1)
f (c0) f (c1)
f(a)
f (c0)
Algoritmo del Método de Interpolación lineal
Ejemplo del método de Interpolación lineal

Resuélvase la siguiente ecuación empleando el método de


interpolación lineal. Busque la raíz en el intervalo [0;1.3]

f ( x ) = x10 − 1 = 0

Los resultados de la ejecución del algoritmo del método


de interpolación lineal se muestran en la tabla
n x1 x2 f(x1) f(x2) x3 f(x3)
0 0 1.3 -1 12.7858492 0.0942996 -1
1 0.0942996 1.3 -1 12.7858492 0.18175887 -0.99999996
2 0.18175887 1.3 -0.99999996 12.7858492 0.26287401 -0.99999842
3 0.26287401 1.3 -0.99999842 12.7858492 0.3381051 -0.99998048
4 0.3381051 1.3 -0.99998048 12.7858492 0.40787792 -0.99987256
5 0.40787792 1.3 -0.99987256 12.7858492 0.47258315 -0.99944437
6 0.47258315 1.3 -0.99944437 12.7858492 0.53257151 -0.99816439
7 0.53257151 1.3 -0.99816439 12.7858492 0.58814457 -0.99504731
8 0.58814457 1.3 -0.99504731 12.7858492 0.63954397 -0.98855267
9 0.63954397 1.3 -0.98855267 12.7858492 0.68694317 -0.97660042
10 0.68694317 1.3 -0.97660042 12.7858492 0.73044644 -0.95676019
Ejemplo del método de Interpolación lineal

Gráficamente f ( x ) = x10 − 1 = 0

Interpolación lineal

1.2

0.8 Interpolacion Lineal

0.6
x

0.4

0.2

0
0 5 10 15 20 25
n
Método de Interpolación lineal modificada

Convergencia unilateral

El ejemplo resuelto en clase destaca una seria falla del


método de la interpolación lineal, el criterio de
aproximación a la raíz es unilateral.

Si la función tiene una curvatura significativa entre a y


b, esto puede perjudicar a la tasa de convergencia a la
raíz.
y
f(b)

c0 c1
a c0 c1
b x
f (c1)
f (c0) f (c1)
f(a)
f (c0)
Método de Interpolación lineal modificada

Método de la interpolación lineal modificada:

Un remedio para la convergencia unilateral consiste en


reemplazar el valor de f(x) y de la posición final
estancada por f(x)/2 .

y
f(b)

f(b)/2
c0 c1
f(b)/4 c2
a c0 c1
c2
f (c1)
b x f (c1)
f (c0)

f(a)
f (c0)
Método de Interpolación lineal modificada
Ejemplo: Método de Interpolación lineal modificada

Continuación...
Método de Interpolación lineal modificada

Resuélvase la siguiente ecuación trascendente empleando


el método de interpolación lineal modificado. Busque la
raíz en el intervalo [0;1.3]
f ( x ) = x10 − 1 = 0

Los resultados de la ejecución del algoritmo del método


de interpolación lineal modificada se muestran en la tabla
n x1 x2 f(x1) f(x2) x3 f(x3)
0 0 1.3 -1 12.7858492 0.0942996 -1
1 0.0942996 1.3 -1 6.39292459 0.25738802 -0.99999872
2 0.25738802 1.3 -0.99999872 3.1964623 0.505838 -0.99890323
3 0.505838 1.3 -0.99890323 1.59823115 0.81128657 -0.87647841
4 0.81128657 1.3 -0.87647841 0.79911557 1.06692533 0.91135019
5 0.81128657 1.06692533 -0.43823921 0.91135019 0.89429769 -0.67279413
6 0.89429769 1.06692533 -0.67279413 0.4556751 0.99721841 -0.02747031
7 0.99721841 1.06692533 -0.02747031 0.22783755 1.00471865 0.04820117
8 0.99721841 1.00471865 -0.01373515 0.04820117 0.99888168 -0.01112708
9 0.99888168 1.00471865 -0.01112708 0.02410058 1.00072536 0.0072773
10 0.99888168 1.00072536 -0.00556354 0.0072773 0.99968049 -0.00319052
Método de Interpolación lineal modificada

La siguiente gráfica presenta la comparación entre ambos


métodos
Comparación
Interpolación lineal clásica vs modificada
1.2

0.8
Interpolacion Lineal

0.6
x

Interpolacion lineal
modificada
0.4

0.2

0
0 5 10 15 20 25
n
MATLAB: funciones (1)

Nombres coincidentes

Variables locales: sólo están


definidas internamente en la
función. Una vez llamada la
función su valor no
permanece a disposición
MATLAB: funciones (2)

Variables globales: sólo


están definidas en todas las
funciones que contengan la
expresión:
“global nombre_variable”
MATLAB: funciones (3)

Funciones muy simples: inline.

Otras funciones mas complejas:


g = inline('sin(alpha*x)','x','alpha')
MATLAB: Escogiendo entre múltiples opciones

Si “anidado”

Casos

Si - sino
Métodos Abiertos

No cumplen necesariamente con el teorema de Bolzano.

Ventajas: tasa de convergencia mayor (más veloces).

Desventajas: no hay garantía de convergencia (muy


importante el criterio de parada por seguridad).

Método de la Secante

f (b )
c =b− (b − a )
f (b ) − f (a )
c
a b x

Luego se debe actualizar la información


a=b , b=c ;
Métodos Abiertos

Método de Newton-Raphson:

Si se desarrolla una función f(x) en serie de Taylor hasta


orden 1 en torno a un valor dado x tenemos
() ( )( ) (
f ( x) = f x + f ′ x x − x + O x − x )
2

Si x esta cerca de la raíz de f(x) entonces

() ( )(
0≈ f x + f′ x x−x )
Entonces

x ≅ x−
(
f x )
f ′( x)
y un proceso iterativo puede ser llevado a cabo como
f ( xn )
xn +1 = xn −
f ′( xn )
Métodos Abiertos

El algoritmo de Newton se usa ampliamente debido a


que en la proximidad de la raíz, converge más
rápidamente que los otros métodos vistos.

La derivada puede calcularse numéricamente a partir de


f ( x + h) − f ( x)
f ′( x) ≅ ; h << 1
h
en cuyo caso
h ⋅ f ( xn )
xn +1 = xn −
f ( xn + h ) − f ( xn )
Algoritmo método de Newton-Raphson
Método de Newton-Raphson

Ejemplo. Determine la raíz de la ecuación trascendente


f ( x ) = x3 + x 2 − 3x − 3 = 0
f ( xn )
xn +1 = xn −
Determine la raíz en los alrededores de 0.5 f ′( xn )
x1 = 0.5

n x0 f(x0) f'´(x0) x1 f(x3) Error (%)


0 0.5 -4.12500000 -1.25000000 -2.8 -8.71200000 117.85714286
1 -2.8 -8.71200000 14.92000000 -2.21609 -2.32398401 26.34889910
2 -2.21609 -2.32398401 7.30093712 -1.89777 -0.54004720 16.77298417
3 -1.89777 -0.54004720 4.00907807 -1.76307 -0.08271934 7.64044214
4 -1.76307 -0.08271934 2.79907828 -1.73351 -0.00372013 1.70476525
5 -1.73351 -0.00372013 2.54818645 -1.73205 -0.00000895 0.08428784
6 -1.73205 -0.00000895 2.53592800 -1.73205 0.00000000 0.00020376
7 -1.73205 0.00000000 2.53589839 -1.73205 0.00000000 0.00000000
8 -1.73205 0.00000000 2.53589838 -1.73205 0.00000000 0.00000000
9 -1.73205 0.00000000 2.53589838 -1.73205 0.00000000 0.00000000
Análisis del error en el método de Newton-Raphson

El método de Newton-Raphson parte del desarrollo en


serie de cualquier función f(x)
Δx 2
f ( x + Δx ) = f ( x ) + f ′ ( x ) Δx + f ′′ ( x ) + O ( Δx3 ) (NR-1)
2!

Si consideramos en el proceso iterativo las aproximaciones


xi y xi+1 podemos escribir

xi +1 = xi + Δx

y
( xi +1 − xi )
2

f ( xi +1 ) = f ( xi ) + f ′ ( xi )( xi +1 − xi ) + f ′′ ( xi ) + O ( Δx3 ) (NR-2)
2!
Análisis del error en el método de Newton-Raphson

El método de Newton-Raphson se obtiene al escribir


f ( xi +1 ) ≈ f ( xi ) + f ′ ( xi )( xi +1 − xi )
(NR-3)

y al suponer que xi+1 es la raíz llegamos a

0 ≈ f ( xi ) + f ′ ( xi )( xi +1 − xi )

f ( xi )
xi +1 = xi − (NR-4)
f ′ ( xi )

Para obtener un estimado del error que se comete con esta


aproximación, tenemos que del teorema del residuo,
podemos escribir que existe x en [xi, xi+1 ] tal que
( xi +1 − xi ) ( xi +1 − xi )
2 n

f ( xi +1 ) = f ( xi ) + f ′ ( xi )( xi +1 − xi ) + f ′′ ( xi ) + ... + f (ξ )
(n)

2! n!
Análisis del error en el método de Newton-Raphson

Luego, podemos escribir, hasta orden 2

(x − x )
2

f ( xi +1 ) = f ( xi ) + f ′ ( xi )( xi +1 − xi ) + f ′′ (ξ ) i +1 i (NR-5)
2!

Si xi+1 es la raíz xr tendremos en (NR-5)


( xr − xi )
2

0 = f ( xi ) + f ′ ( xi )( xr − xi ) + f ′′ (ξ ) (NR-6)
2!

Luego, si escribimos el error verdadero en el paso i como


Ei = Et ,i = xr − xi
tendremos
0 = f ( xi ) + f ′ ( xi )( xi +1 − xi ) = f ( xi ) + f ′ ( xi )( − xr + xr + xi +1 − xi )
0 = f ( xi ) + f ′ ( xi ) [ − xr + xi +1 + xr − xi ] = f ( xi ) + f ′ ( xi ) ⎡⎣ Et ,i − Et ,i +1 ⎤⎦ (NR-7)
Análisis del error en el método de Newton-Raphson

Restándole (NR-7) a (NR-6) obtenemos


( xr − xi )
2

0 = f ( xi ) + f ′ ( xi )( xr − xi ) + f ′′ (ξ )
2!
{ }
− f ( xi ) + f ′ ( xi ) ⎡⎣ Et ,i − Et ,i +1 ⎤⎦

Simplificando e introduciendo la definición del error


verdadero
( Et ,i )
2

0 = f ′ ( xi ) ( Et ,i ) + f ′′ (ξ ) − f ′ ( xi ) ⎡⎣ Et ,i − Et ,i +1 ⎤⎦
2!
(E )
2

0 = f ′′ (ξ ) + f ′ ( xi ) Et ,i +1
t ,i

2!

Despejando
f ′′ (ξ )
( Et ,i )
2
Et ,i +1 = − (NR-8)
2 f ( xi )

Análisis del error en el método de Newton-Raphson

Si hay convergencia entonces


⎧ xi → xr

⎩ ξ → xr

Luego, en (NR-8)

f ′′ ( xr ) (NR-9)
( Et ,i )
2
Et ,i +1 = −
2 f ( xr )

Luego, la convergencia es cuadrática, esto es, el error


disminuye proporcionalmente con el cuadrado del error
cometido en la iteración anterior.
Casos críticos para método de Newton-Raphson

y y

diverge

x1 x0
x2 x x0 x1 x2 x
Los iterados se alejan
cada vez más

x3 x1
x2 x0 x x0 x1 x
Raíces múltiples

Considere la función
f ( x ) = x3 − 5 x 2 + 7 x − 3
x 3 - 5x 2+7x-3
10

4
f(x)

-2

-4
0 0.5 1 1.5 2 2.5 3 3.5 4
x
Raíces múltiples

Halle las raíces utilizando el método de Newton-Raphson


partiendo de los siguientes valores: x0=0, 1, 2 y 3, con
tolerancias e_tol y desv = 0.0001.
Los resultados se muestran a continuación:
x0 número_iteraciones raíz
0 14 0.99991
1 1 NaN
2 2 Nan
3 1 3
¿A que se deben estos resultados?
Raíces múltiples

Una raíz múltiple a f(x)=0 corresponde a aquella en la cual


la función f(x) es tangente al eje x.

Como ejemplo, observe las funciones f y g con raíces


múltiples en x=1
f ( x ) = ( x − 3)( x − 1)( x − 1) = x3 − 5 x 2 + 7 x − 3
g ( x) = ( x − 3)( x − 1)( x − 1)( x − 1) = x 4 − 6 x + 12 x 2 − 10 x + 3
Raíces múltiples
3
f(x)
2 g(x)

1
f(x)

-1

-2

-3
0 0.5 1 1.5 2 2.5 3 3.5
x
Raíces múltiples

Nótese que dependiendo de la paridad de la raíz, la función


cruzará (multiplicidad impar) o no (multiplicidad par) el eje.

Esto puede verse fácilmente en el caso de polinomios o


cuando puede expresarse
f ( x) = ( x − xr ) h ( x )
n

donde xr es la raíz múltiple y n el índice de multiplicidad.


En este caso
si n es par: sgn [ f ( x)] =sgn [ h( x)] ∀x alrededor de x r
⎪⎧sgn [ h( x)] ∀x > x r
si n es impar: sgn [ f ( x) ] = ⎨
⎪⎩sgn [ h( x)] ∀x < x r
Raíces múltiples

Dado que la derivada de f(x) es dada por

f ′( x) = n ( x − xr ) h ( x ) + ( x − xr ) h′ ( x )
n −1 n

entonces, en x=xr tendremos que


f ′( xr ) = 0

y, en consecuencia, el método de Newton-Raphson


f ( xi )
xi +1 = xi −
f ′ ( xi )
no puede ser usado.
Raíces múltiples

Una variante del método de N-R es dada por


u ( xi ) f ( x)
xi +1 = xi − u ( x) =
u′ ( xi ) f ′( x)

dado que la función u(x) tiene los mismos ceros de f(x)


como puede verse a partir de

f ( x) ( x − xr ) h ( x )
n

u ( x) = =
f ′ ( x ) n ( x − xr )n −1 h ( x ) + ( x − xr )n h′ ( x )

u ( xr ) = Lim ⎡⎣u ( x ) ⎤⎦ =
( x − xr ) h ( x )
=0
x→ xr nh ( x ) + ( x − xr ) h′ ( x )
Raíces múltiples

Este método se denomina método de Newton-Raphson


modificado y las iteraciones se realizan a partir de
u ( xi ) f ( x)
xi +1 = xi − u ( x) =
u′ ( xi ) f ′( x)

⎛ f ( x ) ⎞′ f ′ ( x ) f ′ ( x ) − f ′′ ( x ) f ( x )
u′ ( x ) = ⎜⎜ ⎟⎟ =
⎝ f ′ ( x ) ⎠ ⎡⎣ f ( x ) ⎤⎦

2

⎡ f ( x) ⎤
⎢ ⎥
u ( xi ) ⎢ f ′( x) ⎥
xi +1 = xi − = xi − ⎢
u′ ( xi ) f ′ ( x ) f ′ ( x ) − f ′′ ( x ) f ( x ) ⎥
⎢ ⎥
⎢⎣ ⎡⎣ f ′ ( x ) ⎤⎦ ⎥⎦
2

x = xi

f ( xi ) f ′ ( xi )
xi +1 = xi − 2
f ′ ( xi ) − f ′′ ( xi ) f ( xi )
Convergencia del método de N-R para raíces múltiples

El método de Newton-Raphson converge “cuadráticamente”


de acuerdo con:
f ′′ ( xr )
( t ,i )
2
Et ,i +1 = − E
2 f ′ ( xr )

Luego, en el caso de utilizarlo en presencia de raíces


múltiples tendremos que
f ′( x) = ( x − xr ) ⎡⎣ nh ( x ) + ( x − xr ) h′ ( x ) ⎤⎦
n −1

f ′′( x) = ( x − xr )
n−2
{( n − 1) ⎡⎣nh ( x ) + ( x − x ) h′ ( x )⎤⎦ + ( x − x ) ⎡⎣( n + 1) h′ ( x ) + ( x − x ) h′′ ( x )⎤⎦}
r r r

{
⎡( x − xr )n−2 ( n −1) ⎡nh( x) + ( x − xr ) h′ ( x)⎤ + ( x − xr ) ⎡( n +1) h′ ( x) + ( x − xr ) h′′ ( x) ⎤
⎣ ⎦ ⎣ ⎦ } ⎤⎥
Et,i+1 = − ⎢ ( Et,i )
2

2( x − xr ) ⎡⎣nh( x) + ( x − xr ) h′ ( x) ⎤⎦
n−1
⎢ ⎥
⎣ ⎦x→xr
Convergencia del método de N-R para raíces múltiples

Simplificando

( n −1)
( Et,i )
2
Et,i+1 = −
2( x − xr )

Pero como

Et,i = ( x − xr )
Tendremos que la convergencia esta vez es

Et,i+1 =−
( n −1)
E t ,i
2
y, en consecuencia, en el caso de raíces múltiples la
convergencia es lineal.
Método de N-R relajado

Puesto que
f ( xi )
xi +1 = xi −
f ′ ( xi )

Genera una secuencia dada por x1, x2, x3,..,xn donde a cada
término se le agrega
f ( xi )

f ′ ( xi )
una idea para acelerar la convergencia del método consiste
en multiplicar el segundo término del lado derecho por ω de
manera que
f ( xi )
xi +1 = xi − ω 0.5 ≤ ω ≤ 1.5
f ′ ( xi )
Si ω<1 el método se denomina “subrelajado” mientras que
si ω>1 el método se denomina “sobrerelajado (SOR)”
Método de Punto Fijo

El método de Newton – Raphson sugiere la fórmula de


iteración:
f (xn )
x n +1 = g ( x n ) = x n −
f ′( x n )

El método de punto fijo comienza con la ecuación f(x)=0,


esta se reorganiza en una expresión equivalente de la
forma x = g ( x )
donde g(x) es algún despeje de “x”. Luego se crea el
proceso iterativo
xn +1 = g ( xn )
Por ejemplo
x2 + 3 x(n) + 3
2

( n +1)
x − 2x + 3 = 0 ⇒ x =
2
;⇒ x =
2 2
Método de Punto Fijo

Aplicación: utilizando el método de punto fijo halle la raíz


cercana a 4 de
x2 − 2 x − 3 = 0

Despejando x tenemos x = 2x + 3

Luego se crea el proceso iterativo xn +1 = g ( xn ) xn +1 = 2 xn + 3

Para obtener
n x0 g(x0) x1 f(x3) Error (%)
0 4 3.31662479 3.31662479 1.36675042 20.60454
1 3.31662479 3.10374767 3.10374767 0.42575425 6.85871
2 3.10374767 3.03438550 3.03438550 0.13872434 2.28587
3 3.03438550 3.01144002 3.01144002 0.04589095 0.76194
4 3.01144002 3.00381092 3.00381092 0.01525820 0.25398
5 3.00381092 3.00127004 3.00127004 0.00508176 0.08466
6 3.00127004 3.00042332 3.00042332 0.00169344 0.02822
7 3.00042332 3.00014110 3.00014110 0.00056443 0.00941
8 3.00014110 3.00004703 3.00004703 0.00018814 0.00314
9 3.00004703 3.00001568 3.00001568 0.00006271 0.00105
Método de Punto Fijo

¿Qué pasa en el caso anterior si consideramos otros


despejes?. Por ejemplo si tomamos
3 3
x − 2x − 3 = 0
2
x ( x − 2) − 3 = 0 x= xn +1 =
x−2 xn − 2

Para obtener
n x0 g(x0) x1 f(x3) Error (%)
0 4 1.500000 1.50000000 -3.75000000 166.66667
1 1.500000 -6.000000 -6.00000000 45.00000000 125.00000
2 -6.000000 -0.375000 -0.37500000 -2.10937500 1500.00000
3 -0.375000 -1.263158 -1.26315789 1.12188366 70.31250
4 -1.263158 -0.919355 -0.91935484 -0.31607700 37.39612
5 -0.919355 -1.027624 -1.02762431 0.11126034 10.53590
6 -1.027624 -0.990876 -0.99087591 -0.03641310 3.70868
7 -0.990876 -1.003051 -1.00305064 0.01221187 1.21377
8 -1.003051 -0.998984 -0.99898415 -0.00406236 0.40706
9 -0.998984 -1.000339 -1.00033873 0.00135504 0.13541

Converge a otra raíz! (-1). ¡Que raro!


Método de Punto Fijo

Probemos con otro despeje. Si hacemos


x2 − 3
x − 2x − 3 = 0
2
x2 − 3 = 2x x=
2

Para obtener
n x0 g(x0) x1 f(x3) Error (%)
0 4.0000E+00 6.5000E+00 6.5000E+00 2.6250E+01 38.46154
1 6.5000E+00 1.9625E+01 1.9625E+01 3.4289E+02 66.87898
2 1.9625E+01 1.9107E+02 1.9107E+02 3.6123E+04 89.72891
3 1.9107E+02 1.8252E+04 1.8252E+04 3.3311E+08 98.95318
4 1.8252E+04 1.6658E+08 1.6658E+08 2.7747E+16 99.98904
5 1.6658E+08 1.3874E+16 1.3874E+16 1.9248E+32 100.00000
6 1.3874E+16 9.6240E+31 9.6240E+31 9.2622E+63 100.00000
7 9.6240E+31 4.6311E+63 4.6311E+63 2.1447E+127 100.00000

No hay convergencia. ¿Qué está pasando?


Método de Punto Fijo

La gráfica de la función f(x)=x2-2x-3

Muestra las raíces en x=-1 y x=3


Método de Punto Fijo

La función asociada a cada despeje, tienen como gráfica

¿Qué diferencia existe


entre las distintas curvas
aquí mostradas para que
haya convergencia sólo
en algunos casos?
Método de Punto Fijo

Dificultades del Método


– Existen en general distintas opciones de despejes,
usualmente despejes distintos convergen a raíces
diferentes.
– El método presenta problemas de convergencia.
y=x y=x
y=g(x)
Proceso
Convergente
Proceso
Convergente y=g(x)
x2 x1 x0 x1 x3 x2 x0 x
x

y=x y=x
y=g(x)
Proceso Proceso
Divergente Divergente

y=g(x)
x0 x1 x2 x3 x1 x0 x2 x
x
Método de Punto Fijo

En general, si g(x) y g´(x) son continuas en un intervalo


alrededor de la raíz r de la ecuación x=g(x) y sí
|g´(x)|<1 para todas las x en el intervalo, entonces
xn+1=g(xn) , n=1, 2, 3... convergerá a la raíz siempre que
la semilla de iteración éste en el intervalo.
Convergencia del método de Punto Fijo

El método de punto fijo se basa en la construcción de un


proceso iterativo en el cual del problema hallar x que
satisface
f ( x) = 0 (PF-1)
pasamos a resolver
(PF-2)
x = g ( x)
a partir del proceso iterativo

xi +1 = g ( xi ) (PF-3)
Sí la solución es xr tal que
xr = g ( xr ) (PF-4)
Convergencia del método de Punto Fijo

Restando (PF-3) a (PF-4) tenemos


xr − xi +1 = g ( xr ) − g ( xi ) (PF-5)
El teorema del valor medio de la derivada establece que
si g(x) y g’(x) son funciones continuas en [a,b] entonces
existe x=x en [a,b] tal que
g (b) − g (a)
g ′ (ξ ) = (PF-6)
b−a

Luego, en [xi,xr] existe x tal que


g ( xr ) − g ( xi )
g ′ (ξ ) =
xr − xi (PF-7)
Convergencia del método de Punto Fijo

Despejando tenemos
g ( xr ) − g ( xi ) = g ′ (ξ )( xr − xi ) (PF-8)
Sustituyendo (PF-8) en (PF-5) obtenemos
xr − xi +1 = g ′ (ξ )( xr − xi ) (PF-9)

Puesto que el error verdadero viene dado por


Et ,i = xr − xi +1 (PF-10)

Luego, dado que para convergencia requerimos que


Et ,i +1
<1 (PF-11)
Et ,i
Convergencia del método de Punto Fijo

entonces
Et ,i +1
=
xr − xi +1
= g ′ (ξ ) < 1
(PF-12)
Et ,i xr − xi

y, en consecuencia
Et ,i +1 = Et ,i g ′ (ξ ) (PF-13)
Para convergencia xr, es cercano a x. Luego
Et ,i +1 = Et ,i g ′ ( xr ) (PF-14)
Luego, (PF-14) nos indica que el error disminuye de
manera lineal en el método de punto fijo. El factor de
proporcionalidad es el modulo de g’(xr) el cual debe
cumplir con g ′ ( xr ) < 1
Convergencia acelerada: Método de Aitken

La convergencia del método de punto fijo es lineal. Esto es, la


sucesión

{ pn }n=0 → p ⇒ ( pn+1 − p ) ≈ ε ( pn − p )

para n >> 1

Luego, si estamos relativamente cerca de p, las diferencias

( pn − p ) , ( pn+1 − p ) , ( pn+ 2 − p )

tienen el mismo signo (irrelevante como se discutirá más adelante)


entonces
pn +1 − p pn + 2 − p

pn − p pn +1 − p
Luego
( pn+1 − p ) ≈ ( pn − p )( pn+ 2 − p )
2
Convergencia acelerada: Método de Aitken

Desarrollando la última expresión llegamos a


pn pn + 2 − pn +12
p=
pn + pn + 2 − 2 pn +1

que puede escribirse como

pn pn + 2 − ( pn +1 − pn ) + pn 2 − 2 pn +1 pn
2

p=
pn + pn + 2 − 2 pn +1

Reagrupando los términos del numerador


p ( p + pn − 2 pn +1 ) − ( pn +1 − pn )
2

p = n n+2
pn + pn + 2 − 2 pn +1
Simplificando llegamos a
( pn+1 − pn )
2

p = pn −
pn + pn + 2 − 2 pn +1
Convergencia acelerada: Método de Aitken

El método de Aitken se basa en que la sucesión

{ pn }n=0

definida por

( pn+1 − pn )
2

pˆ n = pn −
pn + pn + 2 − 2 pn +1

converge más rápidamente a p que la sucesión original.


Método de Steffensen

La aplicación del método de Aitken se conoce como método de Steffensen.


Los pasos a seguir son:

1. Escoger p0 = p0 (0)
2.Calcular p1 = p1(0) = g ( p0 (0) )
3.Calcular p2 = p2 (0) = g ( p1(0) )

( p1 − p0 )
2

4.Calcular pˆ 0 = p0 −
p0 + p2 − 2 p1

p0( ) = pˆ 0
1
5.Hacer y repetir 1-4 hasta convergencia

Cuidado con el denominador, que puede hacerse nulo. Si el denominador es


muy pequeño, parar y quedarse con la última aproximación.
Método de Steffensen
Método de Steffensen
Aceleración de Aitken

Consideremos las secuencias generadas por el método de punto fijo


y de Aitken en la función
1 − 2xπ
f ( x ) = − e sen ( x ) − x
2
1 − 2xπ
utilizando el despeje x = g ( x ) = − e sen ( x )
2
Obtenemos, con p0 = 0.5 y tolerancia 0.00000000001 en 4
iteraciones

i p0 p1 p2 p
1 0.500000000 0.057247412 0.443302792 0.26347976668787393
2 0.263479767 0.250253772 0.262019993 0.25648051003952466
3 0.256480510 0.256468892 0.256479230 0.25647436262679985
4 0.256474363 0.256474363 0.256474363 0.25647436262205831

¡El método de punto fijo “clásico” requiere de 211 iteraciones en


este mismo caso!
Aceleración de Aitken

La gráfica siguiente muestra como ocurre la convergencia al utilizar


el método de punto fijo en este caso

Convergencia Punto Fijo

y=x i p0 p
0.5
1 0.500000000 0.05724741238968151
2 0.057247412 0.44330279224377950
3 0.443302792 0.10029409146178031
4 0.100294091 0.40145951908104061
0.4 5 0.401459519 0.13342431453987363
6 0.133424315 0.36976630700916019
7 0.369766307 0.15925702773992101
8 0.159257028 0.34538437975725400
g(x)

0.3
9 0.345384380 0.17954978763845725
10 0.179549788 0.32644448924384140
0.2

0.1

y=g(x)
0
0 0.1 0.2 0.3 0.4 0.5 0.6
x
Aceleración de Aitken

Este comportamiento es fácilmente entendido si se


calcula la derivada de la función g(x) (el “despeje” que
se hizo de f(x)=0). Para ello utilizamos MATLAB:
>> syms x

>> diff(1/2-exp(-x/(2*pi))*sin(x))

ans =

1/2/pi*exp(-1/2*x/pi)*sin(x)-exp(-1/2*x/pi)*cos(x)

>> g_prima=inline('1/2/pi*exp(-1/2*x/pi)*sin(x)-exp(-1/2*x/pi)*cos(x)');

>> fplot(g_prima,[0 1]) -0.3

-0.4

>> grid on -0.5

-0.6

Nótese que los valores de g’(x) son negativos en -0.7

[0,1] pero con | g’(x) |<1, lo que explica la forma


-0.8

-0.9

en la que converge punto fijo en este caso.


-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Aplicaciones con MATLAB

MATLAB posee comandos especialmente diseñados para


calcular raíces de polinomios. Por ejemplo, para hallar las
raíces del polinomio
f ( x ) = x3 + x 2 − 3x − 3 = 0
se introduce el comando

>> roots([1,1,-3,-3])

ans =

1.7321

-1.7321

-1.0000
Aplicaciones con MATLAB

Para una función usamos fzero. Veamos. Si


f ( x ) = x 2 sin( x) − 2 = 0

>> fzero('(x^2)*sin(x)-2',1)

ans =

1.4221
Aplicaciones con MATLAB

Sin embargo, podemos tener algunas decepciones. Por


ejemplo si hacemos
>> fzero('x^2',1)
obtenemos
Exiting fzero: aborting search for an interval containing a
sign change because NaN or Inf function value
encountered during search.
(Function value at -1.7162e+154 is Inf.)
Check function or try again with a different starting value.
ans =
NaN
Aplicaciones con MATLAB

Luego, un conocimiento de lo que se está haciendo es


sumamente importante para lograr una aplicación
exitosa de los métodos numéricos.
Aplicaciones con MATHEMATICA

f@x_D := − ExpA− E Sin@xD − x


1 x
In[1]:=
2 2π
In[3]:= FindRoot@f@xD 0, 8x, 0.5<D

Out[3]= 8x → 0.256474<

In[4]:= Plot@f@xD, 8x, 0, 1<, AxesLabel → 8x, f@xD<D;

From In[4]:= − x − − 2 π Sin @xD


1 x

2
0.5
0.25
x
0.2 0.4 0.6 0.8 1
-0.25
-0.5
-0.75
-1
-1.25
“La libertad de los muchos, perezosos o
seducidos por la tiranía, se salva casi
siempre por la determinación indomable de
unos pocos que pelean contra lo que parece
irremediable, contra lo verosímil predicado
por los acomodaticios, contra lo que la
prudencia sobornada por el dominio
aconseja como más recomendable”

Fernando Sabater
MECÁNICA COMPUTACIONAL I

Capítulo 2

Solución de ecuaciones no –lineales


1

MECÁNICA COMPUTACIONAL I

Capítulo 3
Sistemas de Ecuaciones
2
Capitulo 3
Solución numérica de sistemas de ecuaciones
Introducción
Notación, Matrices y Conceptos Preliminares
Eliminación de Gauss
Eliminación de Gauss-Jordan.
Determinación de la matriz inversa.
Métodos iterativos de Jacobi y Gauss-Seidel.
Métodos iterativos para ecuaciones no-lineales: método de las
sustituciones sucesivas
Métodos iterativos para ecuaciones no-lineales: método de Newton-
Raphson.
3
Introducción

Muchos problemas se expresan como un sistema de


n ecuaciones simultáneas con n variables
f1 ( x1 , x2 , x3 ,..., xn ) = 0
f 2 ( x1 , x2 , x3 ,..., xn ) = 0 (1)
.....
f n (x1 , x2 , x3 ,..., xn ) = 0
En el caso general, estas ecuaciones son no lineales.
El sistema (1) se simplifica grandemente si las
ecuaciones son lineales, pudiendo escribirse
a11 x1 + a12 x2 + a13 x3 + ... + a1n xn = b1
a21 x1 + a22 x2 + a23 x3 + ... + a2 n xn = b2 (2)
.......
an1 x1 + an 2 x2 + an 3 x3 + ... + ann xn = bn
4
Introducción

De manera mas concisa (2) se escribe como


[A]{x} = {b} (3)
ó, menos formalmente,
Ax = b
donde A, x y b son expresados como
⎡ a11 a12 a13 ... a1n ⎤ ⎡ x1 ⎤ ⎡ b1 ⎤
⎢a ⎢x ⎥ ⎢b ⎥
a22 a23 ... a2 n ⎥⎥
A = ⎢ 21 x = ⎢ 2⎥ b = ⎢ 2⎥ (4)
⎢ . . . . . ⎥ ⎢.⎥ ⎢.⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣an1 an 2 an 3 ... ann ⎦ ⎣ xn ⎦ ⎣bn ⎦
5
Introducción

Aunque es posible resolver estos sistemas de manera


analítica, cuando el número de ecuaciones o la
cantidad de veces que hay que hallar la solución es
grande, la solución analítica es poco práctica.

Si el error de redondeo es despreciable, estos


sistemas pueden ser resueltos numéricamente de
manera exacta. Para ello se utilizan dos tipos de
métodos: directos e iterativos.
Los métodos directos se utilizan cuando el número
de ecuaciones no es muy grande (típicamente 40 o
menos).
6
Introducción

Los métodos iterativos se utilizan tanto para un gran


número de ecuaciones (generalmente mas de 100) ó
cuando la matriz A tiene ciertas características.
Antes de iniciar el estudio de estos métodos es
conveniente revisar algunos conceptos básicos del
álgebra matricial.
7

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
8
Notación, Matrices y Conceptos Preliminares
Matriz mxn: arreglo del tipo

⎡ a11 a12 ... a1n ⎤


⎢a
⎢ 21 a22 ... a2 n ⎥⎥
A = aij = (5)
⎢ . . . . ⎥
⎢ ⎥
⎣am1 am 2 ... amn ⎦
Si las dimensiones lo permiten tendremos:
Suma:
A = B + C = bij + cij (6)
Diferencia:
A = B − C = bij − cij (7)
Notación, Matrices y Conceptos Preliminares 9

Producto: n
F = AB = f ij f ij = ∑ aik bkj (8)
k =1

Propiedades:
A(B + C ) = AB + AC (9)
(B + C )D = BD + CD
En general
AB ≠ BA (10)
Si
AB = BA
entonces A y B conmutan.
Notación, Matrices y Conceptos Preliminares 10

Matriz nula:
aij = 0, ∀i, j (11)

Ejemplos:
⎡− 1 3⎤ ⎡ 1 2⎤
⎡1 2 − 1⎤ ⎢ ⎥ ⎢ ⎥
A=⎢ ⎥ B = ⎢ 2 1⎥ C = ⎢− 3 1 ⎥
⎣3 4 2 ⎦ ⎢⎣ 0 3⎥⎦ ⎢⎣ 2 4⎥⎦
Entonces,

⎡ 0 5⎤ ⎡15 20 10⎤
B + C = ⎢⎢− 1 2⎥⎥ ⎡− 4 2 ⎤
A(B + C ) = ⎢
0 37 ⎥ (B + C )A = ⎢⎢ 5 6 5 ⎥⎥
⎢⎣ 2 7 ⎥⎦ ⎣ ⎦
⎢⎣23 32 12⎥⎦
Notación, Matrices y Conceptos Preliminares 11

Si
⎡1 3 1 ⎤ ⎡ 2 1 3⎤
⎢ ⎥
A = ⎢2 0 − 1⎥ B = ⎢⎢− 3 1 2⎥⎥
⎢⎣4 1 2 ⎥⎦ ⎢⎣ 3 1 2⎥⎦

Entonces,
⎡ 11 4 0⎤ ⎡− 4 5 11⎤ ⎡16 9 7 ⎤
A2 = ⎢⎢− 2 5 0⎥⎥ AB = ⎢⎢ 1 1 4 ⎥⎥ BA = ⎢⎢ 7 − 7 0⎥⎥
⎢⎣ 14 14 7 ⎥⎦ ⎢⎣ 11 7 18⎥⎦ ⎢⎣13 11 6⎥⎦
⎡ − 1 2 − 2⎤ ⎡ 3 4 4⎤
A − B = ⎢⎢ 5 − 1 − 3⎥⎥ A + B = ⎢⎢− 1 1 1 ⎥⎥
⎢⎣ 1 0 0 ⎥⎦ ⎢⎣ 7 2 4⎥⎦
Notación, Matrices y Conceptos Preliminares 12

Sea
A = aij
la matriz compleja conjugada de A. Entonces se
cumple que
A+ B = A + B (12a)
AB = A B (12b)
La matriz traspuesta de A se define como
At = (g ij ) = (a ji ) (13)
Se verifica además que
( A + B ) = At + B t
t
(14a)
( ABC ) = C t B t At
t (14b)
Notación, Matrices y Conceptos Preliminares 13

La matriz traspuesta conjugada de A es


A* = ( A ) = At
t
( ) (15)
verificandose que
( AB )
*
= B * A* (16)

Una matriz es Hermitiana si y solo si


A* = A (17)
Una matriz es simétrica si
A = At (18)
Una matriz real es Hermitiana si y solo si es
simétrica.
Notación, Matrices y Conceptos Preliminares 14

Ejemplos:
Sea
⎡ 2 + i − 2 − i − 1 + 3i ⎤
A = ⎢⎢ i − 3 + 2i 2 ⎥⎥
⎢⎣3 − 2i 1+ i − 1 + i ⎥⎦

Entonces
⎡ 2 − i − 2 + i − 1 − 3i ⎤
A = ⎢⎢ − i − 3 − 2i 2 ⎥⎥
⎢⎣3 + 2i 1− i − 1 − i ⎥⎦ ⎡ 2 − i −i 3 + 2i ⎤

A = ⎢ − 2 + i − 3 − 2i 1 − i ⎥
t ⎥
⎢⎣− 1 − 3i 2 − 1 − i ⎥⎦
Notación, Matrices y Conceptos Preliminares 15

Una matriz H es diagonal si es n x n y verifica que


hij ≠ 0 → i = j (19)
hij = 0 → i ≠ j

Una matriz H es escalar si y solo si H es diagonal y


hii = hi = h (20)

La matriz identidad I se define como aquella que es


escalar con
iii = ii = i = 1 (21)
cumpliendose que
IA = AI = A (22)
Notación, Matrices y Conceptos Preliminares 16

Si la matriz A es cuadrada se define la matriz inversa


de A, a la matriz K, que cumple que
AK = KA = I (23)
Esta matriz se denota como K=A-1.
La matriz A es no singular si su inversa existe.
Si las matrices inversas de A y B (del mismo orden)
existen, entonces
(24)
( AB )
−1
= B −1 A−1
Una matriz cuadrada es unitaria si y solo si
(25)
A* = A−1
Una matriz cuadrada es ortogonal si y solo si
A* = A−1 = At (26)
Notación, Matrices y Conceptos Preliminares 17

Ejemplo: Si la matriz A se define como


⎡ 2 / 15 (3 − i ) / 15 i / 15 ⎤
⎢ ⎥
A = ⎢(1 − i ) / 5 i/ 5 (1 − i ) / 5 ⎥
⎢ 5i / 3
⎣ (1 − 3i ) / 3 (2 − 6i ) / 3 ⎥⎦
entonces se cumple que

A A= I
*

y, en consecuencia A es unitaria.
Notación, Matrices y Conceptos Preliminares 18

La diagonal principal de una matriz de orden n esta


constituida por los elementos
aii / 1 ≤ i ≤ n
Si todos los elementos debajo de la diagonal
principal son cero, A es una matriz triangular
superior. Si además, todos los elementos de la
diagonal también son nulos A es una matriz
triangular superior estricta.
De manera similar se definen las matrices triangular
inferior y triangular inferior estricta.
Notación, Matrices y Conceptos Preliminares 19

El determinante de una matriz cuadrada de define


como
det( A) = A = ∑ sgn( p1 p2 ... pn )a1 p1 a2 p2 ...anpn (27)

donde cada producto incluye uno y solo un número


de cada fila y columna y la suma se extiende sobre
todas las posibles permutaciones p1p2...pn. Además,
sgn(p1p2...pn) es 1 o -1 dependiendo de la cantidad de
permutaciones necesarias para transformar la
secuencia a su orden “natural”. Si el número de
permutaciones es impar entonces sgn es 1 y si es par
sgn será -1.
132 -> par 1342 -> impar
Notación, Matrices y Conceptos Preliminares 20

Algunas propiedades útiles son:


det( At ) = det( A) (28a)
det( A−1 ) = 1 / det( A) (28b)
det( A* ) = det( A) (28c)
det( AB ) = det( A) det( B ) (28d)
det( A ) = det( A) (28e)
Notación, Matrices y Conceptos Preliminares 21

Un vector puede ser definido como una matriz nx1.


El producto escalar entre dos vectores u y v se define
como
(u, v ) = u *v
Ejemplo: para n=3 y
⎡2 + 3i ⎤ ⎡1 + i ⎤ ⎡1 + i ⎤
u = ⎢⎢ 3 − i ⎥⎥ v = ⎢⎢1 − i ⎥⎥ (u, v ) = [2 − 3i 3 + i 4 − i ]⎢⎢1 − i ⎥⎥
⎢⎣ 4 + i ⎥⎦ ⎢⎣ 2 ⎥⎦ ⎢⎣ 2 ⎥⎦

(u, v ) = (2 − 3i )(1 + i ) + (3 + i )(1 − i ) + (4 − i )2


(u, v ) = 17 − 5i
Notación, Matrices y Conceptos Preliminares 22

Una matriz elemental nxn de


primer tipo es obtenida ⎡1 0 0 0⎤
⎢0 ⎥
1 0 0⎥
reemplazando el i-ésimo
elemento de la diagonal de la
Q=⎢ (29)
⎢0 0 q 0⎥
matriz identidad nxn por una ⎢ ⎥
constante no nula ⎣0 0 0 1⎦

⎡0 0 1 0⎤
Una matriz elemental nxn de ⎢0
segundo tipo es obtenida 1 0 0⎥⎥
R=⎢ (30)
intercambiando dos filas de la ⎢1 0 0 0⎥
matriz identidad nxn ⎢ ⎥
⎣0 0 0 1⎦
Notación, Matrices y Conceptos Preliminares 23

Una matriz elemental nxn de ⎡1 0 0 0⎤


tercer tipo es obtenida ⎢0 ⎥
1 0 0⎥
insertando un elemento no S=⎢ (31)
nulo fuera de la diagonal de ⎢s 0 1 0⎥
⎢ ⎥
la matriz identidad nxn ⎣0 0 0 1⎦
La multiplicación de una matriz arbitraria A (nxp) por
las matrices elementales produce una transformación
elemental sobre A. Por ejemplo, si A y Q son dadas
por
⎡ a11 a12 a13 a14 ⎤ ⎡1 0 0⎤
⎢ ⎥ ⎢
Q = ⎢0 q 0 ⎥ ⎥
A = ⎢a21 a22 a23 a24 ⎥
⎢⎣a31 a32 a33 a34 ⎥⎦ ⎢⎣0 0 1⎥⎦
Notación, Matrices y Conceptos Preliminares 24

El producto QA lleva a
⎡1 0 0⎤⎡a11 a12 a13 a14 ⎤ ⎡ a11 a12 a13 a14 ⎤
⎢ ⎥ ⎢ ⎥ ⎢
QA = ⎢0 q 0⎥⎢a21 a22 a23 a24 ⎥ = ⎢qa21 qa22 qa23 qa24 ⎥⎥
⎢⎣0 0 1⎥⎦⎢⎣a31 a32 a33 a34 ⎥⎦ ⎢⎣ a31 a32 a33 a34 ⎥⎦
la multiplicación de la i-ésima (2 en este caso) fila de
A por q.
Si R es dado por (2<-->3)

⎡1 0 0⎤
R = ⎢⎢0 0 1⎥⎥
⎢⎣0 1 0⎥⎦
Notación, Matrices y Conceptos Preliminares 25

el producto RA lleva a
⎡1 0 0⎤⎡a11 a12 a13 a14 ⎤ ⎡a11 a12 a13 a14 ⎤
⎢ ⎥ ⎢ ⎥ ⎢
RA = ⎢0 0 1⎥⎢a21 a22 a23 a24 ⎥ = ⎢a31 a32 a33 a34 ⎥ ⎥
⎢⎣0 1 0⎥⎦⎢⎣a31 a32 a33 a34 ⎥⎦ ⎢⎣a21 a22 a23 a24 ⎥⎦
que corresponde al intercambio de filas.
Si S es dada por (s colocado en i=2,j=3)
⎡1 0 0⎤
S = ⎢⎢0 1 s ⎥⎥
⎢⎣0 0 1⎥⎦
Notación, Matrices y Conceptos Preliminares 26

el producto SA lleva a
⎡1 0 0⎤⎡a11 a12 a13 a14 ⎤
⎢ ⎥ ⎢
SA = ⎢0 1 s⎥⎢a21 a22 a23 a24 ⎥ ⎥
⎢⎣0 0 1⎥⎦⎢⎣a31 a32 a33 a34 ⎥⎦

⎡ a11 a12 a13 a14 ⎤


⎢ ⎥
SA = ⎢a21 + sa31 a22 + sa32 a23 + sa33 a24 + sa34 ⎥
⎢⎣ a31 a32 a33 a34 ⎥⎦

que añade a la segunda fila (i en general) el producto


de la constante s por la tercera fila (j en general).
Notación, Matrices y Conceptos Preliminares 27

Si la matriz obtenida luego de estos productos por


matrices elementales se denomina como T; T y A se
dicen que son matrices equivalentes. En ese caso
tenemos que

det(QA) = det(Q) det( A) = q det( A) (32a)


(32b)
det(RA) = det(R) det( A) = − det( A)
(32c)
det(SA) = det(S ) det( A) = det( A)
28

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
29
Eliminación de Gauss
La resolución de un sistema de ecuaciones lineales se
explica fácilmente con un ejemplo. Supongamos que
deseamos resolver el sistema
E1 : x1 + x2 + 3 x4 = 4
E2 : 2 x1 + x2 − x3 + x4 = 1
E3 : 3 x1 − x2 − x3 + 2 x4 = −3
E4 : − x1 + 2 x2 + 3 x3 − x4 = 4
Realizando las operaciones, obtenemos
E1 : x1 + x2 + 3 x4 =4
(E2 − 2 E1 ) → (E2 )
E2 : − x2 − x3 − 5 x4 = −7
(E3 − 3E1 ) → (E3 )
E3 : − 4 x2 − x3 − 7 x4 = −15
(E4 + E1 ) → (E4 )
E4 : 3 x2 + 3 x3 + 2 x4 =8
30
Eliminación de Gauss

Usamos ahora E2 para eliminar x2 de E3 y E4. Para


ello hacemos

(E3 − 4 E2 ) → (E3 )
(E4 + 3E2 ) → (E4 )
para obtener

E1 : x1 + x2 + 3 x4 =4 x1 + x2 + 3 x4 = 4
E2 : − x2 − x3 − 5 x4 = −7 − x2 − x3 − 5 x4 = −7
E3 : − 4 x2 − x3 − 7 x4 = −15 3 x3 + 13 x4 = 13
E4 : 3 x2 + 3 x3 + 2 x4 =8 − 13 x4 = −13
31
Eliminación de Gauss

Este sistema puede resolverse por sustitución hacia


atrás :
− 13
x4 = =1
− 13
x3 = (13 − 13 x4 ) / 3 = 0
x2 = 7 − x3 − 5 x4 = 7 − 0 − 5(1) = 2
x1 = 4 − x2 − 3 x4 = 4 − 2 − 3(1) = −1
El procedimiento anterior se simplifica utilizando
notación matricial. Para ello construimos la matriz
ampliada y operamos directamente sobre los
coeficientes de la misma.
32
Eliminación de Gauss

En el caso del sistema anterior escribimos


⎡1 1 0 3 4⎤
⎢ 2 1 −1 1 1 ⎥
⎢ ⎥
⎢ 3 − 1 − 1 2 − 3⎥
⎢ ⎥
⎣− 1 2 3 − 1 4 ⎦
y realizamos las operaciones sobre las filas de la
matriz, para obtener en cada paso las matrices
⎡1 1 0 3 4 ⎤ ⎡1 1 0 3 4 ⎤
⎢0 − 1 − 1 − 5 − 7 ⎥ ⎢0 − 1 − 1 − 5 − 7 ⎥
⎢ ⎥ y ⎢ ⎥
⎢0 − 4 − 1 − 7 − 15⎥ ⎢0 0 3 13 13 ⎥
⎢ ⎥ ⎢ ⎥
⎣ 0 3 3 2 8 ⎦ ⎣0 0 0 − 13 − 13⎦
33
Eliminación de Gauss

En el caso general, el sistema lineal


a11 x1 + a12 x2 + a13 x3 + ... + a1n xn = b1
a21 x1 + a22 x2 + a23 x3 + ... + a2 n xn = b2
.......
an1 x1 + an 2 x2 + an 3 x3 + ... + ann xn = bn
se expresa utilizando las matrices A y b

⎡ a11 a12 a13 ... a1n ⎤ ⎡ b1 ⎤


⎢a ⎢b ⎥
a22 a23 ... a2 n ⎥⎥ ⎢ 2⎥
A = ⎢ 21 b=
⎢ . . . . . ⎥ ⎢.⎥
⎢ ⎥ ⎢ ⎥
⎣an1 an 2 an 3 ... ann ⎦ ⎣bn ⎦
34
Eliminación de Gauss

para escribir la matriz ampliada


⎡ a11 a12 a13 ... a1n b1 ⎤
⎢a a a ... a b ⎥
A = [A, b] = ⎢ 21 22 23 2n 2⎥

⎢ ... ... ... ... ... ... ⎥


⎢ ⎥
⎣ an1 an 2 an 3 ... ann bn ⎦
El primer paso consiste en “eliminar” el coeficiente
de la primera columna en las ecuaciones 2...n. Para
ello cada fila Ej se transforma de manera que
⎡ ⎛ a j1 ⎞ ⎤ j = 2,3,..., n
⎢ E j − ⎜⎜ ⎟⎟ E1 ⎥ → (E j )
⎣ ⎝ a11 ⎠ ⎦ a11 ≠ 0
35
Eliminación de Gauss

La matriz ampliada se escribe ahora como


⎡a11 a12 a13 ... a1n b1 ⎤
⎢ 0 a′ a′ ... a′ b′ ⎥
Aˆ = ⎢ 22 23 2n 2⎥

⎢ 0 ... ... ... ... ... ⎥


⎢ ⎥
⎣ 0 an′ 2 an′ 3 ... ann′ bn′ ⎦
en la que, en general, todos los coeficientes de las
filas (j>=2) han sido modificados (para simplificar,
las primas serán eliminadas en lo que sigue). El paso
siguiente corresponde a modificar la matriz de
manera que
⎡ ⎛ a j2 ⎞ ⎤ j = 3,4,..., n
⎢ E j − ⎜⎜ ⎟⎟ E2 ⎥ → (E j )
⎣ ⎝ a22 ⎠ ⎦ a22 ≠ 0
36
Eliminación de Gauss

quedando la matriz ampliada expresada como


⎡a11 a12 a13 ... a1n b1 ⎤
⎢0 a a ... a b ⎥
A = [A, b] = ⎢ 22 23 2n 2⎥

⎢0 0 ... ... ... ... ⎥


⎢ ⎥
⎣0 0 an 3 ... ann bn ⎦
El procedimiento continúa de manera que, en el paso
i-ésimo utilizamos

⎡ ⎛ a ji ⎞ ⎤ j = i + 1, i + 2,..., n
⎢E j − ⎜⎜ ⎟⎟ Ei ⎥ → (E j )
⎣ ⎝ aii ⎠ ⎦ aii ≠ 0
37
Eliminación de Gauss

para llegar a la matriz triangular


⎡a11 a12 a13 ... a1n b1 ⎤
⎢0 a a ... a b ⎥
~
A=⎢ 22 23 2n 2⎥

⎢0 0 ... ... ... ... ⎥


⎢ ⎥
⎣0 0 0 0 ann bn ⎦
Resolviendo directamente la n-ésima ecuación
bn
xn =
ann
La incógnita que sigue se obtiene de
bn −1 − an −1,n xn
xn −1 =
an −1,n −1
38
Eliminación de Gauss

De manera semejante obtenemos que cada incógnita


se obtiene de
n
bi − ∑a
j = i +1
ij xj
xi =
aii
escribiendo
bi = ai ,n +1
tendremos, a efectos de la programación
n
ai ,n +1 − ∑a
j = i +1
ij xj
xi =
aii
39
Eliminación de Gauss

El punto débil de este método es la necesidad de


garantizar que en cada paso el pivote akk≠0.
En ese paso, podemos sin embargo intercambiar
ecuaciones escogiendo una ecuación l, con l>k de
manera que el elemento de la columna k de El no sea
nulo.
Ejemplo, partiendo del sistema

⎡1 − 1 2 −1 −8 ⎤
⎢2 − 2 3 − 3 − 20⎥⎥

⎢1 1 1 0 −2 ⎥
⎢ ⎥
⎣1 3 4 3 4 ⎦
40
Eliminación de Gauss

Realizamos las operaciones


(E2 − 2 E1 ) → (E2 )
(E3 − E1 ) → (E3 )
(E4 − E1 ) → (E4 )
Para pasar de a

⎡1 − 1 2 −1 −8 ⎤ ⎡1 − 1 2 − 1 − 8 ⎤
⎢2 − 2 3 − 3 − 20⎥⎥ ⎢0 0 − 1 − 1 − 4 ⎥
⎢ ⎢ ⎥
⎢1 1 1 0 −2 ⎥ ⎢0 2 − 1 1 6⎥
⎢ ⎥ ⎢ ⎥
⎣1 3 4 3 4 ⎦ ⎣0 4 2 4 12 ⎦
Pivote
41
Eliminación de Gauss

El proceso se detiene ya que a22 es nulo y la


operación
⎡ ⎛ a j2 ⎞ ⎤ j = 3,4
⎢E j − ⎜⎜ ⎟⎟ E2 ⎥ → (E j )
⎣ ⎝ a22 ⎠ ⎦ a22 = 0
no puede ser realizada.
Sin embargo, E3 puede ser intercambiada con E2
para obtener la nueva matriz ampliada
⎡1 − 1 2 − 1 − 8 ⎤ ⎡1 − 1 2 − 1 − 8 ⎤
⎢0 0 − 1 − 1 − 4 ⎥ ⎢0 2 − 1 1 6⎥⎥
⎢ ⎥ ⎢
⎢0 2 − 1 1 6⎥ ⎢0 0 − 1 − 1 − 4 ⎥
⎢ ⎥ ⎢ ⎥
⎣ 0 4 2 4 12 ⎦ ⎣ 0 4 2 4 12 ⎦
42
Eliminación de Gauss

Ya E3 tiene su 2do elemento nulo así que se continúa


con E4 haciendo la operación
⎡ ⎛ a42 ⎞ ⎤
⎢ E4 − ⎜⎜ ⎟⎟ E2 ⎥ → (E4 )
⎣ ⎝ a22 ⎠ ⎦
para obtener
⎡1 − 1 2 − 1 − 8 ⎤ ⎡1 − 1 2 − 1 − 8 ⎤
⎢0 2 − 1 1 6 ⎥ ⎢0 2 − 1 1 6 ⎥
⎢ ⎥ ⎢ ⎥
⎢0 0 − 1 − 1 − 4 ⎥ ⎢0 0 − 1 − 1 − 4 ⎥
⎢ ⎥ ⎢ ⎥
⎣0 4 2 4 12 ⎦ ⎣0 0 4 2 0⎦
43
Eliminación de Gauss
Finalmente realizamos la operación

⎡ ⎛ a43 ⎞ ⎤
⎢ E4 − ⎜⎜ ⎟⎟ E3 ⎥ → (E4 )
⎣ ⎝ a33 ⎠ ⎦

para obtener
⎡1 − 1 2 − 1 − 8 ⎤ ⎡1 − 1 2 − 1 − 8 ⎤
⎢0 2 − 1 1 6 ⎥ ⎢0 2 − 1 1 ⎥
⎢ ⎥ ⎢ 6 ⎥
⎢0 0 − 1 − 1 − 4 ⎥ ⎢0 0 − 1 − 1 − 4 ⎥
⎢ ⎥ ⎢ ⎥
⎣0 0 4 2 0⎦ ⎣0 0 0 − 2 − 16⎦
La sustitución hacia atrás nos dará los valores buscados.
44
Eliminación de Gauss

Si no es posible obtener un pivote no nulo, dos


posibilidades existen ya que el sistema tiene (a)
infinitas soluciones ó, (b) ninguna solución.
Los algoritmos deben tener en cuenta estos posibles
casos y dar opciones de salida que indiquen lo que
está ocurriendo.
45
Eliminación de Gauss
46
Eliminación de Gauss

n
ai ,n +1 − ∑a
j = i +1
ij xj
xi =
aii
47
Uso de MatLab

Hallar la solución de un
sistema de ecuaciones
lineales utilizando
MATLAB es muy
sencillo.
Introduciendo la matriz A
y el vector de términos
independientes b tenemos
que la solución del
sistema de ecuaciones
lineales es:
48

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
49
Eliminación de Gauss-Jordan

Una variante del procedimiento anterior es conocida


como el método de Gauss-Jordan. Veamos un
ejemplo. Resolvamos el sistema
E1 : 2 x1 − 7 x2 + 4 x3 = 9
E2 : x1 + 9 x2 − 6 x3 = 1
E3 : − 3 x1 + 8 x2 + 5 x3 = 6
Construyamos la matriz ampliada

⎡ 2 − 7 4 9⎤
⎢1 9 − 6 1 ⎥
⎢ ⎥
⎢⎣− 3 8 5 6⎥⎦
50
Eliminación de Gauss-Jordan

Realizando la operación
((1 / 2)E1 ) → (E1 )
obtenemos la matriz ampliada
⎡ 1 − 7 / 2 2 9 / 2⎤
⎢1 9 − 6 1 ⎥
⎢ ⎥
⎢⎣− 3 8 5 6 ⎥⎦
⎧ (E2 − (1)E1 ) → (E2 )
Luego, realizamos las operaciones ⎨
⎩(E3 − (−3) E1 ) → (E3 )
⎡1 − 7 / 2 2 9/2 ⎤
⎢0 25 / 2 − 8 − 7 / 2⎥
⎢ ⎥
⎢⎣0 − 5 / 2 11 39 / 2 ⎥⎦
51
Eliminación de Gauss-Jordan

Normalice la segunda fila haciendo


⎛ 1 ⎞
⎜ E2 ⎟ → (E2 )

( )
⎜ 25
2


para obtener
⎡1 − 7 / 2 2 9/2 ⎤ ⎡1 − 7 / 2 2 9/2 ⎤
⎢0 25 / 2 − 8 − 7 / 2⎥ ⎢0 1 − 16 / 25 − 7 / 25 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣0 − 5 / 2 11 39 / 2 ⎥⎦ ⎢⎣0 − 5 / 2 11 39 / 2 ⎥⎦
Ahora, y aquí está la variación de Gauss-Jordan, realice
las operaciones
⎧(E1 − (− 7 / 2 )E2 ) → (E1 )

⎩(E3 − (−5 / 2) E2 ) → (E3 )
52
Eliminación de Gauss-Jordan

Obtenemos el resultado
⎡1 − 7 / 2 2 9/2 ⎤ ⎡1 0 − 6 / 25 88 / 25 ⎤
⎢0 1 − 16 / 25 − 1 / 25⎥⎥ ⎢0 1 − 16 / 25 − 7 / 25⎥
⎢ ⎢ ⎥
⎢⎣0 − 5 / 2 11 39 / 2 ⎥⎦ ⎢⎣0 0 47 / 5 94 / 5 ⎥⎦
Continúe el procedimiento realizando
⎧ ⎛⎛ 1 ⎞ ⎞
⎪ ⎜⎜ ⎟ E3 ⎟ → (E3 ) Normalización de E3
⎪ ⎝ ⎝ 47 / 5 ⎠ ⎠

⎪ (E1 − (− 6 / 25)E3 ) → (E1 )
Nueva E3
⎪⎩(E2 − (−16 / 25) E3 ) → (E2 )
53
Eliminación de Gauss-Jordan

Llegamos entonces a
⎡1 0 0 4 ⎤
⎢0 1 0 1 ⎥
⎢ ⎥
⎢⎣0 0 1 2⎥⎦
La sustitución hacia atrás ahora da directamente
x3 = 2
x2 = 1
x1 = 4
54
Eliminación de Gauss-Jordan

En general, los pasos dados en la Eliminación de


Gauss-Jordan son:
(1) Normalizar la fila i haciendo
⎛ 1 ⎞
⎜⎜ Ei ⎟⎟ → (Ei )
⎝ aii ⎠

(2) Sustraer, para todas las filas distintas de la i

(E j − a ji Ei ) → (E j )
Nota: revisar el pivote para garantizar que no es nulo.
En ese caso, proceder como con la Eliminación de
Gauss clásica.
55

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
56
Determinación de la matriz inversa

La matriz inversa se define como aquella que


verifica que
AA−1 = A−1 A = I
Retomemos el procedimiento de Gauss-Jordan con
nuestro ejemplo:
E1 : 2 x1 − 7 x2 + 4 x3 = 9 ⎡ 2 − 7 4 9⎤
⎢ ⎥
E2 : x1 + 9 x2 − 6 x3 = 1 C = [A b] = ⎢ 1 9 − 6 1⎥
E3 : − 3 x1 + 8 x2 + 5 x3 = 6 ⎢⎣− 3 8 5 6⎥⎦
El primer paso correspondió a la transformación
((1 / 2)E1 ) → (E1 )
57
Determinación de la matriz inversa

que se expresa en término de matrices elementales


como
Q1C = C1
con
⎡1 / 2 0 0⎤ ⎡ 1 − 7 / 2 2 9 / 2⎤
⎢ ⎥ ⎢ ⎥
Q1 = ⎢ 0 1 0⎥ C1 = ⎢ 1 9 −6 1 ⎥
⎢⎣ 0 0 1⎥⎦ ⎢⎣− 3 8 5 6 ⎥⎦
Los pasos siguientes en términos de operaciones por
matrices elementales nos llevan a
⎧ (E2 − (1)E1 ) → (E2 ) S1C1 = C2

⎩(E3 − ( −3) E1 ) → (E3 ) S 2 C 2 = C3
58
Determinación de la matriz inversa

con S1 dado por


⎡ 1 0 0⎤ ⎡ 1 − 7 / 2 2 9 / 2⎤
S1 = ⎢⎢− 1 1 0⎥⎥ ⎢
C1 = ⎢ 1 9 −6 1 ⎥ ⎥
⎢⎣ 0 0 1⎥⎦ ⎢⎣− 3 8 5 6 ⎥⎦

⎡ 1 0 0⎤ ⎡ 1 − 7 / 2 2 9 / 2⎤
S1C1 = ⎢⎢− 1 1 0⎥⎥ ⎢⎢ 1 9 − 6 1 ⎥⎥
⎢⎣ 0 0 1⎥⎦ ⎢⎣− 3 8 5 6 ⎥⎦

⎡ 1 −7/2 2 9/2 ⎤
⎢ ⎥
S1C1 = ⎢ 0 25 / 2 − 8 − 7 / 2⎥
⎢⎣− 3 8 5 6 ⎥⎦
59
Determinación de la matriz inversa

y S2 dado por
⎡1 0 0⎤ ⎡ 1 −7/2 2 9/2 ⎤
S 2 = ⎢⎢0 1 0⎥⎥ ⎢ ⎥
C2 = ⎢ 0 25 / 2 − 8 − 7 / 2⎥
⎢⎣3 0 1⎥⎦ ⎢⎣− 3 8 5 6 ⎥⎦

⎡1 0 0⎤ ⎡ 1 − 7 / 2 2 9/2 ⎤
S 2C2 = ⎢⎢0 1 0⎥⎥ ⎢⎢ 0 25 / 2 − 8 − 7 / 2⎥⎥
⎢⎣3 0 1⎥⎦ ⎢⎣− 3 8 5 6 ⎥⎦
⎡1 −7/2 2 9/2 ⎤
S 2C2 = ⎢⎢0 25 / 2 − 8 − 7 / 2⎥⎥ = C3
⎢⎣0 − 5 / 2 11 39 / 2 ⎥⎦
60
Determinación de la matriz inversa

El procedimiento seguido hasta ahora se puede


resumir como una combinación de operaciones
sucesivas con matrices elementales de primer y
tercer tipo
S 2 S1Q1C = C3
Los pasos siguientes se expresarán como
⎡1 0 0⎤
⎛ 1 ⎞ ⎢ ⎥
⎜ ⎟
E 2 → (E 2 ) Q2C3 = C4 Q2 = ⎢0 2 / 25 0⎥

( )
⎜ 25
2

⎠ ⎢⎣0 0 1⎥⎦
⎧(E1 − (− 7 / 2 )E2 ) → (E1 ) S3C4 = C5

⎩(E3 − (−5 / 2) E2 ) → (E3 ) S 4C5 = C6
61
Determinación de la matriz inversa

Para llegar a
S 4 S3Q2 S 2 S1Q1C = C6
De manera similar los pasos siguientes se expresarán
como
⎡1 0 0 4 ⎤
⎢ ⎥
S 6 S5Q3 S 4 S3Q2 S 2 S1Q1C = C9 = ⎢0 1 0 1⎥ = [I x ]
⎢⎣0 0 1 2⎥⎦
Escrito en notación compacta
EC = E [ A b ] = [I x ] EA = I
Teniendo entonces que E es la matriz inversa de A
con
E = S 6 S5Q3 S 4 S3Q2 S 2 S1Q1
62
Determinación de la matriz inversa

Luego, para calcular la inversa podemos proceder


calculando el producto
A−1 = E = EI = S 6 S 5Q3 S 4 S 3Q2 S 2 S1Q1 I
Esto se realiza fácilmente construyendo la matriz
ampliada de la forma
C = [A b I ]
Al hacer el producto por E obtendremos
[
EC = E [ A b I ] = [I x EI ] = I x A−1 ]
63
Determinación de la matriz inversa

En nuestro ejemplo tendremos que la nueva matriz


ampliada será
⎡ 2 − 7 4 9 1 0 0⎤
C = [A b I ] = ⎢⎢ 1 9 − 6 1 0 1 0⎥⎥
⎢⎣− 3 8 5 6 0 0 1⎥⎦
y realizando exactamente las mismas operaciones
sobre las filas que en el caso de la eliminación de
Gauss-Jordan obtenemos
⎡1 0 0 4 93 / 235 67 / 235 6 / 235 ⎤
[I x A−1 ] = ⎢⎢0 1 0 1 13 / 235 22 / 235 16 / 235⎥⎥
⎢⎣0 0 1 2 7 / 47 1 / 47 5 / 47 ⎥⎦
64
Determinación de la matriz inversa
Luego, la matriz inversa viene dada por

⎡93 / 235 67 / 235 6 / 235 ⎤


−1 ⎢
A = ⎢13 / 235 22 / 235 16 / 235⎥⎥
⎢⎣ 7 / 47 1 / 47 5 / 47 ⎥⎦
Desde un punto de vista práctico, a la hora de hacer
los cálculos deben tomarse en cuenta los siguientes
aspectos:
•Seguir los mismos pasos del método de eliminación
de Gauss-Jordan con la nueva matriz ampliada
incluyendo la identidad
•Construir la subrutina de manera que considere si se
desea calcular o no la inversa (índice de control)
65
Determinación de la matriz inversa
Por otra parte, el determinante puede calcularse a
partir de
A−1 = E = EI = S 6 S 5Q3 S 4 S 3Q2 S 2 S1Q1 I
ya que
( )
det A−1 = det (EI ) = det (S 6 S 5Q3 S 4 S 3Q2 S 2 S1Q1 I )
Utilizando las propiedades de las matrices
elementales obtenemos
( )
det A−1 = q3 q2 q1
que corresponde a los factores de normalización.
Luego, el determinante de la matriz A es
1
det ( A) =
q3 q2 q1
66
Determinación de la matriz inversa
En nuestro ejemplo anterior
1
det ( A) = = 235
⎛ 1 ⎞⎛ 2 ⎞⎛ 5 ⎞
⎜ ⎟⎜ ⎟⎜ ⎟
⎝ 2 ⎠⎝ 25 ⎠⎝ 47 ⎠
67

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
68
Métodos Iterativos

En el caso de grandes sistemas de ecuaciones, tales


como los que aparecen en la resolución por
diferencias finitas de EDO y de Ecuaciones en
derivadas parciales los métodos directos pueden ser
poco eficientes (tiempo, almacenamiento y cantidad
de elementos nulos).
Los métodos iterativos consisten en generar, a partir
de una “adivinanza” inicial, una sucesión de
aproximaciones a la solución.
En el método de Jacobi, del sistema de ecuaciones
Ax = b
se despeja cada variable xi de la ecuación i de
manera que
69
Métodos Iterativos
n
bi − ∑ aij x j
j =1
j ≠i
xi = i = 1,2,..., n
aii
Luego, partiendo de una aproximación inicial
“adivinada”
⎡ x1( 0 ) ⎤
⎢ (0) ⎥
⎢ x2 ⎥
x =
(0)
⎢ . ⎥
⎢ (0) ⎥
⎢⎣ xn ⎥⎦
construimos la secuencia
70
Métodos Iterativos
n
bi − ∑ aij x j (0)

j =1
j ≠i
xi(1) = i = 1,2,..., n
aii
El procedimiento se repite de manera secuencial
n
bi − ∑ aij x j (k )

j =1
j ≠i
xi( k +1) = i = 1,2,..., n
aii
hasta verificar algún criterio de convergencia. Un
criterio usual lo constituye la norma L2
71
Métodos Iterativos
n

∑x ( k +1)
i −x(k ) 2
i
L= i =1
n

∑x
i =1
( k +1) 2
i

exigiendole una cota máxima a L.


Ejemplo. Resolver utilizando el método de Jacobi el
sistema
E1 : 10 x1 − x2 + 2 x3 = 6
E2 : - x1 + 11x2 − x3 + 3 x4 = 25
E3 : 2 x1 − x2 + 10 x3 − x4 = −11
E4 : 3 x2 − x3 + 8 x4 = 15
72
Métodos Iterativos

Las incógnitas se despejan para dar


6 + x2 − 2 x3
x1 =
10
25 + x1 + x3 − 3 x4
x2 =
11
− 11 − 2 x1 + x2 + x4
x3 =
10
15 − 3 x2 + x3
x4 =
8
Escojamos como aproximación inicial a

x ( 0 ) = [0,0,0,0]
t
73
Métodos Iterativos

Luego, la primera aproximación será


6 + x2( 0 ) − 2 x3( 0 ) 6 3
x(1)
1 = = =
10 10 5
25 + x1( 0 ) + x3( 0 ) − 3 x4( 0 ) 25
x (1)
2 = =
11 11
− 11 − 2 x1( 0 ) + x2( 0 ) + x4( 0 ) 11
x(1)
3 = =−
10 10
15 − 3 x2 + x3 15
x4(1) = =
8 8
Continuando el proceso de manera iterativa
obtenemos
74
Métodos Iterativos

k 0 1 2 3 4 5 6 7 8 9 10
1 0 0,6000 1,0473 0,9360 1,0167 0,9913 1,0050 1,0001 1,0025 1,0016 1,0020
2 0 2,2727 1,7159 2,0518 1,9539 2,0106 1,9920 2,0018 1,9983 2,0000 1,9994
3 0 -1,1000 -0,8223 -1,0574 -0,9794 -1,0195 -1,0045 -1,0115 -1,0087 -1,0099 -1,0094
4 0 1,8750 0,8852 1,1288 0,9734 1,0199 0,9936 1,0024 0,9979 0,9995 0,9988
Dif = 1,00E+00 2,85E-01 3,21E-02 6,85E-03 1,07E-03 2,08E-04 3,50E-05 6,57E-06 1,14E-06 2,10E-07

Diferencia

1,00E+00
1,00E-01 1 2 3 4 5 6 7 8 9 10
1,00E-02
Norma L2

1,00E-03
1,00E-04
1,00E-05
1,00E-06
1,00E-07
Iteración
75
Métodos Iterativos
El método de Gauss-Seidel, las aproximaciones se
van utilizando a medida que se generan. Esto es, una
( k +1)
vez calculados los valores de las aproximaciones i x
en la ecuación i+1 se sustituyen estos valores junto
con los de la iteración anterior
xi(k )
para obtener como aproximación
i −1 n
bi − ∑ aij x (j k +1) − ∑ ij j
a x (k )

( k +1) j =1 j =i +1
x
i = i = 1,2,..., n
aii
76
Métodos Iterativos

Ejemplo: Resuelva, utilizando el método de Gauss-


Seidel el sistema
E1 : 10 x1 − x2 + 2 x3 = 6
E2 : - x1 + 11x2 − x3 + 3 x4 = 25
E3 : 2 x1 − x2 + 10 x3 − x4 = −11
E4 : 3 x2 − x3 + 8 x4 = 15
Nuevamente expresamos cada incógnita como
6 + x2 − 2 x3 − 11 − 2 x1 + x2 + x4
x1 = x3 =
10 10
25 + x1 + x3 − 3 x4 15 − 3 x2 + x3
x2 = x4 =
11 8
77
Métodos Iterativos
Hallamos la 1era aproximación a x1, partiendo de
x(0)=(0,0,0,0)t
6 + x (0)
− 2 x (0)
6
x1 =
(1) 2 3
=
10 10
Para el cálculo de x2 usamos
25 + x + x − 3 x
(1) (0) (0)
25 + 6 / 10 + 0 − 0 256
x2 = 1 3 4
= =
11 11 110
De manera similar
− 11 − 2 x1(1) + x2(1) + x4( 0 ) − 11 − 2(6 / 10 ) + (256 / 10) + (0)
x3(1) = =
10 10
15 − 3 x2(1) + x3(1) 15 − 3(256 / 10 ) + (134 / 100) − 6046
x4(1) = = =
8 8 8
78
Métodos Iterativos
Continuando obtenemos
k 0 1 2 3 4 5 6 7 8 9 10
1 0 0,6000 1,0302 1,0082 1,0027 1,0020 1,0019 1,0019 1,0019 1,0019 1,0019
2 0 2,3273 2,0369 2,0032 1,9999 1,9996 1,9996 1,9996 1,9996 1,9996 1,9996
3 0 -0,9873 -1,0224 -1,0119 -1,0099 -1,0096 -1,0096 -1,0096 -1,0096 -1,0096 -1,0096
4 0 0,8789 0,9833 0,9973 0,9988 0,9989 0,9990 0,9990 0,9990 0,9990 0,9990
Dif = 1,00E+00 3,90E-02 2,73E-04 6,77E-06 1,03E-07 1,12E-09 9,61E-12 6,59E-14 3,51E-16 1,32E-18

Diferencia

1,00E+00
1,00E-03 1 2 3 4 5 6 7 8 9 10
Norma L2

1,00E-06
1,00E-09
1,00E-12
1,00E-15
1,00E-18
Iteración
79
Métodos Iterativos
No siempre el método de Gauss-Seidel converge mas
rápido que el de Jacobi, pero en general, si lo hace.
Es posible probar que si el valor absoluto del
elemento de la diagonal es mayor que la suma de los
valores absolutos de los elementos fuera de la
diagonal (matriz diagonalmente dominante) esto será
suficiente para garantizar la convergencia.
Esto debe ser tomado en cuenta a la hora de preparar
programas de cálculo.
80

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
81
Métodos Iterativos para Ec. No lineales: MSS
En el caso de sistemas no lineales, deseamos
encontrar la solución de
f1 ( x1 , x2 , x3 ,..., xn ) = 0
f 2 ( x1 , x2 , x3 ,..., xn ) = 0
.....
f n (x1 , x2 , x3 ,..., xn ) = 0

el cual consiste en n funciones reales de n variables


reales.
Uno de los métodos mas utilizados es el de las
sustituciones sucesivas (tipo punto fijo). En este
método, las funciones fi se reescriben de manera que
f i ( x1 , x2 , x3 ,..., xn ) = 0 xi = Fi (x1 , x2 , x3 ,..., xn )
82
Métodos Iterativos para Ec. No lineales: MSS
para utilizar luego un esquema de iteraciones tal
como el utilizado en los métodos de Jacobi o Gauss-
Seidel para sistemas lineales.
Ejemplo: Considere la solución del sistema no lineal
3 x1 − cos( x2 x3 ) − 1 = 0
2
x12 − 81( x2 + 0.1) + sin( x3 ) + 1.06 = 0
2

− x1 x2 10π − 3
e + 20 x3 + =0
3
Las funciones fi se reescriben de manera que
cos( x2 x3 )
x1 = +1
3 6 1 − x1x2 10π − 3
x3 = − e −
x12 + sin( x3 ) + 1.06 20 60
x2 = − 0 .1
9
83
Métodos Iterativos para Ec. No lineales: MSS
Luego, iteramos sobre las ecuaciones
x ( k +1)
=
(
cos x2( k ) x3( k ) ) +1
1 3 6

x2( k +1) =
(x )
(k ) 2
+ sin( x3( k ) ) + 1.06
1
− 0 .1
9
1 − x1( k ) x2( k ) 10π − 3
x3( k +1) =− e −
20 60
Si partimos de la aproximación inicial x(0)=(0,0,0)
tenemos
k 0 1 2 3 4 5 6 7
1 0 0,50000000 0,49999053 0,50000000 0,50000000 0,50000000 0,50000000 0,50000000
2 0 0,01439589 0,00000000 0,00001859 0,00000000 0,00000002 0,00000000 0,00000000
3 0 -0,52359878 -0,52324017 -0,52359878 -0,52359831 -0,52359878 -0,52359877 -0,52359878
Dif= 0,52436292 0,00020737 1,2903E-07 3,4566E-10 2,1652E-13 6,1734E-16 3,867E-19
Norma L2 = 1 0,00039592 2,4617E-07 6,5946E-10 4,1308E-13 1,1778E-15 7,3775E-19
84
Métodos Iterativos para Ec. No lineales: MSS
En la variante de Gauss-Seidel obtenemos
x( k +1)
=
(
cos x2( k ) x3( k ) ) +1
1 3 6

x2( k +1) =
(x )
( k +1) 2
1 + sin( x3( k ) ) + 1.06
− 0 .1
9
1 − x1( k +1) x2( k +1) 10π − 3
x3( k +1) =− e −
20 60
Si partimos de la aproximación inicial x(0)=(0,0,0)
tenemos
k 0 1 2 3 4 5 6 7
1 0 0,50000000 0,49996635 0,50000000 0,50000000 0,50000000 0,50000000 0,50000000
2 0 0,02717248 0,00003399 0,00000005 0,00000000 0,00000000 0,00000000 0,00000000
3 0 -0,52292406 -0,52359793 -0,52359877 -0,52359878 -0,52359878 -0,52359878 -0,52359878
Dif= 0,52418791 0,00073695 2,2855E-09 2,0591E-15 3,6779E-21 6,568E-27 1,2326E-32
Norma L2 = 1 0,00140607 4,3603E-09 3,9285E-15 7,0167E-21 1,2531E-26 2,3516E-32
85
Métodos Iterativos para Ec. No lineales: MSS
Comparando ambas versiones del método tenemos
Comportamiento del Error

10
0,1
1 2 3 4 5 6
0,001
1E-05
1E-07 Jacobi (Dif)
Diferencia, L2

1E-09
Jacobi (L2)
1E-11
1E-13
Gauss-Seidel
1E-15
(Dif)
1E-17
Gauss-Seidell
1E-19 (L2)
1E-21
1E-23
1E-25
1E-27
Iteración
86
Métodos Iterativos para Ec. No lineales: MSS
Las condiciones que garantizan la convergencia de
estos métodos están ligadas con la naturaleza de las
funciones Fi. Si éstas son continúas en una región del
sub-espacio de vectores (x1,x2,...,xn) donde los xi
pertenecen a un intervalo definido (ai,bi) y las
derivadas parciales de las Fi también son continuas y
acotadas en ese sub espacio, entonces las funciones
Fi tienen un punto fijo en dicho sub-espacio.
87

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson.
88
Métodos Iterativos para Ec. No lineales: NR
No siempre es posible despejar la variable de cada
ecuación de manera que el método de las
sustituciones sucesivas converja a la solución. Una
opción distinta la constituye el método de Newton-
Rawson.
En el caso de ecuaciones de una variable, este
método se expresa como
( n +1)
=x (n)

( )
f x(n)
x
( )
f ′ x(n)
pudiendo ser reescrito como
f (x )
g (x ) = x −
f ′( x )
y el problema se remite a conseguir los puntos fijos
de la función g(x).
89
Métodos Iterativos para Ec. No lineales: NR
Este método puede aún escribirse como
g (x ) = x − φ (x ) f (x )
donde la nueva función se expresa como
φ (x ) = [ f ′(x )]−1
En el caso de un problema de varias incógnitas, este
se podría expresar como
{G (x )} = {x}− [A(x )]−1{F (x )}
siendo ahora
{G (x )} = {G (x1 , x2 ,..., xn )}
{F (x )} = F ( f1 ( xi ), f 2 ( xi ),..., f n ( xi ) )t i = 1,2,..., n

[A(x )]−1 = [bij ] ∝ ∂f k


∂xl
90
Métodos Iterativos para Ec. No lineales: NR
Es posible mostrar que la matriz A puede escogerse
igual a la matriz Jacobiana definida como

⎡ ∂f1 ( x ) ∂f1 ( x ) ∂f1 ( x ) ⎤


⎢ ∂x ....
∂x2 ∂xn ⎥
⎢ 1

⎢ ∂f 2 ( x ) ∂f 2 ( x )
...
∂f 2 ( x ) ⎥
J ( x) = ⎢ ∂x1 ∂x2 ∂xn ⎥
⎢ ... ... ... ... ⎥
⎢ ∂f n ( x ) ∂f n ( x ) ∂f n ( x ) ⎥
⎢ ... ⎥
⎣ ∂x1 ∂x2 ∂xn ⎦

Luego, la función G(x) se puede definir como


{G (x )} = {x}− [J (x )]−1{F (x )}
en perfecta correspondencia con el método de punto
fijo para una variable.
91
Métodos Iterativos para Ec. No lineales: NR

Entonces, el procedimiento de iteración se realizará


según
{x}( k +1) = {G (x ( k ) )} = {x}( k ) − [J (x ( k ) )]−1 {F (x ( k ) )}
Este es el método de Newton para sistemas no
lineales.
En general, el 2do término de la derecha se estima a
partir de la resolución del sistema lineal
[J (x )]{y }= {F (x )}
(k ) (k ) (k )

para obtener luego


{x}( k +1) = {x}( k ) − {y}( k )
92
Métodos Iterativos para Ec. No lineales: NR

Ejemplo: Resolver utilizando el método de Newton


el sistema de ecuaciones
3 x1 − cos( x2 x3 ) − 1 = 0
2
x12 − 81( x2 + 0.1) + sin( x3 ) + 1.06 = 0
2

10π − 3
e − x1 x2 + 20 x3 + =0
3
Las funciones fi vienen dadas por

f1 (x ) = 3 x1 − cos(x2 x3 ) − 1
2
f 2 (x ) = x12 − 81( x2 + 0.1) + sin( x3 ) + 1.06
2

10π − 3
f 3 (x ) = e − x1 x2
+ 20 x3 +
3
93
Métodos Iterativos para Ec. No lineales: NR
Luego, el vector F(x) se construye como
⎡ ⎤
⎢ 3x1 − cos( x2 x3 ) − 1

2
F ( x ) = ⎢ x12 − 81( x2 + 0.1) + sin( x3 ) + 1.06⎥
2
⎢ ⎥
⎢ 10π − 3 ⎥
e − x1 x2 + 20 x3 +
⎢⎣ 3 ⎥⎦
La matriz Jacobiana se construye a partir de
∂f1 ∂f 2 ∂f 3
=3 = 2 x1 = − x2 e − x1 x2
∂x1 ∂x1 ∂x1
∂f1 ∂f 2 ∂f 3
= x3 sin( x2 x3 ) = −162( x2 + 0.1) = − x1e − x1 x2
∂x2 ∂x2 ∂x2
∂f1 ∂f 2 ∂f 3
= x2 sin( x2 x3 ) = cos( x3 ) = 20
∂x3 ∂x3 ∂x3
94
Métodos Iterativos para Ec. No lineales: NR

quedando expresada como


⎡ 3 x3 sin( x2 x3 ) x2 sin( x2 x3 )⎤
J = ⎢⎢ 2 x1 − 162( x2 + 0.1) cos( x3 ) ⎥⎥
⎢⎣− x2 e − x1 x2 − x1e − x1x2 20 ⎥⎦

Las iteraciones se realizan a partir de


⎡ 3 ( ) (
x3( 0 ) sin x2( 0 ) x3( 0 ) x2( 0 ) sin x2( 0 ) x3( 0 ) )⎤

J = ⎢ 2 x1( 0 )
(0)
(
− 162 x2( 0 ) + 0.1 ) cos( x3( 0 ) )


⎢ − x2 e
( 0 ) − x1 x2( 0 )
− x1 e ( 0 ) − x1 x2( 0 )
20 ⎥
⎣ ⎦

⎢ 3 x1
(0)
− cos ( x (0) (0)
2 x ) 3 − 1
2


(0)

(
F ( x) = x1 − 81 x2 + 0.1 + sin( x3( 0 ) ) + 1.06⎥
⎢ (0) 2 (0)
) 2



(0) (0) 10π − 3 ⎥
e − x1 x2 + 20 x3( 0 ) +
⎢⎣ 3 ⎥⎦
95
Métodos Iterativos para Ec. No lineales: NR

Si como aproximación inicial de x tomamos (0,0,0)


tendremos
⎡ 0 − 1 − 1 ⎤
⎡3 0 0⎤ ⎢ 2 ⎥
J (0) = ⎢⎢0 − 16.2 1 ⎥⎥ F ( 0 ) ( x) = ⎢0 − 0.81 + 0 + 1.06⎥
⎢ 10π − 3 ⎥
⎢⎣0 0 20⎥⎦ ⎢ 1+ 0 + 3 ⎥
⎣ ⎦

3.00000 0.00000 0.00000 -1.50000


0.00000 -16.20000 1.00000 0.25000
0.00000 0.00000 20.00000 10.47198

Luego, la primera iteración la obtendremos al hacer


x (1) = {x} − {y}
(0) (0)

con y solución de
J (x ( 0 ) ){y ( 0 ) } = F (x ( 0 ) )
96
Métodos Iterativos para Ec. No lineales: NR
x1 x2 x3 Dif Iter Anterior
0.50000000 -0.01688882 -0.52359877 1.00000000

Continuando las iteraciones obtenemos


x1 x2 x3 Dif Iter Anterior
0.50000000 -0.01688882 -0.52359877 1.00000000
0.50001569 0.00172003 -0.52355365 0.00066070
0.50000013 0.00001456 -0.52359841 0.00000555
0.50000000 0.00000000 -0.52359879 0.00000000
0.50000000 -0.00000001 -0.52359879 0.00000000
97
Métodos Iterativos para Ec. No lineales: NR
n=3
Algunos detalles computacionales
x1=0.
x2=0.
x3=0.
Entrada de aproximación inicial
x(1)=x1
x(2)=x2
x(3)=x3

niter=5

do k=1,niter

! ... Construyendo el vector F(x) ...


f(1)=f1(x1,x2,x3) Cálculo de las componentes de
f(2)=f2(x1,x2,x3)
f
f(3)=f3(x1,x2,x3)
98
Métodos Iterativos para Ec. No lineales: NR
! ... Construyendo la matriz Jacobiana
J(1,1)= df1dx1(x1,x2,x3)
J(1,2)= df1dx2(x1,x2,x3)
J(1,3)= df1dx3(x1,x2,x3)
J(2,1)= df2dx1(x1,x2,x3) Cálculo de la matriz Jacobiana
J(2,2)= df2dx2(x1,x2,x3)
J(2,3)= df2dx3(x1,x2,x3)
J(3,1)= df3dx1(x1,x2,x3)
J(3,2)= df3dx2(x1,x2,x3)
J(3,3)= df3dx3(x1,x2,x3)
! ... Matriz ampliada
J(1,4)=f(1)
J(2,4)=f(2) Matriz ampliada
J(3,4)=f(3)
!... Resolviendo J*y=F
call GaussJordan(n,J,y)
Solución del sistema Jy=F

!... Iteración ...


99
Métodos Iterativos para Ec. No lineales: NR
!... Iteración ...

do i=1,n
x(i) = x(i) - y(i)
enddo

suma1=0.
suma2=0.
do i=1,n
suma1=suma1+(x1-x(1))**2.+(x2-x(2))**2.+(x3-x(3))**2.
suma2=suma2+(x(1))**2.+(x(2))**2.+(x(3))**2.
enddo
dif=suma1/suma2
x1=x(1)
x2=x(2) Probando la convergencia
x3=x(3)
enddo
100
Métodos Iterativos para Ec. No lineales: NR
function f1(x1,x2,x3)
double precision x1,x2,x3
f1=3.*x1-cos(x2*x3)-0.5
end Definiendo las funciones para
function df1dx1(x1,x2,x3)
cada matriz
double precision x1,x2,x3
df1dx1=3.
end
101
Métodos Iterativos para Ec. No lineales: NR
function F = myfun(x)
MATLAB posee un F = [3*x(1) - cos(x(2)*x(3)) - 1/2;
comando para resolver x(1)^2 - 81*((x(2)+0.1)^2) + sin(x(3)) + 1.06 ;

sistemas de ecuaciones no exp(-x(1)*x(2))+ 20*x(3)+(10*pi-3)/3];

lineales. Para ello debe Luego define el punto de partida


crear un archivo .m con >> x0 = [0; 0; 0];
>> [x,fval] = fsolve(@myfun,x0)
las funciones no lineales Para obtener
y luego usar el comando x=
0.5000
fzero. Veamos la 0.0000
secuencia de pasos. -0.5236

En nuestro ejemplo: fval =


1.0e-007 *
0.0003
-0.1721
0.0003
102

Solución numérica de sistemas de ecuaciones


2.1 Introducción
2.2 Notación, Matrices y Conceptos Preliminares
2.3 Eliminación de Gauss
2.4 Eliminación de Gauss-Jordan.
2.5 Determinación de la matriz inversa.
2.6 Métodos iterativos de Jacobi y Gauss-Seidel.
2.7 Métodos iterativos para ecuaciones no-lineales:
método de las sustituciones sucesivas
2.8 Métodos iterativos para ecuaciones no-lineales:
método de Newton-Raphson (Apéndice)
103
Métodos Iterativos para Ec. No lineales: NR
La expresión de G(x) en los términos expuestos
requiere del siguiente teorema.
Teorema: Supongamos que p es una solución de G(x)=x para alguna
función G=(g1,g2,...,gn)t que mapea Rn en Rn. Si existe un número δ>0 con
la propiedad de que
(i) ∂gi/∂xj sea continua en Nδ={x/|x-p |< δ} para toda i=1,2,...,n;
(ii) ∂2gi/∂xj∂xk sea continua y |∂2gi/∂xj∂xk |≤ M para alguna constante
M siempre que x ∈ Nδ para toda i,j,k=1,2,...,n
(iii) ∂gi/∂xk (p) =0 para toda i,k=1,2,...,n
entonces existe un número δ’≤ δ tal que la sucesión generada por
x ( k +1) = G (x ( k ) )
converge cuadráticamente a p para cualquier elección de x(0) a condición
que |x(0)-p | < δ’ .
104
Métodos Iterativos para Ec. No lineales: NR

x2

x-p
x
δ’ δ
p

x1

Representación de las condiciones del teorema


anterior para n=2
105
Métodos Iterativos para Ec. No lineales: NR
Puesto que x es un vector con n componentes, la
ecuación
G ( x ) = {x}− [A( x )] F ( x )
−1

corresponde a n ecuaciones del tipo


{ }
n
g i ( x ) = xi − [A( x )] F ( x ) i
−1
g i (x ) = xi − ∑ bij f j ( x )
j =1
siendo ahora
⎧ n
⎛ ∂bij ( x ) ∂f j ( x ) ⎞
⎪1 − ∑ ⎜⎜ f j (x ) + bij ( x )⎟⎟ i=k
∂g i ( x ) ⎪ j =1 ⎝ ∂xk ∂xk ⎠
=⎨ n
∂xk ⎪ − ⎛⎜ ∂bij ( x ) f ( x ) + ∂f j ( x ) b ( x )⎞⎟
⎪⎩ ∑ ⎜ ∂x ⎟ i≠k

j ij
j =1 ⎝ k x k ⎠
La condición (iii) expresada como
∂g i ( p )
=0
∂xk
106
Métodos Iterativos para Ec. No lineales: NR
nos lleva a
⎧ n
⎛ ∂bij ( p ) ∂f j ( p ) ⎞
⎪1 − ∑ ⎜⎜ f j ( p) + bij ( p )⎟⎟ i=k
∂g i ( p ) ⎪ j =1 ⎝ ∂xk ∂xk ⎠
0= =⎨ n
∂xk ⎪ − ⎛⎜ ∂bij ( p ) f ( p ) + ∂f j ( p ) b ( p )⎞⎟
⎪⎩ ∑ ⎜ ∂x ⎟ i≠k

j ij
j =1 ⎝ k x k ⎠
Pero como p es la solución de fj(x)=0, entonces
fj(p)=0, luego la ec. anterior se reduce a las
ecuaciones
n
⎛ ∂f j ( p ) ⎞
1 − ∑ ⎜⎜ bij ( p )⎟⎟ = 0 i=k
j =1 ⎝ ∂xk ⎠
n
⎛ ∂f j ( p ) ⎞
∑ ⎜⎜ bij ( p )⎟⎟ = 0 i≠k
j =1 ⎝ ∂xk ⎠
107
Métodos Iterativos para Ec. No lineales: NR
que se reducen a
n
⎛ ∂f j ( p ) ⎞
∑ ⎜⎜ bij ( p )⎟⎟ = 1 i=k
j =1 ⎝ ∂xk ⎠
n
⎛ ∂f j ( p ) ⎞
∑ ⎜⎜ bij ( p )⎟⎟ = 0 i≠k
j =1 ⎝ ∂xk ⎠
Definiendo la matriz Jacobiana J como
⎡ ∂f1 ( x ) ∂f1 ( x ) ∂f1 ( x ) ⎤
⎢ ∂x ....
∂x2 ∂xn ⎥
⎢ 1

⎢ ∂f 2 ( x ) ∂f 2 ( x )
...
∂f 2 ( x ) ⎥
J ( x) = ⎢ ∂x1 ∂x2 ∂xn ⎥
⎢ ... ... ... ... ⎥
⎢ ∂f n ( x ) ∂f n ( x ) ∂f n ( x ) ⎥
⎢ ... ⎥
⎣ ∂x1 ∂x2 ∂xn ⎦
108
Métodos Iterativos para Ec. No lineales: NR
Con esta definición las ecuaciones se escriben como

∑ (b ( p )J ) = δ
n

ij jk ik i=k
j =1

donde se ha utilizado la delta de Kronecker δij (0 para


i≠j, 1 si i=j).
Luego,
A( p ) −1 J ( p ) = I

Podemos concluir entonces que


A( p ) = J ( p )
En consecuencia una elección adecuada de A viene
dada por
A( x ) = J ( x )
109

ALGORITMOS
Eliminación Gaussiana
Eliminación de Gauss-Jordan (con cálculo de matriz
inversa)
Métodos iterativos de Jacobi y Gauss-Seidel.
Métodos de las sustituciones sucesivas para ecuaciones
no-lineales
Métodos de Newton-Rawson para ecuaciones no-
lineales
110

MECÁNICA COMPUTACIONAL I

Capítulo 3
Sistemas de Ecuaciones

También podría gustarte