我有以下問題:數值積分用C++與固定的恆定的離散給定網格
我的C++代碼可以計算兩個函數
F1(I1,I2,I3,I4)
對於每組{i1,i2,i3,i4},我得到f1的一些值,並且對於每組{j1,j2}我得到f2的某個值。
集合{i1,i2,i3,i4}和{j1,j2}在具有某個常量離散化步驟「h」的FIXED網格上給出。
我需要計算,在數學語言,積分F3(X1,X3)=積分[F1(X1,X2,X3,X4)* F2(X3,X4)DX3 DX4]
的所述簡單求和不夠好,因爲f2有很多跳躍。
是否有一些可以做這種整合的C++庫?或者一些algorhithm這是很容易實現(我不是第C真的好++)
千恩萬謝
假設我知道f2上的跳躍,並假設f1足夠平滑。在這種情況下我能做些什麼? – Sankp
我的意思是,例如,如果你的函數在區域中是分析的,如果它們是階梯函數,樣條曲線,多項式等等。那麼你可以在這些區域中做精確的積分並求和這些區域。你是否知道f2的確切形狀,其精度要高於分檔?那麼爲什麼你不能評估集成的任意位置的功能?他們是非常耗時的,還是以表格的形式從其他地方獲取函數?也可以看看@ElKamina的答案。你需要一個二維版本,比如http://math.fullerton.edu/mathews/n2003/simpsonsrule2dmod.html –
對於蒙特卡洛,看看VEGAS和MISER好的fortran子程序。你也許可以在www.netlib.org找到它們,或者在Numerical Recipes的書中找到C版本。他們可能有助於應對f2不規則的事實。 –