シンボリック変数に ABS 関数を使用しても実数部と虚数部を分けることができないのはなぜですか?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
以下のようなコードを実行しています。
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
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))
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur 特別な値 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!