SUBS function not working properly - R2020a

2 visualizaciones (últimos 30 días)
Diana Sandru
Diana Sandru el 29 de Jul. de 2020
Comentada: Diana Sandru el 29 de Jul. de 2020
Hi :)
I have a really complicated expression for which I am using partial derivatives. Using diff everything works like magic :)
However, when I try to use subs I have problems since it won't substitute corectly and I not able to obtain a final value. You can find below my code. Thank you!
syms X [4 1] ;
syms B [4 1]
syms LW [4 1] ;
syms IW [4 4] ;
f = LW'*tanh(IW*X+B);
D1 = diff(f,X1);
g1 = matlabFunction(D1);
IW1_1n = IWn(1,1);
IW1_2n = IWn(1,2);
IW1_3n = IWn(1,3);
IW1_4n = IWn(1,4);
IW2_1n = IWn(2,1);
IW2_2n = IWn(2,2);
IW2_3n = IWn(2,3);
IW2_4n = IWn(2,4);
IW3_1n = IWn(3,1);
IW3_2n = IWn(3,2);
IW3_3n = IWn(3,3);
IW3_4n = IWn(3,4);
IW4_1n = IWn(4,1);
IW4_2n = IWn(4,2);
IW4_3n = IWn(4,3);
IW4_4n = IWn(4,4);
LW1n = LWn(1,1);
LW2n = LWn(2,1);
LW3n = LWn(3,1);
LW4n = LWn(4,1);
B1n = Bn(1,1);
B2n = Bn(2,1);
B3n = Bn(3,1);
B4n = Bn(4,1);
X1n = 2;
X2n = 1;
X3n = 4;
X4n = 5;
subs(g1,{B1,B2,B3,B4,IW1_1,IW1_2,IW1_3,IW1_4,IW2_1,IW2_2,IW2_3,IW2_4,IW3_1,IW3_2,IW3_3,IW3_4,IW4_1,IW4_2,IW4_3,IW4_4,LW1,LW2,LW3,LW4,X1,X2,X3,X4},{B1n,B2n,B3n,B4n,IW1_1n,IW1_2n,IW1_3n,IW1_4n,IW2_1n,IW2_2n,IW2_3n,IW2_4n,IW3_1n,IW3_2n,IW3_3n,IW3_4n,IW4_1n,IW4_2n,IW4_3n,IW4_4n,LW1n,LW2n,LW3n,LW4n,X1n,X2n,X3n,X4n});
The partial deriative w.r.t X1 is g1:
val =
@(B1,B2,B3,B4,IW1_1,IW1_2,IW1_3,IW1_4,IW2_1,IW2_2,IW2_3,IW2_4,IW3_1,IW3_2,IW3_3,IW3_4,IW4_1,IW4_2,IW4_3,IW4_4,LW1,LW2,LW3,LW4,X1,X2,X3,X4)-IW1_1.*conj(LW1).*(tanh(B1+IW1_1.*X1+IW1_2.*X2+IW1_3.*X3+IW1_4.*X4).^2-1.0)-IW2_1.*conj(LW2).*(tanh(B2+IW2_1.*X1+IW2_2.*X2+IW2_3.*X3+IW2_4.*X4).^2-1.0)-IW3_1.*conj(LW3).*(tanh(B3+IW3_1.*X1+IW3_2.*X2+IW3_3.*X3+IW3_4.*X4).^2-1.0)-IW4_1.*conj(LW4).*(tanh(B4+IW4_1.*X1+IW4_2.*X2+IW4_3.*X3+IW4_4.*X4).^2-1.0)
And I get a sym answer:
val =
(30164863393232222223527442459987*tanh(13183424693662021/4503599627370496)^2)/162259276829213363391578010288128 + (26807362790507965786084996958647*tanh(27839816456922887/4503599627370496)^2)/649037107316853453566312041152512 - (1463215109866443988261242772121*tanh(18240652112712759/4503599627370496)^2)/5070602400912917605986812821504 - (17479489290048798515102214463497*tanh(18112203897295801/9007199254740992)^2)/81129638414606681695789005144064 + 179660632019858363938062023740869/649037107316853453566312041152512
I have no idea why it doesn't compute tanh and I don't know why my variables have those values and what's with those divisions. For example:
Bn = [1.99173113344310
0.726676064746315
0.219999881681849
-1.15370946128863];

Respuesta aceptada

madhan ravi
madhan ravi el 29 de Jul. de 2020
double(val)
%or
vpa(val)

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by