Библиотека математических функций math.h. Математические функции – класс 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 . |
Для целых чисел определены операции + , - , * и ** . Операция деления / для целых чисел возвращает вещественное число (значение типа float). Также функция возведения в степень возвращает значение типа float , если показатель степени — отрицательное число.
Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // (она соответствует операции div в Паскале). Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления, обозначаемая % (она соответствует операции mod в Паскале). Например:
Print(17 / 3) # выведет 5.66666666667 print(17 // 3) # выведет 5 print(17 % 3) # выведет 2
Некоторые из перечисленных функций (int , round , abs) являются стандартными и не требуют подключения модуля math для использования.
Функция | Описание |
---|---|
Округление | |
int(x) | Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math . |
round(x) | Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа. |
round(x, n) | Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math . |
floor(x) | Округляет число вниз («пол»), при этом floor(1.5) == 1 , floor(-1.5) == -2 |
ceil(x) | Округляет число вверх («потолок»), при этом ceil(1.5) == 2 , ceil(-1.5) == -1 |
abs(x) | Модуль (абсолютная величина). Это — стандартная функция. |
Корни, логарифмы | |
sqrt(x) | Квадратный корень. Использование: sqrt(x) |
log(x) | Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b . |
e | Основание натуральных логарифмов e = 2,71828... |
Тригонометрия | sin(x) | Синус угла, задаваемого в радианах |
cos(x) | Косинус угла, задаваемого в радианах |
tan(x) | Тангенс угла, задаваемого в радианах |
asin(x) | Арксинус, возвращает значение в радианах |
acos(x) | Арккосинус, возвращает значение в радианах |
atan(x) | Арктангенс, возвращает значение в радианах |
atan2(y, x) | Полярный угол (в радианах) точки с координатами (x, y). |
degrees(x) | Преобразует угол, заданный в радианах, в градусы. |
radians(x) | Преобразует угол, заданный в градусах, в радианы. |
pi | Константа π = 3.1415... |
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);
Все математические функции реализованы как методы класса Math, основные из которых представлены в таблице 4.1
Таблица 4.1 – Основные поля и методы класса Math
Имя метода |
Описание |
Пояснения |
|x|, записывается как Abs(x) |
||
Арккосинус |
Acos(double x), угол задается в радианах |
|
Арксинус | ||
Арктангенс | ||
Арктангенс |
Atan2(double x,double y) –угол, тангенс которого есть результат деления y на х |
|
Произведение |
BigMul(int x,int y) |
|
Округление до большего целого |
Celling(double x) |
|
Гиперболический косинус | ||
Деление и остаток | ||
2,71828182845905 |
||
Экспонента | ||
Округление до меньшего целого |
Floor(double x) |
|
Остаток от деления |
IEEERemainder(double x, double y) |
|
Натуральный логарифм | ||
Десятичный логарифм | ||
Максимум из 2-х чисел |
Продолжение таблицы 4.1
Имя метода |
Описание |
Пояснения |
Минимум из 2-х чисел | ||
Значение числа пи |
3,14159265358979 |
|
Возведение в степень |
Pow(x,y) – x в степени y |
|
Округление |
Round(3.1)=3 Round(3.8)=4 |
|
Знак числа | ||
Гиперболический синус | ||
Квадратный корень | ||
Гиперболический тангенс |
Пример линейной программы расчета по заданной формуле
namespace ConsoleApplicationl
{ static void Main()
Console.WriteLine(“Введите x”);
buf=Console.ReadLine();
double x=Convert.ToDouble(buf);
Console.WriteLine(“Введите alfa”);
buf=Console.ReadLine();
double a=double.Parse(buf);
double y=Math.Sqrt(Math.PI*x)-
Math.Exp(0.2*Math.Sqrt(a))+
2*Math.Tan(2*a)+
1.6e3*Math.Log10(Math.Pow(x,2));
Console.WriteLine(“Для х= {0} и alfa ={1}”, x,a);
Console.WriteLine(“Результат =” +y); }}}
Лекция 5. Операторы языка c#
Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором.
Блок или составной оператор
С помощью фигурных скобок несколько операторов языка (возможно, перемежаемых объявлениями) можно объединить в единую синтаксическую конструкцию, называемую блоком или составным оператором:
оператор_1
оператор_N
Синтаксически блок воспринимается как единичный оператор и может использоваться всюду в конструкциях, где синтаксис требует одного оператора. Тело цикла, ветви оператора if, как правило, представляются блоком.
Пустой оператор
Пустой оператор - это "пусто", завершаемое точкой с запятой. Он используется когда по синтаксису оператор требуется, а по смыслу- нет. Иногда полезно рассматривать отсутствие операторов как существующий пустой оператор. Синтаксически допустимо ставить лишние точки с запятой, полагая, что вставляются пустые операторы. Например, синтаксически допустима следующая конструкция:
for (int j=1; j<5; j++) //оператор цикла
{;;;}; //пустой оператор
Она может рассматриваться как задержка по времени, работа на холостом ходе.
Последнее обновление: 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