#include
//復化梯形公式
doubleReiterationOfTrapezoidal(doublea,double" />

嫒美直播免费版app下载-嫒美直播永久免费版下载-嫒美直播最新下载安装

當前位置:首頁 > 資格考試 > 正文

數(shù)值計算中用復化梯形公式、復化拋物線公式及龍貝格求積公式求定積分的編程算法

三道c++編程題,分別用到復化梯形公式和復化辛普生公式、龍貝格算法、R-K算法對方程

第一題:

#include
#include
//復化梯形公式
doubleReiterationOfTrapezoidal(doublea,doubleb,doublen,doublef(doublex))
{
doubleh,fa,fb,xk,t;
h=(b-a)/n;//步長
doubles=0.0;
for(intk=1;k {
xk=a+k*h;
s=s+f(xk);
}
returnh*(f(a)+f(b))/2+h*s;
}
//復化Simpson公式
doubleReiterationOfSimpson(doublea,doubleb,doublen,doublef(doublex))
{
doubleh,fa,fb,xk,xj;
h=(b-a)/n;//步長
doubles1=0.0;
doubles2=0.0;
for(intk=1;k {
xk=a+k*h;
s1=s1+f(xk);
}
for(intj=0;j {
xj=a+(j+0.5)*h;
s2=s2+f(xj);
}
returnh/6*(f(a)+f(b)+2*s1+4*s2);
}
doublefunc(doublex)
{
/*
*1.0->10
*1.1->11
*...
*2.0->20
*/
switch((int)round(x*10))
{
case10:return1;
case11:return.90909;
case12:return.83333;
case13:return.76923;
case14:return.71429;
case15:return.66667;
case16:return.625;
case17:return.58824;
case18:return.55556;
case19:return.52632;
case20:return.5;
}
return0;
}
intmain()
{
//都是分10步積完,從1到2
doubletra=ReiterationOfTrapezoidal(1,2,10,func);
doublesim=ReiterationOfSimpson(1,2,10,func);
printf("Trapezoidal:%f\n",tra);
printf("Simpson:%f\n",sim);
printf("Error:%f\n",(tra-sim));
return0;
}

第二題:

#include
#include
//龍貝格
doubleRomberg(doublea,doubleb,doubleeps,doublef(double))
{
intk=1;
doubleS,x,T1,T2,S1,S2,C1,C2,R1,R2,h=b-a;
T1=h*(f(a)+f(b))/2;
while(1)
{
S=0;x=a+h/2;
do
{
S+=f(x);x+=h;
}while(x T2=(T1+h*S)/2.0;
if(fabs(T2-T1) S2=T2+(T2-T1)/3.0;
if(k==1)
{
T1=T2;S1=S2;h/=2;k+=1;continue;
}
C2=S2+(S2-S1)/15.0;
if(k==2)
{
C1=C2;T1=T2;S1=S2;h/=2.0;k+=1;continue;
}
R2=C2+(C2-C1)/63;
if(k==3)
{
R1=R2;C1=C2;T1=T2;S1=S2;h/=2;k+=1;continue;
}
if(fabs(S1-S2) return(S2);
R1=R2;C1=C2;T1=T2;S1=S2;
h/=2;
k+=1;
return(R1);
}
}
doublefunc(doublex)
{
doublec=cos(x);
returnsqrt(x+c*c);
}
intmain()
{
constdoublepi=3.14159265358979323;
//從1到pi,精度是1e-5
printf("%f\n",Romberg(0,pi,1e-5,func));
return0;
}

MATLAB問題

不知道你的學歷水平是什么樣的,我盡量簡單說

普通積分:

一般來說是找到被積函數(shù)的原函數(shù),然后把上下限帶入求值(定積分)

得到的解是精確解

參見大學課程:《高等數(shù)學》

在matlab中可用函數(shù):int(),求解

數(shù)值積分:

由于在實際工程中絕大多數(shù)的積分都無法找到原函數(shù)

所以,想要得到精確解很困難

為了能夠算出結(jié)果一些大牛(牛頓,高斯等等)搞出了數(shù)值解

即:數(shù)值積分(與精確解的誤差滿足需要)

具體的方法有很多比如:

梯形公式;辛普森公式;遞歸公式;龍貝格積分;自適應積分;高斯-勒讓德積分等等

參見研究生課程:《數(shù)值分析》

在matlab中自帶了一些求數(shù)值積分的函數(shù):

trapz():基于復化梯形公式

integral():求解一元數(shù)值積分

integral2():求解一般區(qū)域二重積分數(shù)值解

integral3():求解一般區(qū)域三重積分數(shù)值解

我個人最常使用——高斯求積法求數(shù)值積分

一般來說取10-20個高斯點即可得到足夠精度的數(shù)值解

最后:請叫我雷鋒!

一道定積分?

題主給出的定積分問題,其被積函數(shù)比較復雜,所以用基本積分公式求解很難得到精確解。但我們可以通過數(shù)值積分的方法(如梯形公式,拋物線公式,龍貝格公式等等),得到其數(shù)值解。

對于題主的被積函數(shù)為x^x的定積分,使用復合拋物線公式,并借助于Excel來求解。

1、將積分限【1,2】分成10等份,即

k=0,1,2,3,。。。,10

2、計算積分計算點,即

x(k)=1,1.1,1.2,。。。,2

3、將被積函數(shù)寫出 f(x)=x^x,并計算其y(k)值

4、根據(jù)復合拋物線公式計算,得到其積分值

5、計算過程如下

數(shù)值計算的構(gòu)造數(shù)值積分

構(gòu)造數(shù)值積分公式最通常的方法是用積分區(qū)間上的n 次插值多項式代替被積函數(shù),由此導出的求積公式稱為插值型求積公式。特別在節(jié)點分布等距的情形稱為牛頓-柯茨公式,例如梯形公式與拋物線公式就是最基本的近似公式。但它們的精度較差。龍貝格算法是在區(qū)間逐次分半過程中,對梯形公式的近似值進行加權(quán)平均獲得準確程度較高的積分近似值的一種方法,它具有公式簡練、計算結(jié)果準確、使用方便、穩(wěn)定性好等優(yōu)點,因此在等距情形宜采用龍貝格求積公式。當用不等距節(jié)點進行計算時,常用高斯型求積公式計算,它在節(jié)點數(shù)目相同情況下,準確程度較高,穩(wěn)定性好,而且還可以計算無窮積分。數(shù)值積分還是微分方程數(shù)值解法的重要依據(jù)。許多重要公式都可以用數(shù)值積分方程導出。

數(shù)值積分的基本思想

數(shù)學上,對于積分

地球物理數(shù)據(jù)處理基礎(chǔ)

只要找到被積函數(shù)f(x)的原函數(shù)F(x),便可得到

地球物理數(shù)據(jù)處理基礎(chǔ)

但在實際使用中,這種方法往往有困難,因為很多的被積函數(shù)找不到用初等函數(shù)表示的原函數(shù),例如 等。在地球物理的實際問題中,被積函數(shù)f(x)往往不清楚或者很復雜,只是通過觀測、測量等獲取了一些離散的值yi=f(xi),即已知的f(x)是一個列表函數(shù),無法求取其原函數(shù)。因此,這類問題就必須依靠數(shù)值積分解決。

對于列表函數(shù)f(x)的積分I*=∫baf(x)dx,當已知f(x)在區(qū)間[a,b]上n+1個節(jié)點a=x012<…n=b的觀測值f0,f1,f2,…,fn時,自然地想到用它們的插值多項式φ(x)的積分I=∫baφ(x)dx來近似代替I*。其幾何意義就是用[a,b]上插值曲線φ(x)與x軸所夾的面積代替f(x)曲線與x軸所夾的面積。

利用不同的插值多項式的積分可導出不同的求積系數(shù)和求積公式,通常利用分段低階的插值多項式求積應用最廣,表7-1給出了不同數(shù)值積分方法的優(yōu)缺點。復化辛卜生公式和復化梯形公式既簡便易行、容易理解,又具有較高的精度,因此是地球物理計算中的主要的求積方法。高斯公式選點少精度高,是正演計算的求積方法。至于龍貝格算法,只要能加密節(jié)點,就可以達到最快的收斂速度,且每次提高二階逼近的精度,是數(shù)值積分中很巧妙、很優(yōu)秀的方法,但是由于地球物理測量的成本和周期限制觀測點密度是有限的,因而無法發(fā)揮這種算法的優(yōu)勢。樣條求積精度高,是地球物理計算中理想的求積方法?;谶@些原因本章重點介紹復化梯形求積、復化辛卜生求積,至于樣條求積,在第六章樣條插值函數(shù)的基礎(chǔ)上很容易實現(xiàn)。

表7-1 不同求積公式對比表

展開全文閱讀