python - TypeError:尝试绘制函数时,只能将大小为 1 的数组转换为 Python 标量
问题描述
我有当前的代码:
from math import cos, sin, pi
import numpy as np
import matplotlib.pyplot as plt
def f(x):
values = []
s = 0
for n in range(1, 6, 1):
s += -((2/(n*pi))*(((cos((n*pi)/2))-1)*(sin((n/2)*x))))
values.append(s)
return values
x = np.linspace(-2*pi, 6*pi, 500)
plt.plot(f(x))
我应该绘制 f(x),但是当我运行代码时,我得到了这个错误:
TypeError:只有大小为 1 的数组可以转换为 Python 标量
关于我做错了什么的任何想法?
任何帮助将不胜感激!
解决方案
我认为x
公式中的值仅适用于 的一个值x
,并且由于您有多个x
以列表的形式存在,因此您必须遍历它们中的每一个(例如,使用for xval in x:
),执行计算并将计算的值附加到values
清单_
from math import cos, sin, pi
import numpy as np
import matplotlib.pyplot as plt
def f(x):
values = []
for xval in x:
s = 0
for n in range(1, 6, 1):
s += -((2/(n*pi))*(((cos((n*pi)/2))-1)*(sin((n/2)*xval))))
values.append(s * -1)
return values
x = np.linspace(-2*pi, 6*pi, 500)
plt.plot(f(x))
plt.show()
推荐阅读
- macos - AppleScript - 在每段末尾添加换行符的最佳方法是什么?
- javascript - 是否可以使用 jQuery 为 css 剪辑路径属性设置动画?
- reactjs - 反应应用程序是否有可能具有多个具有状态的组件?
- node.js - AWS EC2 端口 80 连接被拒绝
- python - Python 的“img_as_ubyte”和 Matlab 的“im2uint8”之间的区别
- powershell - Powershell - 在文本文档中读取、更改行、在旧行上写入新行
- python - 在python中生成一个带有假设的随机数数组
- java - MVC 控制器无法识别我的下拉菜单的选择,并且应用程序无法构建
- python - 如何将布尔函数应用于列表中的每个元素?
- java - 每次程序运行时递增数字