taller computacion (1)
TRANSCRIPT
ECUACIONES DIFERENCIALES ORDINARIAS (EDO)
COMPUTACION NUMERICA EN TEORIA ELECTROMAGNETICA
DIRIGIDO POR: CODIGO
GIOVANNY CASTILLO CASTILLO 2111144
JONATHAN ALEXANDER PEREZ MUNEVAR 2110931
DIRIGO A:
NIDIA QUINTERO PEÑA
UNIVERSIDAD INDUSTRIAL DE SANTANDER
FACULTAD DE INGENIERIAS FISICO-MECANICAS
ESCUELA DE INGENIERIAS ELECTRICA, ELECTRONICA Y DE TELECOMUNICACIONES
BUCARAMANGA, 27 DE SEPTIEMBRE DE 2013
EJERCICIOS
1. Resolver la EDO utilizando el método de diferencias finitas de orden O(h2) con h=1. Las condiciones frontera son: y(0)=5 y y(20)=8.
8 y ' '−2 y '− y+x=0
2. Un balance de calor en estado estable para una barra se puede representar como:
d2Td x2 −0,1T=0
Utilice FD con Δx=1m para obtener una solución en una barra de 10m, con condiciones T(0)=200°C y T(10)=100°C.
x y1 4.45822 4.25573 4.31754 4.58525 5.01306 5.56497 6.21248 6.93239 7.705410 8.514411 9.342312 10.170013 10.972614 11.715015 12.343116 12.771117 12.860218 12.383219 10.9676
3. Aplique el método RK de orden tres para resolver el siguiente problema desde t=0 hasta 2, con un tamaño paso de 0.5. La condición inicial es y(0)=1.
dydt
=− y+t
x=t
CODIGO:
x y1 188.35002 176.80003 165.45004 154.40005 143.75006 133.60007 124.05008 115.20009 107.1500
function ffprintf('\n \tRESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO METODO DEL RUNJEKUTA TERCER ORDEN\n')f=input('\nIngrese la ecuacion diferencial de la forma: dy/dx=f(x,y)\n','s');x0=input('\nIngrese el valor inferior de la frontera x0:\n');x1=input('\nIngrese el valor superior de la frontera 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:ny=y0;it=i-1;x0=xs(i);x=x0;x1=xs(i+1);k1=eval(f);x= x0 + h/2;y=y0 + k1*h/2;k2=eval(f);x= x0 + h;y= y0 - k1*h + 2*k2*h;k3=eval(f);y1=y0 + ((k1/6) + (2*k2/3) + (k3/6))*h;fprintf('\n%2.0f%10.6f%10.6f%10.6f\n',it,x0,x1,y1);y0=y1;endfprintf('\n El punto aproximado y(x1) es = %10.6f\n',y1);
RESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO METODO DEL RUNJEKUTA TERCER ORDEN
Ingrese la ecuacion diferencial de la forma: dy/dx=f(x,y)
-y + x
Ingrese el valor inferior de la frontera x0:
0
Ingrese el valor superior de la frontera x1:
2
Ingrese la condicion inicial y(x0):
1
Ingrese el numero de pasos n:
4
'it x0 x1 y1
0 0.000000 0.500000 0.708333
1 0.500000 1.000000 0.730035
2 1.000000 1.500000 0.941063
3 1.500000 2.000000 1.266475
El punto aproximado y(x1) es = 1.266475
4. Resuelva la EDO con el método RK de orden cuatro, en el intervalo t ɛ (0,1) con h=0.1. Las condiciones iniciales son: y(0)= - 0.4 y y’(0)= - 0.6.
y ' '−2 y '+2 y=e2t sen( t)
Partiendo de:
y '1= y2 y '2=2 y2−2 y+ex sen (x) y01=−0,4 y02=¿−0,6¿
CODIGO:
fprintf('\n \tRESOLUCION DE SISTEMA ECUACIONES DIFERENCIALES POR MEDIO METODO DEL RUNJEKUTA CUARTO ORDEN PARA DOS ECUACIONES\n')% y1'=df/dx, y2'=dg/dy, x=x, y=y1,z=y2 f= input('\nIngrese la ecuacion diferencial de la forma: df/dx=f(x,y,z)\n','s'); g= input('\nIngrese la ecuacion diferencial de la forma: dg/dx=f(x,y,z)\n','s'); linferior= input('\nIngrese el valor inferior de la frontera :\n'); lsuperior= input('\nIngrese el valor superior de la frontera :\n'); y10=input('\nIngrese la condicion inicial y10:\n'); y20=input('\nIngrese la condicion inicial y20:\n'); h=input('\nIngrese el valor del paso h:\n'); b=(lsuperior-linferior)/h; for i=1:bx=linferior;t=linferior + h;fprintf('para x= % g \n',t);y=y10;z=y20;k1=eval(f);x= x + h/2;y= y + k1*h/2;z= z + k1*h/2;k2=eval(f);x= linferior + h/2;y= y10 + k2*h/2;z= y20 + k2*h/2;k3=eval(f);x= linferior + h;y=y10 + k3*h;z=y20 + k3*h;k4=eval(f);f1= y10 + ((k1/6) + (k2/3) + (k3/3)+ (k4/6))*h; fprintf('el valor de y1 es : %f\n',f1); x=linferior;
y=y10;z=y20;k1=eval(g);x= x + h/2;y= y + k1*h/2;z= z + k1*h/2;k2=eval(g);x= linferior + h/2;y= y10 + k2*h/2;z= y20 + k2*h/2;k3=eval(g);x= linferior + h;y=y10 + k3*h;z=y20 + k3*h;k4=eval(g);f2= y20 + ((k1/6) + (k2/3) + (k3/3)+ (k4/6))*h;fprintf('el valor de y2 es : %f\n\n',f2) y10=f1;;y20=f2;linferior=linferior+h;i=i+1; end
RESOLUCION DE SISTEMA ECUACIONES DIFERENCIALES POR MEDIO METODO DEL RUNJEKUTA CUARTO ORDEN PARA DOS ECUACIONES
Ingrese la ecuacion diferencial de la forma: df/dx=f(x,y,z)
z
Ingrese la ecuacion diferencial de la forma: dg/dx=f(x,y,z)
2*z - 2*y + (exp(x))*sin(x)
Ingrese el valor inferior de la frontera :
0
Ingrese el valor superior de la frontera :
1
Ingrese la condicion inicial y10:
-0.4
Ingrese la condicion inicial y20:
-0.6
Ingrese el valor del paso h:
0.1
para x= 0.1
el valor de y1 es : -0.463103
el valor de y2 es : -0.634658
para x= 0.2
el valor de y1 es : -0.529850
el valor de y2 es : -0.651512
para x= 0.3
el valor de y1 es : -0.598370
el valor de y2 es : -0.643973
para x= 0.4
el valor de y1 es : -0.666097
el valor de y2 es : -0.604323
para x= 0.5
el valor de y1 es : -0.729654
el valor de y2 es : -0.523634
para x= 0.6
el valor de y1 es : -0.784725
el valor de y2 es : -0.391712
para x= 0.7
el valor de y1 es : -0.825922
el valor de y2 es : -0.197056
para x= 0.8
el valor de y1 es : -0.846647
el valor de y2 es : 0.073149
para x= 0.9
el valor de y1 es : -0.838954
el valor de y2 es : 0.433009
para x= 1
el valor de y1 es : -0.793414
el valor de y2 es : 0.897853
5. Utilice un método de RK de segundo orden para resolver el siguiente sistema de EDO, sobre el rango x ɛ (0,2) utilizando un tamaño de paso de 0.25. Las condiciones iniciales del sistema son: y(0)=2 y z(0)=4.
dydx
=−2 y+5e−x
dzdx
=− y z2
2
CODIGO:
fprintf('\n \tRESOLUCION DE SISTEMA ECUACIONES DIFERENCIALES POR MEDIO METODO DEL RUNJEKUTA SEGUNDO ORDEN PARA DOS ECUACIONES\n')% y1'=df/dx, y2'=dg/dy, x=x, y=y1,z=y2 f= input('\nIngrese la ecuacion diferencial de la forma: df/dx=f(x,y,z)\n','s'); g= input('\nIngrese la ecuacion diferencial de la forma: dg/dx=f(x,y,z)\n','s'); linferior= input('\nIngrese el valor inferior de la frontera :\n'); lsuperior= input('\nIngrese el valor superior de la frontera :\n'); y10=input('\nIngrese la condicion inicial y10:\n'); y20=input('\nIngrese la condicion inicial y20:\n'); h=input('\nIngrese el valor del paso h:\n'); b=(lsuperior-linferior)/h; x=0;for i=1:bx=linferior;t=linferior + h;fprintf('para x= % g \n',t);y=y10;z=y20; k1=eval(f);x= x + 3*h/4;y= y + k1*3*h/4;z= z + k1*3*h/4;k2=eval(f);
f1= y10 + ((k1/3) + (2*k2/3))*h; fprintf('el valor de y1 es : %f\n',f1); x=linferior;y=y10;z=y20;k1=eval(g);x= x + 3*h/4;y= y + k1*3*h/4;z= z + k1*3*h/4;k2=eval(g);f2= y20 + ((k1/3) + (2*k2/3))*h;fprintf('el valor de y2 es : %f\n\n',f2) y10=f1;;y20=f2;linferior=linferior+h;i=i+1; end
RESOLUCION DE SISTEMA ECUACIONES DIFERENCIALES POR MEDIO METODO DEL RUNJEKUTA SEGUNDO ORDEN PARA DOS ECUACIONES
Ingrese la ecuacion diferencial de la forma: df/dx=f(x,y,z)
-2*y + 5*exp(-2*x)
Ingrese la ecuacion diferencial de la forma: dg/dx=f(x,y,z)
(-y*(z^2))/2
Ingrese el valor inferior de la frontera :
0
Ingrese el valor superior de la frontera :
2
Ingrese la condicion inicial y10:
2
Ingrese la condicion inicial y20:
4
Ingrese el valor del paso h:
0.25
para x= 0.25
el valor de y1 es : 1.926908
el valor de y2 es : 2.750000
para x= 0.5
el valor de y1 es : 1.614883
el valor de y2 es : 2.053333
para x= 0.75
el valor de y1 es : 1.258322
el valor de y2 es : 1.606691
para x= 1
el valor de y1 es : 0.937490
el valor de y2 es : 1.336572
para x= 1.25
el valor de y1 es : 0.677541
el valor de y2 es : 1.176296
para x= 1.5
el valor de y1 es : 0.479027
el valor de y2 es : 1.079024
para x= 1.75
el valor de y1 es : 0.333093
el valor de y2 es : 1.018296
para x= 2
el valor de y1 es : 0.228624
el valor de y2 es : 0.979547