GSL을 사용하여 일정한 간격으로 부드러운 단일 모드 함수를 수치 적으로 통합하는 간단한 예제를 게시 할 수 있습니까?GSL과의 부드러운 단일 모드 함수의 수치 적 통합?
2
A
답변
5
은 [0,1000]에 1/(t^2 + 1)을 통합 한 예입니다. 특이점이 없으므로 가장 간단한 규칙 집합을 사용하여 적응 적 통합을 사용합니다.
#include <stdio.h>
#include <math.h>
#include <gsl/gsl_integration.h>
double f (double x, void * params) {
double alpha = *(double *) params;
double f = alpha/(x * x + 1);
return f;
}
int
main (void)
{
gsl_integration_workspace * w
= gsl_integration_workspace_alloc (1000);
double result, error;
double alpha = 1.0;
gsl_function F;
F.function = &f;
F.params = α
gsl_integration_qag (&F,
0.0, 1000.0,
0.0, 1e-7, 1000,
GSL_INTEG_GAUSS15,
w,
&result, &error);
printf ("result = % .18f\n", result);
printf ("estimated error = % .18f\n", error);
gsl_integration_workspace_free (w);
return 0;
}
그리고 그 결과는 적분 PI/2에 대해해야하기 때문에 의미가
result = 1.569796327128230029
estimated error = 0.000000000092546021
있습니다.
+0
일곱 번째 인수를 명확히하려면 "GSL_INTEG_GAUSS15"매크로를 사용해야합니다. –
+0
@ViniciusMiranda 전화하세요. –
+0
은 완벽합니다. – 4pie0
부드럽습니까? 입술? –
@SteveCox 그것은 고차원까지 연속 유도체를 가지고 있다고 말합니다. – becko
역시 분석적입니까? 또는 n 배의 차별화가 가능한가? –