|
|
|
|
|
|
|
Abstract: Single-statement formulae for the calculation of Rosa's mutual inductance correction parameter are compared against a new accurate calculation performed by Robert Weaver*. A formula issued in 2006 by DWK is found to fulfil its original accuracy claims but is improved by further parameter adjustment.. A truncated series formula given by Grover in 1929 is accurate for large N, but inaccurate for small N. Restoration of the lower boundary condition and extension of the series provides a one-line formula which is accurate to within ±0.000 000 02. * electronbunker.sasktelwebsite.net/ . |
|
Introduction: The inductance of a helical coil is most readily calculated by using the hypothetical current-sheet solenoid as a basis, and by applying corrections for the difference between realistic wire and a conducting sheet of infinitesimal thickness. This approach was developed by Edward B Rosa of the American National Bureau of Standards (NBS) in the early part of the 20th Century [Sci169, p122] and remains applicable in situations in which it is sufficient to calculate low-frequency inductance to an accuracy of a few parts in 10 000 (i.e., almost universally). Rosa's expression for the inductance of a round-wire solenoid, written in the preferred SI form (i.e., with permeability, μ, shown explicitly) becomes: L = Ls - μrN( ks + km ) [Henrys] where Ls is the inductance of the corresponding current-sheet, r is the solenoid radius, N is the number of turns, and ks and km are Rosa's correction parameters. Note however, that the symbols used here differ from those used in the references cited. Specifically, ks is elsewhere given the symbol A or G, and km is given the symbol B or H. Notice also that ks and km are dimensionless. They are converted into Henrys by the factor μr outside the bracket. ks (A, G) is a correction for the difference between the self-inductance of a round-wire loop and that of a single-turn current-sheet. It can be obtained, to a good first-order approximation, using relatively simple formulae, as is discussed in [3-7a]. Rosa's expression for the low-frequency case (including internal inductance) is: ks(dc) = (5/4) - ln(2p/d) where p is the winding pitch distance and d is the wire diameter (and ln means loge). km (B, H) is a correction for the difference between the mutual inductance of pairs of round-wire loops and the mutual inductance of pairs of current-sheet loops, and depends only on the number of turns, N. In contrast to the self-inductance term however; the calculation of km is complicated, because the coefficient is the sum of incremental contributions obtained by considering every pair of turns in a coil (i.e., adjacent and non-adjacent). In the days before electronic computers, such calculations were laborious; and so the NBS issued a table, and corrected it from time to time. An early version (4 decimal places) is given in [Sci 169, p199]. A re-calculation using improved techniques (to 5 places) is given in [Grover 1929, p190], and proves to be accurate to within one count in the last place. The most widely known version however is given in Grover's monograph "Inductance Calculations" [Grover 1946, p150, table 39], and appears to have been obtained by rounding the 1929 table to 4 places. In some cases, the rounding in Grover's 1946 table has gone the wrong way, because it requires at least 6 digits to produce data rounded to 4 digits without bias (that is why statisticians toss a coin to decide whether to go up or down when rounding from a 5 in the last place). Hence Grover inadvertently produced a table with errors of 1 count in the 4th place. More recently, the calculation procedure has been investigated by Robert Weaver [Weaver 2008]; leading to a recalculation of the tabulated values to 10 decimal places (which is, for all practical purposes, exact). The latter study is the reason why we now know the accuracies of the other tables. The information provided by Bob Weaver includes example algorithms and a full description of the required functions. This may encourage programmers to incorporate subroutines for the calculation of km (i.e., it renders the practice of interpolating Grover's table obsolete). There is still however considerable utility in having a single-statement formula, and such formulae are the subject of this discussion. A one-line formula, capable of reproducing the values in Grover's 1946 table within one count in the 4th place, was issued by this author (DWK) in 2006 and is known to have been used in some programs and calculations. This study shows that the original accuracy claims were correct, and that there is consequently no need for remedial action (although further optimisation is possible). That formula however, is now rendered obsolete by re-investigation of a series formula given in Grover's 1929 paper [Grover 1929, p176]. Bob Weaver, incidentally, has also found an analytical expression for the N=2 case. This may be of theoretical interest, or as an alternative to the tabulated value: When N = 2, km = ln(1/4) + 3/2 = 0.1137 0563 89 [Weaver 2008, Appendix C]. |
|
The 2006 fitting function: The recent work carried out by Bob Weaver was not available when a means for calculating km was first needed by this author (DWK). The existence of Grover's 1929 paper was also not known to this author at the time. The generating function for the tabulated data is moreover not well described in the 1946 monograph or the 1911 paper, and Bob's later reconstruction of it is a commendable piece of detective work. The approach adopted in 2006 therefore, was to obtain a curve corresponding to the available data. The values in the 1911 and 1946 tables (given to 4 decimal places in both instances) were found to differ by as much as 0.0011; but the later document was assumed to be authoritative. |
|
A graph of the data in Grover's
1946 table is shown on the right. The actual numbers are given
in the Open-Document spreadsheet [Rosa_kM.ods].
The curve tends to a limit of 0.3379 for very large N, but if
we regard the asymptotic value as a matter of normalisation,
it appears that the overall shape is that of some relatively
simple function. Various candidates were tried, and it was found
that the best crude fit was given by a function of the (un-normalised)
form: f0(N) = 1 - 1/N |
![]() |
|
This expression gives half of its maximum value when N=2, whereas
the value in the table for N=2 is about 34% of the maximum, and
so the gradient of the function is obviously incorrect for small
N. The gradient is however changing rapidly around N=1; and so
a correction can be obtained by including an offset, i.e., by
sliding the starting point along the candidate curve until a
suitable gradient is found (analogous to the process of using
a French-curve to join-up the points on a hand-drawn graph).
Hence: f1(N) = 1 - 1/(N+k) This new function goes to 1-1/(1+k) when N=1, whereas a function which goes to zero is required, and so the zero-crossing point must be restored by subtracting the value of the function at N=1, i.e.; f2(N) = [1 - 1/(N+k) ] - [1 - 1/(1+k) ] which simplifies to: f2(N) = [1/(1+k) ] - [1/(N+k) ] This function goes to 1/(1+k) as N→∞, but it can be normalised to vary between 0 and 1 by multiplying it by 1+k, i.e.; f3(N) = 1 - (1+k)/(N+k) Multiplying by km∞=0.3379 (the N→∞ value in the table) then gives a first candidate for a fitting function: km' = km∞ [1-(1+k)/(N+k)] With k=1.07, this function was found to fit the data within about 3%. This is remarkable for an expression with a single adjustable parameter, but nowhere-near good enough to reproduce the table. Further improvement requires additional parameters, and there a various options in this respect. The approach chosen was to add a correcting function which is fixed to zero at the extreme ends of its range (i.e., when N=1 and when N→∞). A suitable candidate is: Δf(N) = [(k1/N) + (k2/N²) + (k3/N³) + ....] ln(N) where the ln(N) multiplier forces the function to zero when N=1, and the terms in the series in square brackets all go to zero as N→∞. Hence: km' = km∞ [1-(1+k)/(N+k)] + [(k1/N) + (k2/N²) + (k3/N³) + ....] ln(N) With the N² and higher terms excluded by setting k2=0, k3=0, etc.; by varying only k and k1, it was easily possible to fit the table with no residual (observed-calculated ) greater than 0.0002. Then, by allowing k2 to deviate from zero, it was found that the data could be fitted with no residual greater than 0.00007. Thus the 2006 fitting formula acquired the form: km = km∞ [1-(1+k)/(N+k)] + [(k1/N) + (k2/N²)] ln(N) Finally it was allowed that the value of km∞ could lie between 0.337850 and 0.337949, since anything in this range will round to 0.3379, and this small latitude was used to distribute the residuals evenly above and below the value calculated by the function. The resulting formula is shown below (the parameter 0.9754 is 1+k, where k=-0.0246): km = 0.337883[ 1 - 0.9754/(N-0.0246) ] + [ (-0.16725/N)+(0.0033/N²) ] ln(N) This reproduces the values in Grover's table 19 [Grover 1946, p150] with a maximum difference of ±0.000 062. Details of the fit are given in the spreadsheet file [Rosa_kM.ods], and the graph of residuals (tabulated-calculated) is shown below. |

|
The difference consists entirely of noise, this being due to
the rounding errors incurred by truncation of the data to 4 decimal
places. The bars at ±0.00005 mark the limits for perfect
reproduction of the table; i.e., any residual which falls outside
this range corresponds to a discrepancy of 1 in the last place
when the value returned by the function is rounded to 4 places.
As can be seen, there are 5 such discrepancies. It was argued
at the time that, since the fitting function is smooth and of
low order (i.e., it cannot change direction suddenly); then its
effect will have been to average the noise. Thus it was deduced
that there must be some errors of 1 digit in the last place of
the data, which means that that the fitting function is at least
as reliable as the table. With no means of arbitration (and bearing
in mind that such esoteric issues have negligible effect on actual
inductance calculations), the 2006 work came to its natural conclusion. When Bob Weaver's calculations and Grover's 1929 paper became available, it was discovered that the three discrepancies for N of 75, 110 and 900 were due to errors in the data, and the discrepancies at 21 and 34 were due to the function. Bearing in mind that the fitting criterion is that of minimum runout, rather than least-squares, the error at 75 had led to an adjustment which caused the residuals at 21 and 34 to creep above the limit. Interestingly, the km∞ value of 0.337883, averaged from the data, is remarkably close to the analytical result given in [Grover 1929, p176]: km∞ = ln(2π) - 3/2 = 0.3378770664 By using the analytical value for km∞ and adding an extra term, the formula can be improved. The version shown below has a maximum absolute error of ±0.000 0067 for integer N (see spreadsheet: Rosa_kmW.ods ). |
|
km = [ln(2π)-3/2] |
|
|
N-0.0252 |
|
|
|
N |
|
N² |
|
N³ |
|
| The fitting approach is however, now obsolete, as will be seen from the discussion below. |
|
Optimisation of Grover's 1929 Series formula: Grover gives a series formula for km [Grover 1929, p176] which may be written as follows: |
|
km = [ln(2π)-3/2] |
|
6N |
|
N |
|
120N³ |
|
504N5 |
| (notice that the coefficient of ln(N)/N is -1/6 =-0.16667, which is very close to the value obtained from the fitting procedure). This formula is extremely accurate for large N (it converges with Bob Weaver's 10-place calculations), but it is inaccurate for N<4 and does not return zero for N=1. Given the simplicity of the expression, the grounds for using it are compelling; with perhaps a reversion to tabulated values for smaller N. Piecewise and spot solutions are unsatisfactory however; particularly because there is no reason why the number of turns on a solenoid should have to be an integer, and the function above is valid for any positive non-integer argument. It is preferable therefore to optimise the function, and this turns out to be remarkably straightforward. Firstly; note the general form, which is: |
|
km = [ln(2π)-3/2] |
|
6N |
|
N |
|
N³ |
|
N5 |
+ . . . . . . |
|
It is clear that terms of N-7, N-9 and so on can
be added, and since such terms will vanish rapidly with increasing
N, they will only affect the expression in its region of greatest
inaccuracy. Also, by fitting the 10-place calculated data for
N=1 to 4 or so to a simple smooth curve and comparing this against
the formula; it can be shown that the series, as truncated, oscillates
for non-integer values of N in this region. This, without revisiting
the underlying theory, is evidence to the effect that the formula
can be made accurate to an arbitrary degree by including extra
terms. We do not know the theoretical values for the coefficients
of these new terms; but then again, for the purpose of obtaining
a convenient expression, we would not necessarily want to use
them. Instead, we can allow one or more adjustable coefficients
with a view to truncating the series once an acceptable degree
of accuracy has been obtained. Now observe what happens when we put N=1 into the formula. We get: km1 = [ln(2π)-3/2] + k1 + k3 + k5 + . . . . This should add up to zero, but for the original formula it does not. This boundary error can be eliminated by ending the series with a closing term; i.e., we first extend the series up to some order p (say). Thus: km1 = ln(2π)-3/2 + k1 + k3 + k5 + . . . . + kp We then define km1=0, so that: kp = -[ ln(2π)-3/2 + k1 + k3 + k5 + . . . . ] Adjustable terms between 5 and p can now be inserted until the required accuracy is achieved. Using the strategy just outlined; it was found that the inclusion of just one variable term, and an adjustment of k1 from 0.330842 to 0.33084236, brought the maximum error to within ±0.000 000 013. The resulting formula is given below, and the comparison between it and the 10-place data is given in the spreadsheet file: Rosa_kmWG.ods . The stated accuracy is only guaranteed for integer N, because there is still some residual oscillation on the interval between N=1 and N=5; but the error is unlikely to extend into the sixth decimal place for non-integer N, and since an accuracy to 4 places is generally considered adequate, any further extension of the series appears unwarranted. Thus we have an expression which is both simple enough for spreadsheets, and good enough to be acceptable in general-purpose computer programs. |
|
Formula for Rosa's mutual inductance correction parameter: Maximum error: ±0.000 000 013 for integer N. km = ln(2π) -3/2 -ln(N)/(6N) -0.33084236/N -1/(120N³) + 1/(504N5) -0.0011923/N7 + 0.0005068/N9 Where: 0.000506800 = -[ln(2π) -3/2 -0.33084236 -1/120 + 1/504 -0.0011923] |
|
|
|
|
|
|