コード例 #1
0
def getyk(funcion, xk):

    zk = getzk(funcion, xk)
    numerador = pow(g.evaluar(funcion, xk), 2)
    denominador = g.evaluar(funcion, zk) - g.evaluar(funcion, xk)
    yk = xk - (numerador / (denominador))
    return abs(yk)
コード例 #2
0
def getB(funcion, x0, x1, x2):
    numerador = pow(
        (x0 - x2),
        2) * (g.evaluar(funcion, x1) - g.evaluar(funcion, x2)) - pow(
            (x1 - x2), 2) * (g.evaluar(funcion, x0) - g.evaluar(funcion, x2))
    denominador = int((x0 - x2) * (x1 - x2) * (x0 - x1))
    if (abs(denominador) == 0):
        return True
    else:
        return (float(numerador) / float(denominador))
コード例 #3
0
def getA(funcion, x0, x1, x2):
    numerador = (x1 - x2) * (g.evaluar(funcion, x0) -
                             g.evaluar(funcion, x2)) - (x0 - x2) * (g.evaluar(
                                 funcion, x1) - g.evaluar(funcion, x2))
    denominador = int((x0 - x2) * (x1 - x2) * (x0 - x1))
    print("Prueba: " + str(denominador))
    if (abs(denominador) == 0):
        return True
    else:
        return (float(numerador) / float(denominador))
コード例 #4
0
def getxk(funcion, x):
    a = 1
    a1 = 1
    a2 = 1
    b1 = 1
    b2 = 1
    yk = getyk(funcion, x, a)
    fx = g.evaluar(funcion, x)
    fy = g.evaluar(funcion, yk)
    fdx = g.evaluar(g.calDerivada(funcion), x)
    operando1 = fx / abs((a1 * fx) + (a2 * fy))
    operando2 = ((b1 * fx) + (b2 * fy)) / abs(fx)
    xk = yk - (operando1 + operando2) * (fy / abs(fdx))
    return xk
コード例 #5
0
def getXk(funcion, xk):
    zk = getzk(funcion, xk)
    yk = getyk(funcion, xk)
    numerador = g.evaluar(funcion, yk)
    denominador = getFZX(funcion, zk, xk)
    xk = yk - (numerador / denominador)
    return xk
コード例 #6
0
def getxk(funcion, x):
    a = 1
    b = 1
    c = 1
    d = 0
    try:
        yk = getyk(funcion, x)
        zk = getzk(funcion, x)
        operando1 = (a * g.evaluar(funcion, yk) -
                     b * g.evaluar(funcion, zk)) / abs(yk - zk)
        operando2 = (c * g.evaluar(funcion, yk) -
                     (d * g.evaluar(funcion, x))) / abs(yk - x)
        numerador = g.evaluar(funcion, yk)
        denominador = operando1 + operando2
        xk = yk - (numerador / abs(denominador))
        return xk
    except:
        return True
コード例 #7
0
def puntofijo(funcion, funciong, x0, tol):
    """Resuelve una ecuación no lineal mediante el método del Punto Fijo.

    Devuelve el valor de la raíz más aproximada según la tolerancia dada
    y el valor inicial especificado

    Parámetros:
    funcion -- Funcion dependiente de X, a cálcular su raíz
    funciong -- Es el parametro funcion, despejada
    x0      -- Valor inical dado a resolver
    tol     -- Tolerancia miníma aceptada para encontrar la raíz
   
    Probado con: puntofijo("(sin(x)-x)","(sin(x))",2,0.001)
    """
    xk = x0
    if ((abs(g.evaluar(g.calDerivada(funciong), xk))) < 1):
        while (abs(g.evaluar(funcion, xk)) > tol):
            xk = g.evaluar(funciong, xk)
        return xk
    else:
        print("El metodo no converge con la funcion g(x) dada")
コード例 #8
0
def getzk(funcion, xk):
    zk = xk + g.evaluar(funcion, xk)
    return zk
コード例 #9
0
def getFZX(funcion, zk, xk):
    numerador = g.evaluar(funcion, zk) - g.evaluar(funcion, xk)
    denominador = zk - xk
    fzx = numerador / abs(denominador)
    return fzx
コード例 #10
0
def getyk(funcion, xk):
    zk = getzk(funcion, xk)
    fxk = g.evaluar(funcion, xk)
    fzx = getFZX(funcion, zk, xk)
    yk = xk - (fxk / fzx)
    return yk
コード例 #11
0
def getzk(funcion, xk):
    fxk = g.evaluar(funcion, xk)
    zk = xk - fxk
    return zk
コード例 #12
0
def getyk(funcion, xk, a):
    numerador = g.evaluar(funcion, xk)
    denominador = g.evaluar(g.calDerivada(funcion), xk)
    yk = xk - a * (numerador / abs(denominador))
    return yk
コード例 #13
0
def getC(funcion, x2):
    return g.evaluar(funcion, x2)