因此,我首先要提到的是,我基本上对与Jupyter Notebook,matplotlib和numpy之类的东西相关的一切都是全新的。因此,这就是为什么我很可能无法明确表达我的问题。因此,我恳求您的耐心:)(是的,我的英语太烂了...)
无论如何,我正在尝试创建一个互动情节。因此,我想显示方波的第一个 n 个多项式的函数,其中可以使用滑块选择 n 的值。这是我到目前为止所得到的:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['figure.figsize'] = (11,4)
plt.rcParams['figure.dpi'] = 150
from ipywidgets import interact,interactive, fixed, interact_manual
import ipywidgets as Widgets
def f(n):
plt.plot( np.arange(0,10), 1/pi * sum( 2/(i* pi) * (1- cos(i*pi) ) * sin(i*np.arange(0,10)) for i in range(1,n) ) )
plt.ylim(-2,2)
interact(f, n= 1)
现在,一切正常,直到我设置函数的那一行为止,所以有了这一行
plt.plot(np.arange ...)
它给我以下错误:
ValueError:x和y必须具有相同的第一尺寸,但形状为(10,)和(1,)
我已经弄清楚这与使用 sum()运算符并在其中使用变量 n 有关。如果我不将 n 放在 sum 中,则说明一切正常,并且我得到了图形。
因此,基本上的问题是,要实现我的想法,我将要做些什么。
谢谢您的回复,我知道我的帖子可能因为其样式或其他内容而对某些人感到非常讨厌,对此深感抱歉。
答案 0 :(得分:0)
使用sum
意味着您将值列表折叠为一个值,这就是numpy告诉您的-您有10个x
值和1个y
值(因为您刚刚将它们全部添加了)。我认为您的意思是创建一个总和列表,因此只需将一个)
之后的右括号(for i in range(n)
)移到它之前:
plt.plot(np.arange(0,10), 1/pi * sum(2/(i* pi) * (1- cos(i*pi)) * sin(i*np.arange(0,10))) for i in range(1,n))
答案 1 :(得分:0)