计算COS(x)=1- X2⼀2!+ X4⼀4!- X6⼀6...!计算精确到级数第n项绝对值小于等于10-6为止。

用sub 或 function函数不用角度转弧度,x为0.8
2025-05-13 21:29:30
推荐回答(2个)
回答1:

Private Sub Form_Click()
For i = 0 To 180 Step 5
myCos i
Next
End Sub

Private Function myCos#(ByVal xAngle#, Optional bDegree As Boolean = True)
'COS(x)=1- X2/2!+ X4/4!- X6/6
Dim xAng#, PI#, e#, rst#, xPow#, nTmp#, n%, nJ#
e = 1E-16 ' 误差控制
PI = 4 * Atn(1) ' 计算PI值
xAng = IIf(bDegree, xAngle / 180 * PI, xAngle) '转化弧度
'Debug.Print "角度:"; xAng / PI * 180, "弧度:"; xAng
n = 0: nJ = 1
rst = 0: nTmp = 1
xPow = 1#
Do
rst = rst + nTmp
n = n + 2
nJ = nJ * (1 - n) * n
xPow = xPow * xAng * xAng
nTmp = xPow / nJ
Loop Until Abs(nTmp) < e
myCos = rst
Debug.Print "结果: Cos("; xAng / PI * 180; ")="; rst, Cos(xAng), "误差为:", Cos(xAng) - rst
End Function

回答2:

Private Sub Form_Click()
For i = 0 To 180 Step 5
myCos i
Next
End Sub

Private Function myCos#(ByVal xAngle#, Optional bDegree As Boolean = True)
'COS(x)=1- X2/2!+ X4/4!- X6/6
Dim xAng#, PI#, e#, rst#, xPow#, nTmp#, n%, nJ#
e = 1E-16 ' 误差控制
PI = 4 * Atn(1) ' 计算PI值
xAng = IIf(bDegree, xAngle / 180 * PI, xAngle) '转化弧度
'Debug.Print "角度:"; xAng / PI * 180, "弧度:"; xAng
n = 0: nJ = 1
rst = 0: nTmp = 1
xPow = 1#
Do
rst = rst + nTmp
n = n + 2
nJ = nJ * (1 - n) * n
xPow = xPow * xAng * xAng
nTmp = xPow / nJ
Loop Until Abs(nTmp) < e
myCos = rst
结果: Cos("; xAng / PI * 180; ")="; rst, Cos(xAng), "误差为:", Cos(xAng) - rst
End Function