Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Y como nos especifican los valores de las soluciones en la frontera del dominio,
a ese tipo de condiciones se les llama del tipo Dirichlet, y solo se puede definir
las soluciones en ese intervalo, por no tener otras condiciones más:
𝑢(0) = 1
1
𝑢(1) =
𝑒
Para elaborar el programa que resuelve la ecuación diferencial, hacemos uso
del método de las diferencias finitas centradas:
2
−𝑢̈ + 4 ∗ 𝑥 2 ∗ 𝑢 = 2 ∗ 𝑒 −𝑥
𝑦 = 𝑦𝑖
Δ𝑦 𝑦𝑖+1 − 𝑦𝑖−1
𝑦̇ = =
Δ𝑥 2 ∗ Δ𝑥
𝑦𝑖+1 − 𝑦𝑖 𝑦𝑖 − 𝑦𝑖−1
Δ2 𝑦 − 𝑦𝑖+1 − 2 ∗ 𝑦𝑖 + 𝑦𝑖−1
𝑦̈ = 2 = Δ𝑥 Δ𝑥 =
Δ𝑥 Δ𝑥 Δ𝑥 2
En nuestro problema:
2
−𝑢̈ + 4 ∗ 𝑥 2 ∗ 𝑢 = 2 ∗ 𝑒 −𝑥
𝑢𝑖+1 − 2 ∗ 𝑢𝑖 + 𝑢𝑖−1 2
−( 2
) + 4 ∗ 𝑥 2 ∗ 𝑢𝑖 = 2 ∗ 𝑒 −𝑥
Δ𝑥
2
−𝑢𝑖+1 + 2 ∗ 𝑢𝑖 − 𝑢𝑖−1 + 4 ∗ Δ𝑥 2 ∗ 𝑥 2 ∗ 𝑢𝑖 = 2 ∗ Δ𝑥 2 ∗ 𝑒 −𝑥
El valor de “x” en cada iteración irá aumentando según sea el paso, en este
caso el paso es de Δ𝑥:
2.0004 ∗ 𝑢1 − 𝑢2 = 1.0198
Se observa que 𝑢10 es dato del problema, así que lo reemplazamos y pasamos
al otro miembro a sumar:
2.0004 −1 0 0 0 0 0 0 0 𝑢1
−1 2.0016 −1 0 0 0 0 0 0 𝑢2
0 −1 2.0036 −1 0 0 0 0 0 𝑢3
0 0 −1 2.0064 −1 0 0 0 0 𝑢4
0 0 0 −1 2.01 −1 0 0 0 𝑢5
0 0 0 0 −1 2.0144 −1 0 0 𝑢6
0 0 0 0 0 −1 2.0196 −1 0 𝑢7
0 0 0 0 0 0 −1 2.0256 −1 𝑢8
( 0 0 0 0 0 0 0 −1 2.0324) (𝑢9 )
1.0198
0.0192
0.0183
0.0170
= 0.0156
0.0140
0.0123
0.0105
(0.3768)
𝑢1 0.9902
𝑢2 0.9610
𝑢3 0.9142
𝑢4 0.8524
𝑢5 = 0.7789
𝑢6 0.6977
𝑢7 0.6126
𝑢8 0.5272
(𝑢9 ) (0.4448)
PROGRAMA EN MATLAB
Para la elaboración del programa que resuelve este tipo de ecuaciones
diferenciales, se usó el Matlab, y a continuación se explicará el procedimiento:
1. Creamos una función que tenga como variables de entrada:
A= matriz de coeficientes
B=vector de términos independientes
x= vector de particiones
u=vector de incógnitas
function[A,B,x,u]=diferenciasfinitas(a,b,m,n,N)
A=zeros(N-1);
h=(b-a)/N;
for i=1:N-1;
if i==1;
A(i,i)=2+4*((a+h*i)^2)*(h^2);
A(i,i+1)= -1;
else
if i==N-1;
A(i,i)=2+4*((a+h*i)^2)*(h^2);
A(i,i-1)=-1;
else
A(i,i)=2+4*((a+h*i)^2)*(h^2);
A(i,i-1)=-1;
A(i,i+1)=-1;
end
end
end
for i=1:N-1;
x(i,1)=abs(a-b)/(N/i);
end
u=inv(A)*B;
end
Por último, nos queda lo siguiente:
function[A,B,x,u]=diferenciasfinitas(a,b,m,n,N)
A=zeros(N-1);
h=(b-a)/N;
for i=1:N-1;
if i==1;
r=((a+h*i)^2);
B(i,1)=2*(h^2)*(2.71828^((-1)*r))+m;
else
if i==N-1;
r=((a+h*i)^2);
B(i,1)=2*(h^2)*(2.71828^((-1)*r))+n;
else
r=((a+h*i)^2);
B(i,1)=2*(h^2)*(2.71828^((-1)*r));
end
end
end
for i=1:N-1;
if i==1;
A(i,i)=2+4*((a+h*i)^2)*(h^2);
A(i,i+1)= -1;
else
if i==N-1;
A(i,i)=2+4*((a+h*i)^2)*(h^2);
A(i,i-1)=-1;
else
A(i,i)=2+4*((a+h*i)^2)*(h^2);
A(i,i-1)=-1;
A(i,i+1)=-1;
end
end
end
for i=1:N-1;
x(i,1)=abs(a-b)/(N/i);
end
u=inv(A)*B;
end
Al correr el programa nos da los siguientes resultados:
Cuando ponemos el comando plot(x,u):