Python как написать программу вычисления

Источник: Джейсон Бриггс, PYTHON ДЛЯ ДЕТЕЙ, САМОУЧИТЕЛЬ ПО ПРОГРАММИРОВАНИЮ. Скачать ЗДЕСЬ .

Заходите на мой сайт msofficewindows

Сегодня мы продолжаем работать с Python. В прошлой статье мы говорили, как установить Python и знакомились с ним . А сейчас мы поговорим про вычисления в программе. Если статья про скачивание программы наберёт 3 лайка, то скоро я перескачу вперёд и выложу очень интересную статью. Но это секрет!

Продолжим.

Итак, вы установили Python и знаете, как запускать его командную оболочку, а значит, пора использовать его по назначению. Мы начнём с простых математических расчётов, а затем перейдём в важной части языка — переменным. Переменные — это удобный способ хранения данных в программе, и они пригодятся нам для решения самый разных задач.

Вычисления в Python.

Если нужно перемножить два числа, к примеру узнать, сколько будет 8 × 3,57, мы обычно пользуемся калькулятором либо берём ручку и умножаем в столбик на листе бумаги. А что если использовать для подсчётов оболочку Python? Давайте попробуем.

Урок 3. Изучаем Python. Запись математических выражений. Библиотека Math

Запустите оболочку, дважды кликнуть по значку IDLE на рабочем столе, либо, если у вас система Ubuntu, кликнув по значку IDLE в меню Applications . Затем после значка >>> введите выражение и нажмите Enter:

Обратите внимание, что при записи числа 3,57 используется не запятая, а точка. Кроме того, в Python числа перемножаются с помощью звёздочки (*), а не знака умножения (×).

Теперь рассмотрим более полезную задачу.

Представьте, что вы рыли яму и случайно нашли кошелёк с 20 золотыми монетами. На следующий день вы тихонько залезли в подвал, где стоит изобретение вашего дедушки — работающий на паровом ходу механизм для копирования предметов, и, на ваше счастье, в него удалось запихнуть все 20 монет. Раздался свист, потом щелчок, и устройство выдало ещё 10 новеньких монеток.

Сколько монет вы накопите, если будете проделывать эту операцию каждый день в течении года? На бумаге эти расчёты выглядят примерно так:

Что ж, ничего сложного, осталось лишь выяснить, как посчитать то же в оболочке Python. Первым делом умножаем 10 монет на 365 дней, получится 3650. Затем добавим 20 монет и выйдет 3670.

Но что если о вашем богатстве узнает пронырливая ворона? Предположим, она будет каждую неделю залетать в окно и красть по три монетки.

Сколько у вас будет монет через год? В оболочке Python эти расчёты будут выглядеть так:

Сперва умножаем 3 монеты на 52 недели в году, получаем 156. Затем вычитаем это значение из общего количества монет. Выходит, через год у вас останется 3514 монет.

Получилась очень простая программа. Изучая эту рубрику статей дальше, вы узнаете, как писать более сложные и полезные программы.

Операторы в Python.

В оболочке Python можно умножать, складывать, вычитать и делить числа, а также совершать некоторые другие операции, о которых мы узнаем позже. Символы, с помощью которых выполняются математические действия в языке Python, называются операторами . Основные математические операторы перечислены в таблице ниже.

Вычисляем по IP с помощью Python | Как определить местоположение по IP

Прямой слеш (/) обозначает деление, этот символ похож на линию между числителем и знаменателем дроби. Например, у вас 100 пиратов и 20 больших бочек, и вы хотите рассчитать, сколько пиратов можно спрятать в каждой бочке. Для этого следует разделить 100 пиратов на 20 бочек, введя в оболочке 100 / 20. И запомните — прямым слешем называют черту, верх которой наклонён вправо.

Порядок выполнения операций.

Операции — это любые действия, которые совершаются с помощью операторов. Математические операции выполняются по очереди в зависимости от их приоритета (если не задать другую очерёдность с помощью скобок). Умножение и деление имеют более высокий приоритет, чем сложение и вычитание, и это значит, что они будут выполняться первыми. Иначе говоря, при вычислении математического выражения Python сначала умножит и разделит числа, а затем перейдёт к сложению и вычитанию.

Читайте также:
Какой программой открыть Симс

Например, в этом выражении сперва будут перемножены числа 30 и 20, а затем к их произведению будет прибавлено число 5.

По сути это выражение означает «умножить 30 на 20 и прибавить к результату 5». Получается 605. Однако мы можем изменить порядок операций, заключив первые два числа в скобки. Вот так:

В результате получилось 700, а не 605, поскольку Python выполняет операции в скобках прежде, чем операции вне скобок. Другими словами, это выражение означает «прибавить 5 к 30 и умножить результат на 20.

Скобки могут быть вложенными, то есть внутри скобок могут быть ещё одни скобки:

Источник: dzen.ru

Символьные вычисления средствами Python. Часть1. Основы

image

При решении задач математического моделирования процессов и объектов часто очень практично использовать алгоритмы на языке Python с использованием символьных вычислений. Основываясь на библиотеке SymPy, Python с успехом справляется с решением уравнений и систем, интегрированием и дифференцированием, вычислением пределов, разложением в ряд и суммированием рядов, упрощением выражений, выполняет поиск решения дифференциальных уравнений и систем.

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

Как преподаватель дисциплины «Компьютерная техника и программирование», в модуле, посвященном программированию на языке Python, я знакомлю студентов с возможностями этого языка для научных исследований. Вашему вниманию представляется цикл статей, в которых можно ознакомиться с символьными вычислениями на Python. Хочу сразу предупредить, что данные статьи не претендуют на абсолютную уникальность, так как собраны на основании материалов из различных источников, их цель – обучить студентов основам символьных вычислений.

Самым первым шагом на пути к символьным вычислениям является импортирование функций модуля SymPy с помощью pip, системы управления пакетами Python. Если вы с этим справились, сразу перейдем к объявлению переменных.

Примечание. Для сокращения записи во всех следующих примерах не приводится первая строка: from sympy import *

Явное объявление символьных переменных

Для символьных вычислений с помощью модуля SymPy символьные переменные и функции должны быть объявлены как таковые. В программах для математических вычислений, таких как Mathematica или Maple, переменные сразу рассматриваются как символьные. В Python же их необходимо принудительно объявить символьными, и сделать это можно несколькими путями.

Самым простым будет использование функций symbols() или var(). Первая функция возвращает ссылку на символьный объект в виде какой-либо переменной. Вторая, без присваивания создает символьную переменную.

Пример кода

>>> x,y,a,b = symbols(‘x y a b’) # созданы четыре символьные переменные, предыдущие же значения переменных затираются >>> f=a**3*x + 3*a**2*x**2/2 + a*x**3 + x**4/4 # переменная f становится автоматически символьной >>> type(f) >>> var(‘u,v’) (u, v) >>> f=sin(u)**2+tan(v) # переменная f автоматически становится символьной >>> type(f)

Главное отличие между функциями symbols() и var() состоит в том, первая функция возвращает ссылку на символьный объект. Для использования в дальнейшем, ее нужно присвоить какой-либо переменной. Вторая, без присваивания, создает символьную переменную.
В функциях symbols() и var() можно объявлять символьные переменные с индексом:

Пример кода

>>> x=symbols(‘x:9’); x # диапазон индексов от 0 до 9 (x0, x1, x2, x3, x4, x5, x6, x7, x8) >>> x=symbols(‘x5:10’); x # диапазон индексов от 5 до 9 (x5, x6, x7, x8, x9) >>> x=var(‘x:9’); x # диапазон индексов от 0 до 9 (x0, x1, x2, x3, x4, x5, x6, x7, x8) >>> x=var(‘x5:10’); x # диапазон индексов от 5 до 9 (x5, x6, x7, x8, x9)

Также можно назначить тип и накладывать ограничения на символьные переменные прямо в функциях symbols() и var(). Иногда без таких ограничений очевидные преобразования не работают, например, сравните:

Пример кода

>>> x = symbols(‘x’, integer=True) #назначаем целый тип >>> sqrt(x**2) Abs(x) >>> x = symbols(‘x’, positive = True, integer=True) >>> sqrt(x**2) x >>> x = symbols(‘x’) >>> sqrt(x**2) # это x, если x≥0 sqrt(x**2) >>> x = var(‘x’, integer=True) >>> sqrt(x**2) Abs(x) >>> x = var(‘x’, positive = True, integer=True) >>> sqrt(x**2) x >>> x = var(‘x’) >>> sqrt(x**2) # это x, если x≥0 sqrt(x**2)

Чтобы создать контейнер для одиночного символа, используем аргумент seq=True:

>>> symbols(‘x’,seq=True) (x,)

Определение действительных значений для символьных переменных:

>>> x, y, z = symbols(‘x,y,z’, real=True) >>> x.is_real and y.is_real and z.is_real True

Функция S()

Иногда символьные выражения могут быть проинтерпретированы как числовые константы Python, а не SymPy. Поэтому для объявления символьных переменных, а также для преобразования числовых констант в символьные, применяют функцию S(), например, сравним:

Читайте также:
Как устанавливать программы в centos 7

>>> expr = x**2 + sin(y) + S(10)/2; expr x**2 + sin(y) + 5 >>> type(10) >>> type(S(10)) # символьная константа десять

Разница между постоянной Python и символьной состоит в том, что символьная константа может быть вычислена с заданной степенью точности, как показано в следующем примере в сравнении со стандартной функцией round():

z=1/7; z # вычисляет переменную z с процессорной точностью 0.14285714285714285 z1=S(1)/7; z1 1/7 z2=z1.n(30); z2 # вычисляет переменную z2 с точностью до 30 значащих цифр 0.142857142857142857142857142857 z3=round(z1,30); z3 0.14285714285714285

Cимвольные имена

Если в текущей сессии необходимо использовать символьную математику постоянно, то можно импортировать общепринятые символьные имена из модуля sympy.abc:

Пример кода

>>> import sympy.abc >>> dir(sympy.abc) [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’, ‘__builtins__’, ‘__cached__’, ‘__doc__’, ‘__file__’, ‘__loader__’, ‘__name__’, ‘__package__’, ‘__spec__’, ‘_clash’, ‘_clash1’, ‘_clash2’, ‘a’, ‘alpha’, ‘b’, ‘beta’, ‘c’, ‘chi’, ‘d’, ‘delta’, ‘division’, ‘e’, ‘epsilon’, ‘eta’, ‘exec_’, ‘f’, ‘g’, ‘gamma’, ‘greeks’, ‘h’, ‘i’, ‘iota’, ‘j’, ‘k’, ‘kappa’, ‘l’, ‘lamda’, ‘m’, ‘mu’, ‘n’, ‘nu’, ‘o’, ‘omega’, ‘omicron’, ‘p’, ‘phi’, ‘pi’, ‘print_function’, ‘psi’, ‘q’, ‘r’, ‘rho’, ‘s’, ‘sigma’, ‘string’, ‘symbols’, ‘t’, ‘tau’, ‘theta’, ‘u’, ‘upsilon’, ‘v’, ‘w’, ‘x’, ‘xi’, ‘y’, ‘z’, ‘zeta’]

Имя переменной из пространства имен можно удалить командой del имя1, имя2. :

>>> type(x) >>> del x,y >>> x NameError: name ‘x’ is not defined

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

>>> from sympy import *

Метод subs(. )

Следует помнить, что при записи символьного выражения может автоматически выполняться его упрощение, например:

>>> a,b,c,d,x,y,z,u,v,w = symbols(‘a b c d x y z u v w’) >>> x — z + 20 -z- 15 + 3*sin(pi/2)+2*z x + 8

Метод subs(. ) используется для вычисления символьного выражения при заданных значениях переменных, например:

>>> a, x = symbols(‘a x’) >>> f= a**3*x + 3*a**2*x**2/2 + a*x**3 + x**4/4 >>> f.subs(a,1) # в выражение f вместо переменной a была подставлена единица x**4/4 + x**3 + 3*x**2/2 + x

Если в методе subs использовать два аргумента, то они интерпретируются как subs(old,new), т.е. старый идентификатор old заменяется новым new. Аргумент метода subs() может быть последовательностью, которая должна содержать пары (old,new), а может быть символьным выражением, например:

>>> a,b,c,d,x,y,z = symbols(‘a b c d x y z’) >>> f=a*x**3 +b*y**2 + c*z+d >>> f.subs([(a,1),(b,2),(c,3),(d,4)]) # выполнена подстановка a=1, b=2, c=3, d=4 x**3 + 2*y**2 + 3*z + 4 >>> pr= x**3+4*x**2+6*x+10 >>> pr.subs(x,1/x) # выполнена подстановка символьного выражения 10 + 6/x + 4/x**2 + x**(-3)

Обратим ваше внимание на следующую особенность работы с переменными (символьными и обычными переменными Python). Выполним следующий код:

>>> x=’Hello’ >>> pr=x+’world’ >>> pr ‘Helloworld’ >>> x=’AAA’ #присвоили символьной переменной x новое значение >>> pr ‘Helloworld’

Здесь действует правило: если переменная изменилась, то созданное ранее выражение, содержащее эту переменную, не пересчитывается автоматически. Это правило срабатывает и для обычных переменных Python.

Операции с дробями

Модуль SymPy может проводить вычисления с дробями и приводить их к общему знаменателю, например, сравните:

>>> S(1)/3+S(2)/5 11/15 >>> 1/3+2/5 0.7333333333333334

Функции Rational(числитель, знаменатель) и Integer(. ) используются для создания рациональных дробей без десятичного округления:

>>> z=Rational(1, 7)+Rational(2, 5); z 19/35 >>> Integer(1)/Integer(5) 1/5 >>> 1/5 0.2 >>> z=Integer(1)/Integer(5)+Rational(2, 7); z 17/35

Округления вычислений

В символьных вычислениях работает правило – если ничего не сказано, не делать никаких округлений. Посмотрите, как в первом случае Python преобразует выражение, но оставит в записи ответа квадратный корень и не выполнит никаких округлений, а во втором, так как одно из чисел задано с десятичной точкой, результат будет приближенным:

>>> sqrt(20) 2*sqrt(5) >>> sqrt(20.0) # в выражении используется число с десятичной точкой 4.47213595499958

Для любого символьного объекта существует метод evalf(. )(evaluate float), который возвращает его десятичное представление:

>>> sqrt(20).evalf() # функция sqrt() модуля sympy 4.47213595499958 >>> E.evalf() 2.71828182845905

В методе evalf([n. ]) можно использовать аргумент, задающий точность результата (n = количество значащих цифр)

>>> sqrt(20).evalf(30) 4.47213595499957939281834733746 >>> pi.evalf(20) 3.1415926535897932385

Также всегда нужно помнить, что вещественная арифметика не возвращает точный результат, сравните:

>>> from sympy import * >>> one=S(‘one’) >>> one = cos(1)**2 + sin(1)**2 >>> one.evalf() # равно 1 1.00000000000000 >>> (one-1).evalf() # должно быть равно 0 -0.e-124

Если известно, что результат содержит погрешность вычислений, то с помощью опции chop=True метода evalf() ее можно удалить. Очень маленькое значение вещественной или мнимой части результата в этом случае заменяется нулем. Возьмем предыдущий пример:

Читайте также:
Кто является автором программы наследие

>>> (one-1).evalf() # должно быть равно 0 -0.e-124 >>> (one — 1).evalf(chop=True) 0

Бесконечность

После выполнения первой строки from sympy import * становится доступен символ бесконечности – oo (две буквы „o‟), с которым тоже можно выполнять определенные операции:

>>> oo+1 oo >>> 1000000>> 1/oo 0

Символ бесконечности в основном используется функциями limit() и integrate() при задании пределов интегрирования, о чем мы поговорим в одной из следующих статей.

Вывод

Рассмотренные в статье символьные вычисления отличаются от числовых методов тем, что результаты можно и дальше исследовать, например, определять экстремумы функций, решать уравнения со вложенными переменными и так далее.

Надеюсь, моя статья будет полезна всем интересующимся программированием на языке Python, студентам и тем, кто занимается научными исследованиями.

  • python
  • Символьные вычисления
  • Python
  • Программирование

Источник: habr.com

Числа и арифметические операторы Python

Числа очень часто применяются в программирование для ведения счета в играх, представления данных в визуализации, хранение информации и т.д.

Содержание страницы:
1. Типы чисел
2. Арифметические операторы
2.1. Сложение и вычитание
2.2. Умножение
2.3. Возведение в степень
2.4. Деление
2.5. Деление с округлением
2.6. Оператор вычисления остатка от деления
3. Исключения и трассировка

1. Типы чисел в Python.

В Python числа делятся на несколько категорий в соответствии со способом их использования. Основные это целые числа ( int ) и вещественные ( float ) или числа с плавающей точкой. Чтобы узнать к какому типу относится число или переменная, можно воспользоваться встроенной функцией type() . Запустите командную строку и активируйте Python. В скобках введите число или переменную, чтобы узнать ее тип.

Значение 12,5 является числом с плавающей точкой, поэтому Python выводит строку float . Переменная x содержит целое число 10, поэтому Python выводит тип int (сокращение от integer).

2. Арифметические операторы Python.

В таблице перечислены арифметические операторы, среди которых встречаются некоторые знаки, не используемые в алгебре.

Арифметические операторы Python

Операции Python Арифметический оператор Алгебраическое выражение Выражение Python
Сложение + a + b a + b
Вычитание a — b a — b
Умножение * a · b a * b
Возведение в степень ** x y a ** b
Деление / x / y x / y
Целочисленное деление // [ x / y ] x // y
Остаток от деления % r mod s r % s

2.1. Сложение и вычитание в Python.

Сложение и вычитание в целом выполняется и записывается, как и обычно в алгебре.

>>> 5 + 2
7
>>> 5 — 2
3

2.2. Умножение в Python ( * )

В Python в качестве оператора умножения используется знак * (звездочка)

>>> 5 * 5
25

2.3. Возведение в степень в Python ( ** )

В Python для возведения в степень используются два знака ** .

>>> 5 ** 6
15625
>>> 81 ** (1/2)
9.0

Для вычисления квадратного корня можно воспользоваться показателем степени 1/2. Корень 81 = 9.

2.4. Деление в Python ( / )

Оператор деления ( / ) делит числитель на знаменатель

>>> 10 / 2
5.0
>>> 10 / 8
1.25

♦ Важно, при делении двух любых чисел — даже если это целые числа, частным от деления которых является целое число, вы всегда получаете вещественное число.

2.5. Деление с округлением в Python ( // )

Операция целочисленное деление ( // ) делит числитель на знаменатель, в результате получается наибольшее целое число, не превышающее результат. В Python дробная часть отсекается.

>>> 10 // 8
1
>>> 20 // 8
2
>>> — 17 // 4
-5

При обычном деление 10 на 8, получается результат 1,25. Python отсекает дробную часть и в итоге получаем 1.

2.6. Оператор вычисления остатка от деления ( % )

Для вычисления остатка от деления в Python используется оператор вычисления остатка от деления %

>>> 21 % 5
1
>>> 18 % 4
2

>>> 9.5 % 4.5
0.5

В данных примерах при делении 21 на 5, получается частное 4 и остаток 1. Во втором случае при делении 18 на 4, получается 4 и остаток 2. Этот оператор чаще работает с целыми числами, но также может использоваться и с другими типами.

3. Исключения и трассировка.

В Python также как и в алгебре деление на 0 запрещено. При попытке выполнения такой операции происходит исключение. Сообщая об исключение, Python выдает трассировку стека. В трассировке указано, что произошло исключение типа ZeroDivisionError, большая часть исключений заканчивается суффиксом Error. Ошибка division by zero — деление на ноль.

>>> 5 / 0
Traceback (most recent call last):
File «», line 1, in
ZeroDivisionError: division by zero

Источник: pythonclass.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru