我得到了這個問題。撰寫一個函式cos_x_crossings(begin, end, skip),在其中輸入輸入引數并回傳 x 點作為穿過 x 軸的串列。(在它穿過之前的 x 值)我不允許用于或 while 回圈。需要使用 NumPy。
測驗 1
import math
ans = cos_x_crossings(0, 4 * math.pi, 0.01)
for val in ans:
print(round(val, 2))
結果 1
1.57
4.71
7.85
10.99
測驗 2
import math
ans = cos_x_crossings(0, 2 * math.pi, 0.1)
for val in ans:
print(round(val, 2))
結果 2
1.5
4.7
uj5u.com熱心網友回復:
由于我們已經知道當且僅x的形式為pi/2 k pi 時cos(x)為零,因此您所要做的就是使用正確的引數呼叫以生成輸出陣列。numpy.arange
import numpy as np
def cos_x_crossings(xstart, xstop, xstep):
ystart = (np.trunc((xstart - np.pi/2) / np.pi) 0.5) * np.pi
ystop = xstop
ystep = np.pi
return (np.arange(ystart, ystop, ystep) // xstep) * xstep
print( cos_x_crossings(0, 4 * np.pi, 0.01) )
# [ 1.57 4.71 7.85 10.99]
print( cos_x_crossings(0, 2 * np.pi, 0.1) )
# [1.5 4.7]
解釋:
ystart是上面pi/2 k pi形式的最小數xstart;它是通過四舍五入xstart - pi/2到pi的倍數來計算的。- 的效果
np.trunc( ... / pi) * pi和(... // xstep) * xstep只取整; 乘法取消除法;參見例如將浮點數舍入到最近的自定義乘數?.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/316457.html
