मैं CQUAD
जीएसएल में लेखक हूं । इंटरफ़ेस लगभग उसी के समान है QAGS
, इसलिए यदि आपने बाद का उपयोग किया है, तो पूर्व की कोशिश करना बिल्कुल भी मुश्किल नहीं होना चाहिए। बस याद रखें कि अपने NaN
एस और Inf
ज़ीरो को इंटीग्रांड में परिवर्तित न करें - कोड इन से ही निपटेगा।
नियमित रूप से ओक्टेव में quadcc
, और यहां मतलब में भी उपलब्ध है ।
क्या आप अपने साथ काम कर रहे पूर्णांकों का उदाहरण दे सकते हैं?
अपडेट करें
यहां किसी CQUAD
समापन बिंदु पर एक विलक्षणता के साथ एक फ़ंक्शन को एकीकृत करने के लिए उपयोग करने का एक उदाहरण है :
#include <stdio.h>
#include <gsl/gsl_integration.h>
/* Our test integrand. */
double thefunction ( double x , void *param ) {
return sin(x) / x;
}
/* Driver function. */
int main ( int argc , char *argv[] ) {
gsl_function f;
gsl_integration_cquad_workspace *ws = NULL;
double res, abserr;
size_t neval;
/* Prepare the function. */
f.function = &thefunction;
f.params = NULL;
/* Initialize the workspace. */
if ( ( ws = gsl_integration_cquad_workspace_alloc( 200 ) ) == NULL ) {
printf( "main: call to gsl_integration_cquad_workspace_alloc failed.\n" );
abort();
}
/* Call the integrator. */
if ( gsl_integration_cquad( &f, 0.0 , 1.0 , 1.0e-10 , 1.0e-10 , ws , &res , &abserr , &neval ) != 0 ) {
printf( "main: call to gsl_integration_cquad failed.\n" );
abort();
}
/* Print the result. */
printf( "main: int of sin(x)/x in [0,1] is %.16e +/- %e (%i evals).\n" ,
res , abserr , neval );
/* Free the workspace. */
gsl_integration_cquad_workspace_free( ws );
/* Bye. */
return 0;
}
जिसे मैंने संकलित किया gcc -g -Wall cquad_test.c -lgsl -lcblas
। आउटपुट है
main: int of sin(x)/x in [0,1] is 9.4608307036718275e-01 +/- 4.263988e-13 (63 evals).
जो, मेपल में 20 अंकों के लिए गणना की गई , 14 अंकों के लिए सही है।0.94608307036718301494
ध्यान दें कि यहां कुछ भी विशेष नहीं है, न ही यह बताने के लिए कि CQUAD
विलक्षणता कहां है, या किसी भी विशेष उपचार के भीतर ही है। मैं बस इसे वापस लौटने देता हूं NaN
, और इंटीग्रेटर स्वचालित रूप से उनकी देखभाल करता है।
यह भी ध्यान दें कि नवीनतम जीएसएल संस्करण 1.15 में एक बग है जो विलक्षणताओं के उपचार को प्रभावित कर सकता है। यह तय हो गया है, लेकिन इसे आधिकारिक वितरण में नहीं बनाया गया है। मैंने सबसे हालिया स्रोत का उपयोग किया, जिसके साथ डाउनलोड किया गया bzr branch http://bzr.savannah.gnu.org/r/gsl/trunk/
।