Closed xuchuang7916 closed 1 year ago
Dear @xuchuang7916 ,
What is happening here is that a new eigenvalue is being "born" at A=N+1/2. The corresponding zero of a(lambda) is exactly on the real line and will move up into the upper half-plane if you increase A.
The reflection coefficient b/a therefore has a pole, which is difficult to deal with numerically. Many theoretical results on the inverse NFT simply exclude such cases case because it complicates things. There is often a condition like |a(xi)|>0, which is violated if a(xi) has a real zero. I would not expect it to violate the Parseval relation, though.
Numerically, you can somehow improve things by using b(xi) instead of the reflection coefficient. Try this:
T = [-10, 10];
D = 1024;
kappa = +1;
ep_t = (T(2) - T(1)) / (D - 1);
t = T(1):ep_t:T(2);
q = 2.5j*sech(t);
M = 2*D;
[XI xi] = mex_fnft_nsev_inverse_XI(D, T, M);
[contspec, bound_states, normconsts] = mex_fnft_nsev(q, T, XI, kappa, 'M', M, 'cstype_ab');
b = contspec(M+1:end);
q2 = mex_fnft_nsev_inverse(b, XI, bound_states, normconsts, D, T, kappa, 'cstype_b_of_xi');
plot(t, abs(q), t, abs(q2), '--');
The result is not perfect, but pretty good. Hope this helps.
Best, Sander
Dear Dr. @wahls Wonderful! Thanks a lot for your reply and explanation. I attempted using b_contspec only in iFNFT, but without adding the optional input 'cstype_b_of_xi', so I failed. So only b(xi) is also enough for inverse NFT? We don't necessarily need to use the true contspec, i.e., b(xi)/a(xi)?
Do you mean sth like "an integral of a boundless function is not necessarily boundless" when you say "I would not expect it to violate the Parseval relation, though"? such as $$\int_0^1 1/\sqrt{1-x^2} dx = \pi/2$$ By the way, I would like to ask two more questions.
% [contspec, bound_states, normconsts] = MEX_FNFT_NSEV(q, T, XI, kappa)
%%% Compute the nonlinear Fourier transform %%%
[contspec, bound_states, residuals] = mex_fnft_nsev(q, T, XI, kappa);
Thanks a lot.
Dear @xuchuang7916,
You're welcome. Using b(xi)/a(xi) to represent the continuous spectrum and (lambda_k, b_k/a'_k) to represent the discrete spectrum is one possibility to define the NFT, but one can also define it instead using b(xi) for the continuous spectrum and (lambda_k, b_k) for the discrete spectrum. That is done e.g. in the book of Faddeev and Takhtajan ("Hamiltonian Methods in the Theory of Soliton"). They are equivalent.
Regarding the Parseval relation, yes, this is what I meant. Lemma 2 in our paper https://www.mdpi.com/1099-4300/22/6/639 actually provides a proof for this point in the context of b-modulation. There is also an illustration in Figure 5.
The residues ("residuals" is actually a typo) correspond to using b_k/a'_k for the discrete spectrum. Norming constants correspond to using b_k instead. FNFT supports both cases.
Although mex_fnft_nsev internally computes both b(xi) and a'(xi) when the reflection coefficient is desired, it currently cannot return these values to the user.
Best, Sander
Dear @wahls Thanks a lot for your kind help and detailed explanation! That's an ocean of mathematics haha, I admire these works a lot, and you guys for diving into so much! Let me try to get some engineering intuition from the ocean's surface.
Regards, Chuang
Thanks, and good luck.
Hello Dr. Sander Wahls, I find when the input waveform Asech(t) has amplitude A = 1.5, or 2.5, 3.5..., as shown in the figures below, the continuous spectrum is extremely high, which seems strange as this may violate the Parseval Identity for NFT, and if these FNFT results are fed into iFNFT, it won't return the original waveform (this also happens when A is close to 1.5).
So A = N+1/2 (N = 1, 2, 3,... ) seems to be a critical number? but many references only give the NFT result when A = N and N+|α| (α<1/2) there is a ref. I'm not sure what the NFT result should be theoretically in "A = N+1/2" cases. Could you please have a look at it? Thanks a lot.