使用NumPy实现cos_x_crossings函数返回cos函数x轴交叉前的x值
基于NumPy的cos_x_crossings函数实现
需求说明
- 函数功能:返回
[begin, end]区间内按步长skip采样时,cos(x)穿过x轴前一时刻对应的x值列表 - 开发约束:禁止使用for、while循环,必须基于NumPy开发
实现思路
- 用NumPy的向量化操作生成指定区间内的等间隔采样数组,避免显式循环
- 计算相邻采样点cos值的乘积,乘积小于0说明两点之间cos(x)穿过x轴
- 提取所有过零点对对应的前一个采样点的x值作为结果返回
完整实现代码
import numpy as np import math def cos_x_crossings(begin, end, skip): # 生成[begin, end]区间等间隔采样数组,左闭右开特性补全end x_arr = np.arange(begin, end + skip, skip) # 计算所有采样点的cos值 cos_vals = np.cos(x_arr) # 判断相邻点cos值乘积小于0即为过零点 cross_flag = cos_vals[:-1] * cos_vals[1:] < 0 # 提取过零点前一个时刻的x值 return x_arr[:-1][cross_flag].tolist()
测试用例验证
测试用例1
输入代码:
ans = cos_x_crossings(0, 4 * math.pi, 0.01) for val in ans: print(round(val, 2))
输出与预期一致:
1.57 4.71 7.85 10.99
测试用例2
输入代码:
ans = cos_x_crossings(0, 2 * math.pi, 0.1) for val in ans: print(round(val, 2))
输出与预期一致:
1.5 4.7
内容的提问来源于stack exchange,提问作者Dreamer
相关产品推荐
相关产品推荐

