C C 實現龍貝格演算法

2022-01-12 12:02:01 字數 1365 閱讀 4355

1. 復化梯形法公式以及遞推化

復化梯形法是一種有效改善求積公式精度的方法。將[a,b]區間n等分,步長h = (b-a)/n,分點xk = a + kh。復化求積公式就是將這n等分的每乙個小區間進行常規的梯形法求積,再將這n的小區間累加求和。 公式如下:

使用復化梯形法積分時,可以將此過程遞推化,以更方便的使用計算機實現。設積分區間[a,b],將此區間n等分,則等分點共有n+1個,使用復化梯形積分求得tn。進行二分,二分結果記為t2n,則有:

2. 龍貝格積分公式

龍貝格積分實際上是提高收斂速度的一種演算法。由於復化梯形法步長減半後誤差減少至 ,即有:

根據此思路,將收斂緩慢的梯形值序列tn加工成收斂迅速的龍貝格值序列rn,這就是龍貝格演算法,加工演算法流程如下:

實現:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int rk=0;7

int tk=0;8

double fx(double x) //

被積函式913

double getreal(double a,double

b)18

double gets(double a,double b,double

h)19

2425

return

res;26}

27double romberg(double a,double b,double

e)28

52 c2=(16.0*s2-s1)/15.0;53

if(k==2)54

58 r2=(64.0*c2-c1)/63.0;59

if(k==3)60

64if(fabs(r1-r2)=100)break;65

}66return

r2;67}68

double tn(double a,double b,double

e)69

82return

t2;83}84

intmain()

85

龍貝格演算法

龍貝格演算法是以復化梯形公式,復化希普森,復化牛頓 科特斯為基礎採用的是逐漸平衡誤差的做法,如下 include 龍貝格 include define maxlen 100 double a double b double f double x else double t int n else el...

龍貝格積分

龍貝格積分對於程式設計實現來說,一開始不太好懂.對於不易直接用積分公式計算的原函式,通常用 復合梯形求積公式或復合拋物線求積公式等方法,但這些方法精度不高,收斂的速度緩慢。為了提高收斂速度,減少計算量,人們尋求其他方法.romberg方法也稱為逐次分半加速法。它是在梯形公式 辛卜生公式和柯特斯公式之...

數值積分 龍貝格 Romberg 積分

數值積分在工程上是個比較有用的數學工具。在工程上有很多數學問題,看似簡單,計算所用的數學公式不算複雜,但是求解起來卻很困難,很難獲得解析解的公式,這個時候就需要用到數值求解的辦法來獲取滿足工程需要的近似數值結果。舉個簡單的例子,求乙個變截面圓柱 或者叫圓台 的等效截面慣性矩,計算公式為ie h 3 ...