シンボリック変数に ABS 関数を使用しても実数部と虚数部を分けることができないのはなぜですか?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
以下のようなコードを実行しています。
syms x y real
syms z complex
z=x+i*y;
abs(z);
この結果は (x^2 + y^2)^(1/2) となるはずなのですが、abs(x + y*i) となります。
Akzeptierte Antwort
MathWorks Support Team
am 1 Mär. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 特別な値 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!