2017-07-02 2 views
2

J'essaye de faire des calculs symboliques dans Octave en utilisant le paquet symbolique mais je semble échouer avec des problèmes de simplification (pourquoi je veux l'utiliser). Par exemple, cela fonctionne pour des expressions simples mais pour des opérations matricielles plus complexes, il semble que cela échoue. Qu'est-ce qui ne va pas ici:La simplification symbolique dans Octave semble très basique

pkg load symbolic 
syms a b d t 
A = cos(t/2)*exp(i*(a - b/2 - d/2)) 
B = -sin(t/2)*exp(i*(a-b/2+d/2)) 
C = sin(t/2)*exp(i*(a + b/2 - d/2)) 
D = cos(t/2)*exp(i*(a+b/2+d/2)) 
U = [A, B; C, D] 
simplify(expand(conj(U.')*U)) 

J'ai essayé d'utiliser simplement simplifier sans expansion. Cependant, je devrais obtenir la matrice d'itentity mais à la place obtenir une expression - correcte mais pas simplifiée. Y a-t-il un moyen de faire ce travail?

Répondre

1

Au moins dans Matlab, les variables symboliques sont supposées être complexes par défaut. Il semble que vous pouvez exiger que a, b, d et t soient réels. Si oui, vous devez les définir en tant que tels que vos expressions peuvent être simplifiées que vous attendez:

syms a b d t real 

Ensuite, le résultat (au moins dans Matlab R2017a) de simplify sera une matrice d'identité symbolique. Voir la documentation pour syms et/ou sym pour plus d'informations. Vous pouvez également en savoir plus sur les hypothèses pour les variables symboliques: sym/assumptions et sym/assume.