RE: RE: Mathematica for High School Students
- To: mathgroup at smc.vnet.net
- Subject: [mg24191] RE: [mg24127] RE: Mathematica for High School Students
- From: "David Park" <djmp at earthlink.net>
- Date: Wed, 28 Jun 2000 22:51:11 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
> -----Original Message----- > From: Ersek, Ted R [mailto:ErsekTR at navair.navy.mil] To: mathgroup at smc.vnet.net > One of the notebooks Dave Park provides uses Map and pure functions to > manipulate equations step-by-step. This sort of thing equation > manipulation > is much easier to follow once a package by Roman Maeder is > loaded. Hence we > don't need Map and pure functions for this application. Download > the package > from: > > http://www.mathsource.com/Content/Enhancements/Algebraic/0209-124 > > After down-loading the package I can do the following: > > > In[1]:= > <<EqualThread.m > > > In[2]:= > 3x+4y/b==6(x-y); > > > In[3]:= > %-3x > > Out[3]= > (4*y)/b == -3*x + 6*(x - y) > > > In[4]:= > %*b/4 > > Out[4]= > y == (b*(-3*x + 6*(x - y)))/4 > > > In[5]:= > Factor[Map[Expand,%]] > > Out[5]= > y == (3*b*(x - 2*y))/4 > > > If Expand has the Listable attribute (and it normally doesn't) Map isn't > needed in the last line above. Once the EqualThread package is loaded the > lines above are sufficiently intuitive that I might use something > like this > if I were a 9th grade algebra teacher! Except I might add a line to > (init.m) that gives Expand the Listable attribute, and instruct > the students > to copy it to their computers. > Well, Ted and MathGroup, I would like to continue the discussion. I think that there are two areas in which Mathematica presents obstacles to young students (and newbies of any age): the first is manipulating equations and algebraic expressions; the second is making simple geometrical diagrams. These are things that we KNOW how to do, but it is difficult, at first, to use Mathematica on these simple tasks. Part of the fault for this is that there are so many topics to cover that the (already long) Mathematica Book has to touch many things lightly. So let's first talk about manipulating equations and algebraic expressions. Ted recommends the Maeder package which Threads the Equal expression. I think that there is also another item on MathSource which uses a palette to solve an equation step by step; however, it is restricted to adding and subtracting 1 or multiplying and dividing by x, so works only for a very small set of equations. I think both of these efforts, especially the palette, are a step in the wrong direction. They are attempts at getting Mathematica to do what the student already knows how to do by not learning Mathematica and modern methods. They very quickly reach their limits. As was shown by Ted above, Threading Equal doesn't work for everything and eventually he had to use Map. So why not bite the bullet straight off and learn pure functions, Map, Apply and some of the other functional constructs? They're not difficult; they're easy. In my notebook (which is available at my web site), I first solve the equation using Solve, but then ask how we would do it ourselves step by step. I then have a section on pure functions, showing how they work on a number of simple examples. I then have a section on Map. Then I show how we can use them to solve equations step by step. At the very end, after having first done each step in a separate cell, I use this solution: 3x + 4y/b == 6(x - y) # - 3x & /@ % Expand /@ % # + 6y & /@ % Collect[#, y] & /@ % #/(6 + 4/b) & /@ % Simplify /@ % 3*x + (4*y)/b == 6*(x - y) (4*y)/b == -3*x + 6*(x - y) (4*y)/b == 3*x - 6*y 6*y + (4*y)/b == 3*x (6 + 4/b)*y == 3*x y == (3*x)/(6 + 4/b) y == (3*b*x)/(4 + 6*b) Yes, this is only a start at learning how to manipulate expressions with Mathematica; but it employs tools that the student will eventually have to learn anyway, and which he can always use. Students already know that you can perform the same operation on each side of an equation. Pure functions and Map are the most direct implementation of this idea that I can imagine. It is only a short step to using MapAt to modify a specific part of an expression. Gee, Ted, you even gave me tremendous help in designing a positions palette that makes it easy to identify positions of subexpressions. Being able to manipulate algebraic expressions is something people expect to be able to do with Mathematica. They can do it, once they learn the techniques. The second difficulty is with making simple diagrams. Mathematica is very good at making what I call set-piece plots. But it is often difficult to make simple geometrical diagrams, especially if they contain curves as part of the diagram. I believe that the regular Mathematica graphics paradigm, once you attempt to go beyond the set-piece plots, is confusing to beginners. For example, if you want a diagram with a curve, you Plot the curve and then put all the other elements in a Prolog or Epilog option, even though they may be, by far, the major part of the diagram. If you want to combine curves or elements produced by different types of set-piece plots, say Plot, ImplicitPlot and Parametric Plot, or with different plotting iterators, then it becomes even more arcane as everybody knows. My DrawingPaper packages are an attempt to solve this problem. They put curves and surfaces on the same level as graphics primitives and directives and they can all be directly combined in one Show statement, in the desired order. The curve primitives can also be directly manipulated without having to extract and reinsert them into a Show statement. But, whatever approach you wish to take, I think this is a problem area for students and beginners. Mathematica is capable of producing beautiful and wonderful graphics. Graphics and animation are a great tool for understanding mathematical and scientific concepts. It is important to work on the problem of making graphics easier, more intuitive, and accessible to beginners. David Park djmp at earthlink.net http://home.earthlink.net/~djmp/