code: def find_rational_assignment(constr, assignment, iter=20):
      eps = sympify(1)
  
      for _ in range(iter):
          assign = {
              key: val[0] + val[1] * eps
              for key, val in assignment.items()
          }
          try:
              for cons in constr:
                  assert cons.subs(assign) == True
              return assign
          except AssertionError:
              eps = eps / 2
  
      return None
  
imports: from sympy.core.numbers import Rational, I, oo
  from sympy.core.relational import Eq
  from sympy.core.symbol import symbols
  from sympy.core.singleton import S
  from sympy.matrices.dense import Matrix
  from sympy.matrices.dense import randMatrix
  from sympy.assumptions.ask import Q
  from sympy.logic.boolalg import And
  from sympy.abc import x, y, z
  from sympy.assumptions.cnf import CNF, EncodedCNF
  from sympy.functions.elementary.trigonometric import cos
  from sympy.external import import_module
  from sympy.logic.algorithms.lra_theory import LRASolver, UnhandledInput, LRARational, HANDLE_NEGATION
  from sympy.core.random import random, choice, randint
  from sympy.core.sympify import sympify
  from sympy.ntheory.generate import randprime
  from sympy.core.relational import StrictLessThan, StrictGreaterThan
  import itertools
  from sympy.testing.pytest import raises, XFAIL, skip
label_desc: Use image node_id 3 for calling a global function with example usage: find_rational_assignment(constr, assignment, iter) and returns: None, assign