pepe diagramas

55
Universidad nacional jorge basadre grohmann Facultad de ingeniería Escuela 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 x 1 hasta x u y f(x 1 ) y f(x u ) tienen signos opuestos, es decir, f(x 1 )f(x u )<0 Entonces hay al menos una raíz real entre x 1 y x u . 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, x 1 , y superior, x u , que encierren la raíz, de forma tal que la función cambie de signo en el intervalo. Esto se verifica comprobando que f(x 1 )f(x u )<0. Paso 2: Una función aproximada de la raíz x 1 se determina mediante: 2 1 u r x x x + = Paso 3: Realice las siguientes evaluaciones para determinar en qué subintervalo esta la raíz: a) si f(x 1 )f(x r )<0, entonces la raíz se encuentra dentro del subintervalo inferior o izquierdo. Por lo tanto, haga x u =x r y vuelva al paso 2. b) Si f(x 1 )f(x u )>0, entonces la raíz se encuentra dentro del subintervalo superior o derecho. Por lo tanto, haga x 1 =x r y vuelva al paso 2. c) Si f(x 1 )f(x u )=0, la raíz es igual a x r ; 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 -

Upload: josue-emmanuel-blasquez-contreras

Post on 25-Jun-2015

412 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: pepe diagramas

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 -

Page 2: pepe diagramas

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

Page 3: pepe diagramas

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 -

Page 4: pepe diagramas

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 -

Page 5: pepe diagramas

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

Page 6: pepe diagramas

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 -

Page 7: pepe diagramas

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 -

Page 8: pepe diagramas

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

Page 9: pepe diagramas

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 -

Page 10: pepe diagramas

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 -

Page 11: pepe diagramas

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))

Page 12: pepe diagramas

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 -

Page 13: pepe diagramas

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 -

Page 14: pepe diagramas

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

Page 15: pepe diagramas

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 -

Page 16: pepe diagramas

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 -

Page 17: pepe diagramas

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 -

Page 18: pepe diagramas

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

Page 19: pepe diagramas

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 -

Page 20: pepe diagramas

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 -

Page 21: pepe diagramas

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 -

Page 22: pepe diagramas

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

Page 23: pepe diagramas

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 -

Page 24: pepe diagramas

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 -

Page 25: pepe diagramas

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 -

Page 26: pepe diagramas

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

Page 27: pepe diagramas

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 -

Page 28: pepe diagramas

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 -

Page 29: pepe diagramas

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…

Page 30: pepe diagramas

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 -

Page 31: pepe diagramas

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 -

Page 32: pepe diagramas

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

Page 33: pepe diagramas

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 -

Page 34: pepe diagramas

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 -

Page 35: pepe diagramas

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

Page 36: pepe diagramas

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 -

Page 37: pepe diagramas

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 -

Page 38: pepe diagramas

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

Page 39: pepe diagramas

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 -

Page 40: pepe diagramas

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 -

Page 41: pepe diagramas

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 -

Page 42: pepe diagramas

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

Page 43: pepe diagramas

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 -

Page 44: pepe diagramas

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 -

Page 45: pepe diagramas

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

Page 46: pepe diagramas

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 -

Page 47: pepe diagramas

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 -

Page 48: pepe diagramas

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

Page 49: pepe diagramas

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 -

Page 50: pepe diagramas

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 -

Page 51: pepe diagramas

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 -

Page 52: pepe diagramas

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 -

Page 53: pepe diagramas

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 -

Page 54: pepe diagramas

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 -

Page 55: pepe diagramas

Universidad nacional jorge basadre grohmannFacultad de ingenieríaEscuela de ingeniería civil cálculo numérico

Docente lic. Javier lozano - 55 -