这是网络练习2.3.20。从“计算机科学”一书中看塞奇威克和韦恩的跨学科方法:
编写一个递归程序,它接受命令行参数n,并绘制N到N的Hadamard模式,其中N= 2^n。不要使用数组。一个1乘1的Hadamard图案是一个单一的黑色方块.通常,一个2N乘2N Hadamard图案是通过对4拷贝的N- by -N模式的形式,以2-2网格的形式,然后反转所有的颜色在右下角N-N拷贝。N-by-N - Hadamard H(N)矩阵是一个布尔矩阵,具有任意两行在N/2位上完全不同的显著性质。以下是前几个Hadamard矩阵。
📷
这是我的节目:
public class wexercise2_3_
需要澄清的是:伪Hadamard变换是提供密码扩散的位字符串的可逆转换。将位字符串(位长为2n)拆分为两个同样大的位字符串a和b,其大小为n:
\begin{align} a' &= a + b & \pmod{2^n}\\ b' &= a + 2b& \pmod{2^n} \end{align}反向:
\begin{align} b &=b' - a' & \pmod{2^n}\\ a &= 2a' - b' & \pmod{2^n} \end{align}
(资料来源
$ dotnet new console -lang Q# --output Bell
Error: Invalid parameter(s):
-lang Q#
'Q#' is not a valid value for -lang (language).
运行dotnet新控制台--有关使用信息的帮助。有关如何安装其他模板包,请参见。
我还试着跑:
dotnet new -i Microsoft.DotNet.Common.ProjectTemplates.2.x::2.0.0-*
但是,即使这个命令也无法添加项目,也不知道如何获得这个模板。
我试图弄清楚如何开始使用Microsoft Q#和QDK编写代码,但是遇到了很多问题,因为没有任何好的文档可以帮助您从头开始创建项目。我试着运行dotnet new console并创建了一个Program.cs文件,对于Q#需要的是Program.qs,我尝试简单地更改该文件的名称,但是它导致了以下错误:
CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point
有人知道如何在VS代码中从头开始设置Q#项目吗?我真的很纠结
我想用matlab中的绘制一个三维图形。我知道如何使用surf来绘制它:
k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);
c = hadamard(2^k);
p=surf(x,y,z);
但我想要实时绘制,并且希望使用set更新值。我累了:set(p,"XData",Xvalue,"YData",Yvalue,"ZData",Zvalue);,但它给了我错误。有没有人用surf实时绘图?
我使用Python2.7、NumPy 1.6.2和SciPy 0.16.0来计算以下内容。
我已经创建了Hadamard矩阵。然后,我从矩阵的第0,2,4次向量创建了外积,并将它们相加,使对角线为0。然后,我使用SciPy.linalg.eigh()计算了特征值。它是退化的。前两个特征值相同,即-3。但是当我使用Python进行检查时,它显示它们并不相同。代码如下所示。
from scipy import linalg as sp
import numpy
from numpy import linalg as np
def get_outer_product(vector):
le