kornia.geometry.solvers¶
Module containing various geometrical solvers/optimizers.
Polynomial Solvers¶
- kornia.geometry.solvers.solve_quadratic(coeffs)¶
Solve given quadratic equation.
The function takes the coefficients of quadratic equation and returns the real roots.
\[coeffs[0]x^2 + coeffs[1]x + coeffs[2] = 0\]- Parameters:
coeffs (
Tensor
) – The coefficients of quadratic equation :(B, 3)- Return type:
- Returns:
A tensor of shape (B, 2) containing the real roots to the quadratic equation.
Example
>>> coeffs = torch.tensor([[1., 4., 4.]]) >>> roots = solve_quadratic(coeffs)
Note
In cases where a quadratic polynomial has only one real root, the output will be in the format [real_root, 0]. And for the complex roots should be represented as 0. This is done to maintain a consistent output shape for all cases.
- kornia.geometry.solvers.solve_cubic(coeffs)¶
Solve given cubic equation.
The function takes the coefficients of cubic equation and returns the real roots.
\[coeffs[0]x^3 + coeffs[1]x^2 + coeffs[2]x + coeffs[3] = 0\]- Parameters:
coeffs (
Tensor
) – The coefficients cubic equation : (B, 4)- Return type:
- Returns:
A tensor of shape (B, 3) containing the real roots to the cubic equation.
Example
>>> coeffs = torch.tensor([[32., 3., -11., -6.]]) >>> roots = solve_cubic(coeffs)
Note
In cases where a cubic polynomial has only one or two real roots, the output for the non-real roots should be represented as 0. Thus, the output for a single real root should be in the format [real_root, 0, 0], and for two real roots, it should be [real_root_1, real_root_2, 0].
- kornia.geometry.solvers.multiply_deg_one_poly(a, b)¶
Multiply two polynomials of the first order [@nister2004efficient].
- kornia.geometry.solvers.multiply_deg_two_one_poly(a, b)¶
Multiply two polynomials a and b of degrees two and one [@nister2004efficient].
- Parameters:
- Return type:
- Returns:
a third degree poly for variables, \((x^3, y^3, x^2*y, x*y^2, x^2*z, x^2, y^2*z, y^2, x*y*z, x*y, x*z^2, x*z, x, y*z^2, y*z, y, z^3, z^2, z, 1)\).