使用量子位在球坐标中旋转

时间:2019-11-20 17:16:33

标签: c# math rotation quantum-computing spherical-coordinate

我一直在尝试使用量子物理学来旋转球坐标。 我关注了以下帖子,了解如何执行此操作: https://stla.github.io/stlapblog/posts/RotationSphericalCoordinates.html

我对量子物理学有一些了解,但非常有限。 这是我在C#中想到的(抱歉缩进):

public Complex[,] rotationsMatrixX = new Complex[2, 2];
public Complex[,] rotationsMatrixY = new Complex[2, 2];
public Complex[,] rotationsMatrixZ = new Complex[2, 2];

public void rotatemethod(){
//Initialize the rotation matrices

double angle = 30;

//init X
rotationsMatrixX[0, 0] = new Complex(Math.Cos(angle / 2), 0);
rotationsMatrixX[0, 1] = new Complex(0, -Math.Sin(angle / 2));
rotationsMatrixX[1, 0] = new Complex(0, -Math.Sin(angle / 2));
rotationsMatrixX[1, 1] = new Complex(Math.Cos(angle / 2), 0);

//init Y
rotationsMatrixY[0, 0] = new Complex(Math.Cos(angle / 2), 0);
rotationsMatrixY[0, 1] = new Complex(-Math.Sin(angle / 2), 0);
rotationsMatrixY[1, 0] = new Complex(Math.Sin(angle / 2), 0);
rotationsMatrixY[1, 1] = new Complex(Math.Cos(angle / 2), 0);

//init Z
rotationsMatrixZ[0, 0] = new Complex(Math.Cos(angle / 2), -Math.Sin(angle / 2));
rotationsMatrixZ[0, 1] = new Complex(0, 0);
rotationsMatrixZ[1, 0] = new Complex(0, 0);
rotationsMatrixZ[1, 1] = new Complex(Math.Cos(angle / 2), Math.Sin(angle / 2));

double theta = 0.20943951023932; // 0 <= phi <= 2PI (for now just sample input)
double phi = 4.93055513688398;   // 0 <= theta <= Pi (for now just sample input)

Console.WriteLine(" theta " + theta + " phi: " + phi);

//validation checks
if (theta < 0 || theta > Math.PI || phi < 0 || phi > 2 * Math.PI)
{
    throw new ArgumentOutOfRangeException("phi and/or theta out of bounds");
}

//create the qubit
Complex topQbit = new Complex(Math.Cos(theta/2),0);
Complex bottomQbit = new Complex(Math.Cos(phi)*Math.Sin(theta/2), Math.Sin(phi)*Math.Sin(theta/2));

Complex[] quBit = new Complex[2];
quBit[0] = topQbit;
quBit[1] = bottomQbit;

Complex[] rotatedQbit = MultiplyComplexMatrix(quBit, rotationsMatrixY);

Complex[] rotatedQbit = MultiplyComplexMatrix(quBit, rotationsMatrixY);

//not sure if I need Atan2 here..
double rotatedTheta = 2 * Math.Atan(Complex.Abs(rotatedQbit[1]) / Complex.Abs(rotatedQbit[0])); 
double rotatedPhi = rotatedQbit[1].Phase - rotatedQbit[0].Phase;
}



//Matrix Multiplication (with Complex numbers ONLY)
        public Complex[] MultiplyComplexMatrix(Complex[] quBit, Complex[,] rotationMatrix)
        {
            //the rotated qbit
            Complex[] rotatedQbit = new Complex[2];

            //just some naming to make matrix multiplication more readable
            Complex A = quBit[0];
            Complex B = quBit[1];
            Complex C = rotationMatrix[0, 0];
            Complex D = rotationMatrix[0, 1];
            Complex E = rotationMatrix[1, 0];
            Complex F = rotationMatrix[1, 1];

            rotatedQbit[0] = Complex.Multiply(A, B) + Complex.Multiply(B, E);
            rotatedQbit[1] = Complex.Multiply(A, D) + Complex.Multiply(B, F);

            return rotatedQbit;
        }

我得到的结果(如下)没有任何意义。我会提供任何帮助!或实现此目的的替代方法。

样本输入的结果(在Y轴上旋转角度为30)

以C:232.5 G:124 ----------------
开头  theta 2.16420827247297 phi:4.05789051088682
rotatedTheta是:1.00298077136411,rotatedPhi是:3.60482234077516
单位:
 theta 124 phi:232.5
rotatedTheta是:57.466565131939,rotatedPhi是:206.54110602020887
以C结尾:232.5 G:124 ----------------
以C开头:232.5 G:126 ----------------
 θ2.19911485751286 phi:4.05789051088682
rotatedTheta是:1.01877652772437,rotatedPhi是:3.58185846568257
单位:
 theta 126 phi:232.5
rotatedTheta是:58.3715953055989,rotatedPhi是:205.225372896816
以C结尾:232.5 G:126 ----------------
以C开头:232.5 G:128 ----------------
 theta 2.23402144255274 phi:4.05789051088682
rotatedTheta是:1.03535071902231,rotatedPhi是:3.55952053311715
单位:
 theta 128 phi:232.5
rotatedTheta是:59.3212265158133,rotatedPhi是:203.94550363777
以C结尾:232.5 G:128 ----------------
以C开头:232.5 G:130 ----------------
 theta 2.26892802759263 phi:4.05789051088682
rotatedTheta是:1.05269513187015,rotatedPhi是:3.53779163501912
单位:
 theta 130 phi:232.5
therotedTheta是:60.3149881701271,而rotatedPhi是:202.700529483282
以C结尾:232.5 G:130 ----------------

0 个答案:

没有答案