I receive the output "Empty sym: 0-by-1"
3 views (last 30 days)
Show older comments
Jesús Ocegueda
on 28 Jan 2022
Commented: Jesús Ocegueda
on 31 Jan 2022
I'm using the following code to solve a differential equation non homogenous but when I try to get the value of the variables C_1 and C_2, i receive the following output Empty sym: 0-by-1. Here is the code:
I would really appreciate your support, thank you in advance!
%Segunda ecuación diferencial
fprintf('Actividad #2 Resolución de Ecuaciones Diferenciales No Homogéneas');
pause(2);
fprintf('Acontinuación se presentaran los pasos para la resolución:');
pause(2);
fprintf(['La segunda ecuación diferencial no homogénea es:' ...,
'(d^2x)/(dt^2) + 2 * (dx)/(dt)+ x = 5 * (exp((-2)*t) + t)']);
pause(2);
fprintf(['El primer paso es cambiar la ecuación a su forma estándar: \n\n' ...,
'r^2 + (2 * r) + 1 ' ...,
'El segundo es igualar g(t) = 0. En este caso g(t)= 5 * (exp((-2)*t) + t).\n\n' ...,
'Por lo tanto tenemos que r^2 + (2 * r) + 1 = 0\n\n' ...,
'El tercer paso es resolver la ecuación, cómo si fuera de coeficientes constantes.']);
p = [1 2 1];
r = roots(p);
pause(2);
fprintf('Las raíces que se obtuvieron son las siguientes: \n');
display(r);
pause(2);
fprintf(['El cuarto paso es proponer la solución complementaria de acuerdo a las raíces: \n\n' ...,
'y(t) = C_1 * e^(-t) + C_2 * e^(-t) \n\n' ...,
'El quinto paso es observar la forma de g(t) = 5 * (exp((-2)*t) + t).\n\n' ...,
'Mientras que el paso sexto es proponer una solución particular y_p, de acuerdo con la forma de g(t), por lo tanto esta sería:\n\n' ...,
'y_p = A * e^(-2*t) + A * t + B \n\n']);
pause(2);
fprintf('El paso séptimo es derivar dependiendo el grado de la ecuación principal.\n\n');
syms A B t;
yp = A * exp(-2*t) + A * t + B;
yprima = diff(yp);
ybiprima = diff(yprima);
fprintf('La primer derivada de y_p es:');
display(yprima);
fprintf('La segunda derivada de y_p es:');
display(ybiprima);
pause(2);
fprintf(['El octavo paso es sustituir las derivadas obtenidas, en la ecuación original:\n\n' ...,
'4*A*exp(-2*t) + A - 2*A*exp(-2*t) + A * exp(-2*t) + A * t + B = 5 * (exp((-2)*t) + t\n\n' ...,
'El paso nueve es obtener los coeficientes por el método de coeficientes indeterminados.\n\n' ...,
'A continuación se muestran los resultados:\n\n']);
sustyp = 4*A*exp(-2*t) + A - 2*A*exp(-2*t) + A * exp(-2*t) + A * t + B - 5 * (exp((-2)*t)) + t;
coeficientes = solve(sustyp,A,B);
display(coeficientes);
pause(2);
fprintf('El último paso es escribir la ecuación final y obtener los valores C_n');
syms C_1 C_2
y(t) = C_1 * exp(-t) + C_2 * exp(-t) + (coeficientes.A) * exp(-2*t) + (coeficientes.A) * t + (coeficientes.B);
dy(t) = diff(y(t));
ynatural = vpa(y(2));
yderivada = vpa(dy(-3));
%[C_1 C_2] = solve(C_1 + C_2 + 1.25==0,- 1.0*C_1 - 1.0*C_2 - 2.4375==0);
solucion = solve([ynatural,yderivada],[C_1,C_2]);
c1sol = solucion.C_1;
c2sol = solucion.C_2;
pause(2);
fprintf('El resultado de evaluar y(t) donde t = 2 es: ');
display(ynatural);
fprintf('El resultado de evaluar y''(t) donde t = -3 es: ');
display(yderivada);
pause(2);
fprintf('Tras resolver las dos ecuaciones resultantes se llega a la conclusión de que no hay solución:\n\n ');
display(c1sol);
display(c2sol);
pause(2);
fprintf(['Por lo tanto, el resultado es el siguiente:\n\n' ...,
'y(t) = 5 * (exp((-2)*t) + t)']);
2 Comments
Torsten
on 28 Jan 2022
Edited: Torsten
on 28 Jan 2022
It doesn't answer your question, but I think
sustyp = ...- 5*(exp(-2*t) + t)
instead of
sustyp = ...-5*exp(-2*t) + t
Maybe now it works to solve for C_1 and C_2 because the two equations that are written above
solucion = ...
don't give a solution for C_1 and C_2 - they are contradictory.
Accepted Answer
Yongjian Feng
on 28 Jan 2022
Edited: Yongjian Feng
on 28 Jan 2022
Ok, the coefficients are the same for both equations. You basically have
A*C_1+B*C_2+C ==0 and A*C_1+B*C2+D ==0. These two straight lines are parallel. So no interception (solution).
print out your ynatural and yderivada, and you will see.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!