UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
DIAGRAMAS DE FLUJO
CODIFICACIÓN EN MATLAB ALUMNO:
Jorge Luis Cubas Mamani
CÓDIGO:
2014-130049
AÑO/CICLO:
3er año/5to ciclo
CURSO:
Métodos Numéricos
DOCENTE:
Ing. Wilson Chambilla
HORARIO:
Miércoles, 12:00pm – 2:00pm
FECHA DE ENTREGA:
29 de mayo del 2017
TACNA-PERÚ 2017
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
1. Método de Euler:
INICIO
Leer f(x),a,b,n,y0
x0=a h=(b-a)/n
i=1,n
y1=y0+h*f(x)
y0=y1
x1=x0+h
x0=x1
y0
FIN
[Fecha]
2
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
Codificación en MatLab: function Euler clear clc fprintf('\n \tResolucion de ecuaciones diferenciales con el metodo de euler\n') f=input('\nIngrese la ecuacion diferencial de la forma:dy/dx=f(x,y)\n','s'); x0=input('\nIngrese el primer punto x0:\n' ); x1=input('\nIngrese el segundo punto x1:\n' ); y0=input('\nIngrese la condicion inicial y(x0):\n'); n=input('\nIngrese el numero de pasos n:\n'); h=(x1-x0)/n; xs=x0:h:x1; y1=y0; fprintf('\n''it x0 x1 y1'); for i=1:n it=i-1; x0=xs(i); x=x0; x1=xs(i+1); y=y0; y1=y0+h*eval(f); fprintf('\n%2.0f%10.6f%10.6f%10.6fn',it,x0,x1,y1); y0=y1; end fprintf('\n EL PUNTO APROXIMADO y(x1) es = %10.6f\n' ,y1) end
[Fecha]
3
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
2. Método de Runge-Kutta de 2do Orden: INICIO
Leer f(x),x0,x1,n,y0
x0 h=(x1-x0)/n
i=1,n
k1=h*f(x0, y0) k2=h*f(x0+h, y0+k1)
y0=y0+(k1+k2)/2
x1=x0+h
x1=x0+h
x0=x1
y0
FIN
[Fecha]
4
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
Codificación en MatLab function rungekutta2 clear clc fprintf('\n \tRESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-KUTTA DE ORDEN 2\n' ) f=input('\n Ingrese la ecuacion diferencial dy/dx=\n' ,'s'); x0=input('\n Ingrese el primer punto x0:\n' ); x1=input('\n Ingrese el segundo punto x1:\n' ); y0=input('\n Ingrese la condicion inicial y(x0):\n' ); n=input('\n Ingrese el numero de pasos n:\n' ); h=(x1-x0)/n; xs=x0:h:x1; fprintf('\n''it x0 y1'); for i=1:n it=i-1; x0=xs(i); x=x0; y=y0; k1=h*eval(f); x=xs(i+1); y=y0+k1; k2=h*eval(f); y0=y0+(k1+k2)/2; fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0); end fprintf('\n El punto aproximado y(x1) es = %8.6f\n' ,y0); end
[Fecha]
5
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
3. Método de Runge-Kutta de 3er orden INICIO
Leer f(x),x0,x1,n,y0
h=(x1-x0)/n
i=1,n
K1=h*F(x0;y0) K2=h*f(x0+h/2;y0+k1/2) K3=h*F(x0+h*3/4;y0+k2*3/4)
y1=y0+2/9*k1+1/3*k2+4/9*k3
x 1=x0+h
x0=x1 y0=y1
y0
FIN
[Fecha]
6
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
Codificación en MatLab: function rungekutta3 clear clc fprintf('\n\t RESOLUCION DE ECUACIONES DIFERENCIALES RUNGLE KUTTA DE ORDEN TRES ') f=input('\n\ INGRESE LA ECUACION DIFERENCIAL \n' ,'s'); x0=input('\n\ INGRESE EL PRIMER PUNTO x0: \n' ); x1=input('\n\ INGRESE EL SEGUNDO PUNTO x1: \n' ); y0=input('\n\ INGRESE LA CONDICION INICIAL y0: \n' ); n=input('\n\ INGRESE EL NUMERO DE PASOS n: \n' ); h=(x1-x0)/n; xs=x0:h:x1; fprintf('\n''it x0 y0'); for i=1:n; it=i-1; x0=xs(i); x=x0; y=y0; k1=h*eval(f); x=x0+h/2; y=y0+k1/2; k2=h*eval(f); x=x0+h; y=y0-k1+2*k2; k3=h*eval(f); y=y0+(k1+4*k2+k3)/6; fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0); end fprintf('\n EL PUNTO APROXIMADO y(x1) ES: %8.6f\n' , y0); end
[Fecha]
7
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
4. Método de Runge-Kutta de 4to orden
INICIO
Leer f(x),x0,y0,x1,n
h =(x1-x0)/n
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)
x 1=x0+h
x0=x1 y0=y1
y0
FIN
[Fecha]
8
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
Codificación en MatLab: function RKOR4 clear clc fprintf('\n\t RESOLUCION DE ECUACIONES DIFERENCIALES RUNGLE KUTTA DE ORDEN CUATRO ') f=input('\n\ INGRESE LA ECUACION DIFERENCIAL \n' ,'s'); x0=input('\n\ INGRESE EL PRIMER PUNTO x0: \n' ); x1=input('\n\ INGRESE EL SEGUNDO PUNTO x1: \n' ); y0=input('\n\ INGRESE LA CONDICION INICIAL y0: \n' ); n=input('\n\ INGRESE EL NUMERO DE PASOS n: \n' ); h=(x1-x0)/n; xs=x0:h:x1; fprintf('\n''it x0 y0'); for i=1:n; it=i-1; x0=xs(i); x=x0; y=y0; k1=h*eval(f); x=x0+h/2; y=y0+k1/2; k2=h*eval(f); x=x0+h/2; y=y0+k2/2; k3=h*eval(f); x=x0+h; y=y0+k3; k4=h*eval(f); y0=y0+(k1+2*k2+2*k3+k4)/6; fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0); end fprintf('\n EL PUNTO APROXIMADO y(x1) ES: %8.6f\n' , y0);
[Fecha]
9
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
5. Método de Runge-Kutta de Orden Superior
INICIO
Leer f(x),x0,y0,x1,n
h =(x1-x0)/n
i=1,n
K1=h*F(x0;y0) K2=h*f(x0+h/4;y0+k1/4) K3=h*F(x0+h/4;y0+k1/8+k2/8) K4=h*F(x0+h/2;y0+k2/2+k3) K5=h*f(x0+3*h/4; y0+3*k1/16+9*k4/16) K6=h*f(x0+h; y0-3*k1/7+2*k2/7+12+k3/7-12+k4/7+8*k5/7)
y1=y0+(7*k1+32*k3+12*k4+32*k5+7*k6)/90
x1=x0+h
x0=x1 y0=y1
y0
FIN
[Fecha]
10
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
Codificación en MatLab: function RungeKuttaOS clear clc fprintf('\n\t RESOLUCION DE ECUACIONES DIFERENCIALES RUNGLE KUTTA DE ORDEN SUPERIOR ') f=input('\n\ INGRESE LA ECUACION DIFERENCIAL \n' ,'s'); x0=input('\n\ INGRESE EL PRIMER PUNTO x0: \n' ); x1=input('\n\ INGRESE EL SEGUNDO PUNTO x1: \n' ); y0=input('\n\ INGRESE LA CONDICION INICIAL y0: \n' ); n=input('\n\ INGRESE EL NUMERO DE PASOS n: \n' ); h=(x1-x0)/n; xs=x0:h:x1; fprintf('\n''it x0 y0'); for i=1:n; it=i-1; x0=xs(i); x=x0; y=y0; k1=h*eval(f); x=x0+h/4; y=y0+k1/4; k2=h*eval(f); x=x0+h/4; y=y0+k1/8+k2/8; k3=h*eval(f); x=x0+h/2; y=y0-(k2/2)+k3; k4=h*eval(f); x=x0+(3*h)/4; y=y0+((3*k1)/16)+(9*k4)/16; k5=h*eval(f); x=x0+h; y=y0-(3*k1)/7+(2*k2)/7+(12*k3)/7-(12*k4)/7+(8*k5)/7; k6=h*eval(f); y0=y0+(7*k1+32*k3+12*k4+32*k5+7*k6)/90; fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0); end fprintf('\n EL PUNTO APROXIMADO y(x1) ES: %8.6f\n' , y0);
[Fecha]
11
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
6. Método de Runge-Kutta extendido (Para 2 EDOs)
[Fecha]
12
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
Codificación en MatLab: function Runge_Kutta_4doorden_2funciones_3variables %Valores Iniciales fprintf('\n\t RESOLUCION DE SISTEMA DE ECUACIONES POR EL METODO DE RUNGE KUTTA'); to=input('\n Inserte el valor de la to inicial: ' ); tf=input('\n Inserte el valor de la tf final: ' ); h=input('\n Inserte el valor de tamaño de pasos: ' ); %Literales syms x y xi yi t z %Funciones f=input('Ingrese la funcion f: '); g=input('Ingrese la funcion g: '); d=(tf-to)/h; %Impresion de datos disp(' i t x y '); disp('_ _ _ _ _ _ _ _ _ _ _'); r=zeros(d,4); p=zeros(d,3); t=to; x=input('nIngrese el dato inicial x: ' ); y=input('nIngrese el dato inicial y: ' ); %Procedimiento for i=1:1:d+1 xo=x; to=t; yo=y; r(i,1)=i; r(i,2)=t; r(i,3)=x; r(i,4)=y; p(i,1)=t; p(i,2)=x; p(i,3)=y; %Para K1 L1 K1=eval(f); L1=eval(g); %Para K2 L2 K2=[to+(h/2),xo+(h/2)*K1,yo+(h/2)*L1]; t=K2(1); x=K2(2); y=K2(3); K2=eval(f); L2=[to+(h/2),xo+(h/2)*K1,yo+(h/2)*L1]; L2=eval(g); %Para K3 L3 K3=[to+(h/2),xo+(h/2)*K2,yo+(h/2)*L2]; t=K3(1); x=K3(2); [Fecha]
13
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMAN FACULTAD DE INGENIERIA, ARQUITECTURA Y GEOLOGIA-GEOTECNIA ESCUELA DE GEOLOGIA-GEOTECNIA
y=K3(3); K3=eval(f); L3=[to+(h/2),xo+(h/2)*K2,yo+(h/2)*L2]; L3=eval(g); %Para K4 L4 K4=[to+(h/2),xo+(h/2)*K3,yo+(h/2)*L3]; t=K4(1); x=K4(2); y=K4(3); K4=eval(f); L4=[to+(h/2),xo+(h/2)*K3,yo+(h/2)*L3]; L4=eval(g); %Para t,x e y x=xo+(h/6)*(K1+2*K2+2*K3+K4); y=yo+(h/6)*(L1+2*L2+2*L3+L4); t=to+h; end %Impresion de grafica de datos r surf(p) zlabel('y'); xlabel('t'); ylabel('x'); title('Runge Kutta 4 orden 2 funciones y 3 variables'); end
[Fecha]
14