シンボリック変数に ABS 関数を使用しても実数​部と虚数部を分けるこ​とができないのはなぜ​ですか?

5 vues (au cours des 30 derniers jours)
MathWorks Support Team
MathWorks Support Team le 1 Mar 2013
以下のようなコードを実行しています。
syms x y real
syms z complex
z=x+i*y;
abs(z);
この結果は (x^2 + y^2)^(1/2) となるはずなのですが、abs(x + y*i) となります。

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 1 Mar 2013
MATLAB R2012a より REWRITE 関数が導入されました。
syms x y real
z = x + i*y;
a = abs(z);
rewrite(a,'sqrt')
それ以前のリリースに関しましては以下の回避策をご覧ください。
Symbolic Math Toolbox の ABS で実数部と虚数部を分けることはできません。回避策として、MuPAD の RECTFORM を使用することができます。
syms x y real;
z = x + i*y;
feval(symengine, 'rectform', abs(z))
MuPAD は変数が実数であることを制限しない限り、複素数として扱います。そのため、キーワード REAL を使用してください。
別の回避策としましては、SIMPLIFY を使用する方法です。例のコードは以下のとおりです。
syms x y real
z = x + i*y;
abs(z)
simplify(abs(z))

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!