2011-07-09 110 views
1

我在数学8尝试下面的代码:如何在Mathematica中正确计算∞/∞?

f[z_] := (5 + 1/(z-a))/(8 + 1/(z-a)) 

f[a] 

和令人惊讶的我有以下警告:

Power::infy: Infinite expression 1/0 encountered. >> 
Power::infy: Infinite expression 1/0 encountered. >> 
Infinity::indet: Indeterminate expression 0 ComplexInfinity encountered. > 

,输出为Indeterminate,我认为这是不正确的,因为很明显它是1

什么奇怪的是,当我改变了代码:

Simplify[(5 + 1/(z-a))/(8 + 1/(z-a))] /. a -> z 

我得到了正确的输出1。这是为什么?我应该如何处理涉及∞/∞的表达式?

+1

在第一块,在执行'F [一个]',不是吗评价'1 /(ZA)''其中Z = A',其评估对'1 /(zz)'='undefined'? – Blender

+0

你看过'Simplify'的输出吗?尝试'FullSimplify';结果是有启发性的。 – rcollyer

回答

5

一般:

Limit[(5 + 1/(z - a))/(8 + 1/(z - a)), z -> a] 
(* 
-> 1 
*) 

编辑

您还可以添加一个Direction选择采取限制从未来的两侧如果有必要:

Limit[(5 + 1/(z - a))/(8 + 1/(z - a)), z -> a, Direction -> 1] 

Limit[(5 + 1/(z - a))/(8 + 1/(z - a)), z -> a, Direction -> -1] 

编辑2

简化[](允许一些数学上不确定的表达来评价)是有据可查的帮助的怪异行为:

enter image description here

+0

我认为这是因为Mathematica并没有将表达式计算为一个整体单元,而是计算它的每一个位,并且如果任何位不是由它自己决定的,它会将Indetermine值上传到它的所有祖先。如果你想让Mathematica对表达式做更多的思考,你必须告诉它你需要什么。 – trVoldemort

+0

@trVoldemort,只在有限的范围内。如果你的分子和分母是分开评估的,即用不同的函数,那么它就是事实。但是,它经常可以预见到这种错误,特别是在处理数值时。试试'f [10^-10 + a]'看看我的意思。但是,它不能在符号计算中执行相同的一组优化,这是'f [a]'的。 – rcollyer

3

不,∞/∞未定义。考虑到图2(∞/∞)=(2∞/∞)=∞/∞,这可能被按摩,使1 = 2,如果∞/∞被定义为1。

+0

http://en.wikipedia.org/wiki/L%27H%C3%B4pital%27s_rule –

+0

注意,洛必达法则只适用于极限。当你从不同的方向接近奇点时,函数完全有可能有两个不同的极限。(简单情况:1/x从0的正侧接近+∞,从负侧到-∞) – duskwuff

+0

我知道有时∞/∞不确定,但在这种特殊情况下,可以看到f [a]最初是'1'。 – trVoldemort

1

无限不一定等于无穷大。因此,你不能断言“无穷大/无穷大= 1”。

+0

对于任何n,Inf/n = Inf,但对于任何n,n/Inf = 0。 – NoBugs

+0

您无法执行无限操作。它没有意义,因为无穷无法存在。它是无形的。你不能将可数和不可数的对象混合在一起,并期待理智的结果。你暗示着* limits *,因为'x - > inf'的'x/n'的* limit *是'inf'。你不能把无穷大看作一个数字,因为它不是一个。 – Blender

2

无限是不是一个数字,所以它的操作是没有意义的,如果你把它当作一个:

infinity + 1 = infinity 
(infinity + 1) - infinity = infinity - infinity 
1 = 0 

除此之外,界限并不总是等于函数的值,这就是数学的暗示当它给你的错误。

1

将无穷大除以无穷大确实是不确定的。采取f(x)/g(x)的限制,其中fg倾向于无穷大可能会产生实际限制(或者可能不会)。在你的情况极限恰好是1.