布洛赫球面中箭头的长度

时间:2018-11-08 07:37:17

标签: python-3.x quantum-computing

我正在尝试建立一个叫做bloch sphere的东西。这表示球形中半径为1.0的箭头形式的量子比特的状态。

我写了下面的代码。

new FormField<String>(
  builder: (FormFieldState<String> state) {
    return InputDecorator(
      decoration: InputDecoration(
        labelText: ‘Currency’,
        labelStyle: TextStyle(
            fontSize: 18.0,
            fontWeight: FontWeight.bold,
            color: Colors.green.shade700),
        errorText: state.hasError ? state.errorText : null,
      ),
      isEmpty: _currency == '',
      child: new DropdownButtonHideUnderline(
        child: new DropdownButton<String>(
          style: TextStyle(
            fontSize: 18.0,
            color: Colors.black,
            fontWeight: FontWeight.w500,
          ),
          value: _currency,
          isDense: true,
          onChanged: (String newValue) {
            setState(() {
              _currency = newValue;
              state.didChange(newValue);
            });
          },
          items: _mapCurrency((String value) {
            return new DropdownMenuItem<String>(
              value: value,
              child: new Text(value),
            );
          }).toList(),
        ),
      ),
    );
  },
  validator: (val) {
    return val != '' ? null : ‘Choose a Currency…’;
  },
),

当我放置(θ,phi)=(30,0)时,箭头的尖端到达球体的表面。但是,当我把(θ,phi)=(30,30)时,箭头的尖端不在球体内。

您可以从下面的链接中查看当前情况的图像。

An arrow tip reaching outside of the sphere

1 个答案:

答案 0 :(得分:1)

我猜您在坐标之间执行转换的方式错误。 XYZ的计算应如下(wikipedia link):

X = np.sin(theta) * np.cos(phi)
Y = np.sin(theta) * np.sin(phi)
Z = np.cos(theta)

另外,numpy三角函数接受弧度值。因此,θ应在[0,pi]范围内,phi应在[0,2 * pi)范围内。要将度数转换为弧度,可以使用numpy.radians()