Re: Why can't I solve this SIMPLE problem?
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1225] Re: Why can't I solve this SIMPLE problem?
- From: bob Hanlon <hanlon at pafosu2.hq.af.mil>
- Date: Fri, 26 May 1995 02:59:56 -0400
In Mathematica if you define R as Sqrt[x^2 + y^2] it will always make that
substitution for R. Consequently, you must avoid the direct assignment.
Try this:
z /. Solve[{R == Sqrt[x^2 + y^2], z == D[Sqrt[x^2 + y^2], x]}, z, y]
this will return x/R. You can also write this as:
temp = Sqrt[x^2 + y^2];
z /. Solve[{R == temp, z == D[temp, x]}, z, y]
Bob Hanlon
---------- Forwarded message ----------
>From: fateman at peoplesparc.cs.berkeley.edu (Richard J Fateman)
>Subject: Re: Why can't I solve this SIMPLE problem?
> Date: 23 May 1995 18:17:36 GMT
In article <1995May23.152242.21102 at tron.bwi.wec.com>,
Mark W. Brown <MWBrown at AOL.com> wrote:
>I've been trying to solve a VERY simple symbolic problem, and
>none of the packages I have can do it. I tried the symbolic
>processor in MATHCAD (a subset of MAPLE, I believe) and the
>shareware program SYMBMATH. Here's the problem:
>
>Given: R = sqrt(x^2 + y^2)
>Find: derivative dR/dx
>Solution Found: dR/dx = x/sqrt(x^2+y^2)
>Desired Solution: dR/dx = x/R
>
>Why don't these programs recognize that the square root in the
>denominator of the solution has been DEFINED as the variable R
>and substitute? I have been unsuccessful using substitute because
>it apparently only works for simple variables (like x) and not
>expressions (like sqrt(x^2 + y^2). This simple problem has become
>my test bench when I evaluate symbolic processors.
............
There are quite a number of system-independent symbolic algebra
systems bugs, and this one is a classic example.
By representing x/sqrt(x^2+y^2) as x* (x^2+y^2)^(-1/2), Maple
and some other systems fail to find any subexpression that
is equal to (x^2+y^2)^(1/2) because there isn't one.
If you try substituting 1/R for 1/sqrt(x^2+y^2), it will likely
work as you expect on almost any system.
For at least 20 years, Macsyma has done this (by in effect substituting
for 1/r...). automatically.
I do not know if one can coax other systems to "do the right thing"
automatically too.
I think it is not too expensive to check for this extra case most of the
time; and I think is unreasonable to require every user to understand
the internal representation of expressions in a computer algebra system
to get it to work.
Apparently other people disagree with me.
Here's macsyma:
(c1) r:sqrt(x^2+y^2)$
(c2) diff(r,x);
x
(d2) -------------
2 2
sqrt(y + x )
(c3) subst('r, sqrt(x^2+y^2),%);
x
(d3) -
r
(c4) inpart(d2,2); /* pick out 2nd factor in internal representation */
1
(d4) -------------
2 2
sqrt(y + x )
(c5) inpart(d4,2);/* pick out exponent [2nd part] of internal rep. */
1
(d5) - -
2
There is another possible problem, and that is that you are using
your system wrong, and not substituting "quote r" for r's value,
and therefore trying to substitute sqrt(x^2+y^2) for sqrt(x^2+y^2)...
so nothing can change.
--
Richard J. Fateman
fateman at cs.berkeley.edu 510 642-1879