在Python中复制涉及for循环的MATLAB代码时出现问题

在Python中复制涉及for循环的MATLAB代码时出现问题,python,matlab,numpy,for-loop,sympy,Python,Matlab,Numpy,For Loop,Sympy,我使用MATLAB构建了以下代码: numero=60; a=zeros(numero,1) b=zeros(numero+1,1) for i=1:numero+1 a(i)=-cos(pi*(i-1)/numero) end figure plot(a,b, '*') 它用于计算切比雪夫多项式的节点,该多项式的阶数为numero,并将其存储在名为a的向量中。 我需要在Python中复制这个。我试图解决的问题是 from mpmath import chebyt, chop,

我使用MATLAB构建了以下代码:

numero=60;
a=zeros(numero,1)
b=zeros(numero+1,1)   
for i=1:numero+1
    a(i)=-cos(pi*(i-1)/numero)
end
figure
plot(a,b, '*')
它用于计算切比雪夫多项式的节点,该多项式的阶数为
numero
,并将其存储在名为
a
的向量中。 我需要在Python中复制这个。我试图解决的问题是

from mpmath import chebyt, chop, taylor
import numpy as np
import sympy as sp


numero=60
nodes = []
for i in range(numero+2):
     auxiliary=-np.cos(np.pi*(i-1)/numero)
     nodes.append(auxiliary)

[float(i) for i in nodes]
nodes.sort()
print(nodes)

然而,python的输出中存在一个问题。第一个是列表的第二个数字,
-0.9986295347545738
出现两次,它也是节点的第三个元素。我不知道为什么会发生这种情况,我想知道是否有人能告诉我如何避免这种错误

问题发生在这一行:

for i in range(numero+2)
与之相比:

for i=1:numero+1
变量
i
0
开始,我们确实希望它从
1
开始。我们可以看到,这会导致以下错误:

>>> -np.cos(np.pi*(0-1)/numero)
-0.9986295347545738
>>> -np.cos(np.pi*(1-1)/numero)
1.0
>>> -np.cos(np.pi*(2-1)/numero)
-0.9986295347545738
等等。因此解决方法是切换到:

for i in range(1, numero+2)
也可以省略以下几行:

[float(i) for i in nodes]
nodes.sort()
这将产生以下输出:

[-1.0, -0.9986295347545738, -0.9945218953682733, -0.9876883405951378, ..., 0.9876883405951377, 0.9945218953682734, 0.9986295347545738, 1.0]

如预期。

请发布您的预期输出