Anda di halaman 1dari 14

INSTITUTO TECNOLGICO DE CERRO AZUL

MTODOS NUMRICOS

UNIDAD 6

SOLUCIN DE ECUACIONES DIFERENCIALES

PRACTICAS 1 y 2 CON OCTAVE

ALEJANDRO OSORIO HERNANDEZ

15501005

ING. RUSBEL BERMDEZ RIVERA


Objetivo

El objetivo de esta prctica es para ver el comportamiento del


software de Octave que nos ayudara a la resolucin de problemas
complicados.

Metodologa:

Poder utilizar el programa que a su vez comprender el valor de


los cdigos y algoritmos que vamos a utilizar, en este caso el
programa de Octave que nos ayudara a comprender mejor el
problema.

Materiales:

Laptop con el programa octave( con todos los componentes, caso


como los parches o componentes que instalamos anteriormente.
Practica 1:

Mediante el mtodo de Euler obtener la siguiente tabulacin., replicando el


ejercicio realizado en clase:

Consejo: Ya se realiz una prctica donde convertamos datos en una matriz, la


sugerencia didctica es tomar los cdigos hechos en las unidades 1 a 5, analizar
su estructura y adaptarla a este ejercicio, utilice ciclos for para realizar las
iteraciones.

CODIGO A ESCRIBIR EN EL PROGRAMA OCTACVE.

clear all
clc
pkg load symbolic
syms x
format short;

P=input('Ingresar el valor inicial P: ');


M=input('Ingresar el valor final M: ');
A0=input('Ingresar el valor de Ao: ');
r1=P;
r2=A0;
r3=P;
h=input('Inserte el tamao de pasos: ');
cont=(M/h);
fun=input('Inserte la Funcion:','s');
f=inline(fun);
Br=A0;
for k=1:cont
A=r1;
B=Br;
v=genvarname(['x',num2str(A)]);
r1=r1+h;
eval([v,'=A']);
xi=eval([v,'=A']);
fxi=f(xi);
Y=Br+(fxi*h);
Br=Y;

%-2*x^3+12*x^2-20*x+8.5

ET1=diff(fun,x);
ET11=subs(ET1,sym(rat(A)));
ET2=diff(ET1,x);
ET22=subs(ET2,sym(rat(A)));
ET3=diff(ET2,x);
ET33=subs(ET3,sym(rat(A)));
ET=((ET11*h^2)/2)+((ET22*h^3)/6)+((ET33*h^4)/24);
F=@(x)fun;
Fv1=quad(f,0,r1);
FV=Fv1+1;
ETL=(ET/FV)*100;
EP=((FV-Y)/FV)*100;
J(k,:)=[k r1 FV Y EP];
L(k,:)=[r1];
D(k,:)=[Y];
G(k,:)=[FV];
end
cont=M/0.1
for Z=1:cont
R=r3;
v=genvarname(['X',num2str(R)]);
r3=R+0.1;
eval([v,'=R']);
xi=eval([v,'=R']);
F=@(x)fun;
Fv2=quad(f,0,r3);
FV2=Fv2+1;
Q(Z, :)=[r3];
W(Z, :)=[FV2];
end
clc
P
M
A0
h
fun
fprintf('\n \ti\t x\t Yverdadera\t Yeuler\tEP \n');
disp(J)
plot(L,D)
hold on
plot(Q,W)

Bueno, al ir escribiendo los cdigos en el programa, tenemos que tener


cuidado con lo que ponemos porque habra error, y por eso no correra.
Lo que ise es cada vez que pona un cdigo y terminaba pues lo corra para
que no tenga error, o ande equivocado en el cdigo que se pone.
El clc al principio es para que borre lo que tenga en octave en command
Windows
Bueno con las practicas anteriores que se isieron, se cambia el algoritmo o
cdigo que se tiene por otros, para que as a la hora de correr no muestre el
mensaje correcto para poderle insertarle los datos que nosotros queramos.
Pues una vez hecho esto, insertamos los valores y la funcin deseada para
obtener el resultado final.
Cuando presionamos enter ya nos va haciendo el clculo y al final vemos la
tabla de cada una de las x. con el valor inicial que pusimos al final de esto.
Despus presionamos f para obtener datos calculados en la forma de
tabla como lo vemos en la siguiente:
Tarea 6.1

Efecto de un tamao de paso reducido en el mtodo de Euler

Repita el clculo del ejemplo anterior, pero ahora use un tamao de paso igual a
0.25. Los clculos se repiten, y los resultados se recopilan en la figura para mayor
referencia.

Con la ayuda de hold y plot grafique ambas soluciones en una misma grfica.

Funcin: -2*x^3+12*x^2-20*x+8.5

Volvemos a aplicar lo mismo pero ahora con el tamao de paso de 0.25


De igual manera nos arroja los resultados como lo anterio mensionado:

Y la grfica queda as:


Practica 2:

Mediante el mtodo de RK obtener la siguiente tabulacin., replicando el ejercicio


realizado en clase y realizando el mtodo de Heun

Consejo: Ya se realiz una prctica donde convertamos datos en una matriz,


la sugerencia didctica es tomar los cdigos hechos en las unidades 1 a 5,
analizar su estructura y adaptarla a este ejercicio, utilice ciclos for para
realizar las iteraciones.

Cdigo octave:

clc
clear all
format short;

P=input('Introducir valor de P: ');


M=input('Introducir valor de M: ');
A0=input('Introducir valor de Ao: ');
r1=P;
r2=A0;
h=input('Introducir el tamao de pasos: ');
cont=(M/h);
fun=input('Introducir la funcion:','s');
f=inline(fun);
Br=A0;
Br2=A0;
Br3=A0;
for k=1:cont

A=r1;
B=Br;
B2=Br2;
B3=Br3;
v=genvarname(['x',num2str(A)]);
r1=r1+h;
eval([v,'=A']);
xi=eval([v,'=A']);
fxi=f(xi);
XA=A+(0.5*h)
K2=f(XA);
YP=Br+(K2*h);
Br2=YP;

XB=A+((3*h)/4);
K3=f(XB);
YP2=Br2+(((fxi/3)+((2*K3)/3))*h);
Br2=YP2;

XC=A+h;
K4=f(XC);
YP3=Br3+(((fxi/2)+(K4/2))*h);
Br3=YP3;

%-2*x^3+12*x^2-20*x+8.5
syms x;
F=@(x)fun;
Fv1=quad(f,0,r1);
FV=Fv1+1;
EP=((FV-YP)/FV)*100;
EP2=((FV-YP2)/FV)*100;
EP3=((FV-YP3)/FV)*100;
J(k,:)=[k r1 FV YP3 EP3 YP EP YP2 EP2];
end
fprintf('\n \ti\t x\t Yverdadera\t Yheun\t EP3\t YPto.medio\t EP\t YP2\t EP2 \n');
disp(J)

Bueno una vez escrito el cdigo en el programa de octave lo corremos para identificar un
problema o un error.
Y si ya corri insertamos los valores que a continuacin vemos:
Despus damos enter y saldr esto:

Despus seguimos y nos saldr los resultados de x_.

Encontramos los siguientes valores en la tabla como se muestra adelante:


CONCLUSIONES:

Bueno, todos estos cdigos y algoritmos son complicados, es muy tedioso


si nos equivocamos en algo. Pero igual al correrlo podemos ver en la parte
donde nos equivocamos.

Todos estos cdigos los podemos utilizar para resolver problemas


complicados, caso como las matrices que son tediosas.

Bueno fue genial ver esta parte de computo que de igual manera lo podemos
utilizar en nuestra carrera, tal es el caso de los costos que tiene la
maquinaria, tambin el de obreros y material a utilizar.

Anda mungkin juga menyukai