花了一晚上的時間把數值分析裡面定積分求解看懂了,累得早上頭疼發燒。。。唉革命尚未成功啊!
利用richardson外推算法,得到如下的求積方法,其只產生四個序列:
其結束迭代準則為:
並認為有一定數值分析基礎,不難寫出如下程式
#include #include #include #include using namespace std;
///#define f(x) (sin(x))
double f(double x)
double romberg(double a, double b, int max_n, int dfs_n, double eps, double (*f)(double x))
t[0][1] = h * (s + (f(a)+f(b))/2);
n *= 2;
for(int m = 1; m < max_n; m++)
h = (b-a)/n;
s = 0;
for(int j = 1; j < n; j++)
t[0][1] = h * (s + (f(a) + f(b))/2.0);
n *= 2;
for(int i = 1; i <= m; i++)
if(abs(t[m][1] - t[m-1][1]) < eps)
}if(!flag)
}int main()
其中,f(x)為想求積分的函式,romberg函式傳入第乙個引數是積分下限,第二個引數是積分上限,第三個引數是迭代次數,第四個引數是等分次數,第五個引數是誤差範圍(迭代允許誤差),第六個引數是f(x)函式。 龍貝格求積分演算法例題 數值分析實習作業之龍貝格求積
北京化工大學數值分析,龍貝爾求積,實習題五 用龍貝格求積公式法計算習題五第一題積分,是結果盡可能準確 eps 0.000001 主程式 習題五 用龍貝格求積公式計算下列積分 clear clcformat long disp 習題五 用龍貝格求積公式計算下列積分 求解 f sinx x 0,pi 2...
數值積分 龍貝格 Romberg 積分
數值積分在工程上是個比較有用的數學工具。在工程上有很多數學問題,看似簡單,計算所用的數學公式不算複雜,但是求解起來卻很困難,很難獲得解析解的公式,這個時候就需要用到數值求解的辦法來獲取滿足工程需要的近似數值結果。舉個簡單的例子,求乙個變截面圓柱 或者叫圓台 的等效截面慣性矩,計算公式為ie h 3 ...
數值分析2 2 追趕法
追趕法比較特殊,比前面的演算法實現起來都要簡單,唯一要注意的是gamma的座標從1開始 程式分別用3個陣列存放三條對角線 如下 對於係數矩陣是三對角矩陣的方程組可以用追趕法 include include include using namespace std const int maxn 1000...