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.

답변 (1개)

madhan ravi
madhan ravi 2018년 12월 11일
편집: madhan ravi 2018년 12월 11일

0 개 추천

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

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 2018년 12월 11일
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 2018년 12월 11일
Sorry about that! Let me try that now:
madhan ravi
madhan ravi 2018년 12월 11일
Remove loop and don’t name a variable jacobian , I didn‘t get any error

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

질문:

2018년 12월 11일

댓글:

2018년 12월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by