Multivariate Limits - New Features in Maple 2019 - Maplesoft

What's New in Maple 2019

Multivariate Limits



The limit command in Maple 2019 has been enhanced for the case of limits of quotients of multivariate functions: 

Many such limits that could not be determined previously are now computable, including all of the following examples. 

Returning ranges instead of undefined in the bivariate case 

> limit(`/`(`*`(x, `*`(y)), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), {x = 0, y = 0})
 

-`/`(1, 2) .. `/`(1, 2)
 

> limit(`/`(`*`(`^`(`+`(x, y), 2)), `*`(`+`(`*`(`^`(x, 2)), `-`(`*`(x, `*`(y))), `*`(`^`(y, 2))))), {x = 0, y = 0})
 

0 .. 4
 

Support for functions containing abs or radicals 

> f := `/`(`*`(`+`(abs(x), abs(y))), `*`(sqrt(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))); -1
 

> limit(f, {x = 0, y = 0})
 

undefined
 

Why? 

> eval(f, x = 0)
 

`/`(`*`(abs(y)), `*`(`^`(`*`(`^`(y, 2)), `/`(1, 2))))
 

> `assuming`([simplify(`/`(`*`(abs(y)), `*`(`^`(`*`(`^`(y, 2)), `/`(1, 2)))))], [real])
 

1
 

> eval(f, x = y)
 

`/`(`*`(abs(y), `*`(`^`(2, `/`(1, 2)))), `*`(`^`(`*`(`^`(y, 2)), `/`(1, 2))))
 

> `assuming`([simplify(`/`(`*`(abs(y), `*`(`^`(2, `/`(1, 2)))), `*`(`^`(`*`(`^`(y, 2)), `/`(1, 2)))))], [real])
 

`*`(`^`(2, `/`(1, 2)))
 

> limit(`/`(`*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))), `*`(sqrt(`+`(`*`(`^`(x, 2)), `-`(`*`(x, `*`(y))), `*`(`^`(y, 2)))))), {x = 0, y = 0})
 

0
 

> limit(`/`(`*`(`+`(abs(x), abs(y))), `*`(`+`(`*`(`^`(x, 4)), `*`(3, `*`(`^`(x, 2), `*`(`^`(y, 2)))), `*`(`^`(y, 4))))), {x = 0, y = 0})
 

infinity
 

Support for functions in more than 2 variables 

> limit(`/`(`*`(`+`(exp(`+`(`*`(`^`(x, 3)), `*`(`^`(y, 3)), `*`(`^`(z, 3)))), `-`(1))), `*`(sin(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))))), {x = 0, y = 0, z = 0})
 

0
 

> f := `/`(`*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))), `*`(`+`(x, y, z))); -1
 

> limit(f, {x = 0, y = 0, z = 0})
 

undefined
 

Why? 

> eval(f, [y = 0, z = 0])
 

x
 

> limit(x, x = 0)
 

0
 

> eval(f, [y = 0, z = `+`(`*`(`^`(x, 4)), `-`(x))])
 

`/`(`*`(`+`(`*`(`^`(x, 2)), `*`(`^`(`+`(`*`(`^`(x, 4)), `-`(x)), 2)))), `*`(`^`(x, 4)))
 

> limit(`/`(`*`(`+`(`*`(`^`(x, 2)), `*`(`^`(`+`(`*`(`^`(x, 4)), `-`(x)), 2)))), `*`(`^`(x, 4))), x = 0)
 

infinity
 

> f := `/`(`*`(`+`(`*`(x, `*`(y, `*`(z))), `*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))), `*`(`+`(sqrt(`+`(`*`(`^`(x, 4)), `*`(2, `*`(`^`(x, 2), `*`(`^`(z, 2)))), `*`(`^`(z, 4)))), `*`(`^`(y, 2)), `-...
 

> limit(f, {x = 0, y = 0, z = 0})
 

1
 

Why? 

> `assuming`([simplify(f)], [real])
 

`/`(`*`(`+`(`*`(x, `*`(y, `*`(z))), `*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(z, 2)), `*`(`^`(y, 2)), `-`(`*`(`^`(abs(y), 3))))))
 

> f := `/`(`*`(sqrt(`+`(`*`(`^`(x, 4)), `*`(`^`(y, 4)), `*`(`^`(z, 4))))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2))))); -1
 

> limit(f, {x = 0, y = 0, z = 0})
 

undefined
 

Why? 

> eval(f, [y = 0, z = 0])
 

`/`(`*`(`^`(`*`(`^`(x, 4)), `/`(1, 2))), `*`(`^`(x, 2)))
 

> `assuming`([simplify(`/`(`*`(`^`(`*`(`^`(x, 4)), `/`(1, 2))), `*`(`^`(x, 2))))], [real])
 

1
 

> eval(f, [y = x, z = x])
 

`+`(`/`(`*`(`/`(1, 3), `*`(`^`(3, `/`(1, 2)), `*`(`^`(`*`(`^`(x, 4)), `/`(1, 2))))), `*`(`^`(x, 2))))
 

> `assuming`([simplify(`+`(`/`(`*`(`/`(1, 3), `*`(`^`(3, `/`(1, 2)), `*`(`^`(`*`(`^`(x, 4)), `/`(1, 2))))), `*`(`^`(x, 2)))))], [real])
 

`+`(`*`(`/`(1, 3), `*`(`^`(3, `/`(1, 2)))))
 

> limit(`/`(`*`(`+`(abs(x), sqrt(`+`(`*`(`^`(y, 2)), `-`(`*`(y, `*`(z))), `*`(`^`(z, 2)))), abs(`*`(x, `*`(y, `*`(z)))))), `*`(`+`(`-`(`*`(`^`(x, 3))), `*`(`^`(y, 3)), `-`(`*`(`^`(z, 3))), `*`(`^`(x, 2)...
 

infinity
 

> f := `/`(`*`(`+`(`*`(x, `*`(y)), `*`(x, `*`(z)), `*`(y, `*`(z)))), `*`(`+`(1, `-`(cos(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))))))); -1
 

> limit(f, {x = 0, y = 0, z = 0})
 

undefined
 

Why? 

> eval(f, [y = 0, z = 0])
 

0
 

> eval(f, [y = x, z = x])
 

`+`(`/`(`*`(3, `*`(`^`(x, 2))), `*`(`+`(1, `-`(cos(`+`(`*`(3, `*`(`^`(x, 2))))))))))
 

> limit(`+`(`/`(`*`(3, `*`(`^`(x, 2))), `*`(`+`(1, `-`(cos(`+`(`*`(3, `*`(`^`(x, 2)))))))))), x = 0)
 

infinity