Math.h — заголовочный файл стандартной библиотеки языка С, разработанный для выполнения простых математических операций. Поскольку С++ также реализует данные функции для обеспечения совместимости (все они содержатся в заголовочном файле cmath) ми будем рассматривать эти языки вместе. Под Linux и FreeBSD математические функции хранятся отдельно в математической библиотеке libm. Таким образом, если любая из этих инструкций используется, при сборке линкеру должна быть передана опция -lm. Так как в результате большинства математических операций получатся дробные числа, все функции библиотеки принимают double. Для работы с типами float и long double используются функции с постфиксами f и l соответственно.

Complex.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляются функции для комплексной арифметики. Эти функции используют встроенный тип complex, который появился в стандарте C99. Функции в заголовочном файле complex.h представлены для трёх типов— double, float и long double (значения представлены в радианах): для вычисления тригонометрических значений синуса, косинуса, тангенса и котангенса для комплесных чисел, логарифм и экспонент, корень.

GNU (GSL) — это свободное программное обеспечение под лицензией GNU General Public License. Библиотека предоставляет широкий спектр математических процедур, таких как генераторы случайных чисел, специальных функций и наименьших квадратов. Есть более 1000 функций в общей сложности с обширным набором тестов. В отличие от лицензий собственных численных библиотек лицензия GSL не ограничивает научное сотрудничество. Для подключения библиотеки вы должны написать: $\# include <GSL / gsl_-math.h>$. Чтобы использовать в C ++ обработку исключений в рамках пользовательских функций, переданных в библиотеку в качестве параметров, библиотека должна быть построена с опцией компиляции -fexceptions. Библиотека может быть использована в многопоточных программах. Все функции поточные в том смысле, что они не используют статические переменные. Память всегда связана с объектами, а не с функциями. Для функций, объекты которых используют рабочее пространство в качестве временного хранилища рабочие области должны быть выделены на основе каждого потока. Для функций, которые используют табличные объекты, память может использоваться несколькими потоками одновременно. Таблица аргументов всегда объявляются константой в прототипах функций, чтобы показать, что они могут быть безопасно доступны из различных потоков.

Вот примерные программы на С++ с использованием математических библиотек:

Пример 1

Найти синус и косинус А

#include // библиотека ввода-вывода

#include <math.h> // математическая библиотека

using namespace std;

int main()

{

double a,b,c; // переменные типа double

cout << «Input A = »; cin>>a; //ввод а

b=cos(a); //присваивание значений

c=sin(a); //

cout << «Cos A = „<<b<<endl; cout << “Sin A = „<<c; //вывод а

return 0;

}



Вывод программы:





Пример 2

Найти exp от числа А

#include // библиотека ввода-вывода

#include <math.h> // математичекая библиотека

#include <conio.h>

#include <windows.h>

using namespace std;

int main()

{

SetConsoleOutputCP(1251);

double a,b,c; // переменные типа double

cout << “Input A = »; cin>>a; //ввод а

b=ceil(a); //присваивание значаный

c=exp(a); //

cout << «Большее целое число A = „<<b<<endl; cout << “Exp A = „<<c; //вывод а

getch();

return 0;

}

Вывод программы:





Пример 3

Возведите число в степень по заданным значениям

#include // библиотека ввода-вывода

#include <math.h> // математичекая библиотека

#include <conio.h>

#include <windows.h>

using namespace std;

int main()

{

SetConsoleOutputCP(1251);

double a,b; // переменные типа double

cout << “Введите число = »; cin>>a;

cout << «Введите степень = »; cin>>b;

b=pow(a,b);

cout << «Число в степени = „<<b<<endl;

getch();

return 0;

}

Вывод программы:





Пример 4

Решение квадратного уравнения

# include <stdio.h>

# include # include <gsl/gsl_poly.h>

using namespace std;

int main ()

{

int i;

double a = 1, b = 2, c = 1;

double x0, x1;

i = gsl_poly_solve_quadratic ( a, b, c, &x0, &x1 );

if ( i == 2 ) cout << “x0 =»<< x0 << " x1 ="<< x1 << endl;

if ( i == 1 ) cout<< «x0 = » << x0 << endl;

if ( i == 0 ) cout<< «No solve » << endl;

return 0;

}

Вывод программы:





Пример 5

Как использовать статистические функции

#include <stdio.h>

#include <gsl/gsl_statistics.h>

int main(void)

{

double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6};

double mean, variance, largest, smallest;

mean = gsl_stats_mean(data, 1, 5);

variance = gsl_stats_variance(data, 1, 5);

largest = gsl_stats_max(data, 1, 5);

smallest = gsl_stats_min(data, 1, 5);

printf («The dataset is \%g, \%g, \%g,\%g, \%g \ n»,

data[0], data[1], data[2], data[3], data[4]);

printf («The sample mean is \%g\ n», mean);

printf («The estimated variance is \%g\ n», variance);

printf («The largest value is \%g \ n», largest);

printf («The smallest value is \%g \ n», smallest);

return 0;

}

Вывод программы: