حالت خاص: روش نیوتن برای دو معادله و دو مجهول

به عنوان مثال در اینجا دو معادله‌ی زیر را داریم.

f(x, y) = x**2 + 2*x + y**2 - 8
g(x, y) = x**2 - 2*x*y - 4

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

ep = 10**(-6)

نقطه‌ی جواب با شروع از نقطه‌ی

x0 = 2 ; y0 = 4

معیار توقف

abs( yn[n] - yn[n-1] ) > ep
 می‌باشد. 
مانند قبل، برای مشتق‌گیری جزئی از ماژول Mpmath استفاده شده است.
from mpmath import *
# mpmath Option
mp.dps = 8; mp.pretty = True

#------ Input ----------------
def f(x,y):
    return x**2 + 2*x + y**2 - 8
def g(x,y):
    return x**2 - 2*x*y - 4
ep = 10**(-6)
x0 = 2
y0 = 4

#------ calc -----------------

def fx(x,y):
    return diff(f, (x, y), (1,0))
def fy(x,y):
    return diff(f, (x, y), (0,1))

def gx(x,y):
    return diff(g, (x, y), (1,0))
def gy(x,y):
    return diff(g, (x, y), (0,1))

def h0(x,y):
    return( g(x,y) * fy(x,y) - f(x,y) * gy(x,y) ) / \
          ( gy(x,y) * fx(x,y) - fy(x,y) * gx(x,y) )
def k0(x,y):
    return( g(x,y) * fx(x,y) - f(x,y) * gx(x,y) ) / \
          (-gy(x,y) * fx(x,y) + fy(x,y) * gx(x,y) )
    
xn=[x0]+[0 for i in range(20)]
yn=[y0]+[0 for i in range(20)]

xn[1] = xn[0] + h0(xn[0],yn[0])
yn[1] = yn[0] + k0(xn[0],yn[0])

n=1;
while ( abs( yn[n] - yn[n-1] ) > ep ):
    n+=1
    xn[n] = xn[n-1] + h0(xn[n-1],yn[n-1])
    yn[n] = yn[n-1] + k0(xn[n-1],yn[n-1])
    
print("n\tx[n]\t\t\ty[n]")
[print("{:}\t{:<{width}}\t{:<{width}}".format(i,xn[i],yn[i],width=16)) \
 for i in range(0,n+1)]

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

#------ Print -----------------
print('\nResult (x, y) = ({:}, {:})'.format(nstr(xn[n],nst),nstr(yn[n],nst)))
خروجی
n	x[n]			y[n]
0	2               	4               
1	-6.0            	8.0             
2	-2.6829268      	5.0731707       
3	-1.221335       	3.6293203       
4	-0.70455505     	3.0793286       
5	-0.61300634     	2.978065        
6	-0.60986169     	2.9745276       
7	-0.60985793     	2.9745234       
8	-0.60985793     	2.9745234       

Result (x, y) = (-0.609858, 2.97452)
بررسی روی نمودار
همانطور که در این الگوریتم و الگوریتم نیوتن-رافسون دیدید،

همواره دقت محاسبات باید بیشتر از دقت جواب نهایی باشد.