27 lines
1.2 KiB
Diff
27 lines
1.2 KiB
Diff
Good, now I have all the information I need. The fix should:
|
|
|
|
1. Import `NonSquareMatrixError` from `sympy.matrices.common`
|
|
2. Change `solve_least_squares` to `solve`
|
|
3. Wrap in a try-except to catch `NonSquareMatrixError` and return `None` in that case
|
|
|
|
--- a/sympy/physics/units/util.py
|
|
+++ b/sympy/physics/units/util.py
|
|
@@ -4,6 +4,7 @@ Several methods to simplify expressions involving unit objects.
|
|
|
|
from sympy import Add, Mul, Pow, Tuple, sympify
|
|
from sympy.core.compatibility import reduce, Iterable, ordered
|
|
+from sympy.matrices.common import NonSquareMatrixError
|
|
from sympy.physics.units.dimensions import Dimension
|
|
from sympy.physics.units.prefixes import Prefix
|
|
from sympy.physics.units.quantities import Quantity
|
|
@@ -30,7 +31,10 @@ def _get_conversion_matrix_for_expr(expr, target_units, unit_system):
|
|
|
|
camat = Matrix([[dimension_system.get_dimensional_dependencies(i, mark_dimensionless=True).get(j, 0) for i in target_dims] for j in canon_dim_units])
|
|
exprmat = Matrix([dim_dependencies.get(k, 0) for k in canon_dim_units])
|
|
|
|
- res_exponents = camat.solve_least_squares(exprmat, method=None)
|
|
+ try:
|
|
+ res_exponents = camat.solve(exprmat)
|
|
+ except NonSquareMatrixError:
|
|
+ return None
|
|
return res_exponents
|