2017-03-26 8 views
1

을 계산합니다. 그러나 파이썬은 1을 반환합니다. 왜 그럴까요?사용 파이썬 내가이 식을 계산하려는 특별한 제한

===== 업데이트 ========

내가 여기서 뭘 원하는 것은 사용자의 입력, 연간 이자율 (APR)에서 실제 연간 속도를 도출하는 것입니다.

def get_EAR(APR, conversion_times_per_year = 1): 
    return (1 + APR/conversion_times) ** conversion_times - 1 

이 표현식을 연속 합성에 적용하고자합니다. 네, if 문을 써서 일반적인 compounding과 정상적인 경우를 구별 할 수 있다는 것을 이해합니다. 그런 다음 상수 e을 직접 사용할 수는 있지만 통합 방법을 선호합니다.

+0

한계 계산이 파이썬에서 구현되지 않았습니다. sympy를 사용하십시오 : http://www.sympy.org/en/index.html – eyllanesc

+0

www.wolframalpha.com을 사용하여 – STF

+0

을 계산하면 한계에 대해 다시 알아야합니다. 값을 직접 대체하는 것과는 다릅니다. '** math.inf '는 무엇을 의미합니까? 정상적인 산술에서는 의미가 없습니다. '1/0' 또는'1/math.inf'와 동일합니다. 한계를 사용하여 해결해야합니다. –

답변

2

한계의 계산이 당신이 sympy

from sympy import * 

x= symbols('x') 
r = limit((1+1/x)**x, x, oo) 
print(r) 

출력 사용할 수 있습니다 기본적으로 파이썬에서 구현되지 않은 : 여기

E 
2

가 esssentially 두 개의 한계 수행하는 이유는

def euler(x): 
    return (1+1/x)**x 

for i in range(10): 
    print(euler(10**i)) 

2.0 
2.5937424601000023 
2.7048138294215285 
2.7169239322355936 
2.7181459268249255 
2.7182682371922975 
2.7182804690957534 
2.7182816941320818 
2.7182817983473577 
2.7182820520115603 
+0

단계별 데모를 보내 주셔서 감사합니다! 정말 도움이됩니다. – Ryan

0
: 파이썬 올바르게 여기

1로 평가

lim x->infty ((lim y->infty (1 + 1/y))^x) 

적절한 제한 나쁨 살지 않는 구현을

여기에는 변수가 없기 때문에 여기에는 한계 계산이 없다고 생각합니다. 여기에는 변수의 다른 값에서 전체 명령문을 계산할 수 있습니다.

파이썬은 계산을 가능한 가장 단순한 방법으로 수행합니다. Pythons 컴파일러는 단순히 1/math.inf을 0으로 설정하고 math.inf의 힘을 1로 계산하고 1으로 계산합니다.

1

당신은 mpmath을 사용할 수 있습니다 (http://mpmath.org/) 패키지 :

>>> import mpmath as mp 
>>> f = lambda x: (1.0 + 1.0/x)**x 
>>> mp.limit(f, mp.inf) 
mpf('2.7182818284590451')