#!/usr/bin/env python # coding: utf-8 # # Table of Contents #

1  初等関数
1.1  ラジアンと角度(lost)
2  ユーザ定義関数
2.1  簡単な定義
2.2  より厳密な定義
# # 初等関数 # 四則演算は”+ー*・”.分数は, # 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() # ## より厳密な定義 # # より厳密に関数を定義するには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[ ]: