C в какой сборке описаны математические функции. Библиотека математических функций math.h
Для всех математических функций необходим заголовок
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, основные из которых представлены в таблице 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++) //оператор цикла
{;;;}; //пустой оператор
Она может рассматриваться как задержка по времени, работа на холостом ходе.
В C++ определены следующие арифметические операторы.
Cложение;
– вычитание;
* умножение
/ деление
% деление по модулю
– – декремент (уменьшение на 1)
Инкремент (увеличение на 1).
Действие операторов +, –, * и / совпадает с действием аналогичных операторов в алгебре. Их можно применять к данным любого встроенного числового типа.
После применения оператора деления (/) к целому числу остаток будет отброшен. Например, результат целочисленного деления 10/3 будет равен 3. Остаток от деления можно получить с помощью оператора деления по модулю (%). Например, 10%3 равно 1. Это означает, что в С++ оператор % нельзя применять к нецелочисленным типам данных.
Операторы инкремента (++) и декремента (– –) обладают очень интересными свойствами. Поэтому им следует уделить особое внимание.
Оператор инкремента выполняет сложение операнда с числом 1, а оператор декремента вычитает 1 из своего операнда. Это значит, что инструкция:
аналогична такой инструкции:
А инструкция:
аналогична такой инструкции:
Операторы инкремента и декремента могут стоять как перед своим операндом (префиксная форма), так и после него (постфиксная форма). Например, инструкцию
можно переписать в виде префиксной
Х;//префиксная форма оператора инкремента
или постфиксной формы:
х++;//постфиксная форма оператора инкремента
В предыдущем примере не имело значения, в какой форме был применен оператор инкремента: префиксной или постфиксной. Но если оператор инкремента или декремента используется как часть большего выражения, то форма его применения очень важна. Если такой оператор применен в префиксной форме, то C++ сначала выполнит эту операцию, чтобы операнд получил новое значение, которое затем будет использовано остальной частью выражения. Если же оператор применен в постфиксной форме, то С++ использует в выражении его старое значение, а затем выполнит операцию, в результате которой операнд обретет новое значение.
Математические функции
В языке С++ имеются специальные функции для расчета алгебраических выражений. Все такие функции находятся в отдельном заголовочном файле math.h. Поэтому для использования функций в коде программы необходимо подключить данный файл с помощью директивы
#include
Приведем основные алгебраические функции С++.
abs(x) - модуль целого числа;
labs(x) - модуль «длинного» целого;
fabs(x) - модуль числа с плавающей точкой;
sqrt(x) - извлечение квадратного корня;
pow(x,y) - возведение x в степень y;
cos(x) - косинус;
sin(x) - синус;
tan(x) - тангенс;
acos(x) - арккосинус;
asin(x) - арксинус;
atan(x) - арктангенс;
exp(x) - експонента в степени x;
log(x) - натуральный логарифм;
log10(x) - десятичный логарифм
При возведении числа в дробную степень, знаменатель дробной степени нужно записывать в вещественном виде. Например: квадратный корень из а записывается так: pow(a,1/2.0 )
Продемонстрируем использование функций на примерах.
5. Операторы ввода/вывода на языке С++
Для вывода сообщения на экран используется следующий оператор C++:
cout<<”текст”;
#include
Информация, заключенная в двойные кавычки, является сообщением, которое должно быть выведено на экран. В языке C++ любая последовательность символов, заключенная в двойные кавычки, называется строкой потому, что она состоит из нескольких символов, соединяемых вместе в более крупный блок (элемент).
Строка в операторе COUT может содержать так называемые подстановочные символы - символы, которых нет на клавиатуре или они заняты под ключевые символы в тексте программы. Перед каждым таким подстановочным символов ставится символ «\».
Приведем перечень таких символов:
\a – звуковой сигнал
\n – переход на новую строку
\t – горизонтальная табуляция
\v – вертикальная табуляция
\\ - обратный слеш
\’ – одинарная кавычка
\” – двойная кавычка
\? – знак вопроса.
Например, оператор вида:
cout>>“пример\nтекста”;
Слово «пример» выведет на одной строке, а слово «текста» на другой.
Оператор вида:
cout>>“магазин\»”чайка\””;
Слово «Чайка» отобразит в двойных кавычках.
Кроме текса оператор может выводить на экран значения переменных, комбинируя их с текстом.
cout<<”a=”< Форматированный
вывод
Для
выдачи значений заданной длины или
точности оператор cout имеет
ряд настроек: cout.width(число)
– общая длина выводимого значения cout.precision(число)
– число знаков после запятой cout.fill(‘символ-заполнитель’)
– символ, которым заполняются лишние
позиции на экране Настройка cout.width после
выполнения одного оператора вывода
сбрасывается в начальное значение.
Поэтому ее приходится указывать отдельно
для каждой переменной или строки. Настройки
этих параметров должны проводиться до
вызова оператора вывода. Например: //описываем
переменные float a=125.478, b=625.365; //задаем
число знаков поле запятой cout.precision(2); //задаем
заполнитель для лишний позиций cout.fill(‘0’); //выдаем значения переменных
на экран cout<<”a=”; cout<<”
b=”; //задаем
общую длину для числа Регулировка
ширины поля (width)
и заполнителя (fill)
имеет смысл при выдачи данных
в таблицу. Чаще всего можно обойтись
только настройкой precision. Очистка
экрана
Язык С++
имеет функцию, позволяющую очищать
экран от текстовой информации. Эта
функция имеет вид: Данная
функция находится в заголовочном
файле conio.h.
Поэтому для ее использования данный
файл должен быть подключен с помощью
директивы: #include Организация
паузы для просмотра результата
После
выполнения программы обычно происходит
автоматичский возврат в окно с исходным
текстом. Это не позволяет просмотреть
результат, который программа выдает на
экран. Выходом из этой ситуации может
быть использование
клавиш Alt+F5, при нажатии на которые происходит
скрытие окна с кодом программы. Повторное
нажатие на эти клавиши возвращает окно
с кодом на экран. Однако,
если создать исполняемый EXE файл,
то использовать эти клавиши будет
невозможно и результат останется
невидимым для пользователя. Для
решения данной проблемы в конце программы
можно добавлять функцию, которая
приостанавливает работу до нажатия
любой клавиши. Эта функция имеет вид: getch
(); Данная функция
находится в заголовочном файле conio.h.
Поэтому для ее использования данный
файл должен быть подключен с помощью
директивы: #include Оператор
ввода данных с клавиатуры
Для
вода данных с клавиатуры в С++
имеется оператор: cin>>переменная; Данный
оператор приостанавливает работу
программы и ждет пока пользователь не
введет значение переменной и на нажмет ENTER. C помощью
одного оператора можно ввести значения
нескольких переменных. Для этого
оператор записывают в виде: cin>>переменная1>>переменная2>>.
. .>>переменнаяn; При
запуске программы каждое значение
вводится через пробел и в конце
нажимают ENTER. Оператор COUT находится
в заголовочном файле iostream.h.
Поэтому для его использования данный
файл нужно подключить с помощью директивы: #include 6.
Пример программы на С++
Для демонстрации решим одну
задачу. Составить программу для нахождения
значения функции: Программа может иметь
вид: //подключаем
файл для организации ввода/вывода #include //подключаем
файл для использования алгебраических
функций #include //подключаем
файл для вызова функции очистки экрана #include //заголовок
главной программы //описываем
три переменных вещественного типа //очищаем экран //выдаем
текстовую подсказку на экран cout<<"Введите
значения a и b:"; //запрашиваем
ввод с клавиатуры двух переменных: a и b //считаем
значение функции c=sin(a)+pow(cos(b),2); //устанавливаем
точность вывода результата 3
знака полсе запятой cout.precision(3); //выводим
результат на экран cout<<"Функция
равна:"< cout<<"Для
продолжения нажмите любую клавишу. . ."; //делаем
паузу для просмотра результата //завершаем
работу главной программы Для целых чисел определены операции
+ , - , * и ** . Операция
деления / для целых чисел возвращает вещественное число (значение типа float).
Также функция возведения в степень возвращает значение типа float ,
если показатель степени — отрицательное число. Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием
дробной части, которая обозначается // (она соответствует операции div в Паскале).
Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления,
обозначаемая % (она соответствует операции mod в Паскале).
Например: Print(17 / 3) # выведет 5.66666666667
print(17 // 3) # выведет 5
print(17 % 3) # выведет 2 Некоторые из перечисленных функций (int , round , abs)
являются стандартными и не требуют подключения модуля math для использования. 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);Функция
Описание
Округление
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...