Saltar a contenido

Invariantes de ciclo

Ejemplos código

Factorial

Evaluación en el código de la invariante de ciclo del factorial

def factorial(n):
    i = 0
    r = 1
    while i != n:
        print(f"Inv {i} {r} invariante r = {factorial(i)}")
        i += 1
        r = r * i
    return r


def main():
    print(factorial(6))


if __name__ == "__main__":
    main()

Raiz

Evaluación de la invariante de ciclo del caso de la raiz cuadrada con el método de Newton

#include <cmath>
#include <cstdio>
double raiz(double n, double delta) {
  double x = 1;
  while (abs(x * x - n) > delta) {
    printf("Estimacion actual: %f\n", x);
    x = (x + n / x) / 2;
  }
  return x;
}

int main() {
  double n, delta;
  printf("Ingrese un numero: ");
  scanf("%lf", &n);
  printf("Ingrese la precision: ");
  scanf("%lf", &delta);
  double resultado = raiz(n, delta);
  printf("La raiz cuadrada de %f es aproximadamente %f\n", n, resultado);
  // Ejemplo error de truncamiento
  printf("Ejemplo de error de truncamiento:\n");
  double valor = 1.0 / 3.0;
  printf("%f", valor);
  return 0;
}
513