日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

GSL中的数值积分

發(fā)布時(shí)間:2024/3/7 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GSL中的数值积分 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)值積分

本章描述了對(duì)一維函數(shù)進(jìn)行數(shù)值積分(求積)的程序。常用函數(shù)有自適應(yīng)和非自適應(yīng)集成的例程,具體情況有專門的例程。這些包括在無(wú)限和半無(wú)限范圍內(nèi)的積分,奇異積分,包括對(duì)數(shù)奇點(diǎn),柯西主值的計(jì)算和振蕩積分。本庫(kù)重新實(shí)現(xiàn)了在QUADPACK中使用的算法,數(shù)值積分包由Piessens、de donker - kapenga、Ueberhuber和Kahaner編寫。在Netlib上可以找到Fortran版的QUADPACK代碼。包括具有高精度系數(shù)的非自適應(yīng)、定階Gauss-Legendre積分例程,以及IQPACK中各種加權(quán)函數(shù)的定階求積規(guī)則。

本章中描述的函數(shù)聲明在頭文件gsl_integration.h中。

17.1 介紹

??? 每種算法都會(huì)計(jì)算出以下形式的定積分的近似值:

其中,wx是一個(gè)權(quán)重函數(shù)(對(duì)于一般的被積函數(shù)wx=1)。用戶提供了絕對(duì)誤差和相對(duì)誤差界限(epsabs,epsrel),它規(guī)定了以下精度要求:

?其中,RESULT是該算法獲得的數(shù)值近似值。該算法嘗試以以下不等式成立的方式估算絕對(duì)誤差A(yù)BSERR = | RESULT - I |。

???? 簡(jiǎn)言之,例程返回第一近似值,其絕對(duì)誤差小于epsabs或相對(duì)誤差小于epsrel。

請(qǐng)注意,這是一個(gè)“或”約束,而不是與約束。要計(jì)算指定的絕對(duì)誤差,請(qǐng)將epsrel設(shè)置為零。要計(jì)算指定的相對(duì)誤差,請(qǐng)將epsabs設(shè)置為零。如果誤差范圍太嚴(yán)格,例程將無(wú)法收斂,但始終會(huì)返回到該階段為止獲得的最佳近似值。

?? QUADPACK中的算法使用基于以下字母的命名約定:

Q - 積分函數(shù)

N - 非自適應(yīng)積分器

A - 自適應(yīng)積分器

G - 一般被積函數(shù)(用戶定義)

W - 被積函數(shù)的權(quán)重函數(shù)

S - 更易積分的奇異點(diǎn)

P - 可提供特殊難點(diǎn)

I - 無(wú)窮大的積分范圍

O - 周期變動(dòng)的權(quán)重函數(shù),cossin

F - 傅里葉積分

C - 柯西主值

算法建立在求積規(guī)則對(duì)、高階規(guī)則對(duì)和低階規(guī)則對(duì)的基礎(chǔ)上。高階規(guī)則用于計(jì)算小范圍內(nèi)積分的最佳近似值。高階規(guī)則和低階規(guī)則的結(jié)果之差給出了近似誤差的估計(jì)。

17.1.1 不帶權(quán)重函數(shù)的被積函數(shù)

一般函數(shù)(沒有權(quán)重函數(shù))的算法是基于高斯-克朗羅德規(guī)則。

高斯-克朗羅德規(guī)則以m階的經(jīng)典高斯求積規(guī)則開始。該規(guī)則在每個(gè)橫坐標(biāo)之間添加額外的點(diǎn),從而得到更高階的2m+1階克朗羅德規(guī)則。克朗羅德規(guī)則是有效的,因?yàn)樗赜昧藖?lái)自高斯規(guī)則的現(xiàn)有函數(shù)計(jì)算。

用高階克朗羅德規(guī)則作為積分的最佳逼近,用兩規(guī)則之差作為逼近誤差的估計(jì)。

17.1.2 帶權(quán)重函數(shù)的被積函數(shù)

對(duì)于具有權(quán)重函數(shù)的被積函數(shù),該算法使用了克倫肖-柯蒂斯求積規(guī)則。

克倫肖-柯蒂斯規(guī)則從被積函數(shù)的n階切比雪夫多項(xiàng)式近似開始。這個(gè)多項(xiàng)式可以精確地積分,從而逼近原函數(shù)的積分。切比雪夫展開式可以擴(kuò)展到更高階,以改進(jìn)近似并提供誤差的估計(jì)。

17.1.3 具有奇異權(quán)函數(shù)的被積函數(shù)

被積函數(shù)中奇異點(diǎn)(或其他行為)的存在會(huì)導(dǎo)致切比雪夫近似的緩慢收斂。在QUADPACK中使用的改進(jìn)的克倫肖-柯蒂斯規(guī)則分離出幾個(gè)常見的導(dǎo)致緩慢收斂的權(quán)函數(shù)。

利用切比雪夫多項(xiàng)式對(duì)這些權(quán)重函數(shù)進(jìn)行分析積分,從而預(yù)先計(jì)算修正的切比雪夫矩。把矩和切比雪夫近似結(jié)合起來(lái)就得到了想要的積分。對(duì)函數(shù)的奇異部分使用解析積分可以精確地對(duì)消,并極大地改善了積分的整體收斂性。

17.2 QNG非自適應(yīng)高斯-克朗羅德積分

QNG算法是一種非自適應(yīng)的方法,它使用固定的高斯-克朗羅德-帕特森橫坐標(biāo)來(lái)對(duì)被積函數(shù)進(jìn)行采樣,最大采樣點(diǎn)為87個(gè)。為平滑函數(shù)的快速積分提供了支持。

int gsl_integration_qng(constgsl_function* f, double a, double b, double epsabs,

double epsrel, double * result, double * abserr, size_t * neval)

本函數(shù)依次應(yīng)用高斯-克朗羅德10個(gè)、21個(gè)、43個(gè)和87個(gè)點(diǎn)的積分規(guī)則,,直到在所需的絕對(duì)和相對(duì)誤差限制(epsabs和epsrel)內(nèi)取得,f 在(a,b)范圍內(nèi)的積分估計(jì)值。本函數(shù)返回最終的近似值result,絕對(duì)誤差的估計(jì)數(shù)abserr和使用的函數(shù)計(jì)算次數(shù)neval。高斯-克朗羅德規(guī)則的設(shè)計(jì)方式是,每個(gè)規(guī)則使用其前一個(gè)規(guī)則的所有結(jié)果,以最小化函數(shù)計(jì)算的總數(shù)。

17.3 QAG 自適應(yīng)積分

??? QAG算法是一個(gè)簡(jiǎn)單的自適應(yīng)積分過程。將積分區(qū)域劃分為子區(qū)間,每次迭代對(duì)估計(jì)誤差最大的子區(qū)間進(jìn)行二等分。當(dāng)子區(qū)間集中于被積函數(shù)的局部困難時(shí),這就迅速地減少了整體誤差。這些子區(qū)間由以下結(jié)構(gòu)來(lái)管理,

gsl_integration_workspace

??? 本工作區(qū)處理子區(qū)間范圍、結(jié)果和錯(cuò)誤估計(jì)的內(nèi)存。

gsl_integration_workspace * gsl_integration_workspace_alloc(size_t n)

??? 本函數(shù)分配了一個(gè)工作空間,可以容納n個(gè)雙精度區(qū)間,以及它們的積分結(jié)果和誤差估計(jì)。當(dāng)所有必要的重新初始化由集成函數(shù)自動(dòng)執(zhí)行時(shí),一個(gè)工作空間可以被多次使用。

void gsl_integration_workspace_free(gsl_integration_workspace * w)

本函數(shù)釋放工作空間w所使用的內(nèi)存。

int gsl_integration_qag(const gsl_function * f, double a, double b, double epsabs,

double epsrel, size_t limit, int key, gsl_integration_workspace * workspace,

double * result, double * abserr)

本函數(shù)根據(jù)所要求的相對(duì)和絕對(duì)誤差限制, epsabs和epsrel,采用自適應(yīng)積分規(guī)則計(jì)算,f在(a,b)上的積分的估計(jì)值。該函數(shù)返回最終的近似值,result,和絕對(duì)誤差的估計(jì)數(shù),abserr。積分規(guī)則由key值決定,key值應(yīng)該從以下符號(hào)名稱中選擇,

?GSL_INTEG_GAUSS15(key = 1)

? GSL_INTEG_GAUSS21(key = 2)

? GSL_INTEG_GAUSS31(key = 3)

? GSL_INTEG_GAUSS41(key = 4)

? GSL_INTEG_GAUSS51(key = 5)

? GSL_INTEG_GAUSS61(key = 6)

??? 對(duì)應(yīng)于15個(gè)、21個(gè)、31個(gè)、41個(gè)、51個(gè)和61個(gè)點(diǎn)的高斯-克朗羅德規(guī)則。高階規(guī)則為光滑函數(shù)提供了更好的準(zhǔn)確性,而低階規(guī)則在函數(shù)包含局部困難(如不連續(xù))時(shí)節(jié)省了時(shí)間。

??? 在每個(gè)迭代中,自適應(yīng)積分策略以最大的誤差估計(jì)將區(qū)間一分為二。子區(qū)間及其結(jié)果存儲(chǔ)在workspace提供的內(nèi)存中。子區(qū)間的最大數(shù)量由limit給出,它可能不超過工作區(qū)的分配大小。

總結(jié)

以上是生活随笔為你收集整理的GSL中的数值积分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。