HP Forums
Arg(fourier_cn(...)) returns different answers - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: HP Prime (/forum-5.html)
+--- Thread: Arg(fourier_cn(...)) returns different answers (/thread-13938.html)



Arg(fourier_cn(...)) returns different answers - rombva - 11-04-2019 12:50 PM

Suppose f(x):=when(x>-Pi and x<0,-1,when(x>=0 and x<Pi,1,0)).

Then Arg(fourier_cn(f(x),x,2*Pi,n,-Pi)) returns different answers accordingly to the assumption for n. With integer assumpton for n Arg(fourier_cn(...)) returns a correct answer, but without any assumption for n it returns the result which is like odd and even indexes swaped while substituting various integer values n.

Is it proper?


RE: Arg(fourier_cn(...)) returns different answers - parisse - 11-05-2019 04:08 PM

fourier_cn now auto-assumes that n is an integer.


RE: Arg(fourier_cn(...)) returns different answers - rombva - 11-06-2019 03:48 AM

(11-05-2019 04:08 PM)parisse Wrote:  fourier_cn now auto-assumes that n is an integer.

That's right. In this case I get 1/2*Pi*sign((-1)^n-1) and subst(arg(1/2*Pi*sign((-1)^n-1)),n=1) returns -1/2*Pi.

But these steps cause the wrong answer:

1. assume(n,integer) returns [DOM_INT]

2. fourier_cn(f(x),x,2*Pi,n,-Pi) returns ((-1)^n*i-i)/(n*Pi)

3. purge(n) returns [DOM_INT]

4. simplify(arg(((-1)^n*i-i)/(n*Pi))) returns 1/2*(n*Pi-2*Pi*floor((n+1)/2)-Pi*sign(n)-Pi*sign(tan(n*Pi/2)))

5. subst(1/2*(n*Pi-2*Pi*floor((n+1)/2)-Pi*sign(n)-Pi*sign(tan(n*Pi/2))),n=1) returns undef and subst(1/2*(n*Pi-2*Pi*floor((n+1)/2)-Pi*sign(n)-Pi*sign(tan(n*Pi/2))),n=2) returns -1/2*Pi and so on.


RE: Arg(fourier_cn(...)) returns different answers - parisse - 11-06-2019 08:44 PM

That's because floor is discontinuous, and as explained above CAS assumes that parameter have generic values. It is therefore important to make assumptions like assume(m,integer); n:=2*m; before calling simplification.


RE: Arg(fourier_cn(...)) returns different answers - rombva - 11-07-2019 03:03 AM

(11-06-2019 08:44 PM)parisse Wrote:  That's because floor is discontinuous, and as explained above CAS assumes that parameter have generic values. It is therefore important to make assumptions like assume(m,integer); n:=2*m; before calling simplification.

Thanks!