این برنامه برای الگوریتم نیوتن-رافسون، برای بدست آوردن ریشه‌ی تابع 

f(x) = 3**x - 1.39

در بازه‌ی

(.5,3)

و دقت محاسبه‌ی جواب 

ep = 10**(-4)

و معیار توقف

abs( c[n] - c[n-1] ) > ep     or    
abs( ( c[n] - c[n-1] ) / c[n] ) > ep     or    
abs( f( c[n] )  > ep

نوشته شده است.

همچنین برای مشتق‌گیری از ماژول Mpmath استفاده شده است.

from mpmath import *
# mpmath Option
mp.dps = 10; mp.pretty = True

#------ Input ----------------
def f(x):
    return 3**x-1.39

d = [0.5, 3.]
ep = 10**(-4)

#------ calc -----------------
c = [0 for i in range(20)]
n = 0
a=d[0];b=d[1]
if f(a)*diff(f,a,2)>0:
    c[0]=a
else:
    c[0]=b
    
n+=1
c[n]=c[n-1]-f(c[n-1])/diff(f,c[n-1])
while(not(abs( c[n] - c[n-1] ) < ep or
          abs( (c[n] - c[n-1] )/c[n])< ep or
          abs( f(c[n])) < ep )):
    n+=1
    c[n]=c[n-1]-f(c[n-1])/diff(f,c[n-1])
print("n\tc[n]\t\tf(c[n])")
[print("{:}\t{:<{width}}\t{:<{width}}".format(i,c[i],f(c[i]),width=15))\
 for i in range(n+1)]

nst = len(str(round(1/mpf(ep))))-1

#------ Print -----------------
print('\nResult ',nstr(c[n],nst))
خروجی
n	c[n]		f(c[n])
0	0.5            	0.3420508075688773
1	0.3202431123   	0.0316568945   
2	0.2999742645   	0.0003498599539
3	0.2997452169   	4.401896159e-8 

Result  0.2997

بررسی روی نمودار

در اینجا چون در خط  چهارم mpmath.dps=10 می‌باشد. دقت انجام محاسبات در مشتق‌گیری تا ۱۰ رقم بعد از اعشار خواهد بود و محدودیتی در این عدد وجود ندارد. اما دقت جواب نهایی ما به خاطر خط دوازدهم تا (۴-)^۱۰ خواهد بود.

برای مثال:

برنامه‌ی زیر عدد نپر تا ۱۰۰۰۰۰۰ رقم اعشار را در فایل چاپ می‌کند.

from mpmath import *
f=open("exp.txt",'w')
mp.dps=1000000
f.write(str(exp(1)))
f.close()

و یا کد زیر

>>> from mpmath import *
>>> mp.dps = 50
>>> print mpf(2) ** mpf('0.5')
1.4142135623730950488016887242096980785696718753769
>>> print 2*pi
6.2831853071795864769252867665590057683943387987502