|
以前写过,不知道在哪个文件里面,飞哪去了,就是找不着了。
把这当个小网盘,以后想用,直接翻出来。
Public Function SimpInte(ByVal Var_xd As Double, ByVal Var_xu As Double, ByVal Var_num As Integer) As Double
'计算Sn=h/6*[f(a)+4*Σf(x+i/2)+2*Σf(xj)+f(b)];
'i从0至n-1,j从1至n-1;
'Var_xd积分下限,Var_xu积分上限,Var_num 表示分段数,为偶数;
'========================================================================================
Dim Var_h As Double, Var_res1 As Double, Var_res2 As Double, Var_res3 As Double
Dim Var_temI As Integer, Var_xi As Double, Var_xii As Double
'定义变量
'Var_h=h,Var_temI临时循环整数变量;
'========================================================================================
Var_h = (Var_xu - Var_xd) / Var_num
'定义步长h
'========================================================================================
Var_res1 = 0
Var_res1 = Var_res1 + Fun_R(Var_xd) + Fun_R(Var_xu)
'计算Sn=f(a)+f(b)
'========================================================================================
Var_res2 = 0
Var_xi = Var_xd: Var_xii = 0
For Var_temI = 0 To Var_num - 1 Step 1
Var_xii = Var_xi + Var_h
Var_res2 = Var_res2 + 4 * Fun_R((Var_xi + Var_xii) / 2)
Var_xi = Var_xii
Next Var_temI
'计算4*Σf(x+i/2);
'i从0至n-1
'========================================================================================
Var_res3 = 0
Var_xi = Var_xd + Var_h
For Var_temI = 1 To Var_num - 1 Step 1
Var_res3 = Var_res3 + 2 * Fun_R(Var_xi)
Var_xi = Var_xi + Var_h
Next Var_temI
'计算2*Σf(xj);
'j从1至n-1
'========================================================================================
SimpInte = Var_h / 6 * (Var_res1 + Var_res2 + Var_res3)
'计算Sn=h/6*[f(a)+4*Σf(x+i/2)+2*Σf(xj)+f(b)];
'========================================================================================
End Function
|
|