0
我写了一个程序来使用Maclaurin系列来计算sin(x),但是当我尝试调试它时,它给出了溢出错误。这里是代码,任何人都可以帮助我?maclaurin series for sin(x)
Public Class Form1
Private Function sin(ByVal x As Double) As Double
Dim sinx, radx, abc As Double
sinx = 0
radx = x * Math.PI/180
For i = 1 To 20 Step 2
abc = (Math.Pow(-1, (i/2)) * Math.Pow(radx, i))/factorial(i)
sinx += abc
Next
Return sinx
End Function
Private Function factorial(ByVal n As Integer) As Integer
If (n = 0) Or (n = 1) Then
Return 1
Else
Return n * factorial(n - 1)
End If
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub BtnCalc_Click(sender As Object, e As EventArgs) Handles BtnCalc.Click
Dim x As Integer
x = Val(TxtInput.Text)
TxtAns.Text = sin(x)
End Sub
End Class
一个问题是您的循环尝试计算e是20的阶乘,它太大而不适合整数。它应该适合一个Long,所以尝试改变Factorial函数来返回一个Long。 – Blackwood
@blackwood我只是试了很长时间并调试过它,我得到了一个“南”的输出 –
恐怕我不熟悉Maclaurin系列,所以我可以得到有限的帮助。 NaN(非数字)的一个原因是你的循环尝试将-1加到x.5的幂(换句话说,计算-1的平方根)。你确定你正在实现正确的算法吗? – Blackwood