7 Mayıs 2018 Pazartesi

math

Constants
Pi sayısını belirtilen tipte almak için şöyle yaparız.
boost::math::constants::pi<cpp_dec_float_50>()
Factorial metodu
C++ matametik kütüphanesinde olmayan factorial için kullanılır.

Special Functions
digamma metodu
Şöyle yaparız.
#include <boost/math/special_functions/digamma.hpp>

std::cout << boost::math::digamma (3.14) << "\n";
ibeta metodu
Şu satırı dahil ederiz.
#include <boost/math/special_functions/beta.hpp>
Şöyle yaparız.
boost::math::ibeta((double)5, (double)1, (double)0.5);
sinc_pi metodu
Açıklaması şöyle
The function sinc(x) is equivalent to sin(x)/x.
Şu satırı dahil ederiz.
#include "boost/math/special_functions/sinc.hpp"
Şöyle yaparız.
float x = 0;
float result = boost::math::sinc_pi(x);
Normal Sınıfı
Şöyle yaparız
boost::math::normal s;
Şöyle yaparız.
double  clStats::NormCDF(double x) {
  return boost::math::cdf(s,x);
}
double clStats::NormPDF(double x) {
  return boost::math::pdf(s,x);
}
Internals
newton_raphson_iterate metodu
İmzası şöyle
template <class F, class T>
T newton_raphson_iterate(F f, T guess, T min, T max, int digits,
  boost::uintmax_t& max_iter)
Şöyle çağırırız.
newton_raphson_iterate(myFunc, 0.1, -0.1, 0.4,
  std::numeric_limits<double>::digits);
Tools
bisect metodu
İmzası şöyle
template <class F, class T, class Tol>
 std::pair<T, T> 
 bisect(
    F f, 
    T min, 
    T max, 
    Tol tol);
Elimizde şu denklem olsun.
x^2 - 3x + 1 = 0
Şöyle yaparız.
struct TerminationCondition  {
  bool operator() (double min, double max)  {
    return abs(min - max) <= 0.000001;
  }
};

struct FunctionToApproximate  {
  double operator() (double x)  {
    return x*x - 3*x + 1;  // Replace with your function
  }
};

// ...
using boost::math::tools::bisect;
double from = 0;  
//The solution must lie in the interval [from, to],
  additionally f(from) <= 0 && f(to) >= 0
double to = 1;
std::pair<double, double> result = bisect(FunctionToApproximate(), from, to,
  TerminationCondition());
double root = (result.first + result.second) / 2;  // = 0.381966...

Hiç yorum yok:

Yorum Gönder