Solve two equations for one variable

조회 수: 1 (최근 30일)
Vitor Eiti Uekawa
Vitor Eiti Uekawa 2023년 7월 18일
댓글: Vitor Eiti Uekawa 2023년 7월 19일
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!

답변 (1개)

Torsten
Torsten 2023년 7월 18일
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
Torsten
Torsten 2023년 7월 19일
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 2023년 7월 19일
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 = 

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by