Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
analyticalengine:bernoullinumbercalculation [2015-04-21 08:53] – created rainer | analyticalengine:bernoullinumbercalculation [2015-05-06 18:29] – add remark on using equation 8 over 2 or 3 rainer | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Note G and the calculation of Bernoulli numbers ====== | ====== Note G and the calculation of Bernoulli numbers ====== | ||
- | See [[wp> | + | See [[wp>Bernoulli numbers|Bernoulli numbers]] in Wikipedia for details on Bernoulli numbers. |
They may have been selected as an example because: | They may have been selected as an example because: | ||
- | * They cannot be enumerated using the // | ||
- | * The values seem to be fairly random | ||
- | * The values require a machine that can handle very large numbers | ||
- | * In approximations of trigonometric functions, they allow less calculating steps than other approximations known at that time. Note that Tchebysheff' | ||
- | * They are a sequence where the n-th number can be calculated from the previous numbers | ||
- | Note that variants for the indexing and sign for Bernoulli numbers were proposed since that time; the later forms allow shorter writing of the formulas. | + | * They cannot be enumerated using the // |
+ | * The values seem to be fairly random | ||
+ | * The values require a machine that can handle very large numbers | ||
+ | * In approximations of trigonometric functions, they allow less calculating steps than other approximations known at that time. Note that Tchebysheff' | ||
+ | * They are a sequence where the n-th number can be calculated from the previous numbers | ||
+ | |||
+ | Note that variants for the indexing and sign for Bernoulli numbers were proposed since that time; the later forms allow shorter writing of the formulas. | ||
In //Note G//, equation 8 shows the recursion formula used by AAL: | In //Note G//, equation 8 shows the recursion formula used by AAL: | ||
- | < | + | < |
- | `0 = -1/2 * (2n-1)/ | + | |
- | </ | + | |
and in terms of the number to be calculated: | and in terms of the number to be calculated: | ||
- | < | + | < |
- | `-B_(2n-1) = -1/2 * (2n-1)/ | + | |
- | </ | + | |
Using `A_i` as abbreviation for the factors gives | Using `A_i` as abbreviation for the factors gives | ||
- | < | + | < |
- | `B_(2n-1) = A_0(n) + A_1(n) * B_1 + A_3(n) * B_3 + ... + A_5(n) * B_(2n-3)` | + | |
- | </ | + | |
- | In the text, AAL wrotes: // | + | In the text, AAL wrote: // |
- | Thus, the coefficients | + | Thus, the coefficients |
`A_0(n) = 1/2 * (2n-1)/ | `A_0(n) = 1/2 * (2n-1)/ | ||
Zeile 41: | Zeile 36: | ||
`A_5(n) = A_3(n) * (2n-3)/5 * (2n-4)/6` | `A_5(n) = A_3(n) * (2n-3)/5 * (2n-4)/6` | ||
- | | ||
- | This makes clear, that for `A_5` and the following the calculation steps are structurally equal and thus can be calculated within a loop. | ||
- | Note the signs in contrast | + | As each `A_i(n)` depends only on the previous |
+ | |||
+ | However, to calculate the n-th Bernoulli number, all previuos ones must be present, used each for multiplication, | ||
+ | |||
+ | This is done in later computers by either using an index register or dynamically modifying operation addresses during execution. | ||
+ | |||
+ | Note that the signs are different to those in //Note G//. | ||
+ | |||
+ | ====== Why not equation 2 or 3? ====== | ||
+ | |||
+ | On page 725, AAL shows two commonly used formulas in equation 2 and 3, that do calculate the n-th Bernoulli number just as a series without recursion | ||
+ | > As however our object is not simplicity or facility of computation, | ||
+ | |||
+ | Thus she probably delibrately took into account the indexing problem. | ||
+ | |||
+ | |||
+ | ====== The problem in line 21 ====== | ||
+ | |||
+ | The tabular programme in the //Diagram accompanying Translator' | ||
+ | |||
+ | To calculate `B_7`, the lines 13 to 23 are executed once, then in line 24 and 25 the result is stored. | ||
+ | |||
+ | To calculate `B_9` afterwards, lines 13 to 23 are a loop executed twice, i.e. until `V_10` is reduced to `1`. Let us ignore that the lines are missing that compare `V_10` to one, and raise the overflow lever in the mill, as to control the loop exit condition. This would be added easily. | ||
+ | |||
+ | Howerver, in line 21 during the second round, the value to be multiplied is not `V_22`, containing `B_5`, but `V_23`, contining the just calculated `B_7`. | ||
+ | |||
+ | AAL has evidently see that problem and writes on page 729 bottom: | ||
+ | >The only exception to a //perfect identity// | ||
+ | |||
+ | However, while it is correctly assumed that this may be solved, there is no hint of how this is //easily provided//, that the loom of variable cards are changed with each round. | ||
+ | |||
+ | It may be considered only to loop the operation cards, and to //unravel the loop//, although that contradicts her remark earlier on the page, that >when `n>2`, twenty-five Operation-cards are used; but no // | ||
+ | |||
+ | On page 729, there is a footnote (for which I did not found the corresponding reference place), that millions of Bernoulli numbers could be calculated this way. | ||
+ | |||
+ | However, to calculate millions of Bernoulli numbers, the AE would need a store of millions of numbers; this may be a place where she did not fully understand the problem. | ||
+ | |||
+ | Alan Bromley in his 1998 article on page 44 left column, second to last paragraph, writes: | ||
+ | >With hindsight, we can note that in the Analytical Engine (at least until 1840), Babbage did not posess the variable-address concept; that is, there was no mechanism by which the machine could, as a result of a calculation, | ||
+ | |||
+ | He refers this to solving matrices, and thus to a much much more complex problem. | ||
+ | |||
+ | ====== Actual Calculation ====== | ||
+ | |||
+ | `A_0(1) = 1/2 * 1/3 = 1/6` | ||
+ | |||
+ | `B_1 = A_0(1) = 1/6` | ||
+ | |||
+ | `A_0(2) = 3/10` | ||
+ | |||
+ | `A_1(2) = -2` | ||
+ | |||
+ | `B_3 = A_0(2) + A_1(2) * B_1 = 3/10 - 2/6 = (9 - 10)/30 = - 1/30` | ||
+ | |||
+ | `A_0(3) = 5/14` | ||
+ | |||
+ | `A_1(3) = -3` | ||
+ | |||
+ | `A_3(3) = -3 * 5/3 * 4/4 = -5` | ||
+ | |||
+ | `B_5 = 5/14 - 3/6 + 5/30 = (5 - 7)/14 + 1/6 = -1/7 + 1/6 = 1/42` | ||
+ | |||
+ | `A_0(4) = 7/18` | ||
+ | |||
+ | `A_1(4) = -4` | ||
+ | |||
+ | `A_3(4) = -4 * 7/3 * 6/4 = -14` | ||
+ | |||
+ | `A_5(4) = -14 * 5/5 * 4/6 = - 28/3` | ||
- | (to be continued) | + | `B_7 = 7/18 - 4/6 + 14/30 - 28/(3*42) = (7 - 12)/18 + 7/15 - 14/63 = -5/18 + 7/15 - 14/63 = (-25 + 28)/90 + 14/63 = 17/90 -14/63 = (119 - 140 ) / (7*9*10) = - 21/(7*9*10) = - 1/30` |
- |