【问题标题】:QAWC gsl - could not integrate functionQAWC gsl - 无法集成功能
【发布时间】:2012-06-13 21:09:58
【问题描述】:

我有这么一段代码:

#include <gsl/gsl_integration.h>
#include <stdio.h>
#include <time.h>
#include <math.h>

double func1(double x, void* params) {
   return 1/(x-1);
}

int main() {
   int num = 100;
   gsl_integration_workspace *workspace = gsl_integration_workspace_alloc(num); 
   double result, error;    
   double alpha;    
   alpha = 1;
   gsl_function F;  
   F.function = &func1; 
   F.params = &alpha;   
   double a, b;
   a=0; 
   b=2;
   double err1= 0;  
   double err2 = 1e-7;
   gsl_integration_qawc (&F, a, b, 1.0, err1, err2, num, workspace,&result, &error);

   printf("Function QAWC - Cauchy Principal value\n");
   printf("Result: %f\n", result);
   printf("Error: %f\n", error);

   result = 0; 
   gsl_integration_workspace_free(workspace);   //zwolnienie pamięci dla całkowania
   return 0;
}

我以为它会处理这种函数,但我得到“无法集成函数”错误。为什么?

【问题讨论】:

    标签: gsl


    【解决方案1】:

    这并不难。简单来说,要计算的函数具有 F(x)=g(x)*w(x) 的形式,其中 g(x) 是用户必须定义​​的函数。 w(x) 使用 c 参数生成,形式为:w(x)=1/(x-c)。因此,如果我们要计算函数 f(x)=1/(x-1) 的主值,则 func1 应该是:

    double func1(double x, void* params) {
       return 1;
    }
    

    并且参数c(4.函数gsl_integration_qawc的参数)应该是1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2011-04-09
      相关资源
      最近更新 更多