Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I would like to solve this system of 4 logarithmic equations in Mathematica.

  • a*log(b+d)=20
  • a*log(b*30^c+d)=125
  • a*log(b*180^c+d)=710
  • a*log(b*360^c+d)=1350

I am looking for the values of a, b, c, and d.

Thanks in advance!

share|improve this question

closed as off-topic by Szabolcs, ciao, Yves Klett, gpap, george2079 Mar 26 '14 at 14:58

  • The question does not concern the technical computing software Mathematica by Wolfram Research. Please see the help center to find out about the topics that can be asked here.
If this question can be reworded to fit the rules in the help center, please edit the question.

Is this a question about a mathematics problem or about how to use the software product Mathematica? –  Michael E2 Mar 26 '14 at 0:07

2 Answers 2

There are no solutions as shown by Solve:

{eq1, eq2, eq3, eq4} = {
   a*Log[b + d] == 20,
   a*Log[b*30^c + d] == 125,
   a*Log[b*180^c + d] == 710,
   a*Log[b*360^c + d] == 1350

Solve[{eq1, eq2, eq3, eq4}, {a, b, c, d}]
(* {} *)

To show why there are no solutions over the reals, let's investigate a little further. First let's define our own Solve that won't introduce any arbitrary parameters when taking logarithms.

solve[e__] := Normal[Solve[e] /. _C -> 0, ConditionalExpression]

Now let's eliminate a and c via substitution then use ContourPlot to see where root candidates are for b and d. (After playing around with the plot range, I could only find one apparent intersection.)

Module[{A, C},
  A = First@solve[eq1, a];
  C = First@solve[eq2 /. A, c];
  ContourPlot[Evaluate[{eq3, eq4} /. A /. C], {b, -.01, .01}, {d, -.01 + 1, .01 + 1}, MaxRecursion -> 5]


So it looks like b == 0 and d == 1 are candidates for roots. But subbing into our original system shows these are extraneous roots.

{eq1, eq2, eq3, eq4} /. {b -> 0, d -> 1}
(* {False, False, False, False} *)
share|improve this answer
{eq1, eq2, eq3, eq4} = {a*Log[b + d] == 20, a*Log[b*30^c + d] == 125, 
   a*Log[b*180^c + d] == 710, a*Log[b*360^c + d] == 1350};


FindRoot[{eq1, eq2, eq3, 
  eq4}, {{a, 0.1}, {b, 0.1}, {c, 0.01}, {d, 0.01}}]

(*  {a -> 1.43923, b -> 3115.74, c -> -1.15142, d -> 19.1192}  *)


share|improve this answer
I get a warning, FindRoot::cvmit: Failed to converge to the requested accuracy or precision within 100 iterations. And substituting the values into the equations gives $11.5863 = 20$, $6.32768 = 125$, $4.74367 = 710$, $4.49181 = 1350$. –  Rahul Mar 26 '14 at 9:09
@Rahul Narain I did not. You can try to look for a better starting point and also play with the option Method –  Alexei Boulbitch Mar 26 '14 at 13:56
I'm just curious why you posted an answer that finds a non-solution eight hours after RiemannZeta already proved that there are no solutions. –  Rahul Mar 26 '14 at 19:10
@ Rahul Narain Apologies, I did not check whether or not the results indeed deliver a solution. As to your question, FindRoot is the right tool to solve such a system of equations, which is actually my message. The fact that it does not converge to a solution is a strange fact in itself. Usually such things are to be reported as bug suspects. As to your question about timing, my aim was to help you, and it is not important 8 hours earlier or later. I do not believe that here we look for priorities. –  Alexei Boulbitch Mar 27 '14 at 8:46

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