私は次のようなコマンドを探しています:
a*b*c -----> +
-a --------> -
a*b -------> +
c*d*e*f*a--> +
ここで、a、b、c、d、e、およびfは、Matlabのシンボリック変数です。
式の最初の符号を返すコマンドはありますか?
私は次のようなコマンドを探しています:
a*b*c -----> +
-a --------> -
a*b -------> +
c*d*e*f*a--> +
ここで、a、b、c、d、e、およびfは、Matlabのシンボリック変数です。
式の最初の符号を返すコマンドはありますか?
Matlab 2013をお持ちの場合は、次のことができます。
>> syms a b c
>> children(a*b*c)
ans =
[ a, b, c]
>> children(-a)
ans =
[ a, -1]
>> children(a*b)
ans =
[ a, b]
>> children(-a*-b)
ans =
[ a, b]
>> children(-a*-b*-c)
ans =
[ a, b, c, -1]
返されたベクトルの最後の要素を確認することで、最初の記号を取得できます。だからそれをテストします。
変数を値に定義すると、結果は次のようになります。
>> c = -4;
>> children(-a*-b*-c)
ans =
[ a, b, 4]
最後の要素でsignを呼び出すと、負の場合は-1、正の場合は1になります。
最後の要素として常に数値が存在するとは限らないことに注意してください。Sign(a)はsign(a)を与えるので、その場合は正であると想定する必要があります。