Please help! Error using sym/subsindex

I'm working on a project but I keep on getting this error:
>> p
Error using sym/subsindex (line 825)
Invalid indexing or function definition. Indexing must follow MATLAB indexing. Function arguments must be symbolic variables, and
function body must be sym expression.
Error in sym/subsref (line 870)
R_tilde = builtin('subsref',L_tilde,Idx);
Error in p (line 26)
J = jacobian([p_2,p_3,p_4,p_5,q_2,q_3,q_5],[delta_2, delta_3, delta_4, delta_5, V_2, V_3, V_5]);
Whenever I run the following code:
syms delta_2 delta_3 delta_4 delta_5 V_2 V_3 V_5 p_2 p_3 p_4 p_5 q_2 q_3 q_5;
p_2 = 1.05*abs(V_2)*(-cos(delta_2)+ 2*sin(delta_2))+ 3*abs(V_2)^2 + abs(V_2)*abs(V_3)*5.5*sin(delta_2-delta_3) +(1.05*abs(V_2))*(-2*cos(delta_2-delta_4)+4*sin(delta_2-delta_4));
p_3 = abs(V_3)* abs(V_2)*(5.5* sin(delta_3-delta_2));
p_4 = (1.05)*abs(V_2)*(-2*cos(delta_4-delta_2)+ 4*sin(delta_4-delta_2))+3*(abs(1.05))^2 + abs(1.05)*abs(V_5)*(-cos(delta_4-delta_5) + 2*sin(delta_4-delta_5));
p_5 = 1.05*abs(V_5)*(-2*cos(delta_5)+4*sin(delta_5))+ (1.05*abs(V_5)*(-cos(delta_5)+2*sin(delta_5)))+ 3*abs(V_5)^2;
q_2 = (1.05)*abs(V_2)*(-sin(delta_2)-2*cos(delta_2)) + 12.05*abs(V_2)^2 - abs(V_3)*abs(V_2)*(5.5*cos(delta_2-delta_3)) + 1.05*abs(V_2)*(-2*sin(delta_2-delta_4)-4*cos(delta_2-delta_4));
q_3 = -abs(V_3)*abs(V_2)*(5.5*cos(delta_3-delta_2))+5*abs(V_3)^2;
q_5 = 1.05*abs(V_5)*(-2*sin(delta_5)-4*cos(delta_5))+ 1.05*abs(V_5)*(-sin(delta_5-delta_4)-2*cos(delta_5-delta_4))+ 6*abs(V_5)^2;
J = jacobian([p_2,p_3,p_4,p_5,q_2,q_3,q_5],[delta_2, delta_3, delta_4, delta_5, V_2, V_3, V_5]);
% J = jacobian([ (1.05*abs(V_2)*(-cos(delta_2)+ 2*sin(delta_2)))+ 3*abs(V_2)^2 + abs(V_2)*abs(V_3)*5.5*sin(delta_2-delta_3) +(1.05*abs(V_2))*(-2*cos(delta_2-delta_4)+4*sin(delta_2-delta_4)),
% abs(V_3)* abs(V_2)*(5.5* sin(delta_3-delta_2)),
% (1.05)*abs(V_2)*(-2*cos(delta_4-delta_2)+ 4*sin(delta_4-delta_2))+3*(abs(1.05))^2 + abs(1.05)*abs(V_5)*(-cos(delta_4-delta_5) + 2*sin(delta_4-delta_5)),
% 1.05*abs(V_5)*(-2*cos(delta_5)+4*sin(delta_5))+ (1.05*abs(V_5)*(-cos(delta_5)+2*sin(delta_5)))+ 3*abs(V_5)^2,
% (1.05)*abs(V_2)*(-sin(delta_2)-2*cos(delta_2)) + 12.05*abs(V_2)^2 - abs(V_3)*abs(V_2)*(5.5*cos(delta_2-delta_3)) + 1.05*abs(V_2)*(-2*sin(delta_2-delta_4)-4*cos(delta_2-delta_4)),
% -abs(V_3)*abs(V_2)*(5.5*cos(delta_3-delta_2))+5*abs(V_3)^2,
% 1.05*abs(V_5)*(-2*sin(delta_5)-4*cos(delta_5))+ 1.05*abs(V_5)*(-sin(delta_5-delta_4)-2*cos(delta_5-delta_4))+ 6*abs(V_5)^2], [delta_2,delta_3, delta_4, delta_5, V_2, V_3, V_5]);
I tried a lot of different things and I've looked at a lot of different online resources, but none of them seem to do the trick!
I've tried directly inputting the formulas into the jacobian (right now it is commented out) and I've tried having syms with just the deltas and V's.
If anyone could give me any input on how to debug this, I would be so thankful!! I just need a pointer as to where to start!! Thank you.

Respuestas (1)

madhan ravi
madhan ravi el 11 de Dic. de 2018
Editada: madhan ravi el 11 de Dic. de 2018
I didn't get any error while running your code.
The error arises when you index a variable using symbolic variable.
>> syms delta_2 delta_3 delta_4 delta_5 V_2 V_3 V_5 p_2 p_3 p_4 p_5 q_2 q_3 q_5;
p_2 = 1.05*abs(V_2)*(-cos(delta_2)+ 2*sin(delta_2))+ 3*abs(V_2)^2 + abs(V_2)*abs(V_3)*5.5*sin(delta_2-delta_3) +(1.05*abs(V_2))*(-2*cos(delta_2-delta_4)+4*sin(delta_2-delta_4));
p_3 = abs(V_3)* abs(V_2)*(5.5* sin(delta_3-delta_2));
p_4 = (1.05)*abs(V_2)*(-2*cos(delta_4-delta_2)+ 4*sin(delta_4-delta_2))+3*(abs(1.05))^2 + abs(1.05)*abs(V_5)*(-cos(delta_4-delta_5) + 2*sin(delta_4-delta_5));
p_5 = 1.05*abs(V_5)*(-2*cos(delta_5)+4*sin(delta_5))+ (1.05*abs(V_5)*(-cos(delta_5)+2*sin(delta_5)))+ 3*abs(V_5)^2;
q_2 = (1.05)*abs(V_2)*(-sin(delta_2)-2*cos(delta_2)) + 12.05*abs(V_2)^2 - abs(V_3)*abs(V_2)*(5.5*cos(delta_2-delta_3)) + 1.05*abs(V_2)*(-2*sin(delta_2-delta_4)-4*cos(delta_2-delta_4));
q_3 = -abs(V_3)*abs(V_2)*(5.5*cos(delta_3-delta_2))+5*abs(V_3)^2;
q_5 = 1.05*abs(V_5)*(-2*sin(delta_5)-4*cos(delta_5))+ 1.05*abs(V_5)*(-sin(delta_5-delta_4)-2*cos(delta_5-delta_4))+ 6*abs(V_5)^2;
J = jacobian([p_2,p_3,p_4,p_5,q_2,q_3,q_5],[delta_2, delta_3, delta_4, delta_5, V_2, V_3, V_5]);
>> J
J =
[ (21*abs(V_2)*(4*cos(delta_2 - delta_4) + 2*sin(delta_2 - delta_4)))/20 + (21*abs(V_2)*(2*cos(delta_2) + sin(delta_2)))/20 + (11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, -(11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, -(21*abs(V_2)*(4*cos(delta_2 - delta_4) + 2*sin(delta_2 - delta_4)))/20, 0, 6*abs(V_2)*sign(V_2) - (21*sign(V_2)*(cos(delta_2) - 2*sin(delta_2)))/20 - (21*sign(V_2)*(2*cos(delta_2 - delta_4) - 4*sin(delta_2 - delta_4)))/20 + (11*abs(V_3)*sign(V_2)*sin(delta_2 - delta_3))/2, (11*abs(V_2)*sign(V_3)*sin(delta_2 - delta_3))/2, 0]
[ -(11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, (11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, 0, 0, -(11*abs(V_3)*sign(V_2)*sin(delta_2 - delta_3))/2, -(11*abs(V_2)*sign(V_3)*sin(delta_2 - delta_3))/2, 0]
[ -(21*abs(V_2)*(4*cos(delta_2 - delta_4) - 2*sin(delta_2 - delta_4)))/20, 0, (21*abs(V_2)*(4*cos(delta_2 - delta_4) - 2*sin(delta_2 - delta_4)))/20 + (21*abs(V_5)*(2*cos(delta_4 - delta_5) + sin(delta_4 - delta_5)))/20, -(21*abs(V_5)*(2*cos(delta_4 - delta_5) + sin(delta_4 - delta_5)))/20, -(21*sign(V_2)*(2*cos(delta_2 - delta_4) + 4*sin(delta_2 - delta_4)))/20, 0, -(21*sign(V_5)*(cos(delta_4 - delta_5) - 2*sin(delta_4 - delta_5)))/20]
[ 0, 0, 0, (21*abs(V_5)*(2*cos(delta_5) + sin(delta_5)))/20 + (21*abs(V_5)*(4*cos(delta_5) + 2*sin(delta_5)))/20, 0, 0, 6*abs(V_5)*sign(V_5) - (21*sign(V_5)*(cos(delta_5) - 2*sin(delta_5)))/20 - (21*sign(V_5)*(2*cos(delta_5) - 4*sin(delta_5)))/20]
[ (11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2 - (21*abs(V_2)*(cos(delta_2) - 2*sin(delta_2)))/20 - (21*abs(V_2)*(2*cos(delta_2 - delta_4) - 4*sin(delta_2 - delta_4)))/20, -(11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2, (21*abs(V_2)*(2*cos(delta_2 - delta_4) - 4*sin(delta_2 - delta_4)))/20, 0, (241*abs(V_2)*sign(V_2))/10 - (21*sign(V_2)*(2*cos(delta_2) + sin(delta_2)))/20 - (21*sign(V_2)*(4*cos(delta_2 - delta_4) + 2*sin(delta_2 - delta_4)))/20 - (11*abs(V_3)*sign(V_2)*cos(delta_2 - delta_3))/2, -(11*abs(V_2)*sign(V_3)*cos(delta_2 - delta_3))/2, 0]
[ (11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2, -(11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2, 0, 0, -(11*abs(V_3)*sign(V_2)*cos(delta_2 - delta_3))/2, 10*abs(V_3)*sign(V_3) - (11*abs(V_2)*sign(V_3)*cos(delta_2 - delta_3))/2, 0]
[ 0, 0, (21*abs(V_5)*(cos(delta_4 - delta_5) + 2*sin(delta_4 - delta_5)))/20, - (21*abs(V_5)*(cos(delta_4 - delta_5) + 2*sin(delta_4 - delta_5)))/20 - (21*abs(V_5)*(2*cos(delta_5) - 4*sin(delta_5)))/20, 0, 0, 12*abs(V_5)*sign(V_5) - (21*sign(V_5)*(2*cos(delta_4 - delta_5) - sin(delta_4 - delta_5)))/20 - (21*sign(V_5)*(4*cos(delta_5) + 2*sin(delta_5)))/20]
>>

4 comentarios

Hm, thank you! So I reopened matlab and ran the same code and it causes no error, but when I uncomment my next lines, the error seems to occur. Furthermore, when I subsequently comment out those lines again and run, the error still occurs:
delta_matrix = [p_2 + 0.7, p_3 + 0.4, p_4 - 1, p_5 + 0.6, q_2 + 0.2, q_3 + 0.1, q_5 + 0.3];
x_new = [0,0,0,0,1,1,1];
x = [0,0,0,0,1,1,1];
iteration = 0;
% delta_2 delta_3 delta_4 delta_5 V_2 V_3 V_5
while (iteration < 5)
% substitute the values in the Jacobian
temporary_matrix = subs(J,delta_2, x(1));
temporary_matrix = subs(temporary_matrix,delta_3, x(2));
temporary_matrix = subs(temporary_matrix,delta_4, x(3));
temporary_matrix = subs(temporary_matrix,delta_5, x(4));
temporary_matrix = subs(temporary_matrix, V_2, x(5));
temporary_matrix = subs(temporary_matrix, V_3, x(6));
temporary_matrix = subs(temporary_matrix, V_5, x(7));
% now that we have our new jacobian
jacobian = temporary_matrix;
% use it to calculate the new values of x
% x_new = x + inv(temporary_matrix)* delta_matrix;
% next iteration!
iteration = iteration + 1;
end
The code that creates the error is the x_new = x + inv(temportary_matrix...
madhan ravi
madhan ravi el 11 de Dic. de 2018
hey when you ask a question post the full code these are the ones you added up now , attach your script file
lois lee
lois lee el 11 de Dic. de 2018
Sorry about that! Let me try that now:
madhan ravi
madhan ravi el 11 de Dic. de 2018
Remove loop and don’t name a variable jacobian , I didn‘t get any error

Iniciar sesión para comentar.

Preguntada:

el 11 de Dic. de 2018

Comentada:

el 11 de Dic. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by