home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / sci / math / symbolic / 2384 < prev    next >
Encoding:
Text File  |  1992-09-11  |  2.6 KB  |  76 lines

  1. Newsgroups: sci.math.symbolic
  2. Path: sparky!uunet!cs.utexas.edu!wupost!darwin.sura.net!Sirius.dfn.de!chx400!bernina!neptune!monagan
  3. From: monagan@inf.ethz.ch (Michael)
  4. Subject: Re: plots and eval
  5. Message-ID: <1992Sep11.135137.22089@neptune.inf.ethz.ch>
  6. Summary: plot3d functionality in Maple
  7. Sender: news@neptune.inf.ethz.ch (Mr News)
  8. Nntp-Posting-Host: rutishauser-gw.inf.ethz.ch
  9. Organization: Dept. Informatik, Swiss Federal Institute of Technology (ETH), Zurich, CH
  10. References: <1992Sep10.164017.3507@magnus.acs.ohio-state.edu>
  11. Date: Fri, 11 Sep 1992 13:51:37 GMT
  12. Lines: 62
  13.  
  14. In article <1992Sep10.164017.3507@magnus.acs.ohio-state.edu>, hmarvel@magnus.acs.ohio-state.edu (Howard P Marvel) writes:
  15. > Consider the following series of statements in Maple:
  16. > c := proc (alpha,beta) if signum(alpha+beta)=1 then alpha+ beta else 0 fi en\
  17. > d;
  18. > c(a,b);
  19. > a:=1;
  20. > b:=1;
  21. > c(a,b);
  22. > plot3d(c(x,y),x=0..1,y=0..1);
  23. > The first sets up a proc that returns alpha + beta if alpha + beta is
  24. > a positive real. However, if alpha and beta are variables, signum
  25. > cannot evaluate the expression, and the proc returns 0. The first call
  26. > c(a,b) returns 0 and the second returns 2. Now consider the plot
  27. > statement. This should yield values from 0 to 2, right? Instead,
  28. > signum fails and all plotted values are 0. My question is, is there a
  29. > way to force Maple to evaluate c for the values in question and to
  30. > plot the values?  
  31. > Thanks in advance for any suggestions.
  32.  
  33. Dear Howard,
  34.  
  35. The plot3d function has no special evaluation rules.  The arguments
  36. get evaluated, then function is executed.  So what happens when you do
  37.  
  38.     plot3d( c(x,y), x=0..1, y=0..1 );
  39.  
  40. is that c(x,y) is executed on symbolic x and y, and this returns 0,
  41. so it's just as if you had written  plot3d( 0, x=0..1, y=0..1 );
  42. The plot3d command has two ways of being called.  You can plot either
  43. a formula in x and y, or a function of two variables.  Consider
  44.  
  45.     plot3d( binomial(n,k), n=0..3, k=0..3 );
  46.  
  47. versus
  48.  
  49.     plot3d( binomial, 0..3, 0..3 );
  50.  
  51. The second way allows you to plot a function of two variables defined
  52. by a Maple procedure or operator expression.  So the simple solution
  53. to your problem is
  54.  
  55.     plot3d( c, -1..1, -1..1 );
  56.  
  57. The alternative is to use quotes to prevent c(x,y) being evaluated
  58. before the plot routine gets the expression, i.e.
  59.  
  60.     plot3d( 'c(x,y)', x=-1..1, y=-1..1 );
  61.  
  62. Some more examples to clarify.
  63.  
  64.     plot3d( 'binomial(x,y)*c(x,y)', x=-3..3, y=-3..3 );
  65.     plot3d( binomial*c, -3..3, -3..3 );
  66.  
  67. These are wrong
  68.  
  69.     plot3d( 'binomial(x,y)*c(x,y)', -3..3, -3..3 );
  70.     plot3d( binomial*c, x=-3..3, y=-3..3 );
  71.  
  72. Mike Monagan
  73.