Empty sym: 0-by-1 in solving a system of equations

20 次查看(过去 30 天)
Hi friends
I am trying to solve the following symbolic system of equations:
While are parameters. And I want to find in terms of .
I used the code as below but I faced an error as :
ans =
Empty sym: 0-by-1
My code is:
syms N1 N2 N3 M1 M2 M3 D21 D32 S1 S2 S3
eqn=[M1==1,N1*cos(0)==0, M1*sin(S1)+N1*cos(S1)==N2*cos(0), M2*sin(S2)+N2*cos(S2)==N3*cos(0), M3*sin(S3)+N3*cos(S3)==0, M1*cos(S1)-N1*sin(S1)==M2*D21*cos(0), M2*cos(S2)-N2*sin(S2)==M3*D32*cos(0)];
A=solve(eqn,[M1 M2 M3 N1 N2 N3]);
A.M1
A.M2
A.M3
A.N1
A.N2
A.N3
Could you please guide me how can I solve the problem?
Thanks in advance.

采纳的回答

Walter Roberson
Walter Roberson 2021-11-1
You have 7 equations that you want to solve for 6 unknown. That is not generally possible.
solve the first 6 equations for the 6 unknown and subs() the results into the last eqn. The result will effectively be a constraint between the 5 variables.
You can solve() the constraint for any 1 variable. Solving for either D variable gives a comparatively uncomplicated result. Solving for S1 or S2 give single results that are complicated involving log and complex numbers. Solving for S3 gives two families of complicated solutions similar to the other S ones but also having 2*pi*k as a factor for integer k (so a periodic solution)
But if the D and S are inputs then the overall system has no solution unless the 7th equation happens to hold.
  3 个评论
Walter Roberson
Walter Roberson 2021-11-9
Empty sym does not necessarily mean that there is no solution at all.
If you try to solve for fewer variables than you have equations, it is common for MATLAB to give up, even if there is a solution. For
syms x y
sol = solve([x + y == 5, x + 2*y == 8], x)
sol = Empty sym: 0-by-1
but
syms x y
sol = solve([x + y == 5, x + 2*y == 8], [x, y])
sol = struct with fields:
x: 2 y: 3
The problem was not lack of solutions; MATLAB just does not know how to handle that situation.
There are also situations, especially involving non-linear equations, where MATLAB cannot find a solution when it works to the accuracy of the current number of digits, but there might mathematically be a solution. With the default number of digits being 32 and with MATLAB using 5 extra "guard" digits, it might be the case with a nonlinear function that a particular potential x is gives a result "notably" below a target, and that the next representable number 1 part in 10^37 different, gives a result "notably" below the target. So sometimes you just need to increase the number of digits to get a solution.
(That said, I have worked with some nonlinear equations for which 50000 digits was not enough to come to a conclusion. Cases where symbolic software said "This equation can be rewritten as this other equation that doesn't look much the same at all", and I doubted it and tried to prove or disprove it mathematically, without success...)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by