Está en la página 1de 87

UNIVERSIDAD AUTÓNOMA DE CHIAPAS

FACULTD DE INGENIERIA CIVIL

MÉTODOS NUMÉRICOS
MANUAL DE METODOS EN OCTAVE
PRIMERA EDICIÓN

TUXTLA GUTIERREZ CHIAPAS NOVIEMBRE 2018


UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

INDICE

1. Método de bisección …………………………………………………………………………….2

2. Método de newton rapshon …………………………………………………………………………….9

3. Método de lin. (raíces imaginarias ………………………………………………………………………….18

4. Método de jacobi ………………………………………………………………………….27

5. Método de gauss seidel ………………………………………………………………………….35

6. Método de newton ………………………………………………………………………….41

7. Interpolación de newton ………………………………………………………………………….45

8. Derivación numerica ………………………………………………………………………….50

9. Integración numerica ………………………………………………………………………….62

10. Método de Euler ………………………………………………………………………….69

11. Método de rungekutta ………………………………………………………………………….73

12. Método de la serie de Taylor ………………………………………………………………………….76

13. Método de diferencias finitas ………………………………………………………………………….80

1
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

1. Método de Bisección
1.1. Definición
Este método consiste en obtener una mejor aproximación de la raíz a partir de un intervalo
inicial (a,b) en el cual hay un cambio de signo en la función, es decir: f(a)f(b)<0.
Se obtiene el punto medio:

1.2. Desarrollo
xm es la nueva aproximación a la raíz, y se vuelve a tomar un intervalo, pero ahora mas pequeño,
considerando que siga existiendo un cambio de signo en la función, es decir, el nuevo intervalo
queda determinado por:

El método termina cuando se cumple con alguna condición de paro, en este programa la condición
es la tolerancia :

Este es un método “de encierro”, para aplicarlo se debe contar con un intervalo inicial, en donde
f(a)*f(b) < 0. Este método requiere de menos pasos en un programa, sin embargo converge mas
lentamente que el de Newton-Raphson.

Los pasos del método son los siguientes:

1.- Localizar un intervalo que contenga al menos una raíz.

2.- Dividir el intervalo en dos partes iguales reteniendo la mitad en donde f(x) cambia de signo,
para conservar al menos una raíz.

2
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

3.- Repetir el procesó varias veces hasta cumplir con la tolerancia deseada.

si:

f(m) f(b)<0 entonces conservar (m,b) como el sem. intervalo que contiene al menos una raíz.

A cada paso se le llama “iteración” y reduce el intervalo a la mitad.

Después de cada iteración el intervalo re reduce a la mitad, después de n iteraciones, el intervalo


original se había reducido 2n veces, por lo tanto, si el intervalo original es de tamaño “a” y el
criterio de convergencia aplicado al valor absoluto de la diferencia de dos Xm consecutivas es “
”, entonces se requerían “n” iteraciones donde “n” se calcula con la igualdad de la expresión:

de donde: iteraciones que se requieren.

Ejemplo 1:
Hallar las raíces de la siguiente función: f(x)= 𝑋 3 − 4𝑋 2 − 10

3
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Ejemplo 2:
Buscar la raíz de x5 - x + 3 = 0

f (-2) = (-2)5 - (-2) + 3 = -32 + 2 + 3 = -27 negativo

f (-1) = (-2)5 - (-1) + 3 = -1 + 1 + 3 = 3 positivo

4
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Debe haber por lo menos una raíz en (-2,-1)

= -1.5

f (-1.5) = (-1.5)5 - (-1.5) + 3 = - 7.59 + 1.3 + 3 = -3.09375 negativo

El intervalo donde cambia el signo es (-1.5,-1)

-1.25

f (-1.25) = (-1.25)5 - (-1.25) + 3 = -3.0 + 1.25 + 3 = 1.19824 positivo

La raíz “R” está en el intervalo (-1.5,-1.25)

-1.375

f (-1.375)2 = (-1.375)5 - (-1.375) + 3 = -0.5398 negativo

Hay que determinar un numero máximo de iteraciones

Normalmente esto se hace considerando una “tolerancia” , esto es:

5
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

El valor absoluto de la diferencia de la debe ser menor que la tolerancia o el resultado de


alguna fórmula de error debe ser menor que la tolerancia dada.

Una de las fórmulas de error mas útiles es la del error relativo porcentual aproximado:

100 %

Ventajas: este método se aplica a cualquier función continua y no requiere derivadas

1.2.1. Desventajas

es un método lento.

Una de las limitaciones de este método es que puede


resultar un polo considerándolo como un “cero”, por
ejemplo, la sig. función tiene un cambio de signo cerca
del origen.

En este caso, nunca se va a encontrar una raíz, aunque


haya un cambio de signo en la función en el intervalo
dado.

6
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

1.3. Código del Método

clear

format short;

a=input('introduzca el valor de a:');

b=input('introduzca el valor de b:');

cont=input('introduzca el numero de interacciones cont:');

fun=input('introduzca a la funcion f(x)=','s');

f=inline(fun);

for k=1:cont

c=(a+b)/2;

e=abs((b-a)/2);

A(k,:)=[k a b c f(c) e];

if f(a)*f(c)<0

b=c;

else

a=c;

end

end

fprintf('\n \tk \ta \tb \tc \tf(c) \terror \n');

disp(A)

fprintf('solucion:\n c=%8.5 f\n' , c)

7
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

fprintf('f(c)=%8.5 f\?n',f(c))

fprintf('error=%8.5 f\n',e)

1.4. Utilidad

En las diferentes ramas de la ingeniería se usan ese tipo de métodos, dependiendo de la


necesidad del problema.

Así como facilitar los problemas y tener una mejor aproximación a los problemas planteados.

8
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

2. Método de Newton-Raphson.
2.1. Definición
Este es un método ampliamente usado en ingeniería para encontrar las raíces de una función
dada, ya que requiere menos iteraciones que otros métodos para encontrar la raíz o sino un
acercamiento aceptable de acuerdo a la exactitud buscada. Recordando que la raíz de una función
es el valor 𝑥𝑖 tal que 𝑓(𝑥𝑖 ) = 0.
El método se emplea proponiendo un punto 𝑥1 de la función en cuestión, si al momento de
evaluar dicho punto en la función no obtenemos cero entonces no es la raíz y procedemos con el
resto del método.

2.2. Desarrollo del Método


Ahora bien es importante saber que dicho punto debe estar cerca a la raíz para poder emplear el
método, y para garantizar esta condición hay varias opciones:
1. Grafique la función y busque un valor en X cercano a la raíz que se desea conocer.
2. Acercándose a la raíz mayor, sea una función: 𝑓(𝑥) = 𝑎𝑛 𝑥 𝑛 + 𝑎𝑛−1 𝑥 𝑛−1 + ⋯ + 𝑎1 𝑥 +
𝑎0 , donde frecuentemente su raíz mayor puede aproximarse por la raíz de la ecuación
lineal 𝑥 + 𝑎𝑛−1 = 0, o por la raíz de mayor valor absoluto de la ecuación cuadrática
𝑎𝑛 𝑥 2 + 𝑎𝑛−1 𝑥 + 𝑎𝑛−2 = 0. Cabe mencionar que esta forma solo aplica para funciones
polinómicas.

Se calcula la pendiente de la recta tangente a la curva de la función que se está analizando, es


decir derivamos la función con respecto al punto 𝑥1 , lo cual expresaremos como 𝑓´(𝑥1 ).
Posteriormente debemos encontrar el punto 𝑥2 , este punto será la intercepción de la recta
tangente anteriormente calculada con el eje horizontal, para obtener este punto podemos acudir
a nuestros conocimientos de geometría, recordando que como ya bien dijimos, la primera
derivada de 𝑥1 es equivalente a la pendiente:
𝑓(𝑥1 ) − 0
𝑓´(𝑥1 ) =
𝑥1 − 𝑥2
De la cual podemos despejar el punto deseado obteniendo:
𝑓(𝑥1 )
𝑥2 = 𝑥1 −
𝑓´(𝑥1 )
Esta expresión es reconocida como la fórmula de Newton-Raphson.

Este método es uno de los más utilizados para localizar raíces ya que en general es muy eficiente
y siempre converge para una función polinomial.
9
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Se requiere que las funciones sean diferenciables, y por tanto, continuas, para poder aplicar este
método.

Se debe partir de un valor inicial para la raíz: xi , este


puede ser cualquier valor, el método convergirá a la
raíz mas cercana.

Si se extiende una tangente desde el punto


, el punto donde esta tangente cruza al eje x representa
una aproximación mejorada de la raíz.

La fórmula de Newton-Raphson se deduce a partir de la fórmula de la pendiente de una recta.

Pendiente de una recta:

Hay que determinar un número máximo de iteraciones

Normalmente esto se hace considerando una “tolerancia” , esto es:

El valor absoluto de la diferencia de la debe ser menor que la tolerancia o el resultado de


alguna fórmula de error debe ser menor que la tolerancia dada.

Una de las fórmulas de error mas útiles es la del error relativo porcentual aproximado:

10
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

El método de Newton-Raphson es convergente cuadráticamente, es decir, el error es


aproximadamente al cuadrado del error anterior.

Esto significa que el numero de cifras decimales correctas se duplica aproximadamente en cada
interacción.

Cuando el método de Newton-Raphson converge, se obtienen resultados en relativamente pocas


interacciones, ya que para raíces no repetidas este método converge con orden 2 y el error Ei+1 es
proporcional al cuadrado del resultado anterior Ei

Supóngase que el error en una iteración es 10-n el error en la siguiente, (que es proporcional al
cuadrado del error anterior) es entonces aproximadamente 10-2n, el que sigue será
aproximadamente 10-4n etc.

De esto puede afirmarse que de cada iteración duplica aproximadamente el numero de dígitos
correctos.

Sin embargo el método de Newton-Raphson algunas veces no converge, sino que oscila. Esto
ocurre si no hay raíz real, si la raíz es un punto de inflexión o si el valor inicial esta muy alejado de
la raíz buscada y alguna otra parte de la función “atrapa” la iteración.

El Método de Newton tiene una interpretación geométrica sencilla, de hecho, el Método de


Newton consiste en una linealización de la función, es decir, f se reemplaza por una recta tal que
contiene al punto (xo, f (xo)) y cuya pendiente coincide con la derivada de la función en el punto,
f (xo) . La nueva aproximación a la raíz, x1 , se obtiene de la intersección de la función lineal con
el eje X de ordenadas.
La ecuación de la recta que pasa por el punto (xo, f (xo)) y de la pendiente f ‘(xo) es :
y- f (xo) = f ‘(xo)(x-xo) .
De donde, haciendo y=0 y despejando x se obtiene la ecuación de Newton- Raphson.
Xn+1 = Xn – f (Xn) / f ‘(xn)
Demostración: Sea 0 x la raíz supuesta inicial o valor inicial de las iteraciones y si se aplican
funciones trigonométricas al ángulo α de la figura 4 se tiene que tan(α ) = f (xo) /(xo − x1) , a
partir de esta fórmula se puede decir que: (x0 − x1) = f (x0 ) / tan(α ) . y despejando x1 se
tendría la fórmula de Newton. La pendiente en xo esta dada por tan(α ) = f ‘(xo) . Teniendo en
cuenta lo anterior se tendría entonces que: x1 = x0 − f (xo) / f ‘(xo ) .
También se puede deducir de teniendo en cuenta que la ecuación de la línea tangente en xo esta
dada por y- f (xo) = f ‘(xo)(x-xo) . La primera aproximación x1 es
Obtenida como la raíz de (1). Así (x1,0) es un punto sobre la ecuación anterior.
Donde, Xn una valor para x conocido actualmente, f(Xn) representa el valor de la función
evaluada en Xn , y f’(Xn) es la derivada evaluada en Xn, Xn+1 representa el próximo valor para x
que se está tratando de encontrar como raíz al aplicar el modelo. Esencialmente, f’(X0) , la

11
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

derivada representa f(x)/dx , (dx = delta-x) ó dx = X1– X0. Sin embargo, el término f (x) / f `(x)
representa un valor de dx = Δx

2.2.1. Convergencia
En general, la convergencia es cuadrática: el error es esencialmente cuadrado en cada paso (es
decir, el número de dígitos exactos se duplica en cada paso). En primer lugar, el método de
Newton requiere que la derivada se calcula directamente. (Si la derivada es aproximada por la
pendiente de una recta que pasa por dos puntos de la función, el método de la secante resultados,
lo que puede ser más eficiente en función de cómo se mide el esfuerzo computacional.) En
segundo lugar, si el valor inicial es demasiado lejos de la verdad cero, el método de Newton
puede dejar de converger. Debido a esto, las implementaciones más práctica del método de
Newton poner límite al número de iteraciones y tal vez del tamaño de las iteraciones. En tercer
lugar, si la raíz que se busca tiene multiplicidad mayor que uno, la velocidad de convergencia es
meramente lineal (menor número de errores por un factor constante en cada etapa) a menos
que se tomen medidas especiales.

2.2.2. Condiciones Especiales del Método de Newton


El método de newton no siempre trabaja. Se encuentra con problemas en varias partes.
-Cuando se escoge un valor x inicial donde se tendría una “división por cero” lo cual es un error,
y no podría proceder.
-Cuando usando un valor X inicial de los valores X convergen y hacen el delta-x la disminución
hacia el cero (0)
-Dependiendo de las condiciones bajo las que se esté intentando resolver la ecuación, algunas de
las variables pueden estar cambiando. Así que, puede ser necesario usar derivadas parciales.

2.2.3. Desventajas
Aunque el método de newton en general es muy eficiente, hay situaciones en que presenta
dificultades:
-En caso especial es las raíces múltiples.
-En algunos casos es posible que para raíces simples se presenten dificultades por su lenta
convergencia.

2.2.4. Conclusión
El método de newton es eficiente en la solución de sistemas de ecuaciones no lineales, converge
muy rápidamente y proporciona una muy buena precisión en los resultados. El método se
emplea en la solución de problemas académicos y propios del mundo real.

12
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

2.3. Ejemplo Numérico.


1.- Encontrar las raíces de la siguiente función, empleando el método de Newton-Raphson para
ubicar su primera raíz.
𝑓(𝑥) = 𝑥 3 − 12.2𝑥 2 + 7.45𝑥 + 42
Evaluada desde 5 hasta 15, donde buscaremos una 𝑥𝑖 tal que 𝑓(𝑥𝑖 ) = 0,

1000
800
600
400
200
0
-200 0 2 4 6 8 10 12 14 16

-400
Primero hay que proponer el valor de 𝑥1 , para el cual podemos proponer el 12, ya que de
acuerdo a su gráfica este valor está cerca de la raíz buscada.
Ahora bien, para simplificar el proceso podemos emplear dos veces sucesivamente la división
sintética a la función con el valor anteriormente propuesto, de esta manera encontraremos
𝑓(𝑥1 ) y 𝑓´(𝑥1 ), para después emplear la fórmula de Newton-Raphson. Cabe mencionar que la
técnica de emplear Newton-Raphson mediante división sintética únicamente es aplicable para
funciones polinómicas.
1 -12.2 7.45 42
𝑥1 = 12 12 -2.40 61
1 -0.2 5.05 𝑓(𝑥1 ) = 103

1 -0.2 5.05
𝑥1 = 12 12 142
1 11.8 𝑓´(𝑥1 ) = 147
Por lo tanto:
103
𝑥2 = 12 − = 12 − 0.7 = 11.3
147
Ahora con el nuevo valor de X realizamos el mismo procedimiento.
1 -12.2 7.45 42
𝑥2 = 11.3 11.3 -10.17 -30.7
1 -0.9 -2.72 𝑓(𝑥2 ) = 11.

13
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

1 -0.9 -2.72
𝑥2 = 11.3 11.3 117.52
1 10.4 𝑓´(𝑥2 ) = 114.80

11
𝑥3 = 11.3 − = 11.3 − 0.1 = 11.2
115
Ahora corresponde evaluar el valor de 𝑥3 con la división sintética.
1 -12.2 7.45 42
𝑥3 = 11.2 11.2 -11.2 -42
1 -1 -3.75 0

Por lo tanto, ya que 𝑓(𝑥3 ) = 0, 𝑥3 = 𝑥𝑖 , y una vez que ya conocemos la primera raíz y hemos
simplificado la función mediante la división sintética podemos encontrar el resto de las raíces
mediante la fórmula general.
𝑓(𝑥) = (𝑥 − 11.2)(𝑥 2 − 𝑥 − 3.75)

𝑥 2 − 𝑥 − 3.75 = 0

Dónde:

𝑥2𝑖 = 2.5 ; 𝑥3𝑖 = −1.5

14
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

2.3.1 Código del programa en Octave.

%Método de Newton Raphson


clear, clc
fh = 0;
dfh = 0;
f = sym("f")
x = sym ("x")
f = input ("Ingrese la funcion a valorar: \n");
df = diff (f, x);
tolerancia = input("Digite la tolerancia permitida \n");
k = input ("Ingrese el primer valor para evaluar la funcion \n");
while(fh(k)> tolerancia)
fh = function_handle (f);
fh(k)
dfh = function_handle (df);
dfh(k);
k = k - (fh (k) / dfh(k))
endwhile

2.3.2. Funcionamiento del programa en Octave.


La siguiente enumeración represente cada fila del programa y su explicación:

15
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

1. Este es un comentario que nombra el programa para quien ve el programa al editarlo.


2. Este comando limpia la ventana de comandos al momento de ingresar el programa.
3. Aquí se declara la variable “fh”, posteriormente se explicará su utilidad.
4. Aquí se declara la variable “dfh”, posteriormente se explicará su utilidad.
5. Aquí se establece que la variable “f” será simbólica.
6. Aquí se establece que el carácter y variable “x” será simbólica.
7. Aquí se le pide al usuario que ingrese la función a evaluar con respecto al carácter “x”
establecido en la línea 6.
8. Aquí se establece la variable “df” como la derivada de “f” con respecto a “x”.
9. Aquí se le pide al usuario que ingrese la tolerancia (definida como la variable “tolerancia”)
mínima que se desea para la evaluación de la función con respecto a las posibles raíces.
10. Aquí se le pide al usuario que ingrese el primer valor “k” para empezar a evaluar la función,
lo que en la teoría se le conoce como “x1 ".
11. Esto es el inicio del bucle o ciclo “while” que estable que mientras la evaluación de “fh” con
respecto a “k” sea mayor a la tolerancia se siga repitiendo el ciclo.
12. En esta línea se establece a la variable “fh” como la forma numérica o “evaluable” de la
función “f”.
13. Aquí se evalúa la función “fh” con respecto a “k”.
14. Aquí se define la función “dfh” como la forma evaluable de la función “df”.
15. Aquí se evalúa la función “dfh” con respecto a k.
16. Aquí se define el nuevo valor de “k” empleando la fórmula de Newton-Raphson.
17. Aquí se marca el final de las operaciones a realizar dentro del ciclo while explicado en la
línea 11.

2.3.3. Comentarios sobre el uso del programa.


Es importante saber esta información si se desea ejecutar el programa aquí presentado. Para
empezar contar con Octave naturalmente, la sintaxis de las funciones a ingresar debe ser la
correcta y también habrá que contar con la paquetería “symbolic” de Octave, la cual hay que
descargar y cargar dentro del programa para poder hacer uso de algunas herramientas
empleadas dentro del código del programa aquí presente.
Primero tendrá que descargar el archivo de “symbolic bundle” para Octave, este archivo se puede
encontrar en el siguiente sitio web (https://github.com/cbm755/octsympy/releases) como
“symbolic-win-py-bundle-2.7.0.zip”. Una vez descargado guarde el archivo comprimido en
alguna carpeta dentro de la librería que este en uso en su Octave, dicha librería se puede cambiar
a gusto siempre.

16
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Ahora bien, una vez realizado lo dicho deberá instalar el paquete, ingresando el siguiente
comando en la ventana de comandos de Octave: “pkg install nombre del archivo”, es decir “pkg”
siglas de pakage, “install” que es instalar en inglés, y finalmente el nombre del archivo
descargado, escriba el nombre completo del archivo sin olvidar ningún dígito.
Ya que uno haya realizado la instalación del paquete deberá cargarlo, para eso deberá ingresa el
comando de “pkg load nombre del symbolic”, esta vez bastará con que escriba el comando tal
cual se ha puesto aquí, no se olvide de que la librería donde Octave obtiene los archivos a
funcionar tenga el archivo de symbolic que se descargó. Es necesario que sepa que basta con
instalar una vez la paquetería, pero que será necesaria cargarla cada vez que abra Octave.
Una vez que usted ha realizado todo esto podrá correr el programa sin ningún problema.
Regresando a la sintaxis hay que saber que hay detalles como el uso de “*” para expresar
multiplicación, la división se puede marcar con “/”, para suma y resta basta con “+” y “-“,
respectivamente. Si ingresa coeficientes con decimales el programa marcará un mensaje de error
y demás, sin embargo el programa seguirá corriendo después de ello como debe.

2.3.4. Demostración del programa.


Para demostrar el funcionamiento del programa se probó para el cálculo de la raíz de la función
f(x)= 𝑒 −𝑥 − 𝑥.
Se dio como se logra ver un tolerancia de 0.0000001 y un valor inicial para la primera iteración
de k = 0, se escogió dicho valor por estar cerca de la raíz.

17
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

3. Método de Lin Bairstow: raíces imaginarias


3.1. Definición
El cálculo de las raíces de un polinomio de grado N es un problema matemático que requiere de
técnicas iterativas para su solución. Algunas técnicas solo son capaces de encontrar raíces reales
de dichos polinomios, pero en algunas ramas de la ingeniería es indispensable encontrar las raíces
de un polinomio real e imaginarias, si las hay.

3.2. Desarrollo
El método de Lin Bairstow o también nombrado el método de los factores cuadráticos tiene la
ventaja de obtener las raíces complejas de una ecuación algebraica, aunque es igual de eficiente
para obtener las raíces reales. Al igual que el método de la doble división sintética, este método es
aplicable para resolver solamente ecuaciones algebraicas.
Si se tiene una ecuación algebraica 𝑃(𝑥) = 0 donde 𝑃(𝑥) es:
𝑃(𝑥) = 𝑎0 𝑥 𝑛 + 𝑎1 𝑥 𝑛−1 + 𝑎2 𝑥 𝑛−2 + ⋯ + 𝑎𝑛−1 𝑥 + 𝑎𝑛 ……… (1)
De este polinomio se puede obtener un factor cuadrático de la forma:
𝑥 2 + 𝑝𝑥 + 𝑞
Con lo que la expresión (1) se puede expresar como:
𝑃(𝑥) = (𝑥 2 + 𝑝𝑥 + 𝑞)(𝑏0 𝑥 𝑛−2 + 𝑏1 𝑥 𝑛−3 + 𝑏2 𝑥 𝑛−4 + ⋯ + 𝑏𝑛−3 𝑥 + 𝑏𝑛−2 ) + 𝑅𝑥 + 𝑆………
(2)
Efectuando la multiplicación:
𝑃(𝑥) = 𝑏0 𝑥 𝑛 + 𝑏0 𝑝𝑥 𝑛−1 + 𝑏0 𝑞𝑥 𝑛−2 + 𝑏1 𝑥 𝑛−1 + 𝑝𝑏1 𝑥 𝑛−2 + 𝑞𝑏1 𝑥 𝑛−3 + 𝑏2 𝑥 𝑛−2 +
𝑝𝑏2 𝑥 𝑛−3 + 𝑞𝑏2 𝑥 𝑛−4 + ⋯ + 𝑏𝑛−3 𝑥 3 + 𝑝𝑏𝑛−3 𝑥 2 + 𝑞𝑏𝑛−3 𝑥 + 𝑏𝑛−2 𝑥 2 + 𝑝𝑏𝑛−2 𝑥 + 𝑞𝑏𝑛−2 +
𝑅𝑥 + 𝑆 ..... (3)
Igualando coeficientes de las mismas potencias en los segundos miembros de (1) y (3) y despejando
los coeficientes del polinomio reducido:
𝑎0 = 𝑏0 𝑏0 = 𝑎0
𝑎1 = 𝑏1 + 𝑝𝑏0 𝑏1 = 𝑎1 − 𝑝𝑏0
𝑎2 = 𝑏2 + 𝑝𝑏1 + 𝑞𝑏0 𝑏2 = 𝑎2 − 𝑝𝑏1 − 𝑞𝑏0
𝑎𝑛−1 = 𝑅 + 𝑝𝑏𝑛−2 + 𝑞𝑏𝑛−3 𝑅 = 𝑎𝑛−1 − 𝑝𝑏𝑛−2 − 𝑞𝑏𝑛−3
𝑎𝑛 = 𝑆 + 𝑞𝑏𝑛−2 𝑆 = 𝑎𝑛 − 𝑝𝑏𝑛−2
En general, los coeficientes de un polinomio están dados por:

𝑏𝑘 = 𝑎𝑘 − 𝑝𝑏𝑘−1 − 𝑞𝑏𝑘−2

18
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

𝑘 = 𝐶, 1, 2, 3, … . . (𝑛 − 2) (4)
𝑏−1 = 𝑏−2 = 0

Y los coeficientes del residuo 𝑅 y 𝑆, se calculan directamente por:


𝑅 = 𝑎𝑛−1 − 𝑝𝑏𝑛−2 − 𝑞𝑏𝑛−3 (5)
𝑆 = 𝑎𝑛 − 𝑝𝑏𝑛−2

Ahora bien, analizando la expresión (2) para que 𝑥 2 + 𝑝𝑥 + 𝑞. Sea un factor del polinomio 𝑃(𝑋),
se requiere que 𝑅 y 𝑆 sean iguales a cero, por lo tanto:

𝑅 = 0 = 𝑎𝑛−1 − 𝑝𝑏𝑛−2 − 𝑞𝑏𝑛−2…….. (6)


𝑆 = 0 = 𝑎𝑛 − 𝑞𝑏𝑛−2 ……. (7)

Despejando 𝑝 y 𝑞 de las expresión (5). Obtenemos:


𝑎𝑛−1 −𝑞𝑏𝑛−3
𝑝= …….. (8)
𝑏𝑛−2
𝑎𝑛
𝑞= ……….. (9)
𝑏𝑛−2

Los coeficientes 𝑏0 , 𝑏1 , 𝑏2 … … 𝑏𝑛−2 del polinomio reducido, se podrían obtener de la expresión


(4) siempre y cuando se conozcan los valores de 𝑝 y 𝑞. A partir de valores iniciales para 𝑝 y 𝑞 y
mediante un procedimiento iterativo, se puede llegar a determinar estos valores con la precisión
que se requiera. Para ello se determinan los incrementos ∆𝑝 y ∆𝑞 como:
∆𝑝 = 𝑝′ − 𝑝 ; ∆𝑞 = 𝑞 ′ − 𝑞 ……. (10)

Donde p’ y q’ son los nuevos valores calculados. Considerando que estos valores están dados por
(8) y (9) respectivamente se tiene:
𝑎𝑛−1 −𝑞𝑏𝑛−3 𝑎𝑛
𝑝′ = ; 𝑞′ =
𝑏𝑛−2 𝑏𝑛−2
Sustituyendo la expresión (10). Obtenemos:
𝑎𝑛−1 −𝑞𝑏𝑛−3
∆𝑝 = −𝑝
𝑏𝑛−2
𝑎𝑛
∆𝑞 = −𝑞
𝑏𝑛−2
Simplificando:
𝑎𝑛−1 − 𝑝𝑏𝑛−2 − 𝑞𝑏𝑛−3 𝑎𝑛 − 𝑞𝑏𝑛−2
∆𝑝 = ; ∆𝑞 =
𝑏𝑛−2 𝑏𝑛−2
Como el numerador de estas ecuaciones corresponden a la de las expresiones (5), entonces:
19
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

𝑅 𝑆
∆𝑝 = ; ∆𝑞 = ……….. (11)
𝑏𝑛−2 𝑏𝑛−2

Ejemplo Numérico I. A:
Obtener las raíces complejas de la siguiente ecuación algebraica con dos cifras decimales exactos:

𝑥 4 − 𝑥 3 + 6𝑥 2 − 3𝑥 + 4 = 0
a) Factorizando 𝑃(𝑥) según la ecuación (2). Obtenemos:

𝑥 4 − 𝑥 3 + 6𝑥 2 − 3𝑥 + 4 = (𝑥 2 + 𝑝𝑥 + 𝑞)(𝑏𝑜 𝑥 2 + 𝑏1 𝑥 + 𝑏2) + 𝑅𝑥 + 𝑆 = 0………


(a)

b) Tomando como valores iniciales de 𝑝 𝑦 𝑞 : 𝑝 = 0; 𝑞=0

𝑏0 , 𝑏1 , 𝑏2 Se pueden obtener de la expresión (4) para k=0, 1 y 2 respectivamente:


𝑏0 = 𝑎0 =1
𝑏1 = 𝑎1 − 𝑝𝑏0 = −1
𝑏2 = 𝑎2 − 𝑝𝑏1 − 𝑞𝑏0 =6
𝑅 y 𝑆 se obtienen con las expresiones (5):
𝑅 = 𝑎3 − 𝑝𝑏2 − 𝑞𝑏1 = −3
𝑆 = 𝑎4 − 𝑞𝑏2 =4
c) Por último ∆𝑝 y ∆𝑞se obtienen despejándolos de la expresión (11):
𝑅 3 𝑆 4
∆𝑝 = =− = −0.50 ; ∆𝑞 = = = 0.67
𝑏2 6 𝑏2 6

Por lo tanto, 𝑝 𝑦 𝑞′ se obtienen despejándolos de la expresión (10):
𝑝′ = 𝑝 + ∆𝑝 = 0.00 − 0.50 = −0.50
𝑞 ′ = 𝑞 + ∆𝑞 = 0.00 + 0.67 = 0.67
d) Sustituyendo esta primera iteración en la tabla I.I

𝑝= 0 −0.50
𝑞= 0 0.67

𝑎0 1 𝑏0 1

𝑎1 −1 𝑏1 −1

20
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

𝑎2 6 𝑏2 6

𝑎3 −3 𝑅 −3

𝑎4 4 𝑆 4

∆𝑝= −0.50
∆𝑞 = 0.67

Procediendo de forma similar, si el método converge, 𝑅 y 𝑆 tenderán a cero, así como ∆𝑝


y ∆𝑞. El método se terminará de aplicar cuando la diferencia en valor absoluto entre los
dos últimos valores calculados de 𝑝, así como los de 𝑞, sean menores o iguales a una
tolerancia prefijada.

Prosiguiendo de forma análoga, finalmente se obtiene la siguiente tabla:

𝑝= 0 −0.50 −0.52 −0.53 −0.53


𝑞= 0 0.67 0.78 0.80 0.81

𝑎0 1 𝑏0 1 1.00 1.00 1.00 1.00

𝑎1 −1 𝑏1 −1 −0.50 −0.48 −0.47 −0.47

𝑎2 6 𝑏2 6 5.08 4.97 4.95 4.94

𝑎3 −3 𝑅 −3 −0.13 −0.04 0.00 0.00

𝑎4 4 𝑆 4 0.60 0.12 0.04 0.02

∆𝑝= −0.50 −0.02 −0.01 0.00 0.00


∆𝑞 = 0.67 0.11 0.02 0.01 0.00

Donde 𝑝 = −0.53 y 𝑞 = 0.81 con dos cifras decimales exactas.

Sustituyendo los últimos valores de 𝑝, 𝑞, 𝑏0 , 𝑏1 , 𝑏2 , 𝑅 𝑦 𝑆 en la ecuación (a):

𝑥 4 − 𝑥 3 + 6𝑥 2 − 3𝑥 + 4 = (𝑥 2 − 0.53𝑥 + 0.81)(𝑥 2 − 0.47𝑥 + 4.94) = 0

Utilizando la fórmula general para resolver ecuaciones cuadráticas. Obtenemos:

21
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

0.53 ± √(−0.53)2 − 4(1)(0.81)


𝑅1,2 =
2(1)

Por lo tanto: 𝑅1 = 0.27 + 0.86𝑖 ; 𝑅2 = 0.27 − 0.86𝑖


y:
0.47 ± √(−0.47)2 − 4(1)(4.94)
𝑅3,4 =
2(1)

Por lo tanto: 𝑅3 = 0.24 + 2.21𝑖 ; 𝑅4 = 0.24 − 2.21𝑖


Aplicación a la Ingeniería:

Ejemplo II.A

El sistema mostrado en la figura, el cual consiste en tres reactores en serie, será controlado en
“feedback” con un controlador Proporcional-Derivada-Integral (PDI). Se piden las raíces de la
ecuación característica.

F0 F1 F2 F3

CA0 CA1 CA2 CA3

a) Las ecuaciones diferenciales que representan el comportamiento del sistema, cuando


𝐹1 = 𝐹2 = 𝐹3 = 𝐹, 𝑉1 = 𝑉2 = 𝑉3 = 𝑉 y 𝐾1 = 𝐾2 = 𝐾3 = 𝐾, son:

𝑑𝐶𝐴1 𝐾+1 1
+[ ] 𝐶𝐴1 = [ ]𝐶𝐴0
𝑑𝑡 𝜏 𝜏
𝑑𝐶𝐴2 𝐾+1 1
+[ ] 𝐶𝐴2 = [ ]𝐶𝐴1
𝑑𝑡 𝜏 𝜏
𝑑𝐶𝐴3 𝐾+1 1
+[ ] 𝐶𝐴1 = [ ]𝐶𝐴2
𝑑𝑡 𝜏 𝜏

Ahora bien, este sistema de ecuaciones diferenciales de primer orden conduce a:


𝑑 3 𝐶𝐴3 𝐾 + 1 𝑑2 𝐶𝐴3 𝐾 + 1 𝑑 𝐶𝐴3 𝐾+1 3 1
+ 3[ ] + 3[ ] +[ ] 𝐶𝐴3 = [ ]3 𝐶𝐴0
𝑑𝑡 𝜏 𝑑𝑡 𝜏 𝑑𝑡 𝜏 𝜏

22
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

En notación de operadores:
3
𝐾+1 2 𝐾+1 𝐾+1 3 1
[𝐷 + 3 [ ]𝐷 + 3[ ]𝐷 + [ ] ]𝐶𝐴3 = [ ]3 𝐶𝐴0
𝜏 𝜏 𝜏 𝜏

b) La aplicación de las transformadas de Laplace hace que:


1
𝐶𝐴3 [ 𝜏 ]3
𝐺(𝑆) = =
𝐶𝐴0 𝐾+1 3
[𝑆 + [ 𝜏 ] ]
Este nuevo criterio nos permite representar el proceso como:

1
𝐶𝐴3 [ ]3 CA3(S)
CA0(S) 𝐺(𝑆) = = 𝜏
𝐶𝐴0 𝐾+1 3
[𝑆 + [ ] ]
𝜏

Cuando se agrega el elemento controlador PID la nueva representación del proceso es:
1
𝐶𝐴3 8
𝐺(𝑆) = =
CA CA0 (S) 𝐶𝐴0 [𝑆 + 1]3 CA3 (S)
-1

CA3
Donde: B(S)
𝜏𝐼 𝑆 + 1 𝜏𝐷 𝑆 + 1
𝐵(𝑆) = 𝐾𝐶 . .
𝜏𝐼 𝑆 [ 𝜏𝐷 ] 𝑆 + 1
20
Con lo que la ecuación característica del sistema controlado es:
1 + 𝐵(𝑆)𝐺𝑀 (𝑆) =
𝑆+1 1
𝜏𝐼 𝜏𝐷 𝑆+1 20 60 60 20𝐾𝐶
1 + 𝐾𝐶 . 𝜏 . 8
𝑆 5 + [3 + 𝜏 ] 𝑠 4 + [3 + 𝜏 ] 𝑠 3 + [1 + 𝜏 + ]𝑆 2
𝑆 [ 𝐷 ]𝑆+1 [𝑆+1]3 𝐷 𝐷 𝐷 8
20
20 20𝐾𝐶 1 1 20𝐾𝐶
[ + ( + )] 𝑆 + 𝜏 𝜏 = 0
𝜏𝐷 8 𝜏𝐷 𝜏 𝐼 8 𝐷 𝐼

Los tres casos que plantea el autor de la referencia 2 son:


I) 𝜏𝐷 = 0.45 𝜏𝐼 = 1.82 𝐾𝐶 = 17
II) 𝜏𝐷 = 0.90 𝜏𝐼 = 1.82 𝐾𝐶 = 30
III) 𝜏𝐷 = 1.80 𝜏𝐼 = 1.82 𝐾𝐶 = 22

23
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Cuyas raíces son: (encontradas con el método de Lin- Bairstow y con error de bN y bN-1 aceptado
como 10-16).
CASO I
PARTE REAL PARTE IMAGINARIA
-0.17748 1.10189
-0.17748 -1.10189
-0.42220 0.00000
-2.21993 0.00000
-44.44735 0.00000

CASO II

PARTE REAL PARTE IMAGINARIA

-0.48779 0.54676

-0.48779 -0.54676

-0.93064 1.71573

-0.93064 -1.71573

-22.38536 0.00000

CASO III
PARTE REAL PARTE IMAGINARIA
-0.42397 0.00000
-0.62796 0.00000
-0.73085 2.20080
-0.73085 -2.20080
-11.59747 0.00000

24
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

3.3. Método en Octave


## Metodo 3. Programa para encontrar raices de un polinomio de grado 5 o menor. ##
fprintf ('\n')
fprintf ("Metodo de Lin: Raices imaginarias.\n")
fprintf ("En los valores de a0 - a5 favor de poner los coeficientes del polinomio.\n\n")
fprintf ("Ingrese los valores de los coeficientes: \n")

a0=0;
a1=0;
a2=0;
a3=-4;
a4=-15;
a5=4;
p=0;
q=0;
Tol=0.0000000001;
b0=a0;
b1=a1-b0*p;
b2=a2-b1*p-b0*q;
b3=a3-b2*p-b1*q;
b4=a4-b3*p-b2*q;
b5=a5-b3*q;
p0=(a4-q*b2)/b3;
q0=a5/b3;
p1=b4/b3;
q1=b5/b3;
while (p1<Tol & q1<Tol)
b0=a0;
b1=a1-b0*p0;
b2=a2-b1*p0-b0*q0;
b3=a3-b2*p0-b1*q0;
b4=a4-b3*p0-b2*q0;
b5=a5-b3*q0;
p0=(a4-q0*b2)/b3;
q0=a5/b3;
p1=p0-p1;
q1=q0-q1;
end
x1=(-p0+sqrt(p0^2-4*q0))/2;

25
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

x2=(-p0-sqrt(p0^2-4*q0))/2;
fprintf('La raiz x1 de la ecuacion es: \n %3.4f\n',x1);
fprintf('La raiz x2 de la ecuacion es: \n %3.3f\n',x2);

26
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

4.1. Método de Jacobi


4.1. Definición
En análisis numérico el método de Jacobi es un método iterativo, usado para resolver sistemas de
ecuaciones lineales del tipo . El algoritmo toma su nombre del matemático alemán Carl Gustav
Jakob Jacobi. El método de Jacobi consiste en usar fórmulas como iteración de punto fijo.

La base del método consiste en construir una sucesión convergente definida iterativamente. El
límite de esta sucesión es precisamente la solución del sistema. A efectos prácticos si el algoritmo
se detiene después de un número finito de pasos se llega a una aproximación al valor de x de la
solución del sistema.

4.2. Desarrollo
En la iteración de Jacobi, se escoge una matriz Q que es diagonal y cuyos elementos diagonales son
los mismos que los de la matriz A. La matriz Q toma la forma:

y la ecuación general se puede escribir como:

Qx(k) = (Q-A)x(k-1) + b

Si denominamos R a la matriz A-Q:

la ecuación se puede reescribir como:


Qx(k) = -Rx(k-1) + b

27
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

El producto de la matriz Q por el vector columna x(k) será un vector columna. De modo análogo,
el producto de la matriz R por el vector columna x(k-1) será también un vector columna. La
expresión anterior, que es una ecuación vectorial, se puede expresar por n ecuaciones escalares
(una para cada componente del vector). De este modo, podemos escribir, para un elemento i
cualquiera y teniendo en cuenta que se trata de un producto matriz-vector:

Si tenemos en cuenta que en la matriz Q todos los elementos fuera de la diagonal son cero, en el
primer miembro el único término no nulo del sumatorio es el que contiene el elemento diagonal
qii, que es precisamente aii. Más aún, los elementos de la diagonal de Rson cero, por lo que podemos
eliminar el término i=j en el sumatorio del segundo miembro. De acuerdo con lo dicho, la
expresión anterior se puede reescribir como:

de donde despejando xi(k) obtenemos:

que es la expresión que nos proporciona las nuevas componentes del vector x(k) en función de
vector anterior x(k-1) en la iteración de Jacobi. En la figura (14) se presenta un algoritmo para el
método de Jacobi..

28
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Figure: Implementación del método de Jacobi.

El método de Jacobi se basa en escribir el sistema de ecuaciones en la forma:

El método de Jacobi es susceptible de los efectos del pivoteo. En consecuencia, su criterio de


convergencia lo conforman los criterios de la diagonal pesada, mismo que posee dos condiciones:

1. Condición necesaria: Es condición necesaria que el elemento ubicado en la


diagonal principal de cada ecuación sea mayor en valor absoluto que el resto de
los elementos de la misma ecuación.

| aii | > | aij |


2. Condición suficiente: Es condición suficiente que el elemento ubicado en la
diagonal principal de cada ecuación sea mayor en valor absoluto que la suma del
resto de los elementos de la misma ecuación.

29
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

| aii | > Σ| aij |


En ciertas ocasiones al aplicar Jacobi la matriz no es diagonalmente dominante y por tanto no
existirá garantía de convergencia. Sin embargo, en algunos casos será posible reordenar las
incógnitas en otra manera de forma que la nueva matriz de coeficientes sea diagonalmente
dominante. Esto se puede detectar revisando todos los posibles ordenamientos de las incógnitas y
ver cómo es la matriz resultante. Claro que esto conlleva un bueno número de pruebas pues el
número posible de ordenamientos en n variables es (n − 1)! pero cuando n es reducido es sencillo.

3 x + 12 y − z = − 2
11 x − 4 y + 3 z = − 3
−3 x − 2 y − 12 z = − 2
Con el orden y → x → z el sistema y su matriz de coeficientes quedan:
12 y + 3 x − z = − 2 − 4 y + 11 x + 3 z = − 3 − 2 y − 3 x − 12 z = −2

4.3. Ejemplo numérico.


El método Jacobi es un método iterativo para resolver sistemas de ecuaciones lineales más simple
y se aplica sólo a sistemas cuadrados, es decir a sistemas con tantas incógnitas como ecuaciones.
1. Primero se determina la ecuación de recurrencia. Para ello se ordenan las ecuaciones y las
incógnitas. De la ecuación i se despeja la incógnita i. En notación matricial se escribirse como: x =
c + B x donde x es el vector de incógnitas.
2. Se toma una aproximación para las soluciones y a ésta se le designa por x o
3. Se itera en el ciclo que cambia la aproximación xi+ 1 = c + Bxi
Con un vector inicial:

x1=0
x2=0
x3=0

Se tiene que resolver por el método de Jacobi, el siguiente sistema de ecuaciones:

6x1 + 2x2 + x3 = 22
-x1 + 8x2 + 2x3 = 30
x1 - x2 + 6x3 = 23

Solución:

1. Despejamos la variable x de cada una de las ecuaciones como sigue:

30
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

x1 = (22 - 2x2 - x3)/6


x2 = (30 + x1 - 2x3)/8
x3 = (23 - x1 + x2)/6

2. Para un vector inicial (0; 0; 0) hallo los valores de x1, x2, x3.

x1 = (22 - 2(0) - (0))/6


x2 = (30 + (0) - 2(0))/8
x3 = (23 - (0) + (0))/6

3. Teniendo para nuestra primera iteración los siguientes valores:

x1 = 3.66 x2 = 3.75 x3 = 3.83

4. Así sucesivamente sustituimos los valores de la primera iteración en las ecuaciones para seguir
a los valores de las variables.

31
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

4.4. Código del programa en Octave del método.


1. %Este programa te permite calcular sistemas de ecuaciones lineales mediante el método
de Jacobi.
2. clear, clc
3. printf ("Este programa te resuelve sistemas de 3 x 3 \n")
4. x1 = input ("Ingrese el coeficiente de la primera x = ")
5. y1 = input ("Ingrese el coeficiente de la primera y = ")
6. z1 = input ("Ingrese el coeficiente de la primera z = ")
7. a1 = input ("Ingrese a que es igual la primera ecuacion = ")
8. x2= input ("Ingrese el coeficiente de la segunda X = ")
9. y2 = input ("Ingrese el coeficiente de la segunda y = ")
10. z2 = input ("Ingrese el coeficiente de la segunda z = ")
11. a2 = input ("Ingrese a que es igual la segunda ecuacion = ")
12. x3 = input ("Ingrese el coeficiente de la tercera X = ")
13. y3 = input ("Ingrese el coeficiente de la segunda y = ")
14. z3 = input ("Ingrese el coeficiente de la segunda z = ")
15. a3 = input ("Ingrese a que es igual la tercera ecuacion = ")
16. tolerancia = input ("Ingrese la tolerancia par el metodo: ")
17. A =[x1,y1,z1;x2,y2,z2;x3,y3,z3];
18. B = [a1;a2;a3];
19. D = [1/x1, 0, 0; 0, 1/y2, 0; 0, 0, 1/z3];
20. L = [0, 0, 0; -x2, 0, 0; -x3, -y3, 0];
21. U = [0, -y1, -z1; 0, 0, -z2; 0, 0, 0];
22. W = U+L;
23. I = (D*B);
24. C = (D*W);
25. x = 0;
26. y = 0;
27. z = 0;
28. error = 50;
29. while (error > tolerancia)
30. x = I(1,1) + (C(1,2) * y) + (C(1,3) * z)
31. y = I(2,1) + (C(2,1) * x) + (C(2,3) * z)
32. z= I(3,1) + (C(3,1) * x) + (C(3,2) * y)
33. s = x1*x + y1*y + z1*z - a1;
34. error =abs (s)
35. Endwhile

32
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

4.3.1. Descripción el código.


1. Es un comentario que define el propósito del programa y su naturaleza.
2. Es un comando que permite limpiar la ventana de comandos al momento de ejecutar el
programa.
3. Es una impresión de pantalla que explica brevemente la función del programa.
4. Aquí se solicita el valor del coeficiente de la primera variable de la primera ecuación.
5. Aquí se solicita el valor del coeficiente de la segunda variable de la primera ecuación.
6. Aquí se solicita el valor del coeficiente de la tercera variable de la primera ecuación.
7. Aquí se solicita el valor del resultado de la primera ecuación.
8. Aquí se solicita el valor del coeficiente de la primera variable de la segunda ecuación.
9. Aquí se solicita el valor del coeficiente de la segunda variable de la segunda ecuación.
10. Aquí se solicita el valor del coeficiente de la tercera variable de la segunda ecuación.
11. Aquí se solicita el valor del resultado de la segunda ecuación.
12. Aquí se solicita el valor del coeficiente de la primera variable de la tercera ecuación.
13. Aquí se solicita el valor del coeficiente de la segunda variable de la tercera ecuación.
14. Aquí se solicita el valor del coeficiente de la tercera variable de la tercera ecuación.
15. Aquí se solicita el valor del resultado de la tercera ecuación.
16. Aquí se solicita que ingresen la tolerancia a respetar en el método.
17. Aquí se define la matriz principal (A) del método a partir de los coeficientes de las tres
ecuaciones.
18. Aquí se define la matriz secundaria (B) a partir de los resultados de las tres ecuaciones.
19. Aquí se define la matriz diagonal inversa de la matriz A llamada matriz D.
20. Aquí se define la matriz negativa triangular inferior de A, llamada matriz L.
21. Aquí se define la matriz negativa triangular superior de A, llamada matriz U.
22. Aquí se define la matriz W como la suma de las matrices U y L.
23. Aquí se define la matriz I como el producto de las matrices D y B, en ese orden.
24. Aquí se define la matriz C como el producto de las matrices D y W, en ese orden.
25. Aquí se asigna un valor inicial a x de 0.
26. Aquí se asigna un valor inicial a y de 0.
27. Aquí se asigna un valor inicial a z de 0.
28. Aquí se asigna un valor inicial al “error” de 50.
29. Aquí se inicial el bucle “while” que continuará siempre y cuando el valor del “error” sea
mayor que el valor de la “tolerancia”.
30. Aquí se redefine el valor de x con la fórmula de Jacobi pertinente, imprimiendo el resultado
en pantalla.
31. Aquí se redefine el valor de y con la fórmula de Jacobi pertinente, imprimiendo el resultado
en pantalla.

33
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

32. Aquí se redefine el valor de z con la fórmula de Jacobi pertinente, imprimiendo el resultado
en pantalla.
33. Aquí se calcula el valor de “s” evaluando una de las tres ecuaciones con los valores de x, y
y z que se obtuvieron en esa iteración.
34. Aquí se redefine el valor del “error” como el valor absoluto de s.
35. Aquí se le da final a las acciones que se repiten en el bucle iniciado en la linea de código 29.

34
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

5. Método de Gauss – Seidel: similar al de Jacobi


Solución de Sistema de Ecuaciones Lineales.

5.1. Definición
En análisis numérico el método de Gauss-Seidel es un método iterativo utilizado para resolver
sistemas de ecuaciones lineales. El método se llama así en honor a los matemáticos alemanes Carl
Friedrich Gauss y Philipp Ludwig von Seidel y es similar al método de Jacobi.
Aunque este método puede aplicarse a cualquier sistema de ecuaciones lineales que produzca una
matriz (cuadrada, naturalmente pues para que exista solución única, el sistema debe tener tantas
ecuaciones como incógnitas) de coeficientes con los elementos de su diagonal no-nulos, la
convergencia del método solo se garantiza si la matriz es diagonalmente dominante o si es
simétrica y, a la vez, definida positiva.
El método de Gauss-Seidel es el más comúnmente usado para resolver sistemas muy grandes de
ecuaciones lineales.

5.2. Desarrollo
Es una modificación del método de Jacobi que hace que la convergencia sea más rápida.
Comienza con una aproximación inicial x (0) a la solución x y genera una sucesión de vectores x
(k) que convergen a la solución x.
Un sistema de ecuaciones algebraicas lineales es un conjunto de ecuaciones de la forma:

:: :: ::

O bien en su forma matricial:

Que a su vez se puede expresar como:


Ax = b
Donde “A” es la matriz de coeficientes, x es el vector de incógnitas y b el vector de términos
independientes.

35
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

La solución del sistema de ecuaciones es un conjunto de n valores que satisfacen


simultáneamente todas las ecuaciones.
Tanto en el método de Gauss-Seidel como en el de Jacobi, el valor que se le dé al vector inicial
carece de importancia, ya que el método convergirá a la solución rápidamente no obstante que el
vector inicial tenga valores muy lejanos a la solución. Es por esto que se acostumbra a dar el vector
0 como vector inicial.
En la solución de estos problemas pueden presentarse 3 casos:
1.- Solución única Sistema compatible determinado.
2.- Más de una solución Sistema compatible e indeterminado.
(Número infinito de soluciones)
3.- Sin solución Sistema incompatible.
En donde: A = D + R.

36
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Estas fórmulas se se deducen de la ecuación en donde se despejo X.

La ecuacion anterior nos permite saber el margen de error para cada valor del vector columna.

37
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

5.3. Código para Octave


fprintf ('Resolucion de Ecuaciones Lineales por el Método de Gauss Seidel\n');
fprintf ('Dada las siguientes ecuaciones\n');
fprintf ('10X+Y+2Z=3\n 4X+6Y-Z=9\n -2X+3Y+8Z=51\n');
tol=input ('Introduzca una tolerancia menor que 1: ')
x=0;
y=0;
z=0;
a=1;
m=1;
while m>tol;
x1=(3-(y+2*z))/10;
y1=(9-(4*x-z))/6;
z1=(51-(-2*x+3*y))/8;
m=sqrt((x1-x)+(y1-y)+(z1-z));
x=x1;y=y1;z=z1;
a=a+1;
end
fprintf ('El programa realizo %f iteraciones\n',a);
fprintf ('Los valores para X,Y y Z que el programa calculo son:\n X=%f\nY=%f\n Z=%f',x,y,z);

38
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

5.3.1. ¿Cómo funciona?


De la línea 1-3 del código.
Al principio del código se utilizó la funciona fprintf, está nos permite escribir, entre paréntesis y
comillas simples (‘ ’), las palabras, números y letras que nosotros queramos y finalizarlo con un
punto y como (;). Antes de finalizar la última comilla se puso la función \n que nos permite dar
un salto hacia el siguiente renglón y las palabras que escribamos después de esta se ira al siguiente
renglón. La función \n es de utilidad para separar oraciones y darle una mejor estética al ejecutar
el programa, además de que podemos seguir escribiendo en la misma línea.
Línea 4 del código.
El funcionamiento de la línea 4 es pedir un valor al usuario y este está compuesto por
- El nombre de la variable en donde voy a guardar el valor. En este caso requerimos pedir
la tolerancia (tol).
- Seguido de un signo igual (=) para saber cuál va a ser su valor.
- Con la función input (‘ ‘) pedimos el valor de la tolerancia que el usuario proponga.

De la línea 5 – 9 del código.


Lo que hicimos fue declarar las variables básicas con su respectivo valor para poder darle
estructura al código. Un ejemplo seria: A=2;
- A es el nombre de la variable y para el programa de octave a y A son distintas.
- El signo igual (=) se utiliza igual que en matemáticas.
- 2 es el valor que le damos a la variable A.
- La función del punto y coma (;) es la de omitir el valor de la variable en pantalla.

Línea 10 del código.


La función while es un bucle condicionado lo que quiere decir que no se detendrá hasta que una
condición propuesta se cumpla. Este caso la condición es m>tol, en donde m es el error y tol la
tolerancia y por último el operador lógico mayor que (>) el cual da la condición. Para finalizar la
función al final del cuerpo de la misma escribimos end para indicar que la función la finalización
de la función.
Línea 11-14 del código.
En estos renglones se declaran de nueva cuenta variables, además de agregar que son parte del
cuerpo de la función while, y también se utilizan operadoras aritméticos en donde:

- (-) es para la resta.


- (+) es para la suma.
- (*) es para la multiplicación.
- (/) es para la división.
- Los paréntesis ( ) tienen la función de dar una jerarquía a las operaciones a realizar.
Línea 15 del código.
Se usó un operador matemático como:

39
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

- qrst (x) el cual sirve para poder obtener el valor de la raíz cuadrada de un número.

Línea 16 del código.


Utilizamos un operador aritmético de incremento que va aumentando conforme nosotros lo
declaremos. En el código a=a+1, indica que el incremento será de uno en uno; si quisiéramos un
incremento mayor solo bastaría con cambiar el número 1 con otro distinto. Conforme el bucle se
repetía este iba aumentando.
Línea 17 del código.
Se end para hacer saber al programa que el cuerpo de la función while termino.
Línea 18-19 del código.
En estas últimas líneas del código se volvieron a utilizar la función fprintf (‘ ‘ ) con una pequeña
excepción que utilizamos a %f y después de las comillas simples pusimos comas seguido de las
variables calculadas en la función while.
- %f tiene la función de llamar a alguna variable con valor numérico con la ayuda de las
instrucciones antes mencionadas.

5.3.2. Objetivo del Código:


La dificultad del código para su utilización es muy sencilla, puesto que conforme el programa se
va ejecutando este mismo le solicita al usuario los datos requeridos para su funcionamiento.
El objetivo del programa es encontrar las aproximaciones de los valores de las variables de un
sistema de ecuaciones lineales, por medio de la realización de varios cálculos, los cuales se realizan
por etapas, obteniendo así aproximaciones por cada etapa.
El método de gauss Seidel permite hallar las aproximaciones a una solución de sistemas de
ecuaciones lineales, utilizando los valores calculados en cada uno de los pasos, para hallar los
nuevos valores, en pocas palabras, en este método un cálculo siempre depende del anterior,
dependiendo las variables de otras variables.

• Se debe introducir unas aproximaciones iniciales, la matriz de coeficientes, el vector de


términos independientes, una tolerancia y un número total de iteraciones.

• Se toman las aproximaciones iniciales para hallar las nuevas aproximaciones, teniendo en
cuenta el fundamento del método.

• En cada paso, es posible calcular el error, que es este caso está definido en normas (las
cuales son infinitas).

• Para la finalización de los programas se tiene en cuenta, si el programa sobrepasa el


número de iteraciones, o si el error es menor del propuesto al principio; una vez ocurra
alguna de estas dos situaciones, la última iteración tendrá las aproximaciones a la solución
del sistema de ecuaciones estudiado.

40
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

6. método de Newton: Sistemas de ecuaciones no lineales.

6.1. Definición
Se trata de un procedimiento basado en la derivada, para encontrar aproximaciones a las raíces
de una función real de variable real que sea derivable. Es muy útil en análisis numérico, sobre
todo para aproximar raíces de polinomios en los cuales los métodos conocidos no funcionan (por
ejemplo:

o para otro tipo de funciones, como por ejemplo:

6.2. Desarrollo
Este método sirve inclusive para aproximar valores como por ejemplo:
encontrando de manera aproximada las raíces de las siguientes ecuaciones

respectivamente. Su objetivo es resolver algunos problemas sencillos de aproximación de raíces


con el Método de Newton.

Sea una función derivable, de la cual sabemos que tiene una raíz en dicho
intervalo y queremos encontrar una aproximación que nos satisfaga.

• Elegimos en el eje de las x, asumiendo que está cerca de la solución de (raíz


buscada).
• Calculamos la ecuación punto pendiente de la recta tangente a la función en ,a
saber:

(1)

• Esta recta debe intersecar al eje de las x, en un punto , más cercano a la raíz buscada.
• Así, el punto satisface la ecuación (1) y sustituyendo, queda:

41
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

(2)

Si , entonces, despejando en (2), queda que: .

• Repetimos el mismo razonamiento seguido para , pero ahora comenzando con , en


cuyo caso obtenemos

Más cerca de la raíz buscada que .

• Iterando cada vez con el número obtenido, se construye una secuencia:


de números cada vez más próximos a la raíz, tales que:

• La aproximación entonces será mejor, entre más términos queramos o podamos


calcular.

42
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

6.3. Código en octave


clear
clc
%% PROGRAMA PARA RESOLVER SISTEMAS DE 3 INCOGINAS CON TRES ECUACIONES NO
LINEALES

syms x y z

A =[x^3,y^3,-z^3,-129] % A = [x^3,y^3,-z^3,-129];
B =[x^2,y^2,-z^2,-9.75] % B = [x^2,y^2,-z^2,-9.75];
C =[x,y,-z,-9.49] % C = [x,y,-z,-9.49];

FunA=x^3+y^3-z^3-129;
FunB=x^2+y^2-z^2-9.75;
FunC=x+y-z-9.49;

fin1=inline('x^3+y^3-z^3-129');
fin2=inline('x^2+y^2-z^2-9.75');
fin3=inline('x+y-z-9.49');

l1=inline('3*x^2');
l2=inline('3*y^2');
l3=inline('-3*z^2');
m1=inline('2*x');
m2=inline('2*y');
m3=inline('-2*z');
n1=inline('1');
n2=inline('1');
n3=inline('1');

fprintf ("Ingrese valores iniciales para las 3 variables x, y, z: \n")


x=5
y=3
z=2
int = 17;

n=1;

while n <= int

43
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

f1=-1*fin1(x,y,z);
f2=-1*fin2(x,y,z);
f3=-1*fin3(x,y,z);

F = [f1;f2;f3];

o1=3*x^2;
o2=3*y^2;
o3=-3*z^2;
p1=2*x;
p2=2*y;
p3=-2*z;
q1=1;
q2=1;
q3=-1;

Dev=[o1,o2,o3;p1,p2,p3;q1,q2,q3];

Inversa= inv(Dev);

H = Inversa*F;
h1 = H(1,1);
h2 = H(2,1);
h3 = H(3,1);
E(n,:)=[n x y z f1 f2 f3 h1 h2 h3];
x = x + h1;
y = y + h2;
z = z + h3;
n = n + 1;

end
x = x;
y = y;
z = z;
fprintf('\n\tInter \tx \ty \tz \tf1 \tf2 \tf3 \th1 \th2 \th3 \n')
disp(E);
fprintf('\n');
fprintf('El valor de x = %.5f\n',x);
fprintf('El valor de y = %.5f\n',y);
fprintf('El valor de z = %.5f\n',z);

44
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

7. Interpolación; Newton y Lagrange

7.1 Definición.
En el subcampo matemático del análisis numérico, se denomina interpolación a la obtención de
nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos.
Dada una función y una correspondiente data se llama interpolación polinomial al
proceso de encontrar un polinomio de grado menor o igual a la cantidad de datos, tal
que , es decir, que el polinomio tome como puntos de apoyos las abscisas
de la data, y que pase por cada una de las ordenadas. En todo caso, se trata de, a partir de n parejas
de puntos, obtener una función f que verifique a la que se denomina función interpolante de dichos
puntos, a los cuales llamaremos nodos.
7.2 Desarrollo del método.
Las funciones polinomiales son una de las técnicas más utilizadas para ajustar una cantidad de
datos y conocer su comportamiento. Este grupo de funciones son descritas como:

Es necesario especificar que es un entero positivo, y que los coeficientes son constantes
reales. El grado del polinomio es . Este tipo de funciones pueden aproximar uniformemente
funciones continuas, es decir, dada una función definida y continua en un intervalo cerrado, existe
un polinomio que es muy cercano a la función dada.

7.2.1 Newton.
Se basa en la obtención de un polinomio a partir de un conjunto de puntos dado, aproximándose
lo más posible a la curva buscada.
La ecuación general para la obtención de la función por este método es:

Donde las “bi” se obtienen mediante la aplicación de una serie de funciones incluidas en una tabla
de diferencias.
Suponiendo que tenemos 4 puntos, la tabla de diferencias tiene la siguiente forma:

45
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Con esto, la ecuación quedaría de la siguiente forma:

7.2.2 Lagrange.
Un polinomio de interpolación de Lagrange, p, se define en la forma:

en donde son polinomios que dependen sólo de los nodos tabulados

, pero no de las ordenadas . La fórmula general del polinomio es:

46
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Para el conjunto de nodos , estos polinomios son conocidos como funciones


cardinales. Utilizando estos polinomios en la ecuación p(x) obtenemos la forma exacta del
polinomio de interpolación de Lagrange.
7.2.3 Desventajas.
El método de Newton es útil para situaciones que requieran un número bajo de puntos para
interpolar, ya que a medida que crece el número de puntos, también lo hace el grado del polinomio:
pese esto, existen ciertas ventajas en el uso del polinomio de Newton respecto al polinomio
interpolador de Lagrange. Por ejemplo, si fuese necesario añadir algún nuevo punto o nodo a la
función, tan sólo habría que calcular este último punto, dada la relación de recurrencia existente y
demostrada anteriormente.
En general, por supuesto, no obtendremos los mismos valores evaluando la función obtenida que
si evaluamos la función original, si bien dependiendo de las características del problema y del
método de interpolación usado la ganancia en eficiencia puede compensar el error cometido.
7.2.4 Conclusión.
En ingeniería y algunas ciencias es frecuente disponer de un cierto número de puntos obtenidos
por muestreo o a partir de un experimento y pretender construir una función que los ajuste. Otro
problema estrechamente ligado con el de la interpolación es la aproximación de una función
complicada por una más simple. Si tenemos una función cuyo cálculo resulta costoso, podemos
partir de un cierto número de sus valores e interpolar dichos datos construyendo una función más
simple.
7.3 Ejemplo numérico.
Suponga la siguiente tabla de datos:

x 5 -7 -6 0
y 1 -23 -54 -954

Construya las funciones cardinales para el conjunto de nodos dado y el polinomio de


interpolación de Lagrange correspondiente.

Las funciones cardinales resultan ser:

Por lo que el polinomio interpolador quedará como


P(x)=(x+7)(x+6)x/660+23x(x-5)(x+6)/84-9x(x-5)(x+7)/11 +159(x-5)(x+7)(x+6)/35

47
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

7.3.1 Código del programa en Octave.


%Metodo de lagrange
clc, clear;
k = sym("k")
x = sym("x")
x0 = input('ingrese el valor x0')
x1 = input('ingrese el valor x1')
x2 = input('ingrese el valor x2')
x3 = input('ingrese el valor x3')
y0 = input('ingrese el valor y0')
y1 = input('ingrese el valor y1')
y2 = input('ingrese el valor y2')
y3 = input('ingrese el valor y3')
l0 = ((x-x1)*(x-x2)*(x-x3))/((x0-x1)*(x0-x2)*(x0-x3));
l1 = ((x-x0)*(x-x2)*(x-x3))/((x1-x0)*(x1-x2)*(x1-x3));
l2 = ((x-x0)*(x-x1)*(x-x3))/((x2-x0)*(x2-x1)*(x2-x3));
l3 = ((x-x0)*(x-x1)*(x-x2))/((x3-x0)*(x3-x1)*(x3-x2));
k = (y0*l0)+ (y1*l1) + (y2*l2) + (y3*l3)
r = function_handle (k);
n = input("Ingrese el valor a evaluar en la funcion interpoladora: ")
evaluacionk = r(n)

7.3.2. Funcionamiento del programa en Octave.


En la línea 1 se pone el nombre del método, antecedido por un signo % para que no se imprima
en pantalla.
La línea 2 limpia lo antes hecho en Octave, para que el programa pueda correr sin problemas.
En las líneas 3 y 4 declaramos a k y x en symbolic, para que posteriormente puedan recibir diversos
valores.
De la línea 5 a las 12 se piden los pares de datos; primero todas las x y luego las y.
Desde la línea 13 hasta la 16 se utilizan los fórmulas de Lagrange para calcular las funciones
cardinales; que en la línea 17 se multiplicarán por sus respectivas y; línea en la que también se
calculará el polinomio: (y0*l0)+ (y1*l1) + (y2*l2) + (y3*l3), que se asignará a k y se imprimirá
en pantalla.

48
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

En la líneas 18 se introduce a r y se utilizará function_handle (k) para decirle al programa que r es


igual al polinomio k.
Finalmente; en la línea 19 se pide un nuevo valor de x para interpolar en la función, al que
llamaremos n, y en la línea 20 se evaluará a k como r(n), y se imprimirá el resultado, siendo este
el valor de y correspondiente a la x propuesta.

7.3.3. Comentarios sobre el uso del programa.


Para poder utilizar este programa es necesario descargar la paquetería symbolic; de lo contrario,
Octave nos marcará un error y no ejecutará el programa.
Se utilizó el método de lagrange para facilitar la programación, pero es importante recordar que
el valor de x propuesto al final debe encontrarse dentro del intervalo de x0 a x3 para que la
interpolación pueda ser relativamente efectiva. El programa está diseñado para interpolar cuatro
pares de datos.

49
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

8. Método de derivación numérica

8.1. Definición
Las fórmulas de derivación numérica son importantes en el desarrollo de algoritmos para resolver
problemas de contorno de ecuaciones diferenciales ordinarias y ecuaciones en derivadas parciales.

La derivación numérica es una técnica de análisis numérico para calcular


una aproximación a la derivada de una función en un punto utilizando los
valores y propiedades de la misma.
La principal idea que subyace en las técnicas de derivación numérica está
muy vinculada a la interpolación y se podría resumir en lo siguiente: Si de
una función f(x) se conocen sus valores en un determinado soporte de
puntos, puede ‘aproximarse” la función f(x) por otra función p(x) que la
interpole en dicho soporte y sustituir el valor de las derivadas de f(x) en un
punto x* por el valor de las correspondientes derivadas de p(x) en dicho punto x*.
Una de las primeras fórmulas que nos permiten aproximar una derivada primera tiene sus raíces
en los comienzos del cálculo diferencial en el siglo XVII. En ese entonces el concepto de límite no
estaba desarrollado de forma explícita y la primera derivada de una función f(x) en el punto x* se
consideraba como el valor del cociente incremental.
Por definición la derivada de una función f(x) es:

8.2. Desarrollo
Las aproximaciones numéricas que podamos hacer (para h > 0) serán: Diferencias hacia adelante:

Segunda diferencia:

50
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Diferencias hacia atrás:

Segunda diferencia:

La aproximación de la derivada por este método entrega resultados aceptables con un


determinado error. Para minimizar los errores se estima que el promedio de ambas entregas la
mejor aproximación numérica al problema dado: Diferencias centrales:

51
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

52
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

53
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

8.3. Ejemplo numérico

54
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

55
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

56
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

3er EJERCICIO
Para la función definida en forma tabular:

Obtener:
F’(2,0) a partir de un esquema de interpolación de segundo orden. El punto pivote para este cálculo
es (2,0, 14,7781). Para la elección de una de las tres fórmulas disponibles dentro del esquema de
interpolación de segundo orden debe contemplarse que de acuerdo a la posición del punto pivote
en la función tabular se dispone de puntos hacia atrás y hacia adelante del mismo. De acuerdo a
las recomendaciones, cabe elegir una fórmula de diferencias centrales:

Sustituyendo valores para h = 0,1:

F'(2,2) a partir de un esquema de interpolación de segundo orden. De nuevo, por la ubicación del
punto pivote sólo es posible utilizar una fórmula de diferencias finitas hacia atrás, siendo la
fórmula:

Sustituyendo valores para h = 0,1:

F'’(2,0) a partir de un esquema de interpolación de segundo orden. Utilizando las mismas


consideraciones la fórmula recomendada es:

Sustituyendo valores para h = 0,1:

57
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

58
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

8.4. Código del programa en Octave.


1. %derivacion numerica.

2. clc, clear

3. printf("Este programa te permite derivar una expresion numericamente")

4. x = sym("x")

5. f = sym("f")

6. f = input ("Ingrese su funcion a derivar con respecto a x: ")

7. k = input ("Ingrese el icremento de x: ")

8. n = input ("Ingrese el valor de x para el cual se quiere derivar la funcion: ")

9. fx = function_handle (f);

10. q = n + k;

11. w = n + (2*k);

12. R= (-3*fx(n)+4*fx(q)-fx(w))/(2*k);

13. e = k * k * 100;

14. printf ("el acercamiento del valor de la derivada en el punto %x es de %x \n", n, R)

15. printf ("El error de la aproximacion es de %x por ciento", e)

59
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

8.4.1 Explicación del código.


1. Se explica la función del programa para aquel que mira el código en la ventana de edición.
2. Se comanda el limpiado de la ventana de comandos al momento de ejecutar el programa.
3. Se explica la función del programa para aquel que lo ejecuta.
4. Se define a la variable x como una expresión simbólica.
5. Se define a la variable como una expresión simbólica.
6. Se pide ingresar la función a derivar, esta guardada con la variable f y evaluada por la
expresión x.
7. Se pide un valor de incremento para x, entre menor sea este valor mayor será el
acercamiento numérico a la respuesta correcta, y menor será el error.
8. Se pide un valor de x, para poder calcular el valor aproximado de la evaluación de la
derivada de la función en ese valor de x.
9. Se redefine la variable f, que es la función dada, como una expresión evaluable.
10. Se define el valor de q, como la suma del valor dado de x y el valor dado del incremento de
x.
11. Se define el valor de w, como la suma del valor dado de x, más el doble valor del
incremento de x.
12. Se calcula la aproximación de la evaluación de la derivada de la función en el punto dado
de x.
13. Se calcula el porcentaje de error proporcional al incremento de x dado.
14. Se muestra la aproximación calculada y se muestra el punto dado.
15. Se muestra el porcentaje de error que tuvo el cálculo.

8.3.2 Recomendaciones.
• Para el uso del programa copie el código dado, quitando la enumeración del código, pegue
el código en la ventana de edición, guárdelo con un nombre en alguna carpeta de la librería
que tiene en uso para su Octave.

• La paquetería Symbolic. Es importante saber esta información si se desea ejecutar el


programa aquí presentado. Para empezar deberá contar con la paquetería “symbolic” de

60
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Octave, la cual hay que descargar y cargar dentro del programa para poder hacer uso de
algunas herramientas empleadas dentro del código del programa aquí presente.
Primero tendrá que descargar el archivo de “symbolic bundle” para Octave, este archivo
se puede encontrar en el siguiente sitio web
(https://github.com/cbm755/octsympy/releases) como “symbolic-win-py-bundle-
2.7.0.zip”. Una vez descargado guarde el archivo comprimido en alguna carpeta dentro de
la librería que este en uso en su Octave, dicha librería se puede cambiar a gusto siempre.
Ahora bien, una vez realizado lo dicho deberá instalar el paquete, ingresando el siguiente
comando en la ventana de comandos de Octave: “pkg install nombre del archivo”, es decir
“pkg” siglas de pakage, “install” que es instalar en inglés, y finalmente el nombre del
archivo descargado, escriba el nombre completo del archivo sin olvidar ningún caracter.
Ya que uno haya realizado la instalación del paquete deberá cargarlo, para eso deberá
ingresa el comando de “pkg load symbolic”, esta vez bastará con que escriba el comando
tal cual se ha puesto aquí, no se olvide de que la librería donde Octave obtiene los archivos
a funcionar tenga el archivo de symbolic que se descargó. Es necesario que sepa que basta
con instalar una vez la paquetería, pero que será necesaria cargarla cada vez que abra
Octave.
Una vez que usted ha realizado todo esto podrá correr el programa sin ningún problema.

61
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

9 Integración numérica: área debajo de la curva

9.1 Definición.
En los cursos de Cálculo Integral aprendemos a calcular una integral definida de una función
continua haciendo uso del Teorema Fundamental del Cálculo que dice que si f(x) es una función
continua en un intervalo [a, b] y F(x) es una anti derivada de f(x) entonces:
b
∫f(x)dx=F(b)−F(a)
a
El problema en la práctica se presenta, cuando se nos hace imposible mediante métodos analíticos
determinar la anti derivada requerida, aun cuando se trate de integrales aparentemente sencillas
que son imposibles de resolver con el Teorema Fundamental del Cálculo.
En estos casos, debemos de recurrir a la integración numérica que permite obtener
aproximaciones bastantes exactas y que se pueden resolver con el uso de asistentes matemáticos
como Máxima, Derive, Mathematica, entre otros.

9.2 Desarrollo del método.


9.2.1 Método del trapecio.
La regla del trapecio es uno de los métodos más utilizados para calcular aproximaciones numéricas
de integrales definidas. Es la primera de las fórmulas cerradas de integración de Newton – Cotes,
para el caso cuando el polinomio interpolante es de grado uno.
Para el polinomio interpolante de primer grado se tiene:
𝑏 𝑏
A=∫𝑎 𝑓(𝑥)𝑑𝑥 ≅ ∫𝑎 𝑓1(𝑥)𝑑𝑥 donde
F1(x)=f(a)+ f(b)-f(a)/b-a(x-a)
𝑏
Precisamente el área bajo la recta es una aproximación de la integral ∫𝑎 𝑓(𝑥)𝑑𝑥, es decir
𝑏 𝑓(𝑏)−𝑓(𝑎)
A=∫𝑎 [𝑓(𝑎) + (𝑥 − 𝑎)
𝑎−𝑏
La regla del trapecio viene dada por la fórmula:
𝑏 𝑓(𝑎)+𝑓(𝑏)
A=∫𝑎 𝑓(𝑥)𝑑𝑥 ≈ (𝑏 − 𝑎)[ ]
2
El nombre regla del trapecio se debe a la interpretación geométrica que se hace de la fórmula.
Cuando el polinomio interpolante es de grado uno, su gráfica representa una línea recta en el
intervalo [a, b] que es el área del trapecio que se forma, como se muestra en la figura.

62
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

9.2.2 Método de Simpson 1/3.


Además de la regla del trapecio, otra manera de obtener una estimación más exacta de una integral
es utilizar polinomios de orden superior para conectar los puntos. Por ejemplo, se pueden conectar
con un polinomio de tercer orden los puntos f(a), f(b) y el punto medio entre ellos. A las fórmulas
que resultan de calcular la integral bajo estos polinomios se les llama reglas de Simpson.
Con la regla de Simpson es posible obtener una aproximación más precisa del área bajo una curva
ya que se conectan grupos sucesivos de tres puntos sobre la curva mediante parábolas de segundo
grado, y al sumar las áreas bajo las parábolas se obtiene el área aproximada bajo la curva.
Esta regla a diferencia de la regla del trapecio, donde a mayor número de subdivisiones se obtiene
una mejor aproximación, lo que hace es ajustar una curva de orden superior en lugar de la línea
recta como sucede con la regla del trapecio.
Suponga que se tiene la función f(x) y los siguientes datos:
a Xm b
F(a) F(xm) F(b)

Donde xm es el punto medio entre a y b. Entonces es posible ajustar por


puntos f(a), f(b) y f(xm) una parábola. De la misma forma, si existen dos puntos entre f(a) y f(b),
entonces por esos cuatro puntos será posible ajustar una curva de grado tres, y así sucesivamente.

63
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

En la gráfica se muestra una parábola que aproxima a una función real. Observe que se calcula el
área o la integral bajo la parábola que pasa por los tres puntos.

𝑏
ℎ 𝑏−𝑎
∫ 𝑓(𝑥)𝑑𝑥 ≈ [𝑓(𝑎) + 4𝑓(𝑥𝑚) + 𝑓(𝑏)], 𝑐𝑜𝑛 ℎ =
𝑎 3 2

9.2.3 Desventajas.
La precisión del resultado es directamente proporcional al número de intervalos en que se divida
el intervalo original, por lo que muchas veces es necesario realizar operaciones repetitivas lo que
hace a estos métodos bastantes tediosos.
9.2.4 Conclusión.
La necesidad de aproximar numéricamente el valor de una integral surge por dos motivos
fundamentalmente: la dificultad o imposibilidad en el cálculo de una primitiva, o bien, la función
a integrar solo se conoce por una tabla de valores.
64
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Para estos casos, los métodos de integración numérica son sumamente útiles, ya que nos permite
resolver dichas integrales, que muchas veces se encuentran en el campo laboral; por ejemplo: en
el cálculo de cargas, áreas, presión hidrostática, etc.

9.3 Ejemplo numérico.


Utilizar la regla del trapecio para aproximar la integral:

Usamos la fórmula directamente con los siguientes datos:

Por lo tanto tenemos que:

65
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

9.3.1 Código del programa en Octave.


fprintf ('Aplicar la regla de Simpson a la integral con limite inferior cero y limite superior 1');
fprintf (' \n de e^x^2, e a la x cuadrada si se sub divide el area total en 5 intervalos');
a=0;b=1;
c=0;d=0;
dx=(b-a)/5;
h=dx/2;
m0=exp((0)^2);
m=exp((0.1)^2);
m1=exp((0.2)^2);
m2=exp((0.3)^2);
m3=exp((0.4)^2);
m4=exp((0.5)^2);
m5=exp((0.6)^2);
m6=exp((0.7)^2);
m7=exp((0.8)^2);
m8=exp((0.9)^2);
m9=exp((1)^2);
m10=m+m2+m4+m6+m8;
m11=m1+m3+m5+m7+m9;
m12=(0.1/3)*(m0-m9+4*m10+2*m11);
m12;
der=4*exp(1)*9;
Er=(h^5*der)/90;
fprintf ('\nEl valor de la integral con los limites prpuestos es : %f',m12);
fprintf ('\n El error es '); Er

9.3.2. Funcionamiento del programa en Octave.


De la línea 1-2 del código.
Al principio del código se utilizó la funciona fprintf, está nos permite escribir, entre paréntesis y
comillas simples (‘ ’), las palabras, números y letras que nosotros queramos y finalizarlo con un
punto y como (;). Antes de finalizar la última comilla se puso la función \n que nos permite dar un
salto hacia el siguiente renglón y las palabras que escribamos después de esta se ira al siguiente
renglón. La función \n es de utilidad para separar oraciones y darle una mejor estética al ejecutar
el programa, además de que podemos seguir escribiendo en la misma línea.
De la línea 3 – 21 del código.

66
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Lo que hicimos fue declarar las variables básicas con su respectivo valor para poder darle
estructura al código. Un ejemplo seria: A=2;
A es el nombre de la variable y para el programa de octave a y A son distintas.
El signo igual (=) se utiliza igual que en matemáticas.
2 es el valor que le damos a la variable A.
La función del punto y coma (;) es la de omitir el valor de la variable en pantalla.
Se usó un operador matemático como:
exp (x), su función es calcular el valor de la constante e elevado a una potencia x elegida por el
usuario o aquel que realizo el código
Ademas de con la ayuda de ^ seguido del numero podemos elevar un numero a cualquier potencia.
No olvidar que los paréntesis nos indican que acción se llevara a cabo de adentro hacia afuera y si
en dado caso hay operadores aritméticos dentro de estos primero se realizaran las operaciones
según la jerarquía y despues seguirán la jerarquía de los paréntesis.
Línea 22-23 del código.
En estos renglones se declaran de nueva cuenta variables, y también se utilizan operadoras
aritméticos en donde:

(*) es para la multiplicación.


Los paréntesis ( ) tienen la función de dar una jerarquía a las operaciones a realizar.
Se usó un operador matemático como:
exp (x), su función es calcular el valor de la constante e elevado a una potencia x elegida por el
usuario o aquel que realizo el código.
Línea 18-19 del código.
En estas últimas líneas del código se volvieron a utilizar la función fprintf (‘ ‘ ) con una pequeña
excepción que utilizamos a %f y después de las comillas simples pusimos comas seguido de las
variables calculadas en las filas o renglones anteriores.
%f tiene la función de llamar a alguna variable con valor numérico con la ayuda de las
instrucciones antes mencionadas.

9.3.3. Comentarios sobre el uso del programa.


En este caso, el programa solo funciona para una integral exponencial en específico. El objetivo del
código es aproximar un cierto valor determinado en el programa de octave para determinar el
área bajo la curva, en este caso utlizamos el método de Simpson en vez que el de el trapecio, ya
que se nos hizo mas conveniente utilizar este método que el otro,
En análisis numérico, la integración numérica constituye una amplia gama de algoritmos para
calcular el valor numérico de una integral definida y, por extensión, el término se usa a veces para
describir algoritmos numéricos para resolver ecuaciones diferenciales.

67
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

El término cuadratura numérica es más o menos sinónimo de integración numérica,


especialmente si se aplica a integrales de una dimensión a pesar de que para el caso de dos o más
dimensiones también se utiliza.
Como en cualquier lenguaje de programación, Octave/Matlab utilizan variables, operadores y
funciones. A las variables se les asigna valores con el operador “=”, que quiere decir “asignarle tal
valor a esta variable” y no tiene nada que ver con el concepto de igualdad matemática.

68
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

10. Método de Euler


10.1. Definición
En matemática y computación, el método de Euler, llamado así en honor a Leonhard Euler, es un
procedimiento de integración numérica para resolver ecuaciones diferenciales ordinarias (EDO) a
partir de un valor inicial dado. El método de Euler es el más simple de los métodos numéricos para
resolver un problema de valor inicial, y el más simple de los Métodos de Runge-Kutta. El método
de Euler es nombrado por Leonhard Euler, quien lo trató en su libro Institutionum calculi
integralis (publicado en 1768-1770).
El método de Euler es un método de primer orden, lo que significa que el error local es
proporcional al cuadrado del tamaño del paso, y el error global es proporcional al tamaño del paso.
El método de Euler regularmente sirve como base para construir métodos más complejos.

10.2. Desarrollo
Considere el problema de calcular la pendiente de una curva desconocida que comienza en un
punto dado y satisface una cierta ecuación diferencial dada. Se puede pensar en la ecuación
diferencial como una fórmula que nos permite calcular la pendiente de la recta tangente a la curva
en cualquier punto de la curva, una vez que el punto ha sido calculado.
La idea es que a pesar de que la curva es desconocida en un principio, su punto de comienzo, al
cual denotamos por A0, es conocido. Entonces, de la ecuación diferencial se puede calcular la
pendiente de la curva en el punto A0 y por lo tanto la recta tangente a la curva.
Ahora, dando un pequeño paso sobre dicha recta, podemos tomarnos un nuevo punto A1 y suponer
que dicho punto pertenece a la curva, entonces seguimos el mismo razonamiento aplicado
anteriormente y volvemos a calcular la pendiente de la recta tangente a la curva en el punto A1.
Luego de varios pasos tendremos formada una curva poligonal A0A1A2A3... En general esta curva
que obtenemos al aplicar el método no diverge lejos de la curva original, además el error entre
ambas curvas se puede minimizar si se dan pasos muy pequeños al avanzar sobre la recta tangente
a la curva y además el intervalo sobre el que trabajamos es finito (aunque las cosas son más
complicadas para ecuaciones inestables, como se discute más abajo)...

10.3. Pasos
Método que realiza la solución de ecuaciones diferenciales de primer orden. Como los métodos
anteriores, tienen un salto constante ℎ .
Para la solución de este problema, la ecuación diferencial se pone de la forma:

69
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

y’(x)=f[x,y] … … … … … (1)
f[x,y]= Función de dos variables, ya que se encuentran involucradas 2 variables 𝑥 y 𝑦.
De la primera ecuación se transforma a una función discreta es decir.
y’(x)=f[x,y] --->f[x,y]=f[xn,yn] … … … … … (2)
f[xn,yn]= 𝒙𝒏= Siempre serán conocidos, ya que el salto será conocido. Ejemplo se h=0.1, significa
que dando un valor inicial se ira evaluando datos que corresponden al salto.
Sabiendo que la derivada es igual a la pendiente de la recta tangente.
𝑦𝑛+1−𝑦𝑛
Y’(x)= … … … … … (3)

Sustituyendo (2) y (3) en la ecuación 1. Se tiene.
𝑦𝑛+1−𝑦𝑛
=f[xn,yn]

Yn+1=Valor que desea conocer, por lo cual se tendrá que despejar.
Yn+1=h*f[xn,yn]+yn
Y2=h*f[x1,y1]+y1

10.4. Ejemplos

70
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

10.5. Código Octave


clear
##Aqui ingresar la ecuacion
f=inline('x*e^(2*x)-2*y');
##Ingresar aqui el intervalo de x
x=0;
x2=1;
##Ingresar la condicion inicial en y
y=0;
##Ingresar la condicion de h
h=0.1;
p=(x2-x)/h;
i=0;
fprintf('dy=x*e^(2*x)-2*y')
while i < p
y2=(f(x,y))*h+y;
i=i+1;
A(i,:)=[i x y y2];
x=x+h;
y=y2;
end
fprintf('\n\tPaso\tX \ty \tf(x,y)\n')
disp(A)

71
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

10.6. Descripción
El programa resolverá el problema planteado en el ejemplo, para comprobar que es cierto, usando
la ecuación, el intervalo a evaluar, h & y.
El programa se ejecutará con while, y terminará hasta que se cumpla

72
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

11. Método de Runge-Kutta.


(Euler modificado)

11.1. Definición
Los métodos de Runge-Kutta son una serie de métodos numéricos usados para
encontrar aproximaciones de las soluciones de ecuaciones diferenciales y sistemas de
ecuaciones diferenciales, lineales y no lineales.

11.2. Desarrollo
Son métodos numéricos que para avanzar un paso, sólo dependen del paso anterior, es
decir el paso n+1 solo depende del paso n o, con más precisión, son métodos de la forma.

Donde es a vector, es la variable independiente, el tamaño del paso, y F es una


función vectorial (posiblemente no lineal)

A este método se le conoce también como Euler modificado. Es igual que el método de
Euler mejorado pero en la ecuación de la pendiente no se despeja , sino que se
evalúa en la ecuación de Euler sin mejorar.

Euler sin mejorar

73
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

En donde desaparece el término , evitando despejar.

11.3. Funcionamiento
1. Poner de la forma:

Usar un intervalo equidistante:


O bien

2. Aproximar a la pendiente con el promedio y aproximar a la


derivada con su diferencia finita:

Considérese

Podemos simplificar la
fórmula de recurrencia a

Ejemplo:

Pasar a la forma .

74
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

11.4. Código Octave


unction [Vetx,Vety] = RungeKutta(funcao,a,b,m,y0)
h = ( b-a )/m;
xt = a;
yt = y0;
Vetx(1) = xt;
Vety(1)=yt;
disp (' i xt yt');
disp([ 0 xt yt]);
for i=1:m
x = xt;
y = yt;
k1 = eval(funcao);
x = xt + h/2;
y = yt + h/2 * k1;
k2 = eval(funcao);
y = yt + h/2 * k2;
k3 = eval(funcao);
x = xt + h;
y = yt + h * k3;

k4 = eval(funcao);
xt = a+i*h;
yt = yt+h/6*(k1+2*(k2+k3)+k4);
disp([ i xt yt]);
end

75
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

12. Serie de Taylor

12.1. Definición
Una serie de Taylor es una aproximación de funciones mediante una serie de potencias o suma d
e potencias enteras de polinomios como (𝑥 − 𝑎)𝑛 {\displaystyle (x-a)^{n}}(((llamados términos
de la serie, dicha suma se calcula a partir de las derivadas de la función para un determinado valo
r o punto 𝑎 a suficientemente derivable sobre la función y un entorno sobre el cual converja la se
rie. A la serie centrada sobre el punto cero 𝑎 = 0, se le denomina también serie de McLaurin.
Esta aproximación tiene tres ventajas importantes:

-la derivación e integración de una de estas series se puede realizar término a término, que result
an operaciones triviales;
-se puede utilizar para calcular valores aproximados de funciones;
-es posible calcular la optimidad de la aproximación.

12.2. Desarrollo
Algunas funciones no se pueden escribir como serie de Taylor porque tienen alguna singularidad.
En estos 3casos normalmente se puede conseguir un desarrollo en serie utilizando potencias neg
ativas de x

La serie de Taylor de una función es a menudo útil en situaciones físicas donde se desee obtener
el valor aproximado de la función alrededor del punto de expansión x0. Se puede evaluar término
a término en términos de las derivadas de la función. Es típico que los términos sucesivos en una
aproximación en serie de una función sean cada vez más y más pequeños, y cuando el valor del
siguiente término se considere despreciable en términos del problema que se aborda, entonces
uno puede juzgar que se ha logrado una aproximación suficientemente exacta de la función.
Es frecuente el caso donde un conveniente punto de expansión es x0 = 0, y la serie alrededor de
este punto de expansión especial se le llama también serie de Maclaurin. Hay muchas aplicaciones
para expansiones de funciones comunes alrededor de x=0.

76
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Lo que pretende conseguirse con una serie de Taylor es aproximar una función cualquiera (f(x))
por un polinomio (la serie). Salvo que f(x) sea de entrada un polinomio, nuestra aproximación
nunca será exacta (a no ser que usemos polinomios con infinitos términos, asunto del que
hablaremos más adelante)… ¡ya empezamos con las chapuzas! Ante este problema, tenemos que
escoger un punto alrededor del cual queremos que nuestra aproximación sea lo más acertada
posible. Este es el punto que hemos llamado x0 en la ecuación anterior.
Para que nuestro polinomio aproximante en torno a x0 sea digno de ese nombre, como poco,
tendrá que ser igual a la función en dicho punto, ¿no? Esto equivale a que el polinomio p(x) cumpla
la siguiente condición:

Algunos ejemplos son:

El caso más simple que verifica la ecuación anterior es un polinomio de orden 0, esto es, un polin
omio constante. Gráficamente vemos que nuestra aproximación es muy simplona:

77
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Aproximación de orden 0 en torno a x0 = -1

¿Cómo podríamos mejorarla? Por ejemplo, haciendo que la recta sea tangente a la curva en el
punto. Gráficamente:

Aproximación de orden 1 en torno a x0 = -1


Analíticamente, esto se corresponde con exigir a nuestro polinomio p(x) que tenga la misma
derivada que f(x) en el punto x0. Es decir, permitir polinomios, ahora, de grado 1, y exigir:

Pero, ¿por qué detenerse aquí?, ¿qué pasa si exigimos también igualdad en las segundas
derivadas? Es decir, algo cómo:

Echando un vistazo al gráfico vemos que, en efecto, igualar las segundas derivadas mejora nuestra
aproximación:

Aproximación de orden 2 en torno a x0 = -1


Pues bien, la fea ecuación que hemos visto al principio lo único que hace es definir un polinomio
cuyas derivadas, todas ellas, son iguales que las derivadas de la función a aproximar:

78
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

12.3. Código en octave


clear
clc

syms x
fprintf ("SERIE DE TAYLOR \n \n ")

fx = input ("Ingrese la funcion f(x) en terminos de x para procesar: \n f(x)= "); % funcion
a = input ("\n Ingrese el primer termino de la aproximacion 'a': \n a = "); % valor x0
r = input ("\n Ingrese el rango de evaluacion (Escriba entre corchetes [a,b]): \n r= "); % rango
n = input ("\n Ingrese el grado 'n' del polinomio de Taylor (T_n): \n n= "); % grado

m=0;
fy=subs(fx,a);

while m<=n
m=m+1;

df=diff(fx,m);
q= (subs(df,a))/(prod(1:m));
p=(x-a).^m;
fprintf(" El polinomio de Taylor de grado %d aproximado a f(x) es: \n ", m)
fy = fy + q*p
end

79
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

13. Método de diferencias finitas para ecuaciones


diferencias parciales.
13.1. Definición
El Método consiste en una aproximación de las derivadas parciales por expresiones algebraicas
con los valores de la variable dependiente en un limitado número de puntos seleccionados. Como
resultado de la aproximación, la ecuación diferencial parcial que describe el problema es
reemplazada por un número finito de ecuaciones algebraicas, en términos de los valores de la
variable dependiente en puntos seleccionados. El valor de los puntos seleccionados se convierte
en las incógnitas. El sistema de ecuaciones algebraicas debe ser resuelto y puede llevar un
número largo de operaciones aritméticas.
El Método de Diferencias Finitas es un método de carácter general que permite la resolución
aproximada de ecuaciones diferenciales en derivadas parciales definidas en recintos finitos. Es de
una gran sencillez conceptual y constituye un procedimiento muy adecuado para la resolución de
una ecuación bidimensional como la que hemos planteado.

13.2. Desarrollo
El primer paso para la aplicación del método consiste en discretizar el recinto del plano en el que
se quiere resolver la ecuación con una malla, por conveniencia cuadrada. Los puntos de la malla
están separados una distancia h en ambas direcciones x e y.

Podemos desarrollar T(x, y) en serie de Taylor alrededor de un punto:

Sumando miembro a miembro, agrupando, despreciando los términos o(h3) y despejando el


término de la derivada segunda resulta:

De forma similar se obtiene la


expresión equivalente:

Pero de la ecuación de Laplace:

80
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

por lo tanto:

13.3. Ejemplo numérico.


Método explícito.
utt = c²uxx , 0 < x < L, t > 0
c = 1, L=T=4, nx=4, nt=8,
u(x, 0) = 2-|x-2| ut(x, 0) = 0
u(0,t) = 0 u(L,t) = 0

Condición de convergencia:

a. Instante t = 0:
u0,0 = f(x0) = 2 - |x0 - 2| = 2 - |0 - 2| = 0 = f(x4)
u1,0 = f(x1) = 2 - |x1 - 2| = 2 - |1 - 2| = 1 = f(x3)
u2,0 = f(x2) = 2 - |x2 - 2| = 2 - |2 - 2| = 2

b. Instante t=1:
ui,1 = a2·(ui-1,0+ui+1,0)/2 + (1 - a2)·ui,0 + k·g(xi)
donde a2 = 1/4, 1 - a2 = 3/4:
u1,1 = (1/4)(u0,0 + u2,0)/2 + (3/4)u1,0 =

(1/4)(0 + 2)/2 + (3/4)1 = 1 = u3,1


u2,1 = (1/4)(u1,0 + u3,0)/2 + (3/4)u2,0 =
(1/4)(1 + 1)/2 + (3/4)2 = 7/4

81
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

Aplicando la fórmula genérica


ui,j+1 = a2·(ui-1,j + ui+1,j) + 2·(1 - a2)·ui,j - ui,j-1
con lo que, para t = 1 obtenemos:
u1,2 = (1/4)(u0,1 + u2,1) + (3/2)u1,1 - u1,0
= (1/4)(0 + 7/4) + (3/2)1 - 1 = 15/16
= u3,2
u2,2 = (1/4)(u1,1 + u3,1) + (3/2)u2,1 - u2,0
= (1/4)(1 + 1) + (3/2)(7/4) - 2 = 9/8

Procediendo análogamente

x=0 x=1 x=2 x=3 x=4


t=0 0 1.0000 2.0000 1.0000 0
t = 0.5 0 1.0000 1.7500 1.0000 0
t=1 0 0.9375 1.1250 0.9375 0
t = 1.5 0 0.6875 0.4063 0.6875 0
t=2 0 0.1953 -0.1719 0.1953 0
t = 2.5 0 -0.4375 -0.5664 -0.4375 0
t=3 0 -0.9932 -0.8965 -0.9932 0
t = 3.5 0 -1.2764 -1.2749 -1.2764 0
t=4 0 -1.2401 -1.6541 -1.2401 0

82
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

13.4. Código del método en Octave


1. %programa para resolver la EDP de Laplace

2. clc, clear;

3. printf("Este programa esta enfocado en la ecuacion diferencial de Laplace. \n")

4. printf("Este programa permite calcular los valores aproximados \n")

5. printf("de los valores dentro de ciertos valores de frontera \n")

6. i = input("Ingrese el numero de pasos en X: ")

7. j = input("Ingrese el numero de pasos en Y: ")

8. p = i;

9. q = j;

10. U = zeros(i,j)

11. for i = 1 : 1 : i

12. for j = 1 : 1 : j

13. if ( i == 1)

14. printf("Ingrese el valor %x de frontera de X superior: \n", j)

15. U(i,j) = input("X: ")

16. endif

17. if (j == 1)

18. printf("Ingrese el valor %x de la frontera de Y izquierda: \n", i)

19. U(i,j) = input("Y: ")

20. endif

21. if(j == q)

22. printf("Ingrese el valor %x de la frontera de Y derecha: \n", i)

23. U(i,j)= input("Y: ")

24. endif

25. if(i == p)

83
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

printf("Ingrese el valor %x de la frontera X inferior: \n", j)


26. U(i,j) = input("X: ")

27. endif

28. endfor

29. endfor

30. U(i,j)

31. m = input("Ingrese la cantidad de iteraciones para el sistema de ecuaciones: ")

32. n = 1;

33. while(n<m)

34. for i = 1 : 1 : i

35. for j = 1 : 1 : j

36. if (i ~= 1)

37. if ( j ~= 1)

38. if ( i ~= p)

39. if ( j ~= q)

40. U(i,j) = (U(i-1,j) + U(i+1, j) + U(i, j-1) + U(i, j+1))/4

41. endif

42. endif

43. endif

44. endif

45. endfor

46. endfor

47. n = n + 1;

48. endwhile

49. U(i,j)

84
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

10.4.1. Descripción del código.


1. Se describe el programa para el programador.
2. Se da el comando de limpiado de pantalla.
3. Se imprime que el programa se enfoca para la EDP de Laplace.
4.
5. Se imprime el propósito del programa.
6. Se solicita el número puntos de frontera en X definido como “i”.
7. Se solicita el número de puntos de frontera en Y definido como “j”.
8. Se define “p” como el valor máximo de “i”.
9. Se define “q” como el valor máximo de “j”.
10. Se define una matriz nula de tamaño (i, j).
11. Se inicia un ciclo que recorre todos los valores de i.
12. Se inicia un ciclo que recorre todos los valores de j.
13. Se inicia la decisión que se cumple si “i” es igual a 1.
14. Se imprime que se ingrese el valor de frontera correspondiente a la coordenada (1, j),
donde j varia en la impresión conforme avanza el ciclo.
15. Se solicita el valor explicado en “14”.
16. Se termina la decisión iniciada en 13.
17. Se inicia la decisión que se cumple si “j” es igual a 1.
18. Se imprime que se ingrese el valor de frontera correspondiente a la coordenada (i, 1),
donde 1 varia en la impresión conforme avanza el ciclo.
19. Se solicita el valor explicado en 18.
20. Se termina la decisión iniciada en 17.
21. Se inicia la decisión que se cumple si “j” es igual a su valor máximo “q”.
22. Se imprime que se ingrese el valor de frontera correspondiente a la coordenada (i, q),
donde 1 varia en la impresión conforme avanza el ciclo.
23. Se solicita el valor explicado en 22.
24. Se termina la decisión iniciada en 21.
25. Se inicia la decisión que se cumple si “i” es igual a su valor máximo “p”.
26. Se imprime que se ingrese el valor de frontera correspondiente a la coordenada (p, j),
donde j varia en la impresión conforme avanza el ciclo.
27. Se solicita el valor explicado en 26.
28. Se termina la decisión iniciada en 25.
29. Se termina el ciclo iniciado en 12.
30. Se termina el ciclo iniciado en 11.
31. Se imprime en pantalla la matriz “U” que muestra a los valores de frontera
anteriormente ingresados, y como ceros al resto de elementos.

85
UNIVERSIDAD AUTÓNOMA DE CHIAPAS
FACULTAD DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
MANUAL DE PROGRAMAS EN OCTAVE

32. Se solicita el valor de la variable “m” que será el número de iteraciones para el próximo
ciclo.
33. Se define a la variable “n” como 1.
34. Se inicia el ciclo while que se repetirá siempre y cuando “n” sea menor a “m”.
35. Se inicia el ciclo que se repetirá “i” veces.
36. Se inicia el ciclo que se repetirá “j” veces.
37. Se inicia la decisión que se cumple si “i” es diferente a 1.
38. Se inicia la decisión que se cumple si “j” es diferente a 1.
39. Se inicia la decisión que se cumple si “i” es diferente a su valor máximo “p”.
40. Se inicia la decisión que se cumple si “j” es difirente a su valor máximo “q”.
41. Se expresa la ecuación despejada de las relaciones de los valores de la malla de un EDP de
Laplace.
42. Se termina la decisión iniciada en 40
43. Se termina la decisión iniciada en 39.
44. Se termina la decisión iniciada en 38.
45. Se termina la decisión iniciada en 37.
46. Se termina el ciclo iniciado en 36.
47. Se termina el ciclo iniciado en 35.
48. Se redefine a la variable n, como la suma de su valor anterior más uno.
49. Se termina el ciclo iniciado en 34.
50. Se imprime en pantalla la matriz “U”, con los valores de frontera ingresados en un inicio
y ahora también con los valores calculados de los puntos dentro de la malla definida para
el problema.

86

También podría gustarte