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...