Use the Euler relation to split a function into complex and imaginary parts
Afficher commentaires plus anciens
Hi, I found a thread considering to split a function into Re and Im, and used it's command:
if true
% code
end
y = C*exp(-(x*(g*i + (- 2*g^2 + E)^(1/2)))/h) + exp((g*i - (- 2*g^2 + E)^(1/2))/h)*exp(-(x*(g*1i - (- 2*g^2 + E)^(1/2)))/h)*(pi - C*exp(-(g*1i + (- 2*g^2 + E)^(1/2))/h))
y = rewrite(y, 'sincos')
Ref = simplify(collect(real(y))) % Real part
Imf = simplify(collect(imag(y))) % Imaginary part
however, the result does not split Im and Re parts:
Ref =
real((cos((524288*x*(67108864*15769878386734594^(1/2) - 5959077882784213))/616503364953199) + sin((524288*x*(67108864*15769878386734594^(1/2) - 5959077882784213))/616503364953199)* 1i)*(cos((35184372088832*15769878386734594^(1/2))/616503364953199 - 3124273025009169465344/616503364953199) - sin((35184372088832*15769878386734594^(1/2))/616503364953199 - 3124273025009169465344/616503364953199)* 1i)*(pi - C*cos((35184372088832*15769878386734594^(1/2))/616503364953199 + 3124273025009169465344/616503364953199) + C*sin((35184372088832*15769878386734594^(1/2))/616503364953199 + 3124273025009169465344/616503364953199)*1i)) + real(C*(cos((524288*x*(67108864*15769878386734594^(1/2) + 5959077882784213))/616503364953199) - sin((524288*x*(67108864*15769878386734594^(1/2) + 5959077882784213))/616503364953199)*1i))
Imf =
imag((cos((524288*x*(67108864*15769878386734594^(1/2) - 5959077882784213))/616503364953199) + sin((524288*x*(67108864*15769878386734594^(1/2) - 5959077882784213))/616503364953199)*1i)*(cos((35184372088832*15769878386734594^(1/2))/616503364953199 - 3124273025009169465344/616503364953199) - sin((35184372088832*15769878386734594^(1/2))/616503364953199 - 3124273025009169465344/616503364953199)*1i)*(pi - C*cos((35184372088832*15769878386734594^(1/2))/616503364953199 + 3124273025009169465344/616503364953199) + C*sin((35184372088832*15769878386734594^(1/2))/616503364953199 + 3124273025009169465344/616503364953199)*1i)) + imag(C*(cos((524288*x*(67108864*15769878386734594^(1/2) + 5959077882784213))/616503364953199) - sin((524288*x*(67108864*15769878386734594^(1/2) + 5959077882784213))/616503364953199)*1i))
Is this a technicallyimpossible case?
Thanks
Réponse acceptée
Plus de réponses (1)
Walter Roberson
le 2 Jan 2018
If you add assumptions to the symbolic variables then MATLAB can potentially do the appropriate separation. In particular you can use
syms x real
to add an assumption of real value to x
1 commentaire
Sergio Manzetti
le 2 Jan 2018
Catégories
En savoir plus sur Formula Manipulation and Simplification dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!