一道VB编程题,请高手帮忙做一下吧!

来源:百度知道 编辑:UC知道 时间:2024/06/09 08:46:03
题目如下:
编写一个利用级数和求cos(x)函数近似值的程序。函数公式如下:cos(x)=1-x^2/2!+x^4/4!-x^6/6!+......+(-1)^(n+1)*x^(2*(n-1))/(2*(n-1))!计算精确到级数第n项,绝对值小于等于10^(-6)为止。参考界面如下:

这个程序老师要求用DO循环,用Sub过程编写,我编出来的程序总是不对,不知道有没有会编这个程序的能帮帮忙?
这道题当x=1时,cos(x)=0.54,x=0.8时,cos(x)=0.70
不知道为什么我编出来的程序总x=1时总是得不到0.54
Dim i As Integer, total As Long
Private Sub Command1_Click()
Dim x As Single, sum As Single, t As Long
x = Text1.Text
n = 2
Do
Call a(2 * (n - 1), t)
x = (-1) ^ (n + 1) * x ^ (2 * (n - 1)) / t
sum = sum + x
n = n + 1
Loop Until Abs(x) <= 10 ^ (-6)
Text2.Text = Round(sum + 1, 2)
End Sub
Sub a(n As Integer, total As Long)
total = 1
For i = 1 To n
total = total * n
Next i
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub

你把程序 贴上来...

一起帮你分析分析.

==============================================
帮你写了个, 不过我觉得Sub没有Function好用...
Private Sub Command1_Click()
Dim dRst#
DoCal Val(Text1.Text), dRst
Text2.Text = CStr(Round(dRst, 2))
End Sub

Sub DoCal(x As Double, y As Double)
Dim xPrv#, n%
n = 2
xPrv = 1#: y = 1#
Do
xPrv = -1 * xPrv * x * x / ((2 * n - 3) * 2 * (n - 1))
y = y + xPrv
n = n + 1
Loop Until Abs(xPrv) <= 10 ^ (-6) ' 0.000001 '=1e-6 =10^(-6)
End Sub

==============================================
问题有2个:
1. x = (-1) ^ (n + 1) * x ^ (2 * (n - 1)) / t
应改为 y = (-1) ^ (n + 1) * x ^ (2 * (n - 1)) / t
因为, x已经是计算出的新值了.
相应地sum = sum + x 改成 sum=sum+y
Loop Until Abs(x) <= 10 ^ (-6) 改成 Loop Until Abs(y) <= 10 ^ (-6)

2. 函数a(nx As Integer, total As Long)中 total = total * n 出错