Voici ma solution sur HP-15C. Ce n’est pas très beau ni très lisible… j’ai essayé de tout faire dans la pile en mode complexe. Il faudrait voir si en utilisant les matrices on peut faire mieux.
Limitation : sur la 15C, l’utilisation du mode complexe impose d’avoir les angles en radians pour les fonctions trigonométriques. Le mode radian est donc forcé au début du programme.
Taille: 126 octets pris dans la mémoire de la 15C: 49 octets pour le programme + 77 octets pour 11 registres (6 registres pour le stockage des résultats + 5 registres pour la partie imaginaire de la pile).
Code : Tout sélectionner
X Y Z T
01 LBL A C B A
02 RAD
03 ENTER C C B A
04 RUP A C C B
05 GSB 0 (b ac°) C B A
06 STO 2 => stockage de b
07 RDN C B A (b ac°)
08 X<>Y B C A (b ac°)
09 GSB 0 (a bc°) A (b ac°) B
10 STO 1 => stockage de a
11 X<>Y A (a bc°) (b ac°) B
12 RUP B A (a bc°) (b ac°)
13 GSB 0 (c ba°) (b ac°) (a bc°) A
14 STO 3 => stockage de c
15 ENTER (c ba°) (c ba°) (b ac°) (a bc°)
16 RDN (c ba°) (a bc°) (b ac°) (c ba°)
17 X<>Y (a bc°) (c ba°) (b ac°) (c ba°)
18 GSB 1 (b° 0) (b ac°) (c ba°) (a bc°)
19 STO 5 => stockage de (CBA)
20 RDN (b ac°) (c ba°) (a bc°) (b° 0)
21 X<>Y (c ba°) (b ac°) (a bc°) (b° 0)
22 RDN (b ac°) (a bc°) (b° 0) (c ba°)
23 GSB 1 (c° 0) (b° 0) (c ba°) (b ac°)
24 STO 6 => stockage de (ACB)
25 RDN (b° 0) (c ba°) (b ac°) (c° 0)
26 RDN (c ba°) (b ac°) (c° 0) (b° 0)
27 PI PI (c ba°) (b ac°) (c° 0)
28 Re<>Im (0 PI) (c ba°) (b ac°) (c° 0)
29 + (c ab°) (b ac°) (c° 0) (c° 0)
30 GSB 1 (a° 0) (c° 0) (c° 0) (c ab°)
31 STO 4 => stockage de (ACB)
32 CF 8
33 RTN
34 LBL 0 A C C B
35 - C-A C B B
36 LASTx A C-A C B
37 RDN C-A C B A
38 ->P (b ac°) C B A
39 RTN
40 LBL 1 (a bc°) (c ba°) (c ba°) (b ac°)
41 - (c-a b°) (c ba°) (b ac°)
42 LASTx (a bc°) (c-a b°) (c ba°) (b ac°)
43 RDN (c-a b°) (c ba°) (b ac°) (a bc°)
44 CLx (0 b°) (c ba°) (b ac°) (a bc°)
45 Re<>Im (b° 0) (c ba°) (b ac°) (a bc°)
46 COS
47 ACOS (b° 0) (c ba°) (b ac°) (a bc°)
48 RTN
9 [ENTER] 5 [f]
5 [ENTER] 7 [f]
2 [ENTER] 4 [f]
Puis [GSB] [A], ou directement [A] en mode User.
Les résultats sont stockés dans les registres 1 à 6 :
RCL 1: a= 4.2426
RCL 2: b= 7.0711
RCL 3: c= 4.4721
RCL 4: (BÂC)= 0.6055
RCL 5: (ABC)= 1.8925
RCL 6: (BCA)= 0.6435
Ca marche pour un angle plat : si A=(1,1), B=(1,3) et C= (1,7) on obtient :
a= 4 - (BÂC)= 0
b= 6 - (ABC)= 3.1416 (Pi)
c= 2 - (BCA)= 0
A la fin du programme le CF 8 désactive le mode complexe et libère les 5 registres de la partie imaginaire de la pile. Ces registres peuvent être réutilisés ultérieurement si besoin.