I receive the output "Empty sym: 0-by-1"
조회 수: 3 (최근 30일)
이전 댓글 표시
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
Torsten
2022년 1월 28일
편집: Torsten
2022년 1월 28일
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.
채택된 답변
Yongjian Feng
2022년 1월 28일
편집: Yongjian Feng
2022년 1월 28일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Scope Variables and Generate Names에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!