2012-03-14 3 views
0

У меня есть следующий код:подталкивание распределение student_t

#include <boost/smart_ptr/shared_ptr.hpp> 
#include <boost/numeric/interval.hpp> 
#include <boost/math/distributions/students_t.hpp> 

using namespace boost::numeric; 
using namespace interval_lib; 

unsigned int len=10; 
unsigned int v = len - 1; 
    double sqrtlen = sqrt(double(len)); 
    students_t dist(v); 
    double stdev = 0.2; 
    double mean = 3; 
    double t_stat = mean * sqrtlen/stdev; 
    double q = cdf(complement(dist, std::fabs(t_stat))); 

однако, когда я компилирую, я получаю следующее сообщение об ошибке:

Tests.cpp:39:3: error: ‘students_t’ was not declared in this scope 
Tests.cpp:39:14: error: expected ‘;’ before ‘dist’ 
Tests.cpp:45:31: error: ‘dist’ was not declared in this scope 
Tests.cpp:45:54: error: ‘complement’ was not declared in this scope 
Tests.cpp:45:55: error: ‘cdf’ was not declared in this scope 

Я не понимаю, почему он жалуется, когда у меня есть включая соответствующие заголовки. Может кто-нибудь, пожалуйста, скажите мне, как это исправить. благодаря!

ответ

2

Потому что вы не включили хорошее пространство имен. Из дока:

So, for example, the Students-t distribution template in namespace boost::math is

Link here

+0

спасибо, мне не хватает пространства имен boost :: math. который исправил его – user1155299

+0

@ user1155299: В этом случае вы должны принять этот ответ. – Mankarse

1

I think your namespace might be off. Другого общий указатель: Избегайте «с помощью» директивы, когда это возможно, они могут вызвать некоторые действительно труднодоступные отладки ошибок, если у вас есть коллизии имен.

+0

спасибо, я исправил его с boost :: math – user1155299

Смежные вопросы