Sym: The second argument must be a vector of symbolic variables

18 次查看(过去 30 天)
I do not understand the error this is my code
clear all; %#ok<CLALL>
clc;
syms w1 w2 r1 r2 vc vR1 vR2 mc mR1 mR2 IgR1 IgR2 t z IB IA x vc M y
eqn1=vR1-vc==0;
eqn2=vR1-vR2==0;
eqn3=w1*r1-w2*r2==0;
eqn4=(IgR1+mR1*(r1^2))*w1*r1+mc*w1*r1*x+(3/2)*mR2*(r2^2)*((w1*r1)/r2)-M*t==0;
eqn5=y/t-vc==0;
eqn6=y-3==0;
eqn7=t-3==0;
eqn8=r1-0.03==0;
eqn9=r2-0.005==0;
eqn10=z-0.18==0;
eqn11=mR1-0.008==0;
eqn12=mR2-0.002==0;
eqn13=(1/2)*mR1*(r1^2)-IgR1==0;
eqn14=x-0.05==0;
eqn15=mc-0.05==0;
sol = solve([eqn1, eqn2, eqn3, eqn4, eqn5, eqn6, eqn7, eqn8, eqn9, eqn10, eqn11, eqn12, eqn13, eqn14, eqn15], [w1, w2, r1, r2, vc, vR1, vR2, mc, mR1, mR2, IgR1, IgR2, t, z, IB, IA, x, vc, M, y]);
w1Sol = sol.w1
w2Sol = sol.w2 %#ok<*NOPTS>
MSol = sol.M
this are the results
Error using sym.getEqnsVars>checkVariables (line
87)
Second argument must be a vector of symbolic
variables.
Error in sym.getEqnsVars (line 54)
checkVariables(vars);
Error in solve>getEqns (line 429)
[eqns, vars] = sym.getEqnsVars(argv{:});
Error in solve (line 226)
[eqns,vars,options] = getEqns(varargin{:});
Error in PruebaFinal (line 19)
sol = solve([eqn1, eqn2, eqn3, eqn4, eqn5, eqn6,
eqn7, eqn8, eqn9, eqn10, eqn11, eqn12, eqn13,
eqn14, eqn15], [w1, w2, r1, r2, vc, vR1, vR2,
mc, mR1, mR2, IgR1, IgR2, t, z, IB, IA, x, vc,
M, y]);
>>

回答(1 个)

Shashank Gupta
Shashank Gupta 2019-12-11
Hi Alejandro,
This error generally arises when a multiple array or a vector of equation is passed in “Solve” function. You can either pass individual equation as separate arguments or you can pass an array or vector of equation, but you cannot do both and not even giving them as a matrix equation supported.
I hope it helps you.

产品


版本

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by