Лекции / 2_Арифметические_операции_Реализация_в_Python_ipynb_Colab (1)
.pdf
Арифметические операции. Реализация в языках программирования.
Арифметические операции
Арифметика - раздел математики, изучающий числа, их отношения и свойства. Предметом арифметики является понятие числа (натуральные, целые, рациональные, вещественные, комплексные числа) и его свойства.
В арифметике определенны следующие вычислительные операции (прямые и обратные им).
Прямая операция |
Обратная операция |
Сложение |
Вычитание |
Умножение |
Деление |
Возведение в степень |
Извлечение корня |
Натуральные числа
Натуральные числа — числа, возникающие естественным образом при счёте (например, 1, 2, 3, 4, ...).
Внимание! Отрицательные и нецелые числа к натуральным не относят.
Место нуля в понятии натурального числа Существуют два подхода к определению натуральных чисел:
1.Порядковый подход — числа, возникающие при подсчёте (нумерации) предметов: первый, второй, третий, четвёртый, пятый...
(ноль отсутствует)
2.Количественный подход — числа, возникающие при обозначении количества предметов: 0 предметов, 1 предмет, 2 предмета, 3 предмета, 4 предмета, 5 предметов...
(ноль присутствует)
Обозначения
Символ Значение
Натуральные числа с нулём
* Натуральные числа без нуля
Примечание: В разных учебных заведениях и странах могут использовать разные обозначения.
Целые числа
Целые числа — расширение множества натуральных чисел, получаемое добавлением к нему нуля и отрицательных чисел.
Согласно своему построению, множество целых чисел состоит из трёх частей: 1. Натуральные числа (или, что то же самое, целые положительные):
2. Ноль — число, обозначаемое . Его определяющее свойство:
для любого
3. Целые отрицательные числа:
(при записи помечаются спереди знаком минус)
Свойство противоположных чисел |
|
|
|
||
Для каждого целого числа существует и единственно противоположное ему число, обозначаемое |
, обладающее свойством: |
||||
Если |
положительно, то |
отрицательно. |
|
|
|
Если |
отрицательно, то |
положительно. |
. |
|
|
Ноль противоположен самому себе: |
|
|
|||
Обозначение |
|
|
|
|
|
Множество целых чисел обозначается символом: |
от нем |
числа |
|
||
|
|
|
|
||
Обозначение Значение
Все целые числа:
Положительные целые числа (натуральные):
Отрицательные целые числа:
Все целые числа, кроме нуля
Примечание: В некоторых учебных пособиях |
может означать неотрицательные целые числа ( |
). |
Рациональные числа
Рациональное число — число, которое можно представить в виде обыкновенной дроби:
где: |
|
|
|
||||
|
— целое число ( |
) |
|
) |
|||
|
— натуральное число ( |
, |
|||||
Примеры рациональных чисел |
|
|
|
||||
|
Число Представление в виде дроби |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обозначение
Множество рациональных чисел обозначается символом:
от англ |
частное |
Обозначение Значение
Все рациональные числа
Положительные рациональные числа
Отрицательные рациональные числа
Все рациональные числа, кроме нуля
Важные свойства
1. Любое целое число является рациональным, так как его можно представить в виде :
2. Рациональные числа замкнуты относительно сложения, вычитания, умножения и деления (кроме деления на ноль):
Сумма рациональных чисел — рациональное число Произведение рациональных чисел — рациональное число
Разность рациональных чисел — рациональное число Частное рациональных чисел (при ненулевом делителе) — рациональное число
Примечание: Рациональные числа можно записывать в виде конечных десятичных дробей или бесконечных периодических десятичных дробей.
Вещественные числа
Вещественные (или действительные) числа — расширение множества рациональных чисел путём добавления иррациональных чисел.
Иррациональные числа
Иррациональное число — число, которое не может быть представлено в виде обыкновенной дроби |
|
, где |
, |
. |
|
Примеры чисел
Рациональные числа Иррациональные числа
Обозначение
Множество вещественных чисел обозначается символом:
от англ |
действительный |
Обозначение Значение
Все вещественные числа
Положительные вещественные числа
Отрицательные вещественные числа
Все вещественные числа, кроме нуля
Важные свойства вещественных чисел
1.Континуум — множество вещественных чисел непрерывно (нет "дырок" на числовой прямой)
2.Всякое иррациональное число можно представить в виде бесконечной непериодической десятичной дроби:
3.Вещественные числа заполняют числовую прямую сплошь:
Любой точке на числовой прямой соответствует вещественное число Любому вещественному числу соответствует точка на числовой прямой
Примечание: Иррациональные числа вместе с рациональными образуют множество вещественных чисел. Иррациональных чисел "больше", чем рациональных.
Комплексные числа
Комплексные числа — числа вида |
, где: |
|||||
|
— вещественные числа ( |
) |
|
|||
|
— мнимая единица |
|
|
|
|
|
Мнимая единица обладает свойством: |
||||||
|
|
|
|
|
|
|
Терминология |
|
|
|
|
|
|
Для комплексного числа |
|
: |
|
|
||
|
Компонент |
Название |
Обозначение |
|||
|
Действительная часть |
|
|
|
|
|
|
|
Мнимая часть |
|
|
|
|
|
|
Мнимая единица |
|
— |
||
|
|
|
|
|
||
Примеры комплексных чисел |
|
|
|
|
||
|
Число |
Действительная часть Мнимая часть |
|
|||
(чисто действительное)
(чисто мнимое)
Обозначение
Множество комплексных чисел обозначается символом:
от англ |
комплексный |
Обозначение Значение
Все комплексные числа
Основные операции с комплексными числами |
||
Для чисел |
и |
: |
Сложение |
|
| |
Вычитание |
|
| |
Умножение |
|
| |
Сопряжение |
|
| |
Модуль |
|
| |
Важно: Комплексные числа позволили решить уравнения, которые не имеют решений в действительных числах, |
|||
например |
, корнями которого являются |
и |
. |
|
|
|
|
Связь между числовыми множествами |
|
|
|
Все вещественные числа являются частным случаем комплексных (при |
): |
||
Где:
— натуральные числа
— целые числа
— рациональные числа
— вещественные числа
— комплексные числа
Числовые типы в Python
Целые числа ( int )
Тип: int — ссылочный тип с поддержкой длинной арифметики
(размер числа ограничен только доступной памятью)
#ПримерыцелыхчиселвPython
a= |
42 |
|
b= |
-7 |
|
c= |
123456789012345678901234567890 #оченьбольшоечисло |
|
d= |
0b1010 |
#двоичноечисло(10вдесятичной) |
e= |
0xFF |
#шестнадцатеричноечисло(255вдесятичной) |
print(f"a= {a},тип: {type(a)}") print(f"c= {c},тип: {type(c)}")
print(f"d= {d},e= |
{e}") |
|
a = 42, тип: <class 'int'> |
||
c |
= 123456789012345678901234567890, тип: <class 'int'> |
|
d |
= 10, e = 255 |
|
Рациональные числа (Fraction)
Тип: Fraction из модуля fractions — для точных вычислений с дробями
from fractions import Fraction
#Созданиедробей f1=Fraction( 1, 3) f2=Fraction( 2, 6) f3=Fraction( '0.75') f4=Fraction( 5, 1)
#1/3
#автоматическисократитсядо1/3
#изстроки3/4:
#целоечислокакдробь5/1:
print(f"f1= |
{f1}") |
|
|
||
print(f"f2= |
{f2} (автоматическисократилась)" |
) |
|||
print(f"f1+f3= |
|
{f1+f3} |
") |
|
|
#Проверканаравенство |
|
|
|
||
print(f"f1==f2: |
{f1==f2} |
") #True |
|
||
|
|
|
|
|
|
f1 |
= 1/3 |
|
|
|
|
f2 |
= 1/3 (автоматически сократилась) |
|
|||
f1 |
+ f3 = 13/12 |
|
|
|
|
f1 |
== f2: True |
|
|
|
|
Вещественные числа
float — ссылочный тип с ограниченной точностью
Тип: float — соответствует типу double в C (64 бита, ~15-17 значащих цифр)
#Проблематочностиfloat a= 0.1 + 0.2
print(f"0.+10.2= {a}")
print(f"0.+10.==2 0.3: {a== 0.3}") #Falseиз-погрешностиза !
#Специальныезначения inf= float('inf') nan= float('nan')
print(f"Бесконечность: {inf}") print(f"NaN(нечисло): {nan}")
0.1 + 0.2 = 0.30000000000000004
0.1 + 0.2 == 0.3: False
Бесконечность: inf NaN (не число): nan
Decimal — ссылочный тип с длинной арифметикой
Тип: Decimal из модуля decimal — для точных десятичных вычислений
from decimal import Decimal,getcontext
#Настройкаточности(количествозначащихцифр) getcontext()= .prec 28
#СозданиеDecimal(лучшеиспользоватьстроки!) d1=Decimal( '0.1') d2=Decimal( '0.2')
d3=d1+d2
print(f"Decimal('0+Decimal('0.1')= .2') {d3}") print(f"Равно0.3? {d3==Decimal( '0.3')}") #True!
#Сравнениесfloat |
|
print(f"Decimal('0*3=.1') |
{Decimal('0.1')* 3}") |
print(f"float(0*3.=1) |
{0.1 * 3}") |
Decimal('0.1') + Decimal('0.2') = 0.3 Равно 0.3? True
Decimal('0.1') * 3 = 0.3
float(0.1) * 3 = 0.30000000000000004
Комплексные числа (complex)
Тип: complex — ссылочный тип с ограниченной точностью (как float)
#Созданиекомплексныхчисел |
|
|
z1= |
2 + 3j |
#прямаязапись |
z2= |
complex(4, -5) |
#черезконструктор |
z3= |
1j |
#чистомнимоечисло |
print(f"z1= |
{z1},тип: {type(z1)}") |
print(f"z2= |
{z2}") |
print(f"z3= |
{z3}") |
#Доступкчастям |
|
|
|
print(f"Действительнаячастьz1: |
|
{z1.real}") |
|
print(f"Мнимчастьяz1: |
{z1.imag}") |
|
|
#Операциискомплекснымичислами |
|
|
|
print(f"Сложение: {z1} + |
{z2} = |
{z1+z2} |
") |
print(f"Умножение: {z1} * |
{z2} = |
{z1*z2} |
") |
print(f"Модуль |z1|: {abs(z1)}")
z1 = (2+3j), тип: <class 'complex'>
z2 = (4-5j)
z3 = 1j
Действительная часть z1: 2.0 Мнимая часть z1: 3.0
Сложение: (2+3j) + (4-5j) = (6-2j) Умножение: (2+3j) * (4-5j) = (23+2j) Модуль |z1|: 3.605551275463989
Сводная таблица числовых типов Python
Тип |
Модуль |
|
|
Точность |
Особенности |
int |
встроенный |
|
неограниченная |
длинная арифметика, размер ограничен только памятью |
|
float |
встроенный |
ограниченная (≈15-17 знаков) |
соответствует типу double в C, есть проблемы с десятичными дробями |
||
complex |
встроенный |
|
ограниченная |
состоит из двух float (действительная и мнимая части) |
|
Fraction |
fractions |
абсолютная точность |
точные рациональные дроби, автоматическое сокращение |
||
Decimal |
decimal |
|
настраиваемая |
точные десятичные дроби, настраиваемая точность вычислений |
|
Рекомендации по выбору типа |
|
||||
Для каких задач |
|
|
Какой тип использовать |
||
Обычные математические расчёты |
float |
|
|||
Денежные расчёты, финансы |
|
Decimal |
|
||
Точные дробные вычисления |
|
Fraction |
|
||
Очень большие целые числа |
|
int |
|
||
Комплексные числа, электротехника |
complex |
|
|||
Приоритет арифметических операций
Порядок выполнения операций указывается скобками. Если скобок нет, то приоритет операций, в порядке убывания, следующий.
1.Возведение в степень.
2.Умножение и деление.
3.Сложение и вычитание.
Если в выражении используются операции с одинаковым приоритетом то вычисления производятся слева направо.
Сложение
Сложение — одна из основных бинарных математических операций (арифметических действий) двух аргументов (слагаемых),
результатом которой является новое число (сумма), получаемое увеличением значения первого аргумента на значение второго аргумента.
У сложения есть несколько важных свойств:
Коммутативность:
Ассоциативность:
Наличие нуля:
Вычитание
Вычитание — одна из вспомогательных бинарных математических операций двух аргументов (уменьшаемого и вычитаемого), результатом которой является новое число (разность), получаемое уменьшением значения первого аргумента на значение второго аргумента.
Разность — число результат сложения которого с вычитаемым дает уменьшаемое.
На письме обычно обозначается с помощью знака «минус»: |
. |
Вычитание — операция обратная сложению. |
|
У вычитания есть несколько важных свойств: |
|
Антикоммутативность:
Неассоциативность:
Вычитание 0 (нулевого элемента) даёт число равное исходному:
Реализация на Python
Используются операторы + и -.
import decimal
a= 3 b= 2 c=a+b
a1= 2.5
b1= 3.5 c=a1+b1
a2=decimal.Decimal( "0.3")
b2=decimal.Decimal( "0.1")
c2=a2-(b2+b2+b2)
Особенности реализации
Для float точность представления числа ограниченна (формате IEEE 754 с плавающей точкой). Что приводит к элементам несоответствия операций для вещественных типов в Python и в арифметике.
a= 0.3 b= 0.1
c=a-(b+b+b) print(c)
-5.551115123125783e-17
Умножение
Умножение — одна из основных математических операций над двумя аргументами (множителями, сомножителями). Первый аргумент называют множителем; результат умножения двух аргументов называют произведением.
Умножение имеет различные формы:
здесь и являются множителями, а — произведение.
здесь и являются операндами, а — сумма.
Так, для натуральных чисел умножаемые числа можно записать в виде произведения:
где и — множители, а — произведение.
Умножение свойства
Коммутативность:
Ассоциативность:
Дистрибутивность:
Относительно умножения существует единственный нейтральный элемент 1. Умножение любого числа на 1 (нейтральный элемент) даёт число, равное исходному:
Нейтральный элемент:
Умножение на 1 идемпотентно, то есть повторное применение операции к объекту даёт тот же результат, что и одинарное:
Идемпотентность:
Умножение на 0 даёт 0:
Нулевой элемент:
Реализация на Python
Используется оператор *
import decimal
a= 3 b= 2 c=a*b
a1= 2.5
b1= 3.5 c=a1*b1
a2=decimal.Decimal( "0.3")
b2=decimal.Decimal( "0.1")
c2=a2*b2
Деление
Деление — действие, обратное умножению.
— делимое
— делитель
— частное Нахождение частного сводится к нахождению числа которое при умножении на делитель дает делимое.
Свойства деления
Не коммутативно:
Не ассоциативно:
Дистрибутивность:
Нейтральный элемент справа:
Существует единственный обратный элемент, получаемый делением единицы на число, что даёт число, обратное исходному.
Обратный элемент:
Нулевой элемент слева:
Деление на ноль (нулевой элемент) не определено.
Деление на противоположный элемент даёт минус единицу:
Деление целых чисел. Вычисление остатка.
Для целых чисел деление определяться следующим образом.
— делимое (целое) |
|
— делитель (целое) |
|
— неполное частное (целое) |
(натуральное) |
— остаток от деления. |
Важно! Остаток всегда должен быть положительным.
Например рассмотрим деление 5 на 2. запишем:
Примеры деления целых чисел и вычисления остатка
,
,
,
,
Реализация на Python
Для целочисленного деления и вычисления остатка используются операторы // и %
a= 5 b= 3 r=a//b q=a%b
Особенности реализации
Деление и вычисление остатка, не всегда согласованно с математическим определением.
Делимое (a) |
Делитель (b) |
Неполное частное (r) |
Остаток от деления (q) |
Согласованность с мат. определением |
5 |
3 |
1 |
2 |
Да |
5 |
-3 |
-2 |
-1 |
Нет |
-5 |
3 |
-2 |
1 |
Да |
-5 |
-3 |
1 |
-2 |
Нет |
Деление вещественных чисел. Реализация.
Используется оператор /
import decimal
a= 5.2 b= 2.1 c=a/b
a1=decimal.Decimal( "5.2")
b1=decimal.Decimal( "2.1")
c1=a1/b1
Возведение в степень
Возведение в степень — арифметическая операция, первоначально определяемая как результат многократного умножения числа на себя.
Степень с основанием и натуральным показателем обозначается как :
Свойства возведения в степень
Не коммутативно
Не ассоциативно
Существование единицы
Возведение в степень 0
Дистрибутивность относительно умножения
Свойство произведения степеней
Свойство степени степени
Возведение в степень. Реализация.
Используется оператор **
a= 3 b= 2 c=a**b
Извлечение корня
Корень -й степени из числа определяется как такое число , что |
. Здесь — натуральное число, называемое |
показателем корня (или степенью корня). |
|
Свойства корня:
нечетное
четное
Извлечение корня. Реализация.
Частный случай
В остальных случая через возведение в степень
Примеры извлечения корня через возведение в степень
Пример |
Математическая запись Запись в Python Результат |
|
1 |
8 ** (1/3) |
|
2 |
16 |
** (1/4) |
3 |
32 |
** (1/5) |
