2012-06-13 2 views
0

를 통합 할 수 있습니다 :QAWC의 GSL I 코드의 이러한 조각을 가지고 기능

#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; 
} 
나는 그것이 기능의 이러한 종류의 처리 하겠지만, 나는 "기능을 통합 할 수 얻을 생각

"오류. 왜?

답변

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 (기능 gsl_integration_qawc 4. 파라미터) 일 sholud 1.