# Lexicographical Search and Conjugate

I bid you a good day.

I want Mathematica to plug this assumed solution into the left hand side of a differential equation. Then collect terms of powers of $$\alpha$$.

$$\psi (x,y)=\alpha f_1(y)e^{i x}+\alpha ^2 f_2(y)e^{2 i x}$$

$$u=\frac{\partial\psi} {\partial y}$$

$$v=-\frac{\partial\psi} {\partial x}$$

The left hand side of the differential equation is: $$u \frac{\partial u}{\partial x}+v \frac{\partial u}{\partial y}$$

Here is my code that accomplishes this:

    ψ[{x, y}] = y +
(α^1) (f1[y]).Exp[1*I*x] +
(α^2) (f2[y]).Exp[2*I*x] + (α^2) (g2[y]);

u = D[ψ[{x, y}], y];

v = -D[ψ[{x, y}], x];

Collect[Distribute[u D[u, x]] + Distribute[v D[u, y]], α]


This give the result

$$\alpha f_1'(y)(ie^{i x})+\alpha^2 [f_1'(y).(ie^{i x})*f_1'(y).(e^{i x})+f_2'(y)e^{2 i x}-f_1(y)(ie^{i x})*f_1''(y).(e^{i x})]$$

which is the desired result.

I would like to know if Mathematica can lexicographically scan each term and compare the $$e^{m i x}$$ terms? I only posted $$\psi$$ up to the second order so each $$e^{m i x}$$ terms in $$\alpha^2$$ have the same order but when you calculate the third or higher orders, there will be terms that are of the form $$e^{m i x}e^{n i x}$$ where $$m \neq n$$. I want to conjugate the lower order term of $$e^{m i x} and$$e^{n i x}\$.

For example, when calculating the third order terms, one term that arises is $$f_1'(y).(ie^{i x})*f_2'(y).(2ie^{2 i x})$$. I would like to Mathematica to identify that $$f_1'(y).(ie^{i x})$$ is the lower order term and then apply the rule

$$\Re(A)\Re(B)=\Re[\frac12A(B+\bar B)]$$

where $$A=f_2'(y).(2ie^{2 i x})$$ and $$B=f_1'(y).(ie^{i x})$$.

To restate the question: Can Mathematica lexicographically search an expression and compare terms in the expression?

Thank you for any assistance.