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)
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))
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))
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
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
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
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")
def getzk(funcion, xk): zk = xk + g.evaluar(funcion, xk) return zk
def getFZX(funcion, zk, xk): numerador = g.evaluar(funcion, zk) - g.evaluar(funcion, xk) denominador = zk - xk fzx = numerador / abs(denominador) return fzx
def getyk(funcion, xk): zk = getzk(funcion, xk) fxk = g.evaluar(funcion, xk) fzx = getFZX(funcion, zk, xk) yk = xk - (fxk / fzx) return yk
def getzk(funcion, xk): fxk = g.evaluar(funcion, xk) zk = xk - fxk return zk
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
def getC(funcion, x2): return g.evaluar(funcion, x2)