In [1]:
import pint as pn

In [2]:
X = pn.interval(1.,2.)

Xを区間型とする。
$X = [1,2]$
$f(X) = X^2 - 2 = 0$をnewton法で解く
$f'(X) = 2X$


In [3]:
for i in range(0,5):
    xs = X.mid()
    Xnew = xs - (xs**2 - 2) / (2 * X)
    X = Xnew

In [4]:
X


Out[4]:
[1.414213562373095,1.4142135623730951]

フォーマット整えると


In [6]:
Xsup = format(X.sup,'.64f')
Xinf = format(X.inf,'.64f')

In [9]:
print(str(Xsup) + "\n" + str(Xinf))


1.4142135623730951454746218587388284504413604736328125000000000000
1.4142135623730949234300169337075203657150268554687500000000000000

初期値区間は真値を含む必要がある。