<<CheminPackLocaux`

Calcul littéral, première version non automatisée

1.	(Simplifier puis) développer l'expression en supposant
	que toutes les variables sont réelles:
	ComplexExpand[Simplify[expr]]
2.	Séparer les parties réelles et imaginaires (puis les simplifier)
3.	Remplacer les expressions de la forme Abs[a + i b] par (Sqrt[(a^2)+(b^2)])

Exemple réalisé "à la main"

1.	On développe l'expression en supposant que toutes les variables sont réelles

z=ComplexExpand[Simplify[(((a+I b-3)(a-1+I))/((c+I d)+1))]]

2.	Les parties réelles et imaginaires sont sélectionnées à la souris puis implifiées

zr1=Simplify[(3/((Abs[1+c+I d])^2))-((4 a)/((Abs[1+c+I d])^2))+((a^2)/((Abs[1+c+I d])^2))-(b/((Abs[1+c+I d])^2))+((3 c)/((Abs[1+c+I d])^2))-((4 a c)/((Abs[1+c+I d])^2))+(((a^2) c)/((Abs[1+c+I d])^2))-((b c)/((Abs[1+c+I d])^2))-((3 d)/((Abs[1+c+I d])^2))+((a d)/((Abs[1+c+I d])^2))-((b d)/((Abs[1+c+I d])^2))+((a b d)/((Abs[1+c+I d])^2))]

zi1=Simplify[-(3/((Abs[1+c+I d])^2))+(a/((Abs[1+c+I d])^2))-(b/((Abs[1+c+I d])^2))+((a b)/((Abs[1+c+I d])^2))-((3 c)/((Abs[1+c+I d])^2))+((a c)/((Abs[1+c+I d])^2))-((b c)/((Abs[1+c+I d])^2))+((a b c)/((Abs[1+c+I d])^2))-((3 d)/((Abs[1+c+I d])^2))+((4 a d)/((Abs[1+c+I d])^2))-(((a^2) d)/((Abs[1+c+I d])^2))+((b d)/((Abs[1+c+I d])^2))]

3.	Les modules sont exprimés avec des racines carrées (correction manuelle)

zr2=(((a^2) (1+c)+3 (1+c-d)-b (1+c+d)+a (-4-4 c+d+b d))/((((1+c))^2)+(d^2)))

zi2=((-(a^2) d+b (-1-c+d)-3 (1+c+d)+a (1+b+c+b c+4 d))/((((1+c))^2)+(d^2)))

Application: calcul du module

zm=(Sqrt[(zr2^2)+(zi2^2)])

Simplify[zm]

Calcul littéral, deuxième version automatisée

Voir package local ComplexLitteral

<<ComplexLitteral`

aide["ComplexLitteral"]

reLitt[(((a+I b-3)(a-1+I))/((c+I d)+1))]

imLitt[(((a+I b-3)(a-1+I))/((c+I d)+1))]

moduleLitt[(((a+I b-3)(a-1+I))/((c+I d)+1))]

argLitt[(((a+I b-3)(a-1+I))/((c+I d)+1))]

Calcul littéral, autre exemple

imLitt[((((x+I y))^2)/(1-(x+I y)))]