tixingfa[x_, y_] := Module[{h = 0.1, k, y0 = y, x0 = x, y1, y2, eps = 0.00001, a = 0},
For[k = 0, k <= 9,
x0 = a + h k;
y1 = y0 + h f[x0, y0];
y2 = y0 + h/2*(f[x0, y0] + f[x0 + h, y1]);
While[Abs[y2 - y1] >= eps,
y1 = y2; y2 = y0 + h/2*(f[x0, y0] + f[x0 + h, y1])]; Print["y2= ", y2]; y0 = y2,
k = k + 1]; y2]
f[x_, y_] := y - 2 x/y
tixingfa[0, 1]
(*
y2= 1.07516
y2= 1.14107
y2= 1.19838
y2= 1.24719
y2= 1.2872
y2= 1.31772
y2= 1.33755
y2= 1.34494
y2= 1.33737
y2= 1.31112
1.31112
*)
下面是用VB编的:
Sub tixingfa () *VB编程实现*
Dim y1 As Double, y0 As Double, h As Double, x0 As Double, k As Integer, n As Integer, \
y As Double
h = 0.1 : a = 0 : b = 1 : eps = 0.000001 : y0 = 1 : x0 = 0
k = (b - a)/h
Text1.Text = "n" & " " & "x0" & " " & "yn" & vbCrLf
For n = 0 To k - 1
x0 = a + n*h
y1 = y0 + h*f (x0, y0)
y = y0 + h/2*(f (x0, y0) + f (x0 + h, y1))
Do While Abs (y - y1) >= eps
y1 = y
y = y0 + h/2*(f (x0, y0) + f (x0 + h, y1))
Loop
Text1.Text =
Text1.Text & n & " " & Format (x0, "##0.000#########") & " " & y & vbCrLf
y0 = y
Next
End Sub
但是mathematica实现后,结果不一样,VB的答案正确,想知道哪里错了