Re: Re: Mathematica can't win against TigerWoods

*To*: mathgroup at smc.vnet.net*Subject*: [mg19813] Re: [mg19765] Re: [mg19677] Mathematica can't win against TigerWoods*From*: Leszek Sczaniecki <leszek2 at home.com>*Date*: Fri, 17 Sep 1999 01:36:55 -0400*Sender*: owner-wri-mathgroup at wolfram.com

Andrzej Kozlowski wrote: > I think your message is based on a confusion about what computers are and > can do. Everything I suggested in my posting or has been already done or is doable. For me also software/hardware are tools. However, it is bad when one has to spend resources on manipulating the tool instead of doing the work. > They are machines, tools, and not intelligent beings. To use them > usefully you need more intelligence and knowledge not less. Mathematica is > basically a programming language, (in my opinion the best programming > language there is) and not a "Sim-Math" computer game,. It is as powerful as > the person who is using it. The reason why it is so good is not that it will > solve your problems for you but that it does not limit you: you can always > learn more and use it to a greater effect. In my humble opinion the real power of Mathematica is in the integration of the system and typesetting. You take every individual piece such as computer algebra, graphics, numerical engine, functional programming language, etc. and you will find a better tool. I am primarily interested in Mathematica because its notebook is a truly interactive electronic entity unifying features of program and document. It is the best example of literate programming as far. Contrary to your experience, I often felt limited. > As for it being a tool for "the scientific middle class" and "way to weak > for people, who do serious mathematics or theoretical physics", well let me > fist say that I have used it to do computations that lead me to discover > published results in topology. Congratulations! Lucky you! > But in case this is not convincing enough I > will end with the folowing quote from some one who is a bona fide member of > the "scientific aristocracy": > > "Let me say by the way that this LISP started off as a three-hundred lines > of Mathematica. I invented this LISP using Mathematica as my programming > tool; I wrote this LISP interpreter in Mathematica. That way I could play > with my LISP and try it out as the design evolved. Mathematica is the most > powerful programming language that I know. " > (G.J. Chaitin, "The Limits of Mathematics", p. 76). > Sorry, you proved nothing. Leszek Sczaniecki, Ph.D. Theoretical Physicist & Mathematician > > Andrzej Kozlowski > Professor of Mathematics > Toyama International University > JAPAN > http://sigma.tuins.ac.jp > http://eri2.tuins.ac.jp > > ---------- > >From: Leszek Sczaniecki <leszek2 at home.com> To: mathgroup at smc.vnet.net > >To: mathgroup at smc.vnet.net > >Subject: [mg19813] [mg19765] Re: [mg19677] Mathematica can't win against Tiger Woods > >Date: Wed, 15 Sep 1999 03:53:11 -0400 > > > > > > > > > To many times I tried to replicate simple computations done by hand with > > Mathematica and was not able to get results that would justify the use of an > > expensive computer algebra system. Therefore, I understand very well the > > frustration of Prof. MacDonald. Here is a recent example. > > > > Consider a very simple problem from analytical geometry. There an ellipse > > with semi-latus rectum p and eccentricity e. You want to find semi-major > > axis a, and semi-minor axis b. This is clearly a high school problem. > > > > First, let's do it manually. We have p > 0, 0 < e < 1, a > b > 0. > > p = b^2/a > > e = Sqrt[a^2 - b^2]/a} > > from 0. > > > > e = Sqrt[a^2 - b^2]/a} > > => e^2 = (a^2 - b^2)/a^2 > > => b^2/a^2 = 1-e^2 > > p = b^2/a = (b^2/a^2) a = (1-e^2)a > > => a = p/(1-e^2) > > p = b^2/a > > => b^2 = p a = p^2 /(1-e^2) > > => b = p /Sqrt[1-e^2] or b = -p /Sqrt[1-e^2] > > Because b > 0, b = p /Sqrt[1-e^2]. > > > > Here is the result from Mathematica 4.0 > > In[1]:= > > Solve[{p == b^2/a, e == Sqrt[a^2 - b^2]/a}, {a, b}] // InputForm > > > > Out[2]= > > {{b -> (-I*p)/Sqrt[-1 + e^2], a -> -(p/(-1 + e^2))}, > > {b -> (I*p)/Sqrt[-1 + e^2], a -> -(p/(-1 + e^2))}} > > > > There is no way to transfer the solution to the form obtained by hand. The > form > > returned by Solve is purely developer's decision. BTW, Mathematica 3.0 > produces a > > different form of the result. Imagine yourself giving a lecture to high school > > students who are not familiar with complex numbers. How would you explain them > the > > solution? > > > > Luckily, there is a way to get the expected result by using InequalitySolve > (in > > 4.0). > > > > In[3]:= << Algebra`InequalitySolve` > > > > In[4]:= > > InequalitySolve[{p > 0, 0 < e < 1, a > b > 0, p == b^2/a, > > e == Sqrt[a^2 - b^2]/a}, {e, p, a, b}] > > > > Out[4]= > > 0 < e < 1 && p > 0 && a == -(p/(-1 + e^2)) && b == Sqrt[a^2 - a^2*e^2] > > > > In[5]:= > > Simplify[{a, b} //. ToRules[Drop[%, 2]], Take[%, 2]] // InputForm > > > > Out[5]//InputForm= > > {-(p/(-1 + e^2)), p/Sqrt[1 - e^2]} > > > > I am positive, that an average Mathematica user would not figured out to use > > InequalitySolve. Also, notice that human would rather write the first term in > the > > form: > > p/(1 - e^2). > > LeafCount for this form is 11. The Mathematica expression has LeafCount of 10. > > That clearly proves that LeafCount alone is not necessarily the best measure > of > > the simplicity (in human terms) of an expression. > > > > Let's now solve the equations posted by Prof. MacDonald with some human help. > We > > will solve first the equations for velocities (denoted by u[t] and v[t]). BTW, > I > > use InputForms to avoid expressions hard to read in ascii form. > > > > In[1]:= > > solution1 = {u[t], v[t]} /. > > DSolve[{u'[t] == -(a u[t] + b v[t]), > > v'[t] == -g - (a v[t] - b u[t])}, > > {u[t], v[t]}, t] // InputForm > > > > Out[1]//InputForm= > > {{(a^2*C[1]*Cos[b*t] + b^2*C[1]*Cos[b*t] + > > b*E^(a*t)*g*Cos[b*t]^2 - a^2*C[2]*Sin[b*t] - > > b^2*C[2]*Sin[b*t] + b*E^(a*t)*g*Sin[b*t]^2)/ > > ((a - I*b)*(a + I*b)*E^(a*t)), > > -((-(a^2*C[2]*Cos[b*t]) - b^2*C[2]*Cos[b*t] + > > a*E^(a*t)*g*Cos[b*t]^2 - a^2*C[1]*Sin[b*t] - > > b^2*C[1]*Sin[b*t] + a*E^(a*t)*g*Sin[b*t]^2)/ > > ((a - I*b)*(a + I*b)*E^(a*t)))}} > > > > At this point imagine yourself advocating Mathematica to golf players not > familiar > > with the concept of complex numbers.:-) Good luck in explaining what > ComplexExpand > > and TargetFunctions do! > > > > In[2]:= > > FullSimplify[ComplexExpand[solution1, TargetFunctions -> {Im, Re}]] > > > > Out[2]//InputForm= > > {{(b*g)/(a^2 + b^2) + (C[1]*Cos[b*t] - C[2]*Sin[b*t])/ > > E^(a*t), -((a*g)/(a^2 + b^2)) + > > (C[2]*Cos[b*t] + C[1]*Sin[b*t])/E^(a*t)}} > > > > Very good! This is a pretty simple form. Now we have to integrate both terms > and > > add a constant to each of them. > > > > In[3]:= > > solution2 = Integrate[%, t] + {{C[3], C[4]}} // InputForm > > > > Out[3]//InputForm= > > {{(b*g*t)/(a^2 + b^2) + C[3] + > > ((-(a*C[1]) + b*C[2])*Cos[b*t])/((-I*a + b)*(I*a + b)* > > E^(a*t)) + ((b*C[1] + a*C[2])*Sin[b*t])/ > > ((-I*a + b)*(I*a + b)*E^(a*t)), > > -((a*g*t)/(a^2 + b^2)) + C[4] - > > ((b*C[1] + a*C[2])*Cos[b*t])/((a - I*b)*(a + I*b)* > > E^(a*t)) - ((a*C[1] - b*C[2])*Sin[b*t])/ > > ((a - I*b)*(a + I*b)*E^(a*t))}} > > > > Well, we got complex expressions again. Simplify and FullSimplify don't help > much. > > > > In[4]:= > > FullSimplify[ComplexExpand[solution2, TargetFunctions -> {Im, Re}]] > > > > Out[4]//InputForm= > > {{(E^(a*t)*(b*g*t + (a^2 + b^2)*C[3]) + > > (-(a*C[1]) + b*C[2])*Cos[b*t] + (b*C[1] + a*C[2])* > > Sin[b*t])/((a^2 + b^2)*E^(a*t)), > > (E^(a*t)*(-(a*g*t) + (a^2 + b^2)*C[4]) - > > (b*C[1] + a*C[2])*Cos[b*t] + (-(a*C[1]) + b*C[2])* > > Sin[b*t])/((a^2 + b^2)*E^(a*t))}} > > > > Take the first term. > > > > In[5]:= > > LeafCount[(E^(a*t)*(b*g*t + (a^2 + b^2)*C[3]) + (-(a*C[1]) + b*C[2])* > > Cos[b*t] + (b*C[1] + a*C[2])*Sin[b*t])/((a^2 + b^2)*E^(a*t))] > > > > Out[5]= > > 67 > > > > Any person with decent high school education can momentarily simplify this > > expression. > > > > ((b*g*t) + E^(-a*t)((-(a*C[1]) + b*C[2])*Cos[b*t] + (b*C[1] + a*C[2])* > > Sin[b*t]))/((a^2 + b^2)) + C[3] > > > > In[6]:= > > LeafCount[((b*g*t) + > > E^(-a*t)((-(a*C[1]) + b*C[2])*Cos[b*t] + (b*C[1] + a*C[2])* > > Sin[b*t]))/((a^2 + b^2)) + C[3]] > > > > Out[6]= > > 55 > > > > In[7]:= > > ((b*g*t) + E^(-a*t)((-(a*C[1]) + b*C[2])*Cos[b*t] + (b*C[1] + a*C[2])* > > Sin[b*t]))/((a^2 + b^2)) + > > C[3] == (E^(a*t)*(b*g*t + (a^2 + b^2)*C[3]) + (-(a*C[1]) + b*C[2])* > > Cos[b*t] + (b*C[1] + a*C[2])*Sin[b*t])/((a^2 + b^2)* > > E^(a*t)) // FullSimplify > > > > Out[7]= > > True > > > > Additionally, a human can notice that appropriately choosing the constants, > one > > can further simplify the expression. > > > > b*g*t/(a^2 + b^2) + E^(-a*t)(C[1]*Cos[b*t] + C[2]*Sin[b*t]) + C[3] > > > > (LeafCount of 38) or > > > > b*g*t/(a^2 + b^2) + E^(-a*t)*C[1]*Cos[b*t + C[2]] + C[3] > > > > (LeafCount of 32). As you can see, there are simpler solutions than those > produced > > by Mathematica. > > > > 10 - 12 years ago an average mathematics, physics, or engineering student > could > > solve these equations by hand and in time much shorter I needed to get a > solution > > with help of Mathematica for just one variable. Ironically, there is well > known > > exact solution for the differential equation of the form > > > > d x > > --- = A x + B > > d t > > > > in Banach space. From there one can get a solution for the case when A is a > > matrix, and x, B are vectors. > > > > Here is my point. Mathematica can certainly do plenty of problems much better > than > > human. But, it is very, very frustrating, that in trivial cases the system > often > > produces results worse then those delivered by a human. I see this as the > > challenge for Mathematica developers. The system should always produce better > > results than human. Presently, Mathematica is a tool for some kind of > "scientific > > lower middle class". It is way to weak for people, who do serious mathematics > or > > theoretical physics, and way to complicated for pedestrians. If Wolfram > Research > > Inc. truly intents to reach "masses", it has to be more sensitive to their > needs. > > > > --Leszek > > > > Andrzej Kozlowski wrote: > > > >> I don't think of myself as a "computer algebra nerd" and I don't play golf > >> but it seems to me that Mathemaitca does this problem rather well: > >> > >> In[2]:= > >> solution = {y[t], x[t]} /. DSolve[{x''[t] == - (a x'[t] + b y'[t]), > >> y''[t] == - g - (a y'[t] - b x'[t])}, {y[t], x[t]}, t]; > >> > >> In[3]:= > >> Simplify[ComplexExpand[solution, TargetFunctions -> {Im, Re}]] > >> > >> Out[3]= > >> 1 a t 4 3 > >> {{---------- (E (a C[1] + a (-g t + C[3]) + > >> 2 2 2 > >> (a + b ) > >> > >> 2 2 > >> a b (-g t + C[3]) + b (-g + b (b C[1] + C[4])) + > >> > >> 2 > >> a (g + b (2 b C[1] + C[4]))) - > >> > >> 2 2 > >> (a + b ) (a C[3] + b C[4]) Cos[b t] - > >> > >> 2 2 a t > >> (a + b ) (-b C[3] + a C[4]) Sin[b t]) / E , > >> > >> 1 a t 4 3 > >> ---------- (E (a C[2] + b (g t + b C[2] - C[3]) + > >> 2 2 2 > >> (a + b ) > >> > >> 2 3 > >> a b (g t + 2 b C[2] - C[3]) + a C[4] + > >> > >> a b (-2 g + b C[4])) - > >> > >> 2 2 > >> (a + b ) (-b C[3] + a C[4]) Cos[b t] + > >> > >> 2 2 a t > >> (a + b ) (a C[3] + b C[4]) Sin[b t]) / E }} > >> > >> -- > >> Andrzej Kozlowski > >> Toyama International University > >> JAPAN > >> http://sigma.tuins.ac.jp > >> http://eri2.tuins.ac.jp > >> > >> ---------- > >> >From: "William M. MacDonald" <wm2 at umail.umd.edu> > > To: mathgroup at smc.vnet.net > >> >To: mathgroup at smc.vnet.net > >> >Subject: [mg19813] [mg19765] [mg19677] Mathematica can't win against Tiger Woods > >> >Date: Thu, Sep 9, 1999, 3:19 PM > >> > > >> > >> > > >> > I want to use the study of golf drives in teaching theoretical methods. An > >> > approximate pair of equations to get insight assumes that the drag force is > >> > linearly proportional to velocity, instead of the actual quadratic > >> > dependence. The equations for a ball with backspin to provide lift are > >> > x''[t]== - (a x'[t]+b y'[t]), > >> > y''[t]== - g - (a y'[t]- b x'[t]) > >> > Mathematica returns a very complicated and apparently complex expression > in > >> > about 9 seconds on my 250 MHz G3 Powerbook. Simplify takes 1min and 20 > >> > seconds and still returns an apparently complex expression. If I apply > >> > FullSimplify on the solution for say x[t], I get no answer in 6 minutes. > >> > > >> > I have a PC version of another system that I can run on my Powerbook > >> using > >> > Virtual PC. It requires 6 seconds to deliver a lengthy but obviously > real, > >> > no Exp[(a+ I b)t] terms or (a + I b)(a - I b) terms. > >> > > >> > I have never been able to learn why Mathematica is so slow in solving > >> > coupled equations and returns (as USUAL unless you use Simplify) such > >> > inelegant results. Is there any computer algebra NERD out > >> > there who knows the answer. (Don't tell me to use AlgebraicManipulation; > I > >> > am trying to sell Mathematica to users who don't want to spend time > >> > learning > >> > fancy tricks.) > >> > > >> > -- > >> > William M. MacDonald > >> > Professor of Physics > >> > University of Maryland > >> > > >> > Internet: wm2 at umail.umd.edu > >> > > >> > > > > >