Solve two equations for one variable

2 visualizaciones (últimos 30 días)
Vitor Eiti Uekawa
Vitor Eiti Uekawa el 18 de Jul. de 2023
Comentada: Vitor Eiti Uekawa el 19 de Jul. de 2023
Hello everyone!
I am having problems to solve a simple system of two equations for a single variable. The equations look like:
It is possible to analytically calculate the solution for through the following steps:
  • Isolate in the second equation and replace it in the first equation:
  • Then using the fact that
  • Then, isolating :
  • Finally:
Using MATLAB Symbolic Toolbox, I wrote the following piece of code in order to find the same analytical solution:
syms P_st vdq_st_abs Vabs delta_st Vangle Xg Q_st
eq1 = P_st - vdq_st_abs * Vabs * sin(delta_st - Vangle) / Xg == 0;
eq2 = (Q_st * Xg - Vabs^2)/(Vabs * cos(delta_st - Vangle)) - vdq_st_abs == 0;
eqs = [eq1; eq2];
sol = solve(eqs, delta_st);
Warning: Solutions are parameterized by the symbols: z. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'.
Warning: Solutions are only valid under certain conditions. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'.
disp(sol)
z
However, the output is parameterized, and I do not understand it very well. Could someone explain me this parametrization? Also, why can't MATLAB output the same analytical solution I just mentioned?
Thank you very much in advance!

Respuestas (1)

Torsten
Torsten el 18 de Jul. de 2023
syms P_st vdq_st_abs Vabs delta_st Vangle Xg Q_st real
eq1 = P_st - vdq_st_abs * Vabs * sin(delta_st - Vangle) / Xg == 0;
eq2 = (Q_st * Xg - Vabs^2)/(Vabs * cos(delta_st - Vangle)) == vdq_st_abs;
eqn = lhs(eq1) * lhs(eq2) == 0;
sol = solve(eqn,delta_st,'ReturnConditions',1)
sol = struct with fields:
delta_st: [2×1 sym] parameters: k conditions: [2×1 sym]
sol.delta_st
ans = 
sol.conditions
ans = 
  4 comentarios
Torsten
Torsten el 19 de Jul. de 2023
My guess is this is what you want:
syms P_st vdq_st_abs Vabs delta_st Vangle Xg Q_st real
eq1 = P_st - vdq_st_abs * Vabs * sin(delta_st - Vangle) / Xg == 0;
eq2 = (Q_st * Xg - Vabs^2)/(Vabs * cos(delta_st - Vangle)) == vdq_st_abs;
S = solve([eq1,eq2],[delta_st,vdq_st_abs])
Warning: Solutions are only valid under certain conditions. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'.
S = struct with fields:
delta_st: [2×1 sym] vdq_st_abs: [2×1 sym]
simplify(S.delta_st(1))
ans = 
simplify(S.delta_st(2))
ans = 
Vitor Eiti Uekawa
Vitor Eiti Uekawa el 19 de Jul. de 2023
Thank you very much for your help. I didn't try to test the results with numerical values, but since you already stated it doesn't give the expected solution, it is very likely I don't have enough understanding of my equations. However, I edited the original post to show that the expression I mentioned is indeed a solution for both equations. Maybe there is a calculation mistake, or this is one of the multiple possible solutions?
Of course, if I use the last equation of my step-by-step, MATLAB is able to find the desired solution, but I wonder if this is the only way of finding this solution.
syms P_st vdq_st_abs Vabs delta_st Vangle Xg Q_st real
eq1 = P_st - (Q_st + Vabs^2/Xg)*tan(delta_st - Vangle) == 0;
sol = solve(eq1,delta_st)
sol = 

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by