【问题标题】:TypeError when Using NumPy and Floats in Python Functions在 Python 函数中使用 NumPy 和浮点数时出现 TypeError
【发布时间】:2022-01-06 13:42:58
【问题描述】:

我正在尝试编写一个函数来绘制正弦图。该函数采用三个正弦参数:幅度为 A,频率为 B,水平位移为 C(见下文)

A sin(B(x-C))

这是我的代码:

import numpy as np
import matplotlib.pylab as plt

x = np.linspace(-np.pi, np.pi, 201)


def sine(amplitude, frequency, horizontal_shift) -> object:
    si = np.sin(x - sine)
    si = si * frequency
    si = amplitude * si
    return si


test = sine(4, 1, 2)
print(test)

plt.plot(x, test)
plt.show()


但是,我不断收到此错误:

TypeError: unsupported operand type(s) for -: 'float' and 'function'

我试过了

  • 仅输入整数
  • 以字符串形式输入数字
  • 将我的函数定义为:
def sine(amplitude, frequency, horizontal_shift) -> object

但我得到了同样的错误。

【问题讨论】:

  • x - sine 应该做什么? sine 是您刚刚定义的函数。数学不是为函数定义的!

标签: python numpy matplotlib math trigonometry


【解决方案1】:

几件事。首先你不想要si = np.sin(x - sine)。这就是回溯所指的。其次,即使在那时,您的函数也没有进行您在顶部给出的计算。试试:

def sine(x, amplitude, frequency, horizontal_shift):
    si = amplitude * np.sin(frequency * (x - horizontal_shift))
    return si

编辑:样本输出图

plt.plot(np.linspace(-np.pi, np.pi, 201), sine(np.linspace(-np.pi, np.pi, 201), 2 , 5, 7))

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2015-03-30
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多