유리수의 자연 로그를 임의의 정밀도 이상의 정밀도로 유리수로 근사
6516 단어 수치 계산
고등학교 수학 3까지의 지식이 있으면 이해 및 구현이 용이하기 때문에, 투고하겠습니다.
입력: 음이 아닌 유리수 m(!=1) & 정밀도 p (P>0)
목표: |ln(m)-A|
방법:
다음 두 가지 명제가 입증됩니다. 단, m>1
(i)
(ii)
(i)는 n에 관한 귀납법,
(ii)는 0<=t<=x<=(m-1)/(m+1)이라는 부등식을 이용하면 됩니다.
(i), (ii)에서,
를 얻을 수 있으므로, (우변)
m<1인 경우는 ㏑(1/m)의 근사값을 구하여 -㏑(1/m)을 출력합니다.
아래, 파이썬 코드
Python
import numpy as np
n=0.03 #input
m=n if n>=1 else 1/n
#print(m)
p=0.0001 #input
def error(m,n):
denom=2*m*(2*n+1)*(m+1)**(2*n-1)
return ((m+1)**2)*((m-1)**(2*n-1))/denom
def ap_A(n,m):
s=0
for k in range(1,n+1):
r=((m-1)/(m+1))**(2*k-1)
s+=r/(2*k-1)
#print(s)
return 2*s
def n_finder(m,p):
n=1
while error(m,n)>p:
n+=1
#print(n,error(m,n))
return n
ap=ap_A(n_finder(m,p),m)
if n<1: ap=-ap
print("An approximate value A s.t. |ln(n)-A|<p is ", ap) # output of result
print(abs(np.log(n)-ap)<p) # check
Reference
이 문제에 관하여(유리수의 자연 로그를 임의의 정밀도 이상의 정밀도로 유리수로 근사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TatsukiF/items/2843f58f4304ec76828e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)