MCPcopy
hub / github.com/keon/algorithms / substitute

Method substitute

algorithms/math/polynomial.py:286–317  ·  view source on GitHub ↗

Evaluate the monomial by substituting values for variables. Args: substitutions: A single value applied to all variables, or a dict mapping variable indices to values. Returns: The evaluated result. Raises: ValueError: If

(
        self,
        substitutions: int | float | Fraction | dict[int, int | float | Fraction],
    )

Source from the content-addressed store, hash-verified

284 return set(sorted(self.variables.keys()))
285
286 def substitute(
287 self,
288 substitutions: int | float | Fraction | dict[int, int | float | Fraction],
289 ) -> Fraction:
290 """Evaluate the monomial by substituting values for variables.
291
292 Args:
293 substitutions: A single value applied to all variables, or a
294 dict mapping variable indices to values.
295
296 Returns:
297 The evaluated result.
298
299 Raises:
300 ValueError: If some variables are not given values.
301 """
302 if isinstance(substitutions, (int, float, Fraction)):
303 substitutions = {
304 v: Monomial._rationalize_if_possible(substitutions)
305 for v in self.all_variables()
306 }
307 else:
308 if not self.all_variables().issubset(set(substitutions.keys())):
309 raise ValueError("Some variables didn't receive their values.")
310 if self.coeff == 0:
311 return Fraction(0, 1)
312 ans = Monomial._rationalize_if_possible(self.coeff)
313 for k in self.variables:
314 ans *= Monomial._rationalize_if_possible(
315 substitutions[k] ** self.variables[k]
316 )
317 return Monomial._rationalize_if_possible(ans)
318
319 def __str__(self) -> str:
320 """Get a string representation of the monomial.

Callers 3

subsMethod · 0.80

Calls 2

all_variablesMethod · 0.95

Tested by 1