Professional Documents
Culture Documents
donde
𝑘1 = ℎ ∙ 𝑢
1
𝑘2 = ℎ ∙ (𝑢 + 2𝑙1 )
1
𝑘3 = ℎ ∙ (𝑢 + 2𝑙2 )
𝑘4 = ℎ ∙ (𝑢 + 𝑙3 )
Los 𝑙𝑖 vienen dados para las ecuaciones de 𝑢 que siguen
Para la velocidad
𝑢̇ = −𝑥 − 𝜀(𝑥 2 − 1)𝑢
1
𝑢𝑛+1 = 𝑢𝑛 + 6(𝑙1 + 2𝑙2 + 2𝑙3 + 𝑙4 )
con
𝑙1 = ℎ ∙ 𝑓(𝑥, 𝑢)
1 1
𝑙2 = ℎ ∙ 𝑓(𝑥 + 2𝑘1 , 𝑢 + 2𝑙1 )
1 1
𝑙3 = ℎ ∙ 𝑓(𝑥 + 2𝑘2 , 𝑢 + 2𝑙2 )
1 1
𝑙4 = ℎ ∙ 𝑓(𝑥 + 2𝑘3 , 𝑢 + 2𝑙3 )
format short
syms x u E
tn=0; %tiempo inicial
Xn=0.5; %valor inicial de la posición
Un=0; %valor inicial para la derivada
h=0.1; %paso
tf=0.2; %tiempo para el cual quiero conocer las soluciones
e=1; %e en la ecuación
T=[]; %Vector tiempo
Y=[]; %Vector posición
V=[]; %Vector derivada(velocidad)
t=1; %t es el rotulador del vector tiempo
y=1; %y es el rotulador del vector posición
v=1; %v rotulador del vector derivada
T(1,t)=tn; %se guarda el tiempo inicial
Y(1,y)=Xn; %se guarda la posición inicial
V(1,v)=Un; %se guarda el valor de la derivada inicial
f=-x-E*((x^2)-1)*u;
f=subs(f,E,e);
while tn<tf
k1=h*Un;
K1=vpa(k1,5);
l1=h*subs(f,{x,u},{Xn,Un});
L1=vpa(l1,5);
k2=h*(Un+0.5*L1);
K2=vpa(k2,5);
l2=h*subs(f,{x,u},{Xn+0.5*k1,Un+0.5*L1});
L2=vpa(l2,5);
k3=h*(Un+0.5*L2);
K3=vpa(k3,5);
l3=h*subs(f,{x,u},{Xn+0.5*k2,Un+0.5*L2});
L3=vpa(l3,5);
k4=h*(Un+L3);
K4=vpa(k4,5);
l4=h*subs(f,{x,u},{Xn+k3,Un+L3});
L4=vpa(l4,5);
Xn = Xn + (1/6)*(K1 + 2*K2 + 2*K3 + K4);
Un = Un + (1/6)*(L1 + 2*L2 + 2*L3 + L4);
tn=tn+h; %Se define el siguiente punto correspondiente
y=y+1; %Se hace correr el rotulador de y
v=v+1; %Se hace correr el rotulador de v
t=t+1; %Se hace correr el rotulador de t
Y(1,y)=Xn; %Se guardan los datos
V(1,v)=Un;
T(1,t)=tn;
end
a) b)
c) d)
f)
e)
Figura 1: graficas de la solución de la EDO para distintos valores de 𝜀. a) 𝜀 = 0, b) 𝜀 = 0.1, c)
𝜀 = 0.5, d) 𝜀 = 0.8, e) 𝜀 = 1, f) 𝜀 = 5
Las soluciones graficada en la figura 1, se hizo con las condiciones iniciales de
𝑥(0) = 0.5
𝑥̇ (0) = 0
En la figura 1.a para 𝜀 = 0 se tiene el oscilador armónico. Para distintos 𝜀 la solución se
modifica, como lo podemos ver para 𝜀 = 5 en comparación con las demás. Para 𝜀 > 0
la solución en el tiempo creciente, la posición tiende a modificar la condición inicial de
posición, y “parece” estabilizar la oscilación en el tiempo. Esto se verifica en la figura 2,
donde se graficó la solución para 𝜀 = 1 en 100[s], y se ve claramente que la oscilación
se estabiliza en el tiempo.
ecuacion de iteración
Xi=0; %punto donde se encuentra la condición de borde izquierda
Yi=0; % valor del borde izquierdo
Xf=1; %punto donde se encuentra la condición de borde derecho
Yf=100; %valor del borde derecho
h=0.1; %espaciado
w=1.62; %factor de SOR
N=ceil((Xf-Xi)/h)+1; %número de nodos
X=Xi:h:Xf; %vector de nodos
Ynew=100*(X.*X); %vector solución o iteración nueva
Yold=ones(1,N); %vector iteración anterior
Ynew(1,1)=Yi; %Se guarda en el primer término la condición de borde
y(0)=0
Ynew(1,N)=Yf; %Se guarda en el ultimo termino la condición de borde
y(1)=100
y_sig=0; %Se define arbitrariamente el valor del nodo siguiente al
nodo en estudio
y_ant=0; %Se define arbitrariamente el valor del nodo anterior al
nodo en estudio
Iter=0; %Se define la variable iteración, la cual me dirá cuantas
veces tuvo que recorrer la grilla
while max(abs(Ynew-Yold))>(10^-4)
Yold=Ynew;
r=N-1;
while r>1
x=X(1,r);
y_sig=Ynew(1,r+1);
y_ant=Ynew(1,r-1);
y_n=Ynew(1,r);
y_n=y_n+w*(((10*(h^2)*x-(y_ant)*(5*h+1)-y_sig)/(10*(h^2)-5*h-2))-y_n);
Ynew(1,r)=y_n;
r=r-1;
end
Iter=Iter+1;
end
Iter
plot(X,Ynew,'*'),xlabel('x'),ylabel('y')