CIT 591 More About the Second Java
AssignmentCIT 591, David Matuszek, Fall 2002 |

First: My sincere apologies; I had the algorithm right the **first** time.
It should go like this:

numerator = 1; temp = 0; denominator = numerator; numerator = (numerator *last-unused-denominator) + temp; temp = denominator;

Basically, what happened was this: After the program was working, I must have made some "trivial" change to it that I forgot about (something I've warned you against). When I went to post the inner loop statements in the program, I discovered that my program wasn't working correctly; it gave the inverse of the correct answer. I thought I must have been reading the results incorrectly earlier (I had not been printing them out in a neat "fraction" format), so I "fixed" the program.

The error was *not* in the inner loop (for which the correct code is given
above); it was in computing the denominators. I had one too many zeros in the
array of denominators, so that instead of looking like

`0 1 1 2 1 1 208332`

(for 0.5833333), the array looked like:

__0__ 0 1 1 2 1 1 208332

If you look at the math, the effect of having this extra zero in front is to
invert the final answer, so that instead of `7/12`

, you get```
12/7
```

. I "corrected" my mistake in the wrong place.

Students have been asking what the output should look like. That's basically up to you, so long as you include all the information that I asked for. Here's what mine looks like (for pi):

Program by David Matuszek Input decimal number to be converted: 3.141592653589793 All computed denominators: 3 7 15 1 292 1 1 1 2 1 3 1 Using these 1 denominators: 3 fraction = 3/1, value = 3.0, goodness = 7, error = 4% Using these 2 denominators: 3 7 fraction = 22/7, value = 3.142857142857143, goodness = 15, error = 0% Using these 3 denominators: 3 7 15 fraction = 333/106, value = 3.141509433962264, goodness = 1, error = 0% Using these 4 denominators: 3 7 15 1 fraction = 355/113, value = 3.1415929203539825, goodness = 292, error = 0%

There seems to be a lot of confusion about the fact that the program is supposed
to compute a *sequence* of approximations. The question I keep hearing
is, **"What is N?"**

In the section of the assignment labeled **The Math**, I talked about how
to start with the six denominators

representing
the expression

and
turn this into the fraction `7/12`

. Along the way I computed the
*partial results* `1/2`

, `2/5`

, `5/7`

,
and finally `7/12`

. Except for the last one, these are *not*
approximations to 0.5833333; they are just fractions that occur during evaluation
of the expression.* You* might want to see these fractions for debugging
purposes, but *I *don't want to see them.

You could also compute a fractional approximation to 0.5833333 by using
only *five* denominators

. You would
get `4/7`

, which is not as good an approximation to 0.5833333 (it's
0.5714285). Or your could use *four* denominators and get `3/5`

(which is 0.6). You could use *any number* of denominators, and the more
denominators you use, the better the approximation (up to the limits of the
computer's accuracy).

The assignment says to use *one* denominator, compute and print
the results (fraction, decimal value, goodness, and percent error), then to
use *two* denominators and print your results, then use *three* denominators
and print your results, etc. **N is the number of denominators
to use.** Each approximation will require a complete computation. Each approximation
will be more accurate than the preceding one. Stop when either (1) you have
used 12 denominators, or (2) the next unused denominator is greater than 20,
whichever comes first.