Интерактивный учебник языка Python. Математические функции – класс Math
Для всех математических функций необходим заголовок
1 | acos | Функция double acos(double arg arg |
2 | asin | Функция double asin(double arg ) возвращает арккосинус аргумента arg . Значение аргумента функции должно лежать в интервале от -1 до 1, иначе произойдет ошибка. |
3 | atan | Функция double atan(double arg ) возвращает арктангенс аргумента arg . |
4 | atan2 | Функция double atan2(double x , double y ) возвращает арктангенс значения y /x . |
5 | ceil | Функция double ceil(double num ) возвращает ближайшее целое число (представленное как действительное число с плавающей точкой), которое не меньше значения аргумента num . Например, ceil(1.02) вернет 2.0. Такое преобразование называется округлением с избытком. |
6 | cos | Функция double cos(double arg ) возвращает косинус аргумента arg |
7 | cosh | Функция double cosh(double arg ) возвращает гиперболический косинус аргумента arg . |
8 | exp | Функция double exp(double arg ) возвращает основание натурального логарифма e, возведенное в степень arg . |
9 | fabs | Функция double fabs(double num ) возвращает абсолютное значение (значение по модулю) аргумента num . |
10 | floor | Функция double floor(double num ) возвращает наибольшее целое число (представленное как действительное число с плавающей точкой), не превышающее значения аргумента num . Например, floor(1.02) вернет число 1.0. Такое преобразование называется округлением с недостатком. |
11 | fmod | Функция double fmod(double x, double y) возвращает остаток от деления x/y. |
12 | frexp | Функция double frexp(double num , int *exp ) раскладывает число num на мантиссу, изменяющуюся в диапазоне от 0.1 до 1, не включая 1, и целый показатель степени, так что num = mantissa . Функция возвращает мантиссу, а значение показателя степени сохраняется в переменной, на которую ссылается указатель exp . |
13 | log | Функция double log(double num ) возвращает натуральный логарифм числа num . Если аргумент num |
14 | log10 | Функция double log10(double num ) возвращает десятичный логарифм числа num . Если аргумент num отрицателен или равен нулю, возникает ошибка. |
15 | pow | Функция double pow(double base , double exp ) возвращает число base , возведенное в степени exp . Если основание степени base равно нулю, а показатель степени exp меньше или равен нулю, может произойти ошибка, связанная с выходом аргумента из области определения функции (domain error). Это ошибка возникает также, если аргумент base отрицателен, а аргумент exp не является целым числом. |
16 | sin | Функция double sin(double arg ) возвращает синус аргумента arg . Значение аргумента должно быть выражено в радианах. |
17 | sinh | Функция double sinh(double arg ) возвращает гиперболический синус аргумента arg . |
18 | sqrt | Функция double sqrt(double num ) возвращает квадратный корень аргумента num . Если значение аргумента отрицательно, возникает ошибка, связанная с выходом из области определения функции. |
19 | tan | Функция double tan(double arg ) возвращает тангенс аргумента arg . Значение аргумента должно быть выражено в радианах. |
20 | tanh | Функция double tanh(double arg ) возвращает гиперболический тангенс аргумента arg . |
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
Вот примерные программы на С++ с использованием математических библиотек:
Найти синус и косинус А
#include
using namespace std;
cout << «Input A = »; cin>>a; //ввод а
b=cos(a); //присваивание значений
cout << «Cos A = „<
Вывод программы:
Найти exp от числа А
#include // библиотека ввода-вывода
#include
#include
#include
using namespace std;
SetConsoleOutputCP(1251);
double a,b,c; // переменные типа double
cout << “Input A = »; cin>>a; //ввод а
b=ceil(a); //присваивание значаный
cout << «Большее целое число A = „<
Вывод программы:
Возведите число в степень по заданным значениям
#include // библиотека ввода-вывода
#include
#include
#include
using namespace std;
SetConsoleOutputCP(1251);
double a,b; // переменные типа double
cout << “Введите число = »; cin>>a;
cout << «Введите степень = »; cin>>b;
cout << «Число в степени = „<
Вывод программы:
Решение квадратного уравнения
# include
# include # include
using namespace std;
double a = 1, b = 2, c = 1;
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;
Вывод программы:
Как использовать статистические функции
#include
#include
double data = {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, data, data, data, data);
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);
Структура программы на языке Си
1. #include
2. #include
3 . using name space std – использовать стандартное пространство имен
4. int main(int argc, char *argv) – имя функции. Любая программа на языке Си состоит из одной или нескольких функций. В написанном шаблоне функция одна – main(). Функция c именем main обязательно должна быть в любой исполняемой программе .
5. { - начало тела функции
6. system(“pause”) – вызов функции system с аргументом “pause”. Функция реализует ожидание нажатия клавиши.
7. оператор return с аргументом EXIT_SUCCESS – завершение функции main с кодом 0.
8. } – конец функции main.
Простые типы данных Си
Для представления целых величин в Си предусмотрены следующие типы данных:
Тип сhar. Занимает в памяти 1 байт. Используется для представления символов и целых чисел от 0 до 255 (-128 до 127).
Тип int . Занимает в памяти4 байта. Используется для представления целых чисел в диапазоне -2 147 483 648 до 2 147 483 647.
Тип float. Занимает в памяти 4 байта. Используется для представления чисел с плавающей точкой. от 3.4×10 -38 до 3.4×10 38 . Точность вычислений до 7 знаков после запятой.
Тип double. Занимает в памяти 8 байт. Используется для представления чисел с плавающей точкой. от 1.7×10 -308 до 1.7×10 308 . Точность вычислений до 15 знаков после запятой.
Тип void – пустой тип. Используется для описания функций.
Тип bool – логический тип. Может принимать 2 значения true или false.
Основные операторы Си
Оператор - это лексема, которая переключает некоторые вычисления, когда применяется к переменной или к другому объекту в выражении. Язык Си представляет большой набор операторов арифметических и логических операторов.
Таблица 4.1. Унарные операторы языка Си
Таблица 4.2. Бинарные операторы языка Си
Код оператора | Название | Результат операции | ||
Аддитивные операторы | ||||
+ | бинарный плюс | вычисление суммы, например: int x = 2,y = 1,z; z = x+y; | ||
- | бинарный минус | вычисление разности, например: int x = 2,y = 1,z; z = x-y; | ||
Мультипликативные операторы | ||||
* | умножение | вычисление произведения, например: int x = 2,y = 1,z; z = x*y; | ||
/ | деление | вычисление частного, например: int x = 12,y = 2,z; z = x/y; | ||
% | остаток | вычисление остатка от деления, например: int x = 12,y = 7,z; z = x%y; | ||
Логические операторы | ||||
&& | логическое AND (И) | проверка условий, связанных логическим И | ||
|| | логическое OR (ИЛИ) | проверка условий, связанных логическим ИЛИ | ||
Операторы присваивания | ||||
= | присваивание | присвоить переменной заданное значение или значение другой переменной | ||
Операторы отношения | ||||
< | меньше чем | x | ||
> | больше чем | x>y, х больше y | ||
<= | меньше чем или равно | x<=y, x меньше или равно y | ||
>= | больше чем или равно | x>=y, x больше или равно y | ||
Операторы эквивалентности | ||||
= = | равно | x= =y, х равно y | ||
!= | не равно | x!=y, x не равно y | ||
, | оператор перечисления | выполнить разделенные оператором действия слева направо, например y+=5,x-=4,y+=x; | ||
Библиотека математических функций math.h
Си поддерживает множество математических функций, прототипы которых описаны в файле math.h. Познакомимся с некоторыми из них.
abs(int x) возвращает модуль целого числа x . acos(double x) возвращает арккосинус числа x в радианах. asin(double x) возвращает арксинус числа x в радианах. atan(double x) возвращает арктангенс числа x в радианах. atof(char *s, double x) преобразует строку s в вещественное число x. cos(double x) возвращает косинус числа x (x задано в радианах) ceil(double x) округляет число x в большую сторону exp(double x) возвращает экспоненту числа x. fabs(double x) возвращает модуль вещественного числа x. sin(double x) возвращает синус числа x (x задано в радианах). sqrt(double x) возвращает квадрат числа x. tan(double x) возвращает тангенс числа x (x задано в радианах). | floor(double x) округляет число x в меньшую сторону fmod(double x, double y) возвращает остаток от деления числа x на число y. hipot(double x, double y) возвращает квадрат суммы числа x и числа y. log(double x) возвращает натуральный логарифм числа x. log10(double x) возвращает десятичный логарифм числа x. modf(double x,double& y) возвращает дробную часть числа x, по адресу y записывается целая часть исходного числа x. pow(double x, double y) возвращает x в степени y. |
Для использования всех вышеперечисленных функций подключите библиотеку
Пожалуйста, приостановите работу AdBlock на этом сайте.
Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.
Для использования математических функций нужно подключить заголовочный файл 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.
Примеры.
Даны длины катетов прямоугольного треугольника. Вычислить длину гипотенузы.
Простая задачка на знание теоремы Пифагора.
Листинг 1.
#include
Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.
Листинг 2.
#include
В этой программе есть о чём поговорить. Тригонометрические функции, которые определены в math.h работают с радианной мерой угла. Людям же привычнее работать с градусами. Поэтому в данной программе мы предварительно перевели значение из градусов в радианы . Если этого не сделать, результат получится неправильным. Проверьте это самостоятельно.
Неявное преобразование типов
При явном преобразовании типа мы в скобках перед значением указывали тип, к которому нужно привести данное значение. В неявном преобразовании этого делать не нужно. Компилятор автоматически подберёт необходимый тип.
Неявное преобразование типов осуществляется в следующих случаях:
- перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
- выполнение арифметических операций с разными типами аргументов
- перед выполнением присваивания
Правила неявного преобразования типов
- если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
Порядок типов: int < float < double - при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.
int+float
будет автоматически преобразовано к float+float
float/int
будет автоматически преобразовано к float/float
double*float
будет преобразовано к double*double
int = double
double
будет преобразовано к int
с потерей дробной части
float = int
int
будет преобразовано к float
Последнее обновление: 31.10.2015
Для выполнения различных математических операций в библиотеке классов.NET предназначен класс Math . Он является статическим, поэтому все его методы также являются статическими.
Рассмотрим методы класса Math:
Abs(double value) : возвращает абсолютное значение для аргумента value
Double result = Math.Abs(-12.4); // 12.4
Acos(double value) : возвращает арккосинус value. Параметр value должен иметь значение от -1 до 1
Double result = Math.Acos(1); // 0
Asin(double value) : возвращает арксинус value. Параметр value должен иметь значение от -1 до 1
Atan(double value) : возвращает арктангенс value
BigMul(int x, int y) : возвращает произведение x * y в виде объекта long
Double result = Math.BigMul(100, 9340); // 934000
Ceiling(double value) : возвращает наименьшее целое число с плавающей точкой, которое не меньше value
Double result = Math.Ceiling(2.34); // 3
Cos(double d) : возвращает косинус угла d
Cosh(double d) : возвращает гиперболический косинус угла d
DivRem(int a, int b, out int result) : возвращает результат от деления a/b, а остаток помещается в параметр result
Int result; int div = Math.DivRem(14, 5, out result); //result = 4 // div = 2
Exp(double d) : возвращает основание натурального логарифма, возведенное в степень d
Floor(decimal d) : возвращает наибольшее целое число, которое не больше d
Double result = Math.Floor(2.56); // 2
IEEERemainder(double a, double b) : возвращает остаток от деления a на b
Double result = Math.IEEERemainder(26, 4); // 2 = 26-24
Log(double d) : возвращает натуральный логарифм числа d
Log(double a, double newBase) : возвращает логарифм числа a по основанию newBase
Log10(double d) : возвращает десятичный логарифм числа d
Max(double a, double b) : возвращает максимальное число из a и b
Min(double a, double b) : возвращает минимальное число из a и b
Pow(double a, double b) : возвращает число a, возведенное в степень b
Round(double d) : возвращает число d, округленное до ближайшего целого числа
Double result1 = Math.Round(20.56); // 21 double result2 = Math.Round(20.46); //20
Round(double a, round b) : возвращает число a, округленное до определенного количества знаков после запятой, представленного параметром b
Double result1 = Math.Round(20.567, 2); // 20,57 double result2 = Math.Round(20.463, 1); //20,5
Sign(double value) : возвращает число 1, если число value положительное, и -1, если значение value отрицательное. Если value равно 0, то возвращает 0
Int result1 = Math.Sign(15); // 1 int result2 = Math.Sign(-5); //-1
Sin(double value) : возвращает синус угла value
Sinh(double value) : возвращает гиперболический синус угла value
Sqrt(double value) : возвращает квадратный корень числа value
Double result1 = Math.Sqrt(16); // 4
Tan(double value) : возвращает тангенс угла value
Tanh(double value) : возвращает гиперболический тангенс угла value
Truncate(double value) : отбрасывает дробную часть числа value, возвращаяя лишь целое значние
Double result = Math.Truncate(16.89); // 16
Также класс Math определяет две константы: Math.E и Math.PI . Например, вычислим площадь круга:
Console.WriteLine("Введите радиус круга"); double radius = Double.Parse(Console.ReadLine()); double area = Math.PI * Math.Pow(radius, 2); Console.WriteLine("Площадь круга с радиусом {0} равна {1}", radius, area);
Консольный вывод:
Введите радиус круга 20 Площадь круга с радиусом 20 равна 1256,63706143592