0
$\begingroup$

I have a system of two equations with the variables T and X that I tried to solve:

Solve[{-(8.314)*T*Log[X] == 8.3*(1400 - T), -(8.314)*T*Log[1 - X] == 8.3*(1200 - T)}, {T, X}]

but I get the error

Solve::svars: Equations may not give solutions for all "solve" variables.

I'm not sure what I'm doing wrong or what else I should do instead.

$\endgroup$
  • $\begingroup$ Do you really have two different constants, 8.3 and 8.314 or are they supposed to be the same? $\endgroup$ – JEP Jan 15 '15 at 23:35
4
$\begingroup$

I'm not sure if this is solvable. However, there appears to be one and only one solution (assuming you want real values for X and T), available by the following kludgy means:

First, solve the individual equations for T:

s1 = Solve[-(8.314)*T*Log[X] == 8.3*(1400 - T), T]
s2 = Solve[-(8.314)*T*Log[1 - X] == 8.3*(1200 - T), T]

giving

{{T -> 11620./(8.3 - 8.314 Log[X])}}
{{T -> 9960./(8.3 - 8.314 Log[1. - 1. X])}}

Then equate the two answers:

Solve[s1[[1, 1, 2]] == s2[[1, 1, 2]], X]

giving a numerical method warning and the answer,

{{X -> 0.434986}}

from which T can be obtained:

s1[[1, 1, 2]] /. X -> 0.4349859661954613`
s2[[1, 1, 2]] /. X -> 0.4349859661954613`

giving

763.423
763.423

Plotting the regions where the equations hold true in the $(X,T)$ plane suggests that this is the only solution. The red curve is the support of the first equations's validity, and the blue curve is the support of the second equation's validity:

ImageAdd @@ (ColorConvert[
     ComplexPlotR2[
      CCompileR2[10 #], {-2 + 10^-6 RandomReal[], 3, 
       0.005}, {-0 + 10^-6 RandomReal[], 6000, 10}], "RGB"] & /@ {1/
    Abs[-8.3` (1400 - y) - 8.314` y Log[x]]^(1/2), -1/
    Abs[-8.3` (1200 - y) - 8.314` y Log[1 - x]]^(1/2)})

producing the following colorful image:

enter image description here

where the following helper functions have been defined:

hue = Compile[{{z, _Complex}}, {(1.0 Arg[-z] + \[Pi])/(2 \[Pi]), 
    Exp[1 - Max[Abs[z], 1]], Min[Abs[z], 1]}, 
   CompilationTarget -> "C", RuntimeAttributes -> {Listable}];
ComplexPlotR2[f_, {x0_, x1_, \[Delta]x_}, {y0_, y1_, \[Delta]y_}] := 
  Image[hue[
     f[#[[All, All, 1]], #[[All, All, 2]]] &@
      Outer[List, Range[x0, x1, \[Delta]x], 
       Range[y0, y1, \[Delta]y]]]\[Transpose], ColorSpace -> Hue, 
   Magnification -> 1];
CCompileR2[expr_] := 
  Compile[{{x, _Real}, {y, _Real}}, Evaluate[expr], 
   CompilationTarget -> "C", RuntimeAttributes -> {Listable}];

There appears to only one intersection, which as mentioned before is at X -> 0.434986, T -> 763.423.

$\endgroup$
1
$\begingroup$
In[1]:= (* YOU NEED TO ADD THE Reals OPTION TO SPECIFY THE DOMAIN *)

In[2]:= Solve[{-(8.314)*T*Log[X] == 8.3*(1400 - T), -(8.314)*T*Log[1 - X] == 8.3*(1200 - T)}, {T, X}, Reals]

During evaluation of In[19]:= Solve::ratnz: Solve was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result.

Out[2]= {{T -> 763.423, X -> 0.434986}}

In[3]:= (* THE ABOVE IS EQUIVALENT TO CONVERTING ALL FLOATING-POINT NUMBERS TO RATIONAL NUMBERS AND USING NSolve AS FOLLOWS: *)

In[4]:= R1 = Rationalize[8.314]; R2 = Rationalize[8.3]; NSolve[{-(R1)*T*Log[X] == R2*(1400 - T), -(R1)*T*Log[1 - X] == R2*(1200 - T)}, {T, X}, Reals]

Out[4]= {{T -> 763.423, X -> 0.434986}}
$\endgroup$
0
$\begingroup$

This is not exactly the answer, maybe someone can improve it.....the output has imaginary components. Minor modifications to the input eqns.

FindRoot[{T*Log[X] - (8.3*T)/8.314 == (-(8.3/8.314))*1400, 
  T*Log[1 - X]*(-((8.3*T)/8.314)) == (-8.3/8.314)*1200}, {{T, 
   500}, {X, 450}}]

OUTPUT: {T -> 231.958 + 105.976 I, X -> -0.0120535 + 0.0141176 I}

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.