Как подключить математические функции в c
Перейти к содержимому

Как подключить математические функции в c

  • автор:

Как подключить математические функции в c

Стандартная библиотека языка Си предоставляет ряд математических функций, которые определены в разных заголовочных файлах, но в основном определены в файле math.h .

Степерь числа. pow

Функция pow() , определенная в заголовочном файле math.h , возвращает степень числа:

#include #include int main(void) < printf("pow(2, 3) = %.f\n", pow(2, 3)); // 2 в степени 3 printf("pow(5, 2) = %.f\n", pow(5, 2)); // 5 в степени 2 return 0; >

Стоит отметить, что эта функция возвращает число типа double .

Для возведения в степень чисел типа float и long double также определены функции powf() и powl() соответственно.

Округление числа. round

Функция round() округляет число до ближайшего целого. В качестве параметра она принимает число типа double :

#include #include int main(void) < double n1 = 3.14; printf("round(%.2f) = %.2f\n", n1, round(n1)); // round(3.14) = 3.00 double n2 = 3.49; printf("round(%.2f) = %.2f\n", n2, round(n2)); // round(3.49) = 3.00 double n3 = 3.5; printf("round(%.2f) = %.2f\n", n3, round(n3)); // round(3.50) = 4.00 return 0; >

Квадратный корень. sqrt

Функция sqrt() возвращает квадратный корень числа типа double :

#include #include int main(void) < double n1 = 224; printf("sqrt(%.f) = %.f\n", n1, sqrt(n1)); // sqrt(224) = 15 double n2 = 36; printf("sqrt(%.f) = %.f\n", n2, sqrt(n2)); // sqrt(36) = 6 return 0; >

Для получения квадратного корня числа float также есть функция sqrtf() , а для числа типа long double — функция sqrtl()

abs

Функция abs , определенная в файле «stdlib.h», возвращает абсолютное значение числа

#include #include int main(void) < int m = -15; int n = 24; printf("abs(m) = %d \n", abs(m)); // abs(m) = 15 printf("abs(n) = %d \n", abs(n)); // abs(n) = 24 return 0; >

Для возвращения абсолютного значения чисел типов long и long long определены в «stdlib.h» функции labs и llabs соответственно. Для получения абсолютного значения для числа типа float в файле math.h определена функция fasbs . Все эти функцию работают аналогично abs()

Стандартные математические функции в языке Си

Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.

Для использования математических функций нужно подключить заголовочный файл math.h . В ней определено много различных функций, но мы пока рассмотрим следующие:

Некоторые математические функции

fabs(x) модуль числа x
sqrt(x) квадратный корень из числа x
sin(x) синус числа x (х в радианах)
cos(x) косинус числа x (х в радианах)
pow(x, y) вычисление x y
exp(x) вычисление e x
log(x) натуральный логарифм числа x
log10(x) десятичный логарифм числа x

  • Все функции возвращают значение типа double .
  • Параметры функций – вещественные числа( double ), но можно передавать и целые числа. При этом произойдёт неявное преобразование типа . Компилятор из целого числа, например 3, сделает вещественное 3.0.

#include #include // подключаем math.h int main (void)
Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.

#include #include // подключаем math.h int main (void) < double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("%.2f\n", sin_a); return 0; >

В этой программе есть о чём поговорить. Тригонометрические функции, которые определены в math.h работают с радианной мерой угла. Людям же привычнее работать с градусами. Поэтому в данной программе мы предварительно перевели значение из градусов в радианы. Если этого не сделать, результат получится неправильным. Проверьте это самостоятельно.

Неявное преобразование типов

При явном преобразовании типа мы в скобках перед значением указывали тип, к которому нужно привести данное значение. В неявном преобразовании этого делать не нужно. Компилятор автоматически подберёт необходимый тип. Неявное преобразование типов осуществляется в следующих случаях:

  1. перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
  2. выполнение арифметических операций с разными типами аргументов
  3. перед выполнением присваивания
  • если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
    Порядок типов: int < float < double
  • при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.

Примеры: int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float

Сохрани в закладки или поддержи проект.

Практика

Решите предложенные задачи: Для удобства работы сразу переходите в полноэкранный режим

Дополнительные материалы

  1. пока нет

Как подключить математические функции в c

В языке С++ имеется большое количество математических функций. Для их использования в тексте программы необходимо подключить заголовочный файл cmath (ранее использовался math.h).

Прототип и краткое описание

int abs(int i);

Возвращает абсолютное значение целого аргумента i .

double acos(double x);

Функция арккосинуса. Значение аргумента должно находиться в диапазоне от -1 до +1 .

double asin(double x) ;

Функция арксинуса. Значение аргумента должно находиться в диапазоне от -1 до +1 .

double atan(double x) ;

double atan2(double y, double x) ;

Функция арктангенса от значения y / x .

double ceil(double x);

Вычисляет ближайшее целое, не меньшее, чем аргумент x .

double cos(double x);

Функция косинуса. Аргумент задается в радианах.

double exp(double x);

Вычисляет значение (экспоненциальная функция).

double fabs(double x);

Возвращает абсолютное значение вещественного аргумента x двойной точности.

double floor(double x);

Находит наибольшее целое, не превышающее значение x. Возвращает его в форме double.

double fmod(double x, double y);

Возвращает остаток от деления нацело x на y .

double frexp(double value, int *exp);

Разбивает число с плавающей точкой value на нормализованную мантиссу и целую часть как степень числа 2 . Целочисленная степень записывается в область памяти, на которую указывает exp , а мантисса используется как значение, которое возвращает функция.

double hypot(double x, double y);

Вычисляет гипотенузу z прямоугольного треугольника по значениям катетов x , y : .

long labs(long x);

Возвращает абсолютное значение целого (длинного(!) целого) аргумента x .

double ldexp(double v, int e);

Возвращает значение выражения .

double log(double x);

Возвращает значение натурального логарифма ( ln x).

double log10(double x);

Возвращает значение десятичного логарифма ().

double modf(double value, double *iptr);

Разделяет число с плавающей точкой value на целую и дробную части. Целая часть записывается в области памяти, на которую указывает iptr , дробная часть является значением, возвращаемым функцией.

double poly(double x, int n, double c[ ]);

Вычисляет значение полинома: c[n]x n + c[n  1]x n -1 +…+ c[1]x +c[0].

double pow(double x, double y);

Возвращает значение , т.е. x в степени y .

double pow10(int p);

Возвращает значение 10 p .

double sin(double x);

Функция синуса. Угол задается в радианах.

double sinh(double x);

Возвращает значение гиперболического синуса для x .

double sqrt(double x);

Возвращает положительное значение квадратного корня .

double tan(double x);

Функция тангенса. Угол задается в радианах.

double tanh(double x);

Возвращает значение гиперболического тангенса для x .

Как пользоваться этой таблицей? Рассмотрим на примере sin X . Во второй колонке (прототип) написано:

double sin(double x);

Что это означает? Функция sin() возвращает результат типа double (тип результата указан перед именем функции); в качестве входного параметра этой функции также выступает значение типа double (текст в скобках — double x ).

Примеры использования этой функции:

Математическая библиотека языков C и C++

В стандартную математическую библиотеку языка Си (а, значит, и C++) входит множество специальных математических функций, которые нужно знать и уметь использовать. Для того, чтобы использовать эти функции в своей программе, необходимо подключить заголовочный файл, содержащий описания этих функций, что делается строчкой в начале программы:

#include 

В языке C++ нужно указывать название заголовочного файла так:

#include

Функция от одного аргумента вызывается, например, так: sin(x) . Вместо числа x может быть любое число, переменная или выражение. Функция возвращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:

y = sin(x);
printf("%lf", sqrt(2));
Функция Описание
Округление
round Округляет число по правилам арифметики, то есть round(1.5) == 2 , round(-1.5) == -2
floor Округляет число вниз (“пол”), при этом floor(1.5) == 1 , floor(-1.5) == -2
ceil Округляет число вверх (“потолок”), при этом ceil(1.5) == 2 , ceil(-1.5) == -1
trunc Округление в сторону нуля (отбрасывание дробной части), при этом trunc(1.5) == 1 , trunc(-1.5) == -1
fabs Модуль (абсолютная величина)
Корни, степени, логарифмы
sqrt Квадратный корень. Использование: sqrt(x)
cbrt Кубический корень. Использование: cbrt(x)
pow Возведение в степень, возвращает a b . Использование: pow(a,b)
exp Экспонента, возвращает e x . Использование: exp(x)
log Натуральный логарифм
log10 Десятичный логарифм
Тригонометрия
sin Синус угла, задаваемого в радианах
cos Косинус угла, задаваемого в радианах
tan Тангенс угла, задаваемого в радианах
asin Арксинус, возвращает значение в радианах
acos Арккосинус, возвращает значение в радианах
atan Арктангенс, возвращает значение в радианах

Также в файле cmath есть набор полезных числовых констант, например, константа M_PI хранит значение числа \(\pi\).

В компиляторе Visual C++ для использования этих констант необходимо объявить директиву препроцессора _USE_MATH_DEFINES перед подключения заголовочного файла cmath .

#define _USE_MATH_DEFINES #include

Деление действительных чисел

Для действительных чисел определены операции сложения, вычитания, умножения и деления.

При этом операция деления выполняется по-разному для переменных и констант целочисленного типа и для переменных и констант действительных типов. В первом случае деление производится нацело с отбрасыванием дробной части, во втором случае — деление производится точно и результатом является действительное число. Более точно, если делимое и делитель одновременно являются целочисленными константами или переменными целочисленных типов, то деление будет целочисленным, а если хотя бы одно из них действительное, то деление будет действительным. Например:

printf(«%lf\n», 10 / 3);
printf(«%lf\n», 10. / 3);
printf(«%lf\n», 10 / 3.);
printf(«%lf\n», 10. / 3.);

выведет 3 в первой строке и 3.33333 в остальных строках.

Результат выполнения деления не зависит от того, какой переменной будет присвоен результат. Если написать double a = 10 / 3; , то переменная a будет равна 3, так как деление 10/3 будет целочисленным, независимо от того, чему будет присвоен результат.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *