[plt-scheme] Re: HtDP 27.3.2 and 27.3.4

From: Dave (dyrueta at gmail.com)
Date: Sat Jul 4 18:04:08 EDT 2009

Hi Jos --

Here's a link to the table as I intended it:

http://spreadsheets.google.com/pub?key=rMjaWK9R3fjpB06E4NSJd4w&output=html

Dave

On Jul 4, 2:33 pm, Dave <dyru... at gmail.com> wrote:
> Grr..Sorry about that Jos --
>
> The table was formatted when I sent it. If it matters, I'll redo it as
> a google spreadsheet and post a link.
>
> Thanks,
> Dave
>
> On Jul 4, 10:38 am, David Yrueta <dyru... at gmail.com> wrote:
>
> > Thank you for the response, but I don't really get it....
>
> > For (poly 3 4) I find arguments:
>
> > I recast this as a table to see if I could figure out what you're driving at:
>
> > Step     left          (f left)               right     (f right)
> >     mid           (f mid)               diff
> > 1          3             -1                    4         0
> >       3.5             -.75                 -1
> > 2          3.5          -.75                 4          0
> >     3.75           -.4375              -.5
> > 3          3.75        -.4375              4          0
> >   3.875         -.234375          -.25
> > 4          3.875      -.234375          4          0
> > 3.9375        -.1209...          -.125
> > 5          3.9375    -.12109...         4          0
> > 3.96875      -.0615...          -.0625
> > ...
>
> > I can see that the value of 'right' remains constant, since with every
> > call (<= (f mid) 0 (f right)) evaluates to true. But isn't that
> > different from saying, as the exercise does, that with each midpoint
> > (f mid) is computed twice?
>
> > Thanks!
>
> > On Sat, Jul 4, 2009 at 3:37 AM, Jos Koot<jos.k... at telefonica.net> wrote:
> > > With TOLERANCE 1/100 I find that poly is called with the following
> > > arguments:
> > > 9/2
> > > 6
> > > 15/4
> > > 9/2
> > > 33/8
> > > 9/2
> > > 63/16
> > > 33/8
> > > 129/32
> > > 33/8
> > > 255/64
> > > 129/32
> > > 513/128
> > > 129/32
> > > 1023/256
> > > 513/128
> > > 2049/512
> > > 513/128
>
> > > For (poly 3 4) I find arguments:
> > > 7/2
> > > 4
> > > 15/4
> > > 4
> > > 31/8
> > > 4
> > > 63/16
> > > 4
> > > 127/32
> > > 4
> > > 255/64
> > > 4
> > > 511/128
> > > 4
> > > Poly is called 7 times with the same argument 4.
> > > Can you now find out why f is called with the same argument more than once
> > > (how to avoid that?
> > > Jos
>
> > > ----- Original Message ----- From: "David Yrueta" <dyru... at gmail.com>
> > > To: "PLT-Scheme Mailing List" <plt-sch... at list.cs.brown.edu>
> > > Sent: Saturday, July 04, 2009 7:34 AM
> > > Subject: [plt-scheme] HtDP 27.3.2 and 27.3.4
>
> > >> Hi All --
>
> > >> Questions for both exercises refer to the function "find-root" below:
>
> > >> ;; find-root : (number  ->  number) number number  ->  number
> > >> ;; to determine a number R such that f has a
> > >> ;; root between R and (+ R TOLERANCE)
> > >> ;;
> > >> ;; ASSUMPTION: f is continuous and monotonic
> > >> (define (find-root f left right)
> > >>  (cond
> > >>   [(<= (- right left) TOLERANCE) left]
> > >>   [else
> > >>     (local ((define mid (/ (+ left right) 2)))
> > >> (cond
> > >>  [(<= (f mid) 0 (f right))
> > >>          (find-root f mid right)]
> > >>  [else
> > >>          (find-root f left mid)]))]))
>
> > >> ;; poly : number  ->  number
> > >> (define (poly x)
> > >> (* (- x 2) (- x 4)))
>
> > >> HtDP exercise 27.3.2:
>
> > >> "Use poly from 27.3.1 to test find-root. Experiment with different
> > >> values for TOLERANCE. Use the strategy of section 17.8 to formulate
> > >> the tests as boolean-valued expressions."
>
> > >> Are these tests meant to take place inside or outside the body of
> > >> "find-root." In other words, are they conditional expressions inside
> > >> "find-root"?  If not, how are these tests different from a typical
> > >> "check-expect?"
>
> > >> (check-expect (find-root poly 3 6) 3.75)
>
> > >> HtDP exercise 27.3.4
>
> > >> "For every midpoint m, except for the last one, the function find-root
> > >> needs to determine the value of (f m) twice. Validate this claim for
> > >> one example with a hand-evaluation."
>
> > >> For the life of me, I don't see (f m) computed twice for every
> > >> midpoint.  "Mid" is obviously computed twice, but I only see "(f mid)"
> > >> computed once per call.  Am I missing something totally obvious?
>
> > >> Thanks!
> > >> Dave Yrueta
> > >> _________________________________________________
> > >>  For list-related administrative tasks:
> > >>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
> > _________________________________________________
> >   For list-related administrative tasks:
> >  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
> _________________________________________________
>   For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme


Posted on the users mailing list.