আমি 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).
0,94608307036718301494
দ্রষ্টব্য যে এখানে কোনও বিশেষ কিছুই নেই, CQUAD
একাকীত্বটি কোথায় আছে তা জানানোর জন্য বা ইন্টিগ্রেন্ডের মধ্যেই কোনও বিশেষ চিকিত্সা নেই। আমি কেবল এটিকে ফেরত দিতে দিয়েছি NaN
, এবং সংহতকারীগুলি স্বয়ংক্রিয়ভাবে সেগুলির যত্ন নেয়।
এও নোট করুন যে সর্বশেষতম জিএসএল সংস্করণ 1.15 এ একটি বাগ রয়েছে যা এককতার চিকিত্সার উপর প্রভাব ফেলতে পারে। এটি স্থির করা হয়েছে, তবে এটি সরকারী বিতরণে স্থান দেয়নি। আমি অতি সাম্প্রতিক উৎস ব্যবহার করা হয়, সঙ্গে ডাউনলোড করা bzr branch http://bzr.savannah.gnu.org/r/gsl/trunk/
।