symbolic variable not recognized
Show older comments
Hi MATLAB world!
I have a weird problem. I have defined 4 symbolic variables (kL, kR, kTR, kTL) for my code. I use these variables in different matrices and find their determinants with no problem.
I then have defined another variable in which I do a algebraic symbolic expression (by that I mean it includes few multiplications and additions and powers)and all of a sudden it does not recognize these variables. I have a variable lambda in there as well and it has no problem with that.
here is the error I get:
Undefined function or variable 'k'.
Error in Eoperator (line 169)
if I define k as a symbol, then it ruins my calculation but does not solve the problem either, it tells me that TL and TR and L and R are undefined.
What am I supposed to do?
Thank you all for your time and help in advance.
5 Comments
madhan ravi
on 1 Oct 2018
Upload your code.
Stephen23
on 1 Oct 2018
*Mohammad Moeid Elahikahooker's "Answer" moved here and formatted properly:
syms lambda syms L syms wzero syms wL syms phizero syms phiL syms wprimezero syms wdoubleprimezero syms wtripleprimezero
syms kL syms kTL syms kR syms kTR
Czero=sym(zeros(4)); Czero(1,1)=cosh(lambda*L)/2; Czero(1,2)=sinh(lambda*L)/(2*lambda); Czero(1,3)=cosh(lambda*L)/(2*lambda*lambda); Czero(1,4)=sinh(lambda*L)/(2*lambda*lambda*lambda); Czero(2,1)=sinh(lambda*L)/2; Czero(2,2)=cosh(lambda*L)/(2*lambda); Czero(2,3)=sinh(lambda*L)/(2*lambda*lambda); Czero(2,4)=cosh(lambda*L)/(2*lambda*lambda*lambda); Czero(3,1)=cos(lambda*L)/2; Czero(3,2)=sin(lambda*L)/(2*lambda); Czero(3,3)=-1*cos(lambda*L)/(2*lambda*lambda); Czero(3,4)=-1*sin(lambda*L)/(2*lambda*lambda*lambda); Czero(4,1)=-1*sin(lambda*L)/2; Czero(4,2)=cos(lambda*L)/(2*lambda); Czero(4,3)=sin(lambda*L)/(2*lambda*lambda); Czero(4,4)=-1*cos(lambda*L)/(2*lambda*lambda*lambda);
CL=sym(zeros(4)); CL(1,1)=1/2; CL(1,2)=0; CL(1,3)=1/(2*lambda*lambda); CL(1,4)=0; CL(2,1)=0; CL(2,2)=1/(2*lambda); CL(2,3)=0; CL(2,4)=1/(2*lambda*lambda*lambda); CL(3,1)=1/2; CL(3,2)=0; CL(3,3)=-1/(2*lambda*lambda); CL(3,4)=0; CL(4,1)=0; CL(4,2)=1/(2*lambda); CL(4,3)=0; CL(4,4)=-1/(2*lambda*lambda*lambda);
% % % % K_e check
Check2=sym(zeros(4)); Check3=sym(zeros(4)); Check4=sym(zeros(4)); Check5=sym(zeros(4)); Check6=sym(zeros(4));
Check2(:,1)=Czero(:,1); Check2(:,2)=Czero(:,2); Check2(:,3)=-CL(:,1); Check2(:,4)=-CL(:,2); Check3(:,1)=-Czero(:,4); Check3(:,2)=-Czero(:,3); Check3(:,3)=CL(:,4); Check3(:,4)=CL(:,3); Check5=inv(Check3)*Check2; Check6=Check5; Check6(2,:)=-Check5(2,:); Check6(3,:)=-Check5(3,:); Check4=Check6-transpose(Check6) simplify(Check4,'IgnoreAnalyticConstraints',true) % % % % % % % % % % % % % %
BCheck2=sym(zeros(4)); BCheck3=sym(zeros(4)); BCheck4=sym(zeros(4)); BCheck5=sym(zeros(4)); BCheck6=sym(zeros(4));
Bzero=sym(zeros(4)); Bzero(1,1)=-kL*sinh(lambda*L)/(2*lambda*lambda*lambda); Bzero(1,2)=kTL*cosh(lambda*L)/(2*lambda*lambda); Bzero(1,3)=0; Bzero(1,4)=0; Bzero(2,1)=-kL*cosh(lambda*L)/(2*lambda*lambda*lambda); Bzero(2,2)=kTL*sinh(lambda*L)/(2*lambda*lambda); Bzero(2,3)=0; Bzero(2,4)=0; Bzero(3,1)=kL*sin(lambda*L)/(2*lambda*lambda*lambda); Bzero(3,2)=-kTL*cos(lambda*L)/(2*lambda*lambda); Bzero(3,3)=0; Bzero(3,4)=0; Bzero(4,1)=kL*cos(lambda*L)/(2*lambda*lambda*lambda); Bzero(4,2)=kTL*sin(lambda*L)/(2*lambda*lambda); Bzero(4,3)=0; Bzero(4,4)=0;
% % % % % %
BCheck2(:,1)=Czero(:,1)+Bzero(:,1); BCheck2(:,2)=Czero(:,2)+Bzero(:,2); BCheck2(:,3)=-CL(:,1); BCheck2(:,4)=-CL(:,2); BCheck3(:,1)=-Czero(:,4)-Bzero(:,4); BCheck3(:,2)=-Czero(:,3)-Bzero(:,3); BCheck3(:,3)=CL(:,4); BCheck3(:,4)=CL(:,3); BCheck5=inv(BCheck3)*BCheck2 BCheck6=BCheck5; BCheck6(2,:)=-BCheck5(2,:); BCheck6(3,:)=-BCheck5(3,:); BCheck4=BCheck6-transpose(Check6) simplify(BCheck4,'IgnoreAnalyticConstraints',true)
% % % % % % % %
% % Bzero=sym(zeros(4)); % % % % Bzero(1,3)=-kR*sinh(lambda*L)/(2*lambda*lambda*lambda); % % Bzero(1,4)=kTR *cosh(lambda*L)/(2*lambda*lambda); % % % % % % Bzero(2,3)=-kR*cosh(lambda*L)/(2*lambda*lambda*lambda); % % Bzero(2,4)=kTR *sinh(lambda*L)/(2*lambda*lambda); % % % % % % Bzero(3,3)=kR*sin(lambda*L)/(2*lambda*lambda*lambda); % % Bzero(3,4)=-kTR *cos(lambda*L)/(2*lambda*lambda); % % % % % % Bzero(4,3)=kR*cos(lambda*L)/(2*lambda*lambda*lambda); % % Bzero(4,4)=kTR *sin(lambda*L)/(2*lambda*lambda); % % % % Bzero % % % % B2Check2(:,1)=Czero(:,1)+Bzero(:,1); % % B2Check2(:,2)=Czero(:,2)+Bzero(:,2); % % B2Check2(:,3)=-CL(:,1); % % B2Check2(:,4)=-CL(:,2); % % B2Check3(:,1)=-Czero(:,4)-Bzero(:,4); % % B2Check3(:,2)=-Czero(:,3)-Bzero(:,3); % % B2Check3(:,3)=CL(:,4); % % B2Check3(:,4)=CL(:,3); % % B2Check5=inv(B2Check3)*B2Check2 % % B2Check6=B2Check5; % % B2Check6(2,:)=-B2Check5(2,:); % % B2Check6(3,:)=-B2Check5(3,:); % % B2Check4=B2Check6-transpose(Check6) % % simplify(B2Check4,'IgnoreAnalyticConstraints',true) % %
trial=[0 0 0 0; 0 0 0 0; 0 0 -kR 0; 0 0 0 kTR ];
BL=[0,0,0,kTR /(2*lambda^2); 0,0,-kR/(2*lambda^3),0; 0,0,0,-kTR /(2*lambda^2); 0,0,kR/(2*lambda^3),0];
BBCheck=BCheck6+[0 0 0 0; 0 0 0 0; 0 0 kR 0; 0 0 0 kTR ];
det_BBCheck=simplify(det(BBCheck),'IgnoreAnalyticConstraints',true)
syms paper_det
paper_det=((lambda^4)+kL*kTL)*((lambda^4)+kR*kTR )-2*(lambda^2)*((lambda^4)*kTR *kTL-kL*kR)*sinh(lambda)*sin(lambda)...
+(2*lambda^4*(kL*kTR +kR*kTL)-(lambda^4-kL*k*TL)*(lambda^4-kR*kTR ))*cosh(lambda)*cos(lambda)...
-lambda*((lambda^4-kL*kTL)*(lambda^2*kTR +kR)+(lambda^4-kR*kTR )*(lambda^2*kTL+kL))*sin(lambda)*cosh(lambda)...
-lambda*((lambda^4-kL*kTL)*(lambda^2*kTR -kR)+(lambda^4-kR*kTR )*(lambda^2*kTL-kL))*cos(lambda)*sinh(lambda)
"Undefined function or variable 'k'."
Because you don't define any variable k.
"if I define k as a symbol, then it ruins my calculation but does not solve the problem either, it tells me that TL and TR and L and R are undefined."
"What am I supposed to do?"
Don't try to use variables that you have not defined.
It sounds like you expect MATLAB to somehow decompose kTL, etc, into k*TL, or something like that. This is not how symbolic manipulations work. If you want a variable k and a variable TL, then that is what you have to specify.
Mohammad Moeid Elahikahooker
on 1 Oct 2018
Torsten
on 1 Oct 2018
And what's the error message now ?
Accepted Answer
More Answers (0)
Categories
Find more on Number Theory in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!