Question: Wrong root of sinc expression

Here is another case where an incorrect solution of a non-algebraic expression is returned.

How to make Maple exclude solutions obtained with allsolutions where the expression is not defined?

IMO, allsolutions facilities of Maple should do this automatically. Anything from a mathematical point of view that speaks against an automatic exclusion?

(Are there other commands that provide a correct solution?)

By the way:

solve(sin(x)/x)

does not return a single solution as stated on the solve help page ("In general for transcendental equations, the solve command returns only one solution,...") because solve correctly discards x=0 but does not consider returning x=pi.

> 

restart

> 

expr := sin(x)/x

sin(x)/x

(1)

The above expression is not defined at x = 0

> 

Eval(expr, x = 0)

Eval(sin(x)/x, x = 0)

(2)
> 

value(Eval(sin(x)/x, x = 0))

Error, (in value/Eval) numeric exception: division by zero

 

Roots of the expression with RootOf

> 

sol := allvalues(RootOf(expr))

Pi*_Z1

(3)
> 

indets(sol)

{_Z1}

(4)
> 

about({_Z1}[])

Originally _Z1, renamed _Z1~:
  is assumed to be: integer
 

 
> 

getassumptions({_Z1})

{_Z1::integer}

(5)
> 

type(0, integer)

true

(6)
> 

subs(x = sol, expr) = 0

sin(Pi*_Z1)/(Pi*_Z1) = 0

(7)
> 

is(sin(Pi*_Z1)/(Pi*_Z1) = 0)

true

(8)

The above should be false because expr is not defined for _Z1 = 0.However, this is what automatic simplifcation does behind the scenes with the output (7) 

> 

sin(Pi*_Z1)/(Pi*_Z1) = 0

0 = 0

(9)

For this particular case Maple should have returned a special name expressing nonzero integers, like _NZ .
`ℤ__≠0`or `minus`(integer, {0})or `#msup(mi("ℤ",fontstyle = "normal"),mo("*"))`are common symbols for that
So _Zis incorrect in the solution and automatic simplification does something wrong.
Only substituing everything at once leads to a correct response:

> 

subs(x = sol, _Z1 = 0, expr)

Error, numeric exception: division by zero

 


Solve

> 

solve(expr, x)

> 

x_sol := [solve(expr, x, allsolutions)]

[2*Pi*_Z2, Pi*(2*_Z2+1)]

(10)
> 

indets(x_sol)

{_Z2}

(11)
> 

subs(x = x_sol[1], expr) = 0

(1/2)*sin(2*Pi*_Z2)/(Pi*_Z2) = 0

(12)
> 

is((1/2)*sin(2*Pi*_Z2)/(Pi*_Z2) = 0)

true

(13)
> 

(1/2)*sin(2*Pi*_Z2)/(Pi*_Z2) = 0

0 = 0

(14)
> 

subs(x = x_sol[1], _Z2 = 0, expr) = 0

Error, numeric exception: division by zero

 

Again _Z2 = 0is not a valid solution for the first solution butNULLworks for the second solution

> 

subs(x = x_sol[2], expr) = 0

sin(Pi*(2*_Z2+1))/(Pi*(2*_Z2+1)) = 0

(15)
> 

is(sin(Pi*(2*_Z2+1))/(Pi*(2*_Z2+1)) = 0)

true

(16)
> 

sin(Pi*(2*_Z2+1))/(Pi*(2*_Z2+1)) = 0

0 = 0

(17)

Substituing everything at once works

> 

subs(x = x_sol[2], _Z2 = 0, expr) = 0

sin(Pi)/Pi = 0

(18)
> 

sin(Pi)/Pi = 0

0 = 0

(19)

However, the second solution does not cover all solutions (it misses even multiples of π)

> 

[seq({_Z2}[] = i, i = -2 .. 2)]

[_Z2 = -2, _Z2 = -1, _Z2 = 0, _Z2 = 1, _Z2 = 2]

(20)
> 

seq(subs([_Z2 = -2, _Z2 = -1, _Z2 = 0, _Z2 = 1, _Z2 = 2][i], x_sol[2]), i = 1 .. nops([_Z2 = -2, _Z2 = -1, _Z2 = 0, _Z2 = 1, _Z2 = 2]))

-3*Pi, -Pi, Pi, 3*Pi, 5*Pi

(21)

Related topic: I also think that new users and students should profit from a directly understandable output like this

Maybe adding new convert form is an option.

Download roots_of_sinc.mw

Please Wait...