函式介面
double simpsonintegral (func fun,
double a,
double b,
double eps,
int& n)
其中,b 與 a 為積分上下限,eps 為誤差精度,n 為區間等分數,l 為加速次數,fun 為被積分函式的名稱
實現**
#include
"stdafx.h"
#include
"simpson.h"
#include
#include
double
simpson
(func fun,
double a,
double b,
double eps,
int&n)
//復合simpson公式中每個區間拼接點的累計
for(
int k =
1; k < n; k++
)//復合simpson公式最後求和
sn =
(b - a)
/6.0
/ n *
(fun
(a)+
fun(b)
+ s1 + s2)
; n =
2* n;
//步長對分,區間數乘2
s1 =0;
s2 =0;
//復合simpson公式中每個區間中間點的累計
for(
int k =
0; k < n; k++
)//復合simpson公式中每個區間拼接點的累計
for(
int k =
1; k < n; k++
)//復合simpson公式最後求和
s2n =
(b - a)
/6.0
/ n *
(fun
(a)+
fun(b)
+ s1 + s2)
;//用s2n與sn估計誤差
delta=
1.0/15*
fabs
(s2n - sn);}
return s2n;
}
函式介面double rombergintegral (func fun,
double a,
double b,
double eps,
int&l)
其中,b 與 a 為積分上下限,eps 為誤差精度,n 為區間等分數,l 為加速次數,fun 為被積分函式的名稱
實現**
double
romberg
(func fun,
double a,
double b,
double eps,
int&l)
}int n =1;
double h =
(b - a)
/ n;
t[0][
0]= h /
2.0*
(fun
(a)+
fun(b));
//第一次梯形積分
double delta =1;
l =0;
while
(delta > eps)
t[0]
[l]= t[0]
[l -1]
*0.5
+ h /
2.0* f;
//復合梯形公式的遞推
//兩層迴圈, 外推加速
for(
int m=
1;m<=l;m++)}
delta =
fabs
(t[l][0
]- t[l -1]
[0])
;}double res = t[l][0
];for( i =
0; i < nn; i++
)delete
t;return res;
}
//先定義函式指標介面格式,方便呼叫被積函式:
typedef
double
(*func)
(double x)
;//被積分函式宣告滿足double(*func) (double x)的風格。
//例如:
double
func0
(double x)
;//輸入是 double 型引數 x,返回值為 double 型的 y 值。
//在 double simpsonintegral (func fun, double a, double b, double eps, int& n)內部通過函式指標 fun 來呼叫介面處的函式,如在呼叫 simpsonintegral 函式時介面處給的為 func0,則其實現**中double y = fun(1.0); 等同於 double y =func0(1.0);
double y =
fun(
1.0)
;double y =
func0
(1.0
);
實驗三:數值積分測試用專案c++檔案 數值分析實驗二 數值積分
1 2 include include using namespace std double f double x return pow x,2 int main double a,b,e int n cin a b e cin n double h b a n double x 1000 x 0 ...
數值分析實驗 二 之數值積分與微分
1 用復化梯形公式的自動控制誤差演算法求積分。2 romberg積分演算法求積分。復化梯形公式 sy2 1.m檔案 myint 0,1,100 fun1.m檔案 function f fun1 x if x 0 x 1 f 1 else f sin x x endmyint,m檔案 function...
Matlab數值積分
function gc,ak,xk guasschebyshev fun,n 高斯 勒讓德數值積分 引數說明 fun 積分表示式,可以是函式控制代碼 inline函式 匿名函式 字串表示式,但是必須可以接受向量輸入 a,b 積分上下限只能 1 1 故忽略 n 積分階數,可以任意正整數,但是不建議設定...