#!/usr/bin/env python
# coding: utf-8
#
Table of Contents
#
# # 初等関数
# 四則演算は”+ー*・”.分数は,
# In[2]:
from sympy import *
from IPython.display import display
init_printing(use_latex='mathjax')
print(3/4);
# であるが,Rational(有理数)というコマンドを使うと
# In[2]:
Rational(3/4)
# と,分数のまま表示してくれる.
#
# sympyを使うと$x$を変数として,そのままの記号で使うことが可能となる.ちょっと変な記述だが,
# In[3]:
x = symbols('a')
eq1 = 3*x**2 -4*x + 3
pprint(eq1)
# とすると変数名としてのxとそこに割り当てられた記号としての$a$の関係がわかるだろう.
#
# その他の関数もそのまま直感的な名前が使える.
# In[4]:
pprint(sqrt(2))
# In[5]:
pprint(log(x))
# In[6]:
pprint(sin(x)**2+cos(x)**2)
# 値として取り出すのは,以下のふた通り.
# In[9]:
print( pi.evalf() )
print( N(pi, 100) )
# ## ラジアンと角度(lost)
#
# mpmathをいれないと駄目? でも,mpmathの説明があまりまともにされてない.
# 数値計算だよね.
#
# degreesとかradiansに関しては,sympyで用意されてないようだ.
# In[7]:
from math import *
degrees(pi/3)
# In[8]:
radians(60)
# In[9]:
cos(pi/3)
# In[10]:
from sympy import cos, pi
cos(pi/3)
# In[11]:
pprint(pi)
# In[12]:
print(Rational(1/3))
# SympyではRational, Real, Integerが数としてあるらしい.
#
# Pi/3などをrationalとしては扱えない.したがって,三角関数の変形ではミスることになるな.
# んーーーん.ちとしんどいかも.
# In[13]:
get_ipython().run_line_magic('matplotlib', 'inline')
from sympy import Symbol
from sympy.plotting import plot
from sympy import sin, sinc
x=Symbol('x')
plot(sinc(x))
# In[14]:
from sympy import acos, oo, pi
acos(oo)
# In[15]:
acos(0)
# In[16]:
get_ipython().run_line_magic('matplotlib', 'inline')
from sympy import *
x = Symbol('x')
p1 = plot(sinh(x), cosh(x), (x,-pi,pi),
legend=True, show=False)
p1[0].line_color = 'b'
p1[1].line_color = 'r'
p1.show()
# # ユーザ定義関数
# ## 簡単な定義
# 単純にユーザが関数を定義するには下の通りすれば良い.その場合,入力はsubsを使う.
# In[17]:
my_func = 2*x - 3
# In[18]:
from sympy import *
a, x = symbols('a x')
pprint(my_func.subs({x:x}))
pprint(my_func.subs({x:a}))
# In[19]:
from sympy.plotting import plot
p1 = plot(my_func, (x,-2,2),
legend=True, show=False)
p1[0].line_color = 'r'
p1.show()
# ## もう少し一般的な定義
# Python 標準のdefを使うことも可能.
# In[1]:
from sympy import *
x = symbols('x')
def func(x):
return x**2
p1 = plot(func(x), (x,-2,2),
legend=True, show=False)
p1[0].line_color = 'r'
p1.show()
# In[3]:
integrate(func(x),x)
# ## より厳密な定義
#
# より厳密に関数を定義するにはFunctionで定義する必要がある.
# In[20]:
f = Function('f')
# In[21]:
pprint(Derivative(f(x),x))
# In[22]:
get_ipython().run_line_magic('pinfo', 'Function')
# In[23]:
class my_func(Function):
@classmethod
def eval(cls, x):
return 2*x**2-3*x+4
plot(my_func(x))
# In[24]:
diff(my_func(x),x)
# In[25]:
plot(diff(my_func(x),x),my_func(x))
# In[ ]: