シンボリック変数に ABS 関数を使用しても実数部と虚数部を分けることができないのはなぜですか?
5 views (last 30 days)
Show older comments
以下のようなコードを実行しています。
syms x y real
syms z complex
z=x+i*y;
abs(z);
この結果は (x^2 + y^2)^(1/2) となるはずなのですが、abs(x + y*i) となります。
Accepted Answer
MathWorks Support Team
on 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))
0 Comments
More Answers (0)
See Also
Categories
Find more on 特別な値 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!