back to list

Pseudoinverse tuning

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

11/11/2006 12:09:36 AM

The pseudoinverse of a matrix is explained here:

http://en.wikipedia.org/wiki/Pseudoinverse

If M is a (real) matrix, M' its transpose, then the pseudoinverse of M
is the unique matrix N satisfying

MNM = M
NMN = N
(MN)' = MN
(NM)' = NM

Given a linearly set of vals h_i, we can take the pseudoinverse of the
corresponding matrix, and get intervals c_j such that h_i(c_j) =
delta_ij. By approximating q by c_1^h_1(q) * ... * c_n^h_n(q) we get a
tuning which depends only on the temperament the vals determine. I
would suggest calling this the pseudoinverse tuning, except for the
fact that it seems to be identical (following on a least squares
property of the pseudoinverse) to the Frobenius tuning I defined before:

/tuning-math/message/12836

In any event, the pseudoinverse looks possibly useful.

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

11/11/2006 2:27:11 PM

Consider the matrix [<12 19 28 34|, <19 30 44 53|]. The pseudoinverse
of this is

[|-368/223 -423/223 -220/223 554/223>, |471/446 271/223 142/223, -
703/446>]

If we set c12 = 2^(-368/223) 3^(-423/223) 5^(-220/223) 7^(554/223)
and similarly for c19, then c12^12 c19^19 is 1201.334 cents, and
c12^19 c19^30 is 1898.562 cents; this is the pseudoinverse/Frobenius
tuning of septimal meantone.

Similarly, we can start instead from

[<12 19/log2(3) 28/log2(5) 34/log2(7)|,
<19 30/log2(3) 44/log2(5) 53/log2(7)|].

Take the pseudoinverse of this. Since everything is now in terms of
powers of two, we can just sum each row and raise two to that power.
We get two real numbers, w12 and w19, and now w12^12 w19^19 is
1201.242 cents, and w12^19 w19^30 is 1898.458 cents; this is the
weighted pseudoinverse tuning. Maybe Graham could give his rms-TOP
tuning by way of comparison, as I haven't coded that.

🔗Graham Breed <gbreed@gmail.com>

11/11/2006 7:45:03 PM

Gene Ward Smith wrote:

> Similarly, we can start instead from > > [<12 19/log2(3) 28/log2(5) 34/log2(7)|, > <19 30/log2(3) 44/log2(5) 53/log2(7)|]. > > Take the pseudoinverse of this. Since everything is now in terms of > powers of two, we can just sum each row and raise two to that power. > We get two real numbers, w12 and w19, and now w12^12 w19^19 is > 1201.242 cents, and w12^19 w19^30 is 1898.458 cents; this is the > weighted pseudoinverse tuning. Maybe Graham could give his rms-TOP > tuning by way of comparison, as I haven't coded that.

Yep! See equation 7 in

http://mathworld.wolfram.com/Moore-PenroseMatrixInverse.html

compare with equation 25, page 7, in

http://microtonal.co.uk/primerr.pdf

They look the same to me.

Graham

🔗Graham Breed <gbreed@gmail.com>

11/11/2006 7:33:02 PM

Gene Ward Smith wrote:

> Similarly, we can start instead from > > [<12 19/log2(3) 28/log2(5) 34/log2(7)|, > <19 30/log2(3) 44/log2(5) 53/log2(7)|]. > > Take the pseudoinverse of this. Since everything is now in terms of > powers of two, we can just sum each row and raise two to that power. > We get two real numbers, w12 and w19, and now w12^12 w19^19 is > 1201.242 cents, and w12^19 w19^30 is 1898.458 cents; this is the > weighted pseudoinverse tuning. Maybe Graham could give his rms-TOP > tuning by way of comparison, as I haven't coded that.

Identical to the precision you gave!

1898.4580145736695
1201.2421562716497

Those figures are full precision, and so may be inaccurate in the last digits. I'll have to look up the pseudoinverse now. I wouldn't be at all surprised if the two methods were identical.

Graham

🔗Gene Ward Smith <genewardsmith@coolgoose.com>

11/11/2006 9:04:07 PM

--- In tuning-math@yahoogroups.com, Graham Breed <gbreed@...> wrote:

> Identical to the precision you gave!
>
> 1898.4580145736695
> 1201.2421562716497

1898.4580145736694369
1201.2421562716495214

> Those figures are full precision, and so may be inaccurate in the
last
> digits. I'll have to look up the pseudoinverse now. I wouldn't be
at
> all surprised if the two methods were identical.

I thought it was likely, which is why I asked.