SUBS function not working properly - R2020a

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];

 採用された回答

madhan ravi
madhan ravi 2020 年 7 月 29 日

0 投票

double(val)
%or
vpa(val)

1 件のコメント

Diana Sandru
Diana Sandru 2020 年 7 月 29 日
Life saver! :) Thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeSymbolic Math Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by