# [Maxima] Trouble in Solving Equation

Rupert Swarbrick rswarbrick at gmail.com
Sat Mar 31 05:00:29 CDT 2012

```Lorenzo Isella <lorenzo.isella at gmail.com> writes:
> Dear All,
> I am not very much into Maxima, but I am using it to do some symbolic manipulations.
> Please have a look at the small snippet below
>
> assume (N>1000);
> assume (df>1);
> assume (b<0);
> assume (kf>1);
> assume (a>0);
> Rg:(N/kf)^(1/df);
> Rm:0.512*(1-1/log(2*N))*Rg+0.72*N^0.413;
> Req:N^(1/3);
>
> phi:N/Rgeo^3;
> Rm/Rgeo: a*Rg/Rgeo+b;
> myeq: Rm/Rgeo = c*Rg/Rgeo+d;
>
> solve(myeq, Rgeo);
>
> but then maxima does not return the solution for the equation which, to be honest, does not look so terrible.
> Am I making some mistake?
> Any suggestion is welcome.
> Many thanks
>
> Lorenzo

Your problem arises because of the

> Rm/Rgeo: a*Rg/Rgeo+b;

line. I'm not quite sure what Maxima tries to do here: I think it allows
assignment to non-atoms so that code like this works:

(%i20) [a,b] : [3,4];
(%o20)                              [3, 4]
(%i21) a; b;
(%o21)                                 3
(%o22)                                 4

But then code like this is strange:

(%i24) a/b : 3/4;
(%o24)                                 4
(%i25) a; b;
(%o25)                                 3
3
(%o26)                                 -
4

Maybe a Maxima guru can explain what's going on here and why anything
but MLIST is allowed as the top-level operator for the left hand value
of an assignment?

Anyway, to solve the problem you were having, just insert the value you
were giving Rm/Rgeo on the next line:

(%i1) assume (N>1000)\$ assume (df>1)\$ assume (b<0)\$ assume (kf>1)\$ assume (a>0)\$

(%i6) Rg:(N/kf)^(1/df);
1/df
N
(%o6)                               ------
1/df
kf
(%i7) Rm:0.512*(1-1/log(2*N))*Rg+0.72*N^0.413;
1/df         1
0.512 N     (1 - --------)
log(2 N)          0.413
(%o7)              -------------------------- + 0.72 N
1/df
kf
(%i8) Req:N^(1/3);
1/3
(%o8)                                N
(%i9) phi:N/Rgeo^3;
N
(%o9)                                -----
3
Rgeo
(%i10) myeq: a*Rg/Rgeo+b = c*Rg/Rgeo+d;
1/df              1/df
a N               c N
(%o10)                 ----------- + b = ----------- + d
1/df              1/df
kf     Rgeo       kf     Rgeo
(%i11) solve(myeq, Rgeo);
1/df
(c - a) N
(%o11)                     [Rgeo = - --------------]
1/df
(d - b) kf