def中没有导数的非线性Newton-Raphson

时间:2019-03-30 15:03:46

标签: python math newtons-method

我需要为此特定问题创建代码 def NewRaph2(f,g,xi,yi,Err,iter):具有2个不同的非线性方程。我知道当代码中存在导数时,如何为Newton-Raphson算法创建代码。但是,我不能把它放在这个的定义中

我的代码中包含派生词,有没有一种方法可以对其进行修改以找到所需的内容? G1和G2是函数,G11和G21是x的局部,而G12和G22是y的局部。

def NewRaph2(G1,G2,G11,G22,G12,G21,xi,yi,iter,Err):

    for i in range(0,iter):
        Jac=G11(xi,yi)*G22(xi,yi)-G21(xi,yi)*G12(xi,yi)
        deltx=(-G1(xi,yi)*G22(xi,yi)+G2(xi,yi)*G12(xi,yi))/Jac
        delty=(-G2(xi,yi)*G11(xi,yi)+G1(xi,yi)*G21(xi,yi))/Jac
        x1=xi+deltx
        y1=yi+delty
        Errx=nt.absolute((x1-xi)/xi)
        Erry=nt.absolute((y1-yi)/yi)
        print('i=%2.0f x = %-7.4f y=%-7.4f Erreur en x =%-7.4f Erreur en y =%7.4f\n'%(i,x1,y1,Errx,Erry)

        if (Errx<Err) and (Erry<Err):
            solx=x1
            soly=y1
            break
        else:
              xi=x1
              yi=y1
    return solx,soly

def f(xx,yy):
    return(4*xx**2-yy**3+28)
def g(xx,yy):
    return(3*xx**3+4*yy**2-145)
def fx(xx,yy):
    return(8*xx)
def fy(xx,yy):
    return(-3*yy**2)
def gx(xx,yy):
    return(9*xx**2)
def gy(xx,yy):
    return(8*yy)

公式如下:

0 个答案:

没有答案