gpt4 book ai didi

python - 在涉及 for 循环的 Python 中重现 MATLAB 代码时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:51 25 4
gpt4 key购买 nike

我使用 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

变量 i0 开始,我们真的希望它从 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]

正如预期的那样。

关于python - 在涉及 for 循环的 Python 中重现 MATLAB 代码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com