Post on 25-Jun-2015
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
MÉTODOS NUMÉRICOS
METODO DE LA BISECCION
En general, si f(x) es real y continúa en el intervalo que va desde x1 hasta xu y f(x1) y
f(xu) tienen signos opuestos, es decir, f(x1)f(xu)<0
Entonces hay al menos una raíz real entre x1 y xu.
Los métodos de búsqueda incremental aprovechan esta característica localizando un
intervalo en el que la función cambie de signo. Entonces, la localización del cambio de
signo (y, en consecuencia, de la raíz) se logra con más exactitud al dividir el intervalo
en varios subintervalos. Se investiga cada uno de estos subintervalos para encontrar el
cambio de signo. El proceso se repite y la aproximación a la raíz mejora cada vez más
en la medida que los subintervalos se dividen en intervalos cada vez más pequeños.
Paso 1:
Elija valores iniciales inferior, x1, y superior, xu, que encierren la raíz, de forma tal que
la función cambie de signo en el intervalo. Esto se verifica comprobando que
f(x1)f(xu)<0.
Paso 2:
Una función aproximada de la raíz x1 se determina mediante:
21 u
r
xxx
+=
Paso 3:
Realice las siguientes evaluaciones para determinar en qué subintervalo esta la raíz:
a) si f(x1)f(xr)<0, entonces la raíz se encuentra dentro del subintervalo inferior o
izquierdo. Por lo tanto, haga xu=xr y vuelva al paso 2.
b) Si f(x1)f(xu)>0, entonces la raíz se encuentra dentro del subintervalo superior o
derecho. Por lo tanto, haga x1=xr y vuelva al paso 2.
c) Si f(x1)f(xu)=0, la raíz es igual a xr; termina el calculo.
El método de la Bisección, conocido también como de corte binario, de partición de
intervalos o de Bolzano, es un tipo de búsqueda incremental en el que el intervalo se
divide siempre a la mitad. Si la función cambia de signo sobre un intervalo, se evalúa el
valor de la función en el punto medio. La posición de la raíz se determina situándola en
punto medio del subintervalo, dentro del cual ocurre un cambio de signo.
Docente lic. Javier lozano - 1 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 2 -
F
V
O
F
FV
V
F
V
LEERf(x) , a , b , E
INICIO
FIN
x1 = (a + b) /
2
b = x1
f(a)*f(x1)<
0
a = x1
a = b
ESCRIBIR“La raíces:” x
1
f(a)*f(b)<0
│b - a│ < E
f(x1)=0
ESCRIBIR“No exixte
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codificación para calcular el área:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'))a=str2double(get(handles.edit2,'string'))b=str2double(get(handles.edit3,'string'))E=str2double(get(handles.edit4,'string'))if f(a)*f(b)<0 while abs(b-a)>E x1=(a+b)/2 if f(a)*f(x1)<0 b=x1 else a=x1 if f(x1)==0 a=b end end endset(handles.edit6,'string',x1)elseset(handles.edit6,'string','no existe raiz')end
Codificación para graficar:function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'))ezplot(f),grid on
Codificación para cerrar:close(metodobiseccion)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 3 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
METODO PUNTO FIJO:
Si la ecuación f(x)=0 se rearregla en la forma x=g(x), entonces se puede escribir un método iterativo como:
nkxgx kk ......,,.........3,2,1,0..).........(1 ==+
A g(x) se le denomina función de iteración A este método se le denomina método de sustitución sucesiva o iteración de punto fijo y tiene la siguiente rutina:
1. de la función f(x)=0 determinar la función de iteración g(x), es decir, x=g(x).2. empezar con un valor inicial 0x .3. hallar los kx ; k=1,2,3,4,…….,n ; mediante la función de iteración g(x), es
decir,
)( 01 xgx =)( 12 xgx =)( 33 xgx =
…………)( 1−= nn xgx
4. el punto rx tal que g( rx ) = rx es un punto fijo de g. los puntos fijos son también raíces de la función f(x).
5. kk xx −+1 representa el máximo error posible.
Observación:
o La función de iteración g(x) se puede hallar mediante las operaciones algebraicas o simplemente agregando un x a cada miembro de la ecuación f(x)=0.
o La ventaja de este método esta en la facilidad con que se puede obtener g(x). la desventaja es que los puntos nxxxx .,,.........,, 321 no siempre pueden converger con la función de iteración elegida.
o Para garantizar la convergencia de la iteración se debe verificar la siguiente condición:
1)(' <xg , en necesidad de la raíz
Teorema:
Si g es derivable en (a;b) y g(x) ∈ (a;b) , [ ]bax ,∈∀ , entonces g tiene un punto fijo en [a,b]. si además g’(x) existe un (a,b) y ),(1)(' baxkxg ∈∀<≤ , entonces g tiene un único punto fijo en [a,b] .
Docente lic. Javier lozano - 4 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 5 -
F
V
INICIO
LEERg , x
0 , E , N
k = 1
x1 = g(x
0)
│x1 – x
0│ ≥
E
x0 = x
1
g(x0) = g(x
1)
k ≠ k + 1
ESCRIBIRx
1 , k
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'));g=inline(get(handles.edit2,'string'));Xo=str2double(get(handles.edit3,'string'));E=str2double(get(handles.edit4,'string'));X1=g(Xo)while abs(X1-Xo)>E Xo=X1 X1=g(Xo)endset(handles.edit5,'string',X1)
Codigo para graficar la función G(x):
g=inline(get(handles.edit2,'string'));ezplot(g),grid on
Codigo para cerrar el interface:
close(metodopuntofijo)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 6 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
METODO NEWTON-RAPHSON
Tal vez, de las formulas para localizar raíces, la formula de Newton-Raphson sea la más
ampliamente utilizada. Si el valor inicial para la raíz es xi, entonces se puede trazar una
tangente desde el punto [xi,f(xi)] de la curva. Por lo común, el punto donde esta tangente
cruza al eje x representa una aproximación mejorada de la raíz.
El método de Newton Raphson se deduce a partir de esta interpretación geométrica (un
método alternativo basado en la serie de Taylor. Se tiene que la primera derivada en x es
equivalente a la pendiente:
1
0)()('
+−−
=ii
ii xx
xfxf
Que se reordena para obtener:
)('
)(1
i
iii xf
xfxx −=+
La cual se conoce como la formula de Newton Raphson.
El método de la secante:
Un problema potencial en la implementación del método de Newton Raphson es la
evaluación de la derivada. Aunque esto no es un inconveniente para los polinomios ni
para muchas otras funciones, existen algunas funciones cuyas derivadas en ocasiones
resulta muy difícil de calcular. En dichos casos, la derivada se puede aproximar
mediante una diferencia finita dividida hacia atrás.
ii
iii xx
xfxfxf
−−
≅−
−
1
1 )()()('
)('
)(1
i
iii xf
xfxx −=+ (1)
Esta aproximación se sustituye en la ecuación (1) para obtener la siguiente ecuación
iterativa:
)()(
))((
1
11
ii
iiiii xfxf
xxxfxx
−−
−=−
−+ (*)
La ecuación (*) es la formula para el método de la secante. Obsérvese que el método
requiere de dos valores iniciales de x. sin embargo, debido a que no se necesita que f(x)
cambie de signo entre los valores dados, este método no se clasifica como un método
cerrado.
Docente lic. Javier lozano - 7 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 8 -
F
V
INICIO
LEERf , fd , x
0 , E ,
k = 1
x1 = x
0 -
│x1 – x
0│ > E
k ≤ N
x0 = x
1
x1 = x
0 -
k = k +1
ESCRIBIRx
1 , k
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
f=inline(get(handles.edit1,'string'));fd=inline(get(handles.edit2,'string'));Xo=str2double(get(handles.edit3,'string'));E=str2double(get(handles.edit4,'string'));X1=Xo-f(Xo)/fd(Xo);while abs(X1-Xo)>E Xo=X1; X1=Xo-f(Xo)/fd(Xo);endset(handles.edit5,'string',X1)
Codigo para graficar la función f(x):
f=inline(get(handles.edit1,'string'));ezplot(f),grid on
Codigo para cerrar el interface:
close(metodonewtonraphson)
EJEMPLO DEL INTERFACE
Docente lic. Javier lozano - 9 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
METODO DE LA SECANTE
La función f(x) es continua en [a,b].Dados los dos valores iniciales 10 , xx
Se traza la recta secante que pasa por )(),( 10 xfxf , que corta al eje x en 2x . Este punto es una aproximación a la raíz exacta.Para obtener 2x , se utiliza la semejanza de triángulos:
21
1
10
10 )()()(
xx
xf
xx
xfxf
−=
−−
)()(
)(*)(
01
10112 xfxf
xfxxxx
−−
−=
En general: )()(
)(*)(
1
11
−
−+ −
−−=
ii
iiiii xfxf
xfxxxx
Ahora los valores iniciales son 21 ..... xyx .Este proceso se repetirá hasta que un 1+ix satisfaga que Exx ii <−+1 , donde E es una tolerancia prefijada.
Docente lic. Javier lozano - 10 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 11 -
INICIO
LEER:X
0,X
1,E
ESCRIBIR:X
2
FIN
X0=X
1
|x2-x
1|>E
X1=X
2
X2 = X
1 – ((X
1-X
0)*f(X
0)) / (f(X
1)- f(X
0))
X2 = X
1 – ((X
1-X
0)*f(X
0)) / (f(X
1)- f(X
0))
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'));Xo=str2double(get(handles.edit2,'string'));X1=str2double(get(handles.edit3,'string'));E=str2double(get(handles.edit4,'string'));while abs(X1-Xo)>E X2=X1-((X1-Xo)*f(X1))/(f(X1)-f(Xo)) Xo=X1 X1=X2endset(handles.edit5,'string',X2)
Codigo para graficar la función f(x):
f=inline(get(handles.edit1,'string'));ezplot(f),grid on
Codigo para cerrar el interface:
close(metodosecante)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 12 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico METODO DE MULLER
Recuerde que el método de la secante obtiene una aproximación de la raiz dirigiendo
una línea recta hasta el eje x con dios valores de la función. Este método de muller es
similar; pero se construye una parábola con tres puntos.
El método consiste en obtener los coeficientes de la parábola que pasa por los tres
puntos. Dichos coeficientes se sustituyen en la formula cuadrática para obtener el valor
donde la parábola intersecta al eje x; es decir, la raíz estimada. La aproximación se
facilita al escribir la ecuación de la parábola en una forma conveniente,
cxxbxxaxf +−+−= )()()( 22
22 (1)
Queremos que esta parábola pase por tres puntos [x0,f(x0)], [x1,f(x1)] y [x2,f(x2)]. Los
coeficientes de la ecuación (1) se evalúan sustituyendo cada uno de esos tres puntos
para dar
cxxbxxaxf +−+−= )()()( 202
200 (2)
cxxbxxaxf +−+−= )()()( 212
211 (3)
cxxbxxaxf +−+−= )()()( 222
222 (4)
Observe que se ha limitado el subíndice “2” de la función por brevedad. Debido a que
se tienen tres ecuaciones, es posible encontrar los tres coeficientes desconocidos a, b y
c. Debido a que los términos de la ecuación (4) son cero, se encuentra inmediatamente
que c=f(x2). Así, el coeficiente c es igual al valor de la función evaluada en el tercer
valor inicial, x2. Este resultado se sustituye en las ecuaciones (2) y (3) para tener dos
ecuaciones con dos incógnitas:
)()()()( 202
2020 xxbxxaxfxf −+−=− (5)
)()()()( 212
2121 xxbxxaxfxf −+−=− (6)
Una manipulación algebraica permite encontrar los coeficientes restantes a y b. la
manera de hacer esto consiste en definir las diferencias:
010 xxh −=
121 xxh −=
01
010
)()(
xx
xfxf
−−
=δ
12
121
)()(
xx
xfxf
−−
=δ (7)
Estas sustituyen en las ecuaciones (5) y (6) para dar
Docente lic. Javier lozano - 13 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
11001010 )()( δδ hhahhbhh +=−−+
112
11 δhahbh =−
De donde se despejan a y b. el resultado se resume como
01
01
hha
−−
=δδ
11 δ+= ahb
)( 2xfc =
Para encontrar la raíz se aplica la formula cuadrática a la ecuación (1). Sin embargo,
debido al error de redondeo potencial, en lugar de usar la formula convencional, se
usará la formula alternativa, es decir:
acbb
cxx
4
2223
−±−=− (&)
O despejando la incógnita x3
acbb
cxx
4
2223
−±−+=
Obsérvese que al usar la formula cuadrática, es posible localizar tanto las raíces reales
como las complejas. Esta es la mayor ventaja del método.
Además, la ecuación (&) proporciona una forma directa para determinar el error de
aproximación. Debido a que el lado izquierdo representa la diferencia entre la raíz
estimada actual (x3) y la raíz estimada anterior (x2), el error se calcula como
%1003
23
x
xxE
−=
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 14 -
F
FV
V
O
INICIO
LEERx
0 , x
1 , x
2 , f(x) , E
dx1 = 1
x1 = 0
│dx1│ > E *
x1
h0 = x
1 – x
0
h1 = x
2 – x
1
d0 = (f(x
1) – f(x
0) / h
0
d1 = (f(x
2) – f(x
1) / h
1
a = (d1 – d
0) / (h
1 + h
0)
b = ah1 + d
1
c = f(x1)
rad =
│b+rad│>│b-rad│
dm = b + rad dm = b - rad
dxr = -2c / dm
xr = x
2 + dx
r
x0 = x
1
x1 = x
2
x2 = x
r
ESCRIBIRx
r
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
Docente lic. Javier lozano - 15 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico X0=str2double(get(handles.edit1,'string'));X1=str2double(get(handles.edit2,'string'));X2=str2double(get(handles.edit3,'string'));f=inline(get(handles.edit4,'string'));E=str2double(get(handles.edit5,'string'));dxr=1;xr=0;while abs(dxr)>E*xr h0=X1-X0; h1=X2-X1; d0=(f(X1)-f(X0))/h0; d1=(f(X2)-f(X1))/h1; a=(d1-d0)/(h1+h0); b=a*h1+d1; c=f(X2); rad=(b^2-(4*a*c))^(-0.5); if abs(b+rad)>abs(b-rad) den=b+rad; else den=b-rad; end dxr=-2*c/den; xr=X2+dxr; X0=X1; X1=X2; X2=xr;endset(handles.edit6,'string',xr);
Codigo para graficar la función G(x):
f=inline(get(handles.edit4,'string'));ezplot(f),grid on
Codigo para cerrar el interface:
close(metodomuller)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 16 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
METODO DEL POLINOMIO DE LAGRANGE – INTERPOLACION POLINOMIAL
El polinomio de interpolación de Lagrange es simplemente una reformulación del
polinomio de Newton que evita el cálculo de las diferencias divididas, y se representa
de manera concisa como:
∑=
=n
iiin xfxLxf
0
)()()(
∏≠= −
−=
n
ijj ji
ji xx
xxxL
0
)(
Donde ∏ designa el “producto de “.por ejemplo, la versión lineal (n=1) es
)()()( 101
00
10
11 xf
xx
xxxf
xx
xxxf
−−
+−−
=
y la versión de segundo grado es:
)())((
))(()(
))((
))(()(
))((
))(()( 2
1202
101
2101
200
2010
212 xf
xxxx
xxxxxf
xxxx
xxxxxf
xxxx
xxxxxf
−−−−
+−−
−−+
−−−−
=
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 17 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
Docente lic. Javier lozano - 18 -
Num = Num*(v- xi)
Den = Den*(xk-x
i)
S=S+L*f(xk)
L=Num/Dem
ESCRIBIRS
n, xi ,v, f(x)
INICIO
S=0
k=1, n,1
Num = 1
Den = 1
i=1, n,1
i ≠ k
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)Y=str2num(get(handles.edit1,'string'))n=str2double(get(handles.edit2,'string'))X=str2num(get(handles.edit3,'string'))v=str2double(get(handles.edit4,'string'))s=0for k=1:n num=1 den=1 for i=1:n if i~=k num=num*(v-X(i)) den=den*(X(k)-X(i)) end l=num/den end s=s+l*(Y(k))endset(handles.edit5,'string',s)
Codigo para cerrar el interface:
close(metodolagrange)
EJEMPLO DEL INTERFACE:
METODO DE MINIMOS CUADRADOS – REGRESION LINEAL
Docente lic. Javier lozano - 19 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico La grafica permite suponer que la relación real es lineal y que ninguna recta se ajusta a los datos exactamente. Sin embargo un mejor enfoque para un problema de este tipo seria encontrar “la mejor” recta que se pudiera usar como función aproximante aun cuando pudiera no coincidir precisamente en los datos en cada punto.
El enfoque de minimos cuadrados es la de determinar la mejor recta aproximante con una desviación minima.
La funcion lineal es g(x)=ax+b donde a y b son constantes por determinar
Donde a y b se hallan con la solución de la siguiente matriz:
Docente lic. Javier lozano - 20 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
=
∑
∑
∑
∑ ∑
=
=
=
= =
n
ii
i
n
ii
n
ii
n
i
n
iii
y
yx
b
a
nx
xx
1
1
1
1 1
2
*
Docente lic. Javier lozano - 21 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
∑
∑ ∑
∑
∑∑
=
= =
=
==
=
n
ii
n
i
n
iii
n
ii
n
iii
n
ii
nx
xx
ny
xyx
a
1
1 1
2
1
11
∑
∑ ∑
∑∑
∑∑
=
= =
==
==
=
n
ii
n
i
n
iii
n
ii
n
ii
i
n
ii
n
ii
nx
xx
yx
yxx
b
1
1 1
2
11
11
2
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 22 -
INICIO
LEERm , x
i , y
i
A11
= 0
A12
= 0
A22
= m
B1 = 0
B2 = 0
i=1 , m , 1
A11
= A11
+ xi
2
A12
= A12
+xi
A21
= A12
B1 = B
1+x
iy
i
B2 = B
2+y
i
a =
a =
ESCRIBIRa , b
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
global A B x ym=str2num(get(handles.edit1,'string'));x=str2num(get(handles.edit2,'string'));y=str2num(get(handles.edit3,'string'));a11=0;a12=0;a22=m;b1=0;b2=0;for i=1:m a11=a11+(x(i))^2; a12=a12+x(i); a21=a12; b1=b1+x(i)*y(i); b2=b2+y(i);endA=(b1*a22-b2*a12)/(a11*a22-a12*a21);B=(b2*a11-b1*a21)/(a11*a22-a12*a21);davo=sprintf('y=%6.4fx+ %6.4f',A,B);set(handles.edit4,'string',davo);
Docente lic. Javier lozano - 23 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico Codigo para graficar la función G(x):
global A B x yxx=min(x)-1:0.1:max(x)+1yy=A*xx+B;plot(x,y,'og',xx,yy),grid on;
Codigo para cerrar el interface:
Close(metodoregresionlineal)
EJEMPLO DEL INTERFACE:
METODO DE GAUSS-JORDAN
El metodo Gauss-jordan es una variación de la eliminación de Gauss. La principal
diferencia consiste en que cuando una incognita se elimina en el metodo de Gauss-
Jordan, esta es eliminada de todas las otras ecuaciones, no sólo de las subsecuentes.
Ademas, todos los renglones se normalizan al dividirlos entre su elemento pivote. De
esta forma, el paso de eliminación genera una matriz identidad en vez de una triangular.
En consecuencia, no es necesario usar la sustitución hacia atrás para obtener la solución
Dado el sistema de ecuaciones lineales:
nnnnnnn
nn
nn
nn
bxaxaxaxa
bxaxaxaxa
bxaxaxaxa
bxaxaxaxa
=++++
=++++=++++=++++
.......................
............................................
.......................
.......................
.......................
332211
33333232131
22323222121
11313212111
Que en forma matricial se puede escribir como:
Docente lic. Javier lozano - 24 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
=
nnnnnnn
n
n
n
b
b
b
b
x
x
x
x
aaaa
aaaa
aaaa
aaaa
........
......................
............................................
.......................
.......................
.......................
3
2
1
3
2
1
321
3333231
2232221
1131211
O también Ax+B, donde A es la matriz de coeficientes, x es el vector de la incógnita y
B es el vector de los termino independientes.
Procedimiento
1. Crear la matriz formada por la matriz de coeficientes y el vector de terminos
independientes.
2. mediante tranformadas elementales la matriz de coeficientes debe convertirse en
la matriz identidad, y los valores que esten en la posición del vector de terminos
independientes será el vector solucion.
3. entonces las raices del sistema son:
Docente lic. Javier lozano - 25 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
nn rxrxrx === .................2211
Este proceso requiere de 22
23 n
nn −+ multiplicaciones y
22
3 nn − sumas.
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 26 -
FV
INICIO
LEERn , a
ij
i = 1 , n , 1
FIN
divisor aii
j = i , n+1 , 1
aij = a
ij / divisor
k = 1 , n , 1
i ≠ j
pivote = aki
j = i , n+1 , 1
akj = a
kj – pivote * a
ij
O
ESCRIBIRa
i , n
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)n=str2double(get(handles.edit1,'string'))a=str2num(get(handles.edit2,'string'))for i=1:n divisor=a(i,i) for j=i:n+1 a(i,j)=a(i,j)/divisor end for k=1:n if i~=k pivote=a(k,i) for j=i:n+1 a(k,j)=a(k,j)-pivote*a(i,j) end end endendfor i=1:n for j=1:n+1 endc(i)=a(i,n+1)endset(handles.edit3,'string',c)
Codigo para cerrar el interface:
close(metodogaussjordan)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 27 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
METODO DE GAUSS-SEIDEL
Los métodos iterativos constituyen una alternativa a los métodos de eliminación
descritos ahora, para aproximar la solución. Tales métodos son similares a las técnicas
que se desarrollaron para obtener las raíces de una sola ecuación. Aunque métodos
consistían en suponer un valor y luego usar un método sistemático para obtener una
aproximación mejorada de la raíz. El método de gauss seidel es el método iterativo más
comúnmente usado. Supongo que se da un sistema de n ecuaciones:
[ ]{ } { }BXÁ =
Suponga que se limita a un conjunto de ecuaciones de 3x3. Si los elementos de la
diagonal no son todos cero, la primera ecuación se puede resolver para x1, la segunda
para x2, y la tercera para x3, para obtener
11
31321211 a
xaxabx
−−= (&)
22
32312122 a
xaxabx
−−= (&&)
33
23213133 a
xaxabx
−−= (&&&)
Ahora si empezamos el proceso de solución al escoger valores iniciales para las x. Una
forma simple para obtener los valores iniciales es suponer que todos son cero. Estos
Docente lic. Javier lozano - 28 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico ceros se sustituyen en la ecuación (&) la cual se utiliza para calcular un nuevo valor x1=
b1/a11. Después, se sustituye este nuevo valor de x1 junto con el valor previo cero de x3
en la ecuación (&&) y se calcula el nuevo valor de x2. Este proceso se repite con la
ecuación (&&&) para calcular un nuevo valor de x3. Después se regresa a la primera
ecuación y se repite todo el procedimiento hasta que la solución converja
suficientemente cerca de los valores verdaderos. La convergencia SE VERIFICA
USANDO EL CRITERIO.
sji
ji
ji
ai Ex
xxE <
−=
−
%1001
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 29 -
FV
LEERn , max ite , a
ij , b
i , V
i
INICIO
FIN
k = 1 , max ite , 1
i = 1 , n , 1
xi = v
i
i = 1 , n , 1
S = 0
j = 1 , n , 1
i ≠ j
S = S + a ij * x
j
Vi = (b
i – S) / 1000
xi = V
i
ESCRIBIRV
i , i = 1, 2, 3…
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)ITER=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit1,'string'));v=str2num(get(handles.edit2,'string'));a=str2num(get(handles.edit4,'string'));b=str2num(get(handles.edit5,'string'));cad1='';for k=1:ITER for i=1:n x(i)=v(i); end for i=1:n s=0; for j=1:n if j~=i s=s+a(i,j)*x(j); end end v(i)=(b(i)-s)/a(i,i); x(i)=v(i); end for k=1:n cad2=sprintf('x%d=%10.8f',k,x(k)); cad1=[cad1,cad2]; end cad2=sprintf('\n'); cad1=[cad1,cad2];end set(handles.edit6,'string',cad1)
Codigo para cerrar el interface:
Docente lic. Javier lozano - 30 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico close(metodogaussseidel)
EJEMPLO DEL INTERFACE:
INTEGRACION NUMERICA
REGLA DEL TRAPECIO
la regla del trapecio es la primera de las formulas cerradas de integración de Newton –
cotes. Corresponde al caso donde el polinomio de la ecuación es de primer grado:
∫∫ ≅=b
a
n
b
a
dxxfdxxfI )()(
∫∫ ≅=b
a
b
a
dxxfdxxfI )()( 1
)()()(
)()(1 axab
afbfafxf −
−−+= (*)
El área bajo esta línea recta res una aproximación de la integral de f(x) entre los límites
a y b.
( )∫
−
−−+=
b
a
dxaxab
afbfafI
)()()(
El resultado de la integración es:
2
)()()(
bfafabI
+−=
Que se denomina regla del trapecio.
Obtención de la regla del trapecio:
Antes de la integración, la ecuación (*) se puede expresar como:
Docente lic. Javier lozano - 31 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
ab
aafbafafx
ab
afbfxf
−−−+
−−= )()(
)()()(
)(1
Agrupando los últimos dos términos:
ab
aafbafaafabfx
ab
afbfxf
−+−−+
−−= )()()()()()(
)(1
O
ab
bafabfx
ab
afbfxf
−−+
−−= )()()()(
)(1
la cual se puede integrarse entre x = a y x = b para obtener:
bax
ab
bafabfx
ab
afbfI |
)()(
2
)()( 2
−−+
−−=
Este resultado se evalúa para dar:
( ) ( )abab
bafabfab
ab
afbfI −
−−+−
−−= )()(
2
)()( 22
Ahora, como ( )( ),22 ababab +−=−
[ ] )()(2
)()( bafabfab
afbfI −++−=
Multiplicando y agrupando términos se tiene:
2
)()()(
bfafabI
+−= que es la formula del trapecio.
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 32 -
INICIO
LEERa , b , f(x), n
h=(b-a)/n
i=1, n-1,1
S=f(a)+f(b)
i=1, n-1,1
S=S+2*f(xi)
A=S*h/2
ESCRIBIRA
xI=a+i*h
FIN
xi=a+i*h
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'));a=str2double(get(handles.edit2,'string'));b=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit4,'string'));h=(b-a)/n;s=f(a)+f(b);for i=2:n x(i)=a+(i-1)*h; s=s+2*f(x(i));endI=s*(h/2);set(handles.edit5,'string',I);
Codigo para graficar:
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'));a=str2double(get(handles.edit2,'string'));b=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit4,'string'));h=(b-a)/n;for i=1:n+1 x(i)=a+(i-1)*h; y(i)=f(x(i));endx=[x,b,a,a];y=[y,0,0,f(a)];fill(x,y,[0.8 0.8 0.9])for i=1:n+1 x(i)=a+(i-1)*h; y(i)=f(x(i));line([x(i) x(i)],[0,f(x(i))]);
Docente lic. Javier lozano - 33 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico endhold onezplot(f,[min(x):0.2:max(x)])plot(x,y,'og')plot(x,y,'g')
Codigo para cerrar el interface:
close(metododeltrapecio)
EJEMPLO DEL INTERFACE:
REGLA DE SIMPSON
Además de aplicar la regla del trapecio con una segmentación mas fina, otra forma de
obtener una estimación más exacta de una integral consiste en usar polinomios de grado
superior para unir los puntos.
REGLA DE SIMPSON 1/3:
La regla de simpson 1/3 resulta cuando un polinomio de interpolación de segundo grado
se sustituye en la ecuación
∫∫ ≅=b
a
n
b
a
dxxfdxxfI )()(
Docente lic. Javier lozano - 34 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
∫∫ ≅=b
a
b
a
dxxfdxxfI )()( 2
si se designa a y b como x0 y x2, y f2(x) se representa por un polinomio de Lagrange de
segundo grado, la integral se transforma en
dxxfxxxx
xxxxxf
xxxx
xxxxxf
xxxx
xxxxI
x
x∫
−−
−−+
−−−−
+−−
−−=
2
0
)())((
))(()(
))((
))(()(
))((
))((2
1202
101
2101
200
2010
21
después de la integración y de las manipulaciones algebraicas, se obtiene la siguiente
formulas:
[ ])()(4)(3 210 xfxfxfh
I ++≅ (3)
donde, en este caso, h=(b-a)/2. Esta ecuación se conoce como la regla de Simpson 1/3, y
es la segunda formula de integración cerradas de Newton – Cotes. La especificación
“1/3” se origina del hecho de que h esta dividida entre 3 en la ecuación (3).
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 35 -
INICIO
LEERf(x) ,a,b,n
i=0, n,1
h=(b-a)/n
xi=a+i*b
Si n par
i=2,n, 2
S=S+f(x1-2
)+ 4f(xi-1
)+f(xi)
I=h*S/3
ESCRIBIRI
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'));a=str2double(get(handles.edit2,'string'));b=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit4,'string'));h=(b-a)/nfor i=1:n+1 x(i)=a+(i-1)*h;endif rem(n,2)==0 s=0; for i=3:2:n+1 s=s+f(x(i-2))+4*f(x(i-1))+f(x(i)) end I=(h/3)*s set(handles.edit5,'string',I);end
Codigo para graficar:function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));a=str2double(get(handles.edit2,'string'));b=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit4,'string'));h=(b-a)/n;s=f(a)+f(b);for i=1:n+1 x(i)=a+((i-1)*h); y(i)=f(x(i));endx=[x,b,a,a];y=[y,0,0,f(a)];fill(x,y,[0.8 0.4 0.9])for i=1:n+1
Docente lic. Javier lozano - 36 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico x(i)=a+((i-1)*h); y(i)=f(x(i));line([x(i),x(i)],[0,f(x(i))]);endhold onezplot(f,[min(x):0.2:max(x)])
Codigo para cerrar el interface:
close(metodosimpsontres)
EJEMPLO DEL INTERFACE:
REGLA DE SIMPSON 3/8
De manera similar a la obtención de la regla del trapecio y simpson 1/3, es posible
ajustar un polinomio de lagrange de tercer grado a cuatro puntos e integrarlo:
∫∫ ≅=b
a
b
a
dxxfdxxfI )()( 3
para obtener
[ ])()(3)(3)(8
33210 xfxfxfxf
hI +++≅
Donde h = (b-a)/3. Esta ecuación se llama regla de Simpson 3/8 debido a que h se
multiplica por 3/8. Esta es la tercera formula de integración cerrada de Newton-Cotes.
Docente lic. Javier lozano - 37 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 38 -
INICIO
Leerf(x),a,b,n
h=(b-a)/n
i=0, n, 1
xi=a+i*h
Si n multiplo de 3
S=0
i=3,n,3
S=S+f(xi-3
)+f(xi-2
)+3f(xi-1
)+f(xi)
I=3h*S/8
ESCCRIBIRI
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadasfunction varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f=inline(get(handles.edit1,'string'))a=str2double(get(handles.edit2,'string'))b=str2double(get(handles.edit3,'string'))n=str2double(get(handles.edit4,'string'))h=(b-a)/nfor i=1:n+1 x(i)=a+(i-1)*hendif rem(n,3)==0 s=0 for i=3:n+1:3 s=s+f(x(i-2))+3*f(x(i-1))+3*f(x(i))+f(x(i-1)) end I=((3*h)/8)*s set(handles.edit5,'string',I)end
Codigo para graficar:
f=inline(get(handles.edit1,'string'))a=str2double(get(handles.edit2,'string'))b=str2double(get(handles.edit3,'string'))n=str2double(get(handles.edit4,'string'))h=(b-a)/ns=f(a)+f(b)for i=1:n+1 x(i)=a+((i-1)*h) y(i)=f(x(i))endx=[x,b,a,a]y=[y,0,0,f(a)]fill(x,y,[0.6 0.8 0.4])
Docente lic. Javier lozano - 39 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico for i=1:n+1 x(i)=a+((i-1)*h) y(i)=f(x(i))line([x(i),x(i)],[0,f(x(i))])endhold onezplot(f,[min(x):0.2:max(x)])
Codigo para cerrar el interface:
close(metodosimpson8)
EJEMPLO DEL INTERFACE:
INTEGRALES MULTIPLES
Las técnicas de integración para la regla de trapecio y la regla de simpson se pueden
modificar de manera directa para utilizarse en la aproximación de integrales multiples.
∫∫R
dAyxf ),( ;donde R es una región
Docente lic. Javier lozano - 40 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
R={(x,y)/ bxa ≤≤ , dyc ≤≤ }es rectangular
R={(x,y)/ bxa ≤≤ , )()( 21 xgyxg ≤≤ }no es rectangular.
Para describir la técnica involucrada en la integral dydxyxfb
a
xg
xg∫ ∫)(
)(
2
1
),( se utiliza la
regla de simpson 1/3.
21
abh
−=2
)()()( 12
2
xgxgxh
−=
[ ]
[ ]
[ ]++++
+++++
+ +++≅∫ ∫
))(,())()(,(4))(,(3
)(
))(,())()(,(4)(,(3
)(4
))(,())()((4))(,(3
)(
3),(
2222221221222
121121111112
)(
)( 020201,00100212
1
xgxfxhxgxfxgxfxh
xgxfxhxgxfxgxfxh
xgxfxhxgxfxgxfxhh
dydxyxfb
a
xg
xg
Docente lic. Javier lozano - 41 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 42 -
INICIO
Leerf(x,y), a, b, m, n, g
1(x), g
2(x)
h1=(b-a)/n
i=0, n, 1
xi=a+i*h
1
h1=(g
2(x
i)-g
1(x
i))/m
j=o, m, 1
yi=g
1(x
i)+j*h
2
S1=0
j=2, m, 2
S1=S1+f(xi, y
j-2)+4f(x
i,y
j-1)+f(x
i,y
i)
Mi=S1*h
2/3
S2=0
i=2, n, 2
S2=S2+Mi-2
+4Mi-1
+Mi
Area=h1*
S2/3
ESCRIBIR
Area
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
Codigo para graficar:
Codigo para cerrar el interface:
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 43 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
ECUACIONES DIFERENCIALES ORDINARIAS
METODO DE EULER
La primera derivada ofrece una estimación directa de la pendiente en ix (figura 1)
Figura 1
Donde ),( ii yxf es la ecuación diferencial evaluada en iy y ix . la estimación se
sustituye en la ecuación
hyiyi φ+=+1 ………………1)
Y se obtiene:
hyxfyiy iii *),(1 +=+
Está formula se conoce como método de Euler (o de Euler-Cauchy o punto de
pendiente). Se predice un nuevo valor de y usando la pendiente (igual a la primera
derivada en el valor original de x) para poder extrapolar linealmente sobre el tamaño de
paso h(figura 1).
Análisis para el error del método de Euler
La solución numerica de la EDO implica dos tipos de error :
Docente lic. Javier lozano - 44 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
1. errores de truncamiento, o de discretización, originados por la naturaleza de las
técnicas empleadas para aproximar los valores de y.
2. errores de redondeo, causados por el numero limitado de cifras significativas
que una computadora puede retener.
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 45 -
INICIO
LEERf(x,y) , a , b , n , y
0
x0 = a
h = (b – 1) / n
i = 1 , n , 1
y1 = y
0 + h * f(x
0,y
0)
y0 = y
1
x1 = x
0 + h
x0 = x
1
ESCRIBIRy
0
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f1=get(handles.edit1,'string');f=inline(f1,'x','y');a=str2double(get(handles.edit2,'string'));b=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit4,'string'));y0=str2double(get(handles.edit5,'string'));h=(b-a)/n;x0=a;for i=1:n y1=y0+h*f(x0,y0); y0=y1; x1=x0+h; x0=x1;endset(handles.edit6,'string',y1);
Codigo para graficar:
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)f1=get(handles.edit1,'string');f=inline(f1,'x','y');ezmesh(f);grid on
Codigo para cerrar el interface:
close(metodoeuler)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano - 46 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
METODO DE RUNGE-KUTTA
Dada la ecuación diferencial ordinaria ),(' yxfy = con la condición inicial
00 )( yxy = supongamos que se conocen los valores aproximados de
nyyyy ..,,.........,, 321 es decir para
nnn yxyx
yxyx
yxyx
yxyx
=
===
)(,
......................
)(,
)(,
)(,
333
222
111
Se quiere calcular:
Docente lic. Javier lozano - 47 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
)]()2
(4)([6
]()2
(4)([6
)()(
:)1(
],[int)1(2
:
)]()(4)([3
)(
.,3/1
)1..............................)()(
),(
)(
1'''
1
)1'''
1
1
12
210
1'
'
11
2
0
1
++
++
+
+
++
++++=
+++=−
−=
++=
−=
→=
=
∫
∫ +
nnnnn
nnnnn
nn
x
x
x
x nn
nn
xyh
xyxyh
yy
xyh
xyxyh
xyxy
comoescribirpuedeseecuaciónla
xxervaloeltomamosecuaciónlapara
xxh
donde
xfxfxfh
dxxf
espaciadasigualmentepuntoslosparasimposondereglalapor
xyxydxy
tienesecalculodellfundamentateoremaelporyxfysi
xyy
n
n
Al el termino )2
(4 ' hxy n + se divide en los términos )
2(2)
2(2 '' h
xyh
xy nn +++ para
aproximar la pendiente de )2
('h
xy n + en el punto medio 2
hxn + de 2 maneras
distintas.
),(),()(),(*
:2
)2......................)]........()2
(22
(2)([6
1''
1
1''''
1
nnnnnn
nnnnnn
yxfKyxfxydondexyK
pendienteslassustituyenseecuaciónlaen
xyh
xyh
xyxyh
yy
=⇒==
++++++= ++
)*2
,2
()2
()(),2
(* 12''
2 Kh
yh
xfKh
xfxydondeh
xyK nnnnn ++=⇒+=+=
)*2
,2
()2
()(),2
(* 22''
3 Kh
yh
xfKh
xfxydondeh
xyK nnnnn ++=⇒+=+=
)*,()()(),(* 3141'
1'
4 KhyxfKxfxydondexyK nnnnn +=⇒== +++
)22(6 43211 KKKKh
yy nn ++++=∴ +
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 48 -
O
INICIO
LEERF(x,y), a, b, n, y
0
h =
x0 = a
i = 1 , n , 1
k1 = f(x
0,y
0)
k2 = f(x
0+, y
0+ ()(k
1))
k3 = f(x
0+, y
0+ ()(k
2)
k4 = f(x
0+h), y
0 + hk
3)
y1 = y
0 + (k
1+2k
2+2k
3+k
4)
x1 = x
0 + h
x0 = x
1
y0 = y
1
ESCRIBIRy
1
FIN
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadasfunction varargout = pushbutton1_Callback(h, eventdata, handles, varargin)f1=get(handles.edit1,'string');f=inline(f1,'x','y');a=str2double(get(handles.edit2,'string'));b=str2double(get(handles.edit3,'string'));n=str2double(get(handles.edit4,'string'));y0=str2double(get(handles.edit5,'string'));h=(b-a)/n;x0=a;for i=1:n k1=f(x0,y0); k2=f(x0+h/2,y0+(h/2)*k1); k3=f(x0+h/2,y0+(h/2)*k2); k4=f(x0+h,y0+h*k3); y1=y0+(h/6)*(k1+2*k2+2*k3+k4); x1=x0+h; x0=x1; y0=y1;
Docente lic. Javier lozano - 49 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico endset(handles.edit6,'string',y1);
Codigo para graficar:
f1=get(handles.edit1,'string');f=inline(f1,'x','y');ezmesh(f);grid on
Código para cerrar el interface:
close(metodorungekutta4)
EJEMPLO DEL INTERFACE:
SISTEMA DE ECUACIONES DIFERENCIALES
Muchos problemas prácticos en la ingeniería y en la ciencia requieren la solución de un
sistema de ecuaciones diferenciales ordinarias simultaneas mas que de una sola
ecuación.
Un sistema de ecuaciones diferenciales ordinarias se puede representar generalmente como:
)32111' .........,..........,.........,,,( nyyyyxfy =
Docente lic. Javier lozano - 50 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
)32122' .........,..........,.........,,,( nyyyyxfy =
)32133' .........,..........,.........,,,( nyyyyxfy =
………………………………………………
nnn yyyyxfy .........,..........,.........,,,( 321' =
La solución de este sistema requiere que las n condiciones iniciales se conozcan en un
valor inicial x
Por ejemplo:
),,( 2111' yyxfy =
),,( 2122' yyxfy =
Sujeto a las condiciones iniciales:
2211 )()( φφ == xyxy
Se puede utilizar el método de Runge-Kutta de 4to orden para hallar la ,solución es
decir;
),,(* 2111 yyxfK =),,(* 2121 yyxfR =
)*2
,*2
,2
(* 121112 Rh
yKh
yh
xfK +++=
)*2
,*2
,2
(* 121122 Rh
yKh
yh
xfR +++=
)*2
,*2
,2
(* 222113 Rh
yKh
yh
xfK +++=
)*2
,*2
,2
(* 222123 Rh
yKh
yh
xfR +++=
)*,*,(* 323114 RhyKhyhxfK +++=)*,*,(* 323124 RhyKhyhxfR +++=
Por tanto:
]22[6
)()( 432111 KKKKh
xyhxy ++++=+
]22[6
)()( 432122 RRRRh
xyhxy ++++=+
DIAGRAMA DE FLUJO
Docente lic. Javier lozano - 51 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Codigo para Calculo de raices aproximadas
f1=get(handles.edit1,'string');f2=get(handles.edit2,'string');f=inline(f1,'x','y1','y2');g=inline(f2,'x','y1','y2');a=str2double(get(handles.edit3,'string'));b=str2double(get(handles.edit4,'string'));y1=str2double(get(handles.edit5,'string'));y2=str2double(get(handles.edit6,'string'));
Docente lic. Javier lozano - 52 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico n=str2double(get(handles.edit7,'string'));h=(b-a)/n;x0=a;for i=1:n k1=f(x0,y1,y2); R1=g(x0,y1,y2); k2=f(x0+h/2,y1+(h/2)*k1,y2+(h/2)*R1); R2=g(x0+h/2,y1+(h/2)*k1,y2+(h/2)*R1); k3=f(x0+h/2,y1+(h/2)*k2,y2+(h/2)*R2); R3=g(x0+h/2,y1+(h/2)*k2,y2+(h/2)*R2); k4=f(x0+h,y1+h*k3,y2+h*k3); R4=g(x0+h,y1+h*k3,y2+h*k3); y1=y1+(h/6)*(k1+2*k2+2*k3+k4); y2=y2+(h/6)*(R1+2*R2+2*R3+R4); x1=x0+h; x0=x1; y1=y1; y2=y2;endset(handles.text10,'string',y1,y2);
Codigo para graficar:
Codigo para cerrar el interface:
EJEMPLO DEL INTERFACE:
ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR
Dado un problema de valor inicial general:
)1(''' .........,..........,.........,,,( −= nn yyyyxfy
?)(
)(.,..........,.........)(,)( 10)1(
10'
00
=
=== −−
f
nn
xy
xyxyxy φφφ
La estrategia es convertir la ecuación diferencial ordinaria
Docente lic. Javier lozano - 53 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
)1(''' .........,..........,.........,,,( −= nn yyyyxfy en un sistema de ecuaciones
mediante el cambio de variable es decir:
)1(
''3
'2
1
.............−=
=
=
=
nn yu
yu
yu
yu
Entonces:
)..,,.........,,,(
.............................
321'
3'''
2
2''
1
nn
n uuuuxfyu
uyu
uyu
==
==
==
Es decir se tiene el siguiente sistema de ecuaciones.
)..,,.........,,,(
.............................
321'
3'2
2'1
nn uuuuxfu
uu
uu
=
=
=
Con las condiciones iniciales
10102001 )(.,..........,.........)(,)( −=== nn xyxuxu φφφ
Para hallar la solución de este sistema se puede utilizar el método de Runge-Kutta de
cuarto orden.
Docente lic. Javier lozano - 54 -
Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico
Docente lic. Javier lozano - 55 -