我有这样一段代码:
#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 = α
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;
}
我认为它会处理这样一种功能,但我得到了“无法集成功能”的错误。为什么呢?
答案 0 :(得分: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的参数)sholud为1。