0
|
11726 Views
|
5 Replies
|
4 Total Likes
View groups...
Share
GROUPS:

# Why does Mathematica not solve this simple integral (using units)?

Posted 10 years ago
 I am trying to find the volume of a PFR reactor. For this purpose I have written the rate expression as a function of conversion, and stuffed it in to an integral. I am using the AutomaticUnits package by Jon McLoone.The problem is that when I execute the equation containing the integral, Mathematica starts working, but returns no result. I abort the operation after waiting what I would call suffcient time :-)  My setup is seen below: rA[X_] := k*((1 - X)/(1 + 2* X)*P/(R  T) - (       X/(1 + 2 *X)*P/(R  T)*((2*X)/(1 + 2 *X) *P/(R  T))^2)/       kc) /. {k -> 0.0440238  Minute^-1,      kc -> 0.025  Mol^2* Liter^-2} //. {P -> 10  Atmosphere,     T ->  127  Kelvin + 273.15  Kelvin,     R -> 0.08205746  (Liter*Atmosphere)/(Kelvin*Mol)}   V == FA0*\!$$\*SubsuperscriptBox[\(\[Integral]$$, $$0$$, $$.9*0.512618$$]$$\*SuperscriptBox[\(rA[X]$$, $$-1$$] \[DifferentialD]X\)\)  /. {FA0 ->    2.5  Mol Minute^-1}I have investigated it for a long time now, and have found out the following:If I remove the Units, the expression Evaluates as it is supposed to.If I keep the units, and take the reciprocal of 1/rA   (   so just rA   ), it evaluates. Not with the correct answer of course.I have done the exact same operations once before, but with a much smaller function rA, which worked!I am pretty much on bare ground, and hope someone can help me by pointing out my mistakes. I am afraid the answer is obvious, but I have stared too much at the same two lines of code, and have hence become immune toward finding a solution.I am using Mathematica 9.Best RegardsSimon P.
5 Replies
Sort By:
Posted 10 years ago
 I had not heard of the AutomaticUnits package until your note.  In my version, Mathematica treats all these "units" as undefined symbols. Most conveniently cancel. The AutomaticUnits package I found at    http://library.wolfram.com/infocenter/MathSource/7655/ is three years old.  There could be incompatibilities with Mathematica 9.
Posted 10 years ago
 Hello Ilian,So I assume we can conclude that it is an inexplicability in the AutomaticUnits package?
Posted 10 years ago
 Seems to work fine using the built-in units support in Mathematica 9: In:= rA[X_] := k*((1 - X)/(1 + 2*X)*P/(R T) - (X/(1 + 2*X)*P/(R T)*((2*X)/(1 + 2*X)*P/(R T))^2)/        kc) /. {k -> Quantity[0.0440238, 1/"Minutes"],      kc -> Quantity[0.025, "Moles"^2/"Liters"^2]} //. {P ->      Quantity[10, "Atmospheres"], T -> Quantity[127 + 273.15, "Kelvins"],     R -> Quantity[0.08205746, "Liters" "Atmospheres"/("Kelvins" "Moles")]}  In:= V = Quantity[2.5, "Moles"/"Minutes"] Integrate[1/rA[x], {x, 0, 0.9*0.512618}]  Out= Quantity[0.270514, ("Meters")^3]In:= UnitConvert[V, "Liters"]Out= Quantity[270.514, "Liters"]
Posted 10 years ago
 What do you get as a result?   I hope I decyphered the linear syntax of your second input correctly.  In:= \$Version Out= "9.0 for Mac OS X x86 (64-bit) (January 24, 2013)"  In:= rA[X_] := k*((1 - X)/(1 + 2*X)*        P/(R T) - (X/(1 + 2*X)*P/(R T)*((2*X)/(1 + 2*X)*P/(R T))^2)/        kc) /. {k -> 0.0440238 Minute^-1,     kc -> 0.025 Mol^2*Liter^-2} //. {P -> 10 Atmosphere,    T -> 127 Kelvin + 273.15 Kelvin,    R -> 0.08205746 (Liter*Atmosphere)/(Kelvin*Mol)}In:= V == FA0*Integrate[ 1/rA[x], {x, 0, 0.9*0.512618}] /. {FA0 -> 2.5 Mol Minute^-1}Out= V == 270.514 LiterDo you mean "V=" at the end?
Posted 10 years ago
 Hello Bruce,Thank you for your reply!You have decyphered it all correctly. I am sorry you had to do that. I use the *dintt* method in Mathematica, and so it pasted it oddly. When I remove the units in the function rA and calculate, I get the same result as you in a matter of seconds (270.514 Liters), which is what I would expect. Nevertheless, when I execute the "V==" with units in rA, Mathematica just keeps running, without finding anything. So after waiting a long time, I just abort. Naturally I would like to calculate the expression with units. Add why does it help reciprocating the reciprocal ( 1/rA )?What is funny, we run the same operating system, and the same version of Mathematica. Thus I do not get why it does that. Did you use the AutomaticUnits package when you executed?Best RegardsSimon P.