Stop Simplify e FullSimplify esprimendo termini reali come complessi

Oct 17 2020

Sto lavorando con funzioni reali ma FullSimplifye Simplifyli esprimo come termini complessi. Presumo che ciò sia dovuto al fatto che LeafCountè più piccolo se alcuni termini reali sono espressi come termini complessi.

Stavo cercando ExcludedFormsun'opzione per Simplifyma non sembra averne una per far diventare reali espressioni complesse.

Ecco un esempio su cui sto lavorando:

      rhs = -((2 L Sin[
     t ω] (Cos[α] - Cosh[α] + 
      Sin[α] Sinh[α]) F)/(α (Sin[α] - 
      Sinh[α])));
sol = q[t] /. 
   First@DSolve[{q''[t] + ωn^2 q[t] == 1/Subscript[M, n] rhs, 
      q[0] == 0, q'[0] == 0}, q[t], t];
sol2 = FullSimplify[sol]

Con uscita

   (2 I F L (ωn Sin[t ω] - ω Sin[
     t ωn]) (Sin[(1/2 + I/2) α] - 
   Sinh[(1/2 + I/
       2) α])^2)/(α ωn (-ω + ωn) (\
ω + ωn) (Sin[α] - Sinh[α]) Subscript[M, n]
 )

Nota le I complesse nell'output

Se prendo la parte complessa e lo faccio

ComplexExpand[
  I (Sin[(1/2 + I/2) α] - 
     Sinh[(1/2 + I/2) α])^2 ] // Simplify

Allora ottengo questa vera espressione

2 (Cosh[α/2] Sin[α/2] - Cos[α/2] Sinh[α/2])^2

Tuttavia, se lo faccio ComplexExpandsull'intera espressione

ComplexExpand[sol2]

Ho capito

e ho perso la mia forma semplice.

C'è un'opzione per Simplifye FullSimplifyche sopprime l'uso di forme complesse? Naturalmente se l'espressione fosse complessa bisognerebbe vedere la forma complessa.

Grazie

Risposte

4 chris Oct 16 2020 at 23:46

Puoi scrivere

ComplexExpand /@ sol2 

o

FullSimplify[ComplexExpand /@ sol2, Trig -> False]

quello che ritieni più appropriato per il tuo scopo.