Раздел «Язык Си».PythonSympy0:

Sympy Документация

Запуск notebook

ipython notebook

Import

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

from sympy import *

Почему так лучше не писать? Модули math, numpy, sympy (и дальше мы будем учить другие библиотеки) могут содержать одинаковые имена функций. Например, функция sin разная. Это math.sin, numpy.sin, sympy.sin. Если мы пишем в коде sympy.sin(0) то точно знаем какую функцию вызываем (из библиотеки sympy).

Если сделаем

from sympy import *
from numpy import *

sin(0)   # какой sin использовали? sympy.sin или numpy.sin ?

Надо писать:

from sympy import Symbol, symbols, sin, PI

sin(0)

Вывод красиво (в начале пишем)

init_printing - для красивой печати результатов

import sympy
sympy.init_printing()
%pylab inline

Зачем sympy?

Числа в python

В Python есть два типа для хранения чисел int и float

У int работает целочисленное деление (берется целая часть результата)

>>> type(3)
int
>>> type(3.14)
float
>>> 1/3
0 

Встроенная функция sqrt может вычислить квадратный корень

>>> import math
>>> math.sqrt(9)
3.0
>>> math.sqrt(8)
2.82842712475

Иногда дроби плохо считать в float , например, 1/3 + 2/3 это 1. Но если посчитать в виде десятичных дробей, то потеряем точность и не получим 1.

Хочется считать точно и не терять корни.

>>> import sympy
>>> sympy.sqrt(3)
sqrt(3)
>>> sympy.sqrt(8)
2*sqrt(2)

%TODO% Резервированные константы (e, pi) и греческие буквы

Символы (Symbol, symbols, var)

IDEA! Дальше считаем, что у нас from sympy import *

Symbol - одна переменная

In [4]: x = sympy.Symbol("x")   # определили переменную х

Можно определить дополнительные свойства созданной переменной. Эти свойства учитываются при вычислении выражений.

In [9]: x = sympy.Symbol("x")
In [10]: y = sympy.Symbol("y", positive=True)
In [11]: sympy.sqrt(x ** 2)
Out[11]: sqrt(x**2)           # х может быть и отрицательным, поэтому sqrt(x**2) не всегда равно х
In [12]: sympy.sqrt(y ** 2)
Out[12]: y                    # при создании у мы указали, что оно всегда положительное; sqrt(y ** 2) равно y

-- TatyanaDerbysheva - 08 Apr 2017