首页 > 解决方案 > 三角波的数学方程

问题描述

我一直没有成功地尝试在 numpy、python、matplotlib 中绘制看起来与下图非常相似的函数。有没有f(x)= ....这张图片或类似的情节?

在此处输入图像描述

标签: pythonnumpymatplotlibmath

解决方案


取 x 的小数部分会创建一条锯齿状曲线。然后减去一半并取绝对值使锯齿双向,

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)
y = np.where((x > 2.75) & (x < 7.75), np.abs(x - np.floor(x) - 0.5) + 0.75, 1)

plt.plot(x, y, color='navy')
plt.ylim(0, 2)
plt.xlim(0, 10)

结果图

PS:对于 0 到 1 之间的 x 值,示例可能是:

x = np.linspace(0, 1, 1000)
y = np.where((x > 0.275) & (x < 0.775), np.abs(x*10 - np.floor(x*10) - 0.5) + 0.75, 1)

plt.plot(x, y, color='navy')
plt.ylim(0, 2)
plt.xlim(0, 1)

推荐阅读