10

I was playing with some of the new features, and when I type e.g.

Quantity[10, "ml"] + Quantity[250 - 100, "ml"]

I get

160 mL

as expected.

But when I want to solve the following equation

Solve[Quantity[x, "ml"] Quantity[5, "mol"] + Quantity[250 - x, "ml"] Quantity[7, "mol"] ==
Quantity[250, "ml"] Quantity[6, "mol"], x]

I get

{{x -> 125}}

without any unit. But x actually is in mL. So I'm wondering what I am getting wrong, i.e. why don't I get mL here?

thanks!

Mockup Dungeon
  • 1,854
  • 12
  • 16

1 Answers1

17

x is not in mL..it is just a pure number. Quantity[x, "ml"] is the 'thing' that is in mL.

To get what you want, you need to recast your Solve command as

Solve[x Quantity[5, "mol"] + (Quantity[250, "ml"] - x) Quantity[7, 
     "mol"] == Quantity[250, "ml"] Quantity[6, "mol"], x]

However, the result is a bit strange looking.

{{x -> Quantity[1/8000, ("Meters")^3]}} 

It is, however, correct. Let's convert it to numerical form

Solve[
  x Quantity[5, "mol"] + (Quantity[250, "ml"] - x) Quantity[7, 
      "mol"] == Quantity[250, "ml"] Quantity[6, "mol"], x] // N

gives

{{x -> Quantity[0.000125, ("Meters")^3]}}

Which looks right since 1 mL= 0.000001 m^3

How to force Mathematica to stick to mL, however, is another question.

Of course you could get back to mL by using UnitConvert. For example

UnitConvert[
 x /. Solve[
    x Quantity[5, "mol"] + (Quantity[250, "ml"] - x) Quantity[7, 
        "mol"] == Quantity[250, "ml"] Quantity[6, "mol"], 
    x] [[1]], "Milliliters"]

gives

Quantity[125, "Milliliters"]
WalkingRandomly
  • 4,107
  • 1
  • 20
  • 36