コードライブラリ
当サイトの各記事で使用するための関数をまとめてあります。ここに載っている関数を全部コピーして Jupyter Notebook などに貼り付けておけば、あちこちの記事に飛んで必要なコードをコピーする手間が省けます。このページは修正や追加があるたびに更新されるので、定期的に立ち寄ってコピーし直してください。関数の説明は、それぞれのリンク先に載っています。
coordinate()
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 2D座標設定関数 def coordinate(axes, range_x, range_y, grid = True, xyline = True, xlabel = "x", ylabel = "y"): axes.set_aspect('equal', adjustable='box') axes.set_xlabel(xlabel, fontsize = 16) axes.set_ylabel(ylabel, fontsize = 16) axes.set_xlim(range_x[0], range_x[1]) axes.set_ylim(range_y[0], range_y[1]) if grid == True: axes.grid() if xyline == True: axes.axhline(0, color = "gray") axes.axvline(0, color = "gray") # 3D座標設定関数 def coordinate_3d(axes, range_x, range_y, range_z, grid = True): axes.set_xlabel("x", fontsize = 16) axes.set_ylabel("y", fontsize = 16) axes.set_zlabel("z", fontsize = 16) axes.set_xlim(range_x[0], range_x[1]) axes.set_ylim(range_y[0], range_y[1]) axes.set_zlim(range_z[0], range_z[1]) if grid == True: axes.grid()
visual_vector()
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 2Dベクトル描画関数 def visual_vector(axes, loc, vector, color = "red"): axes.quiver(loc[0], loc[1], vector[0], vector[1], color = color, angles = 'xy', scale_units = 'xy', scale = 1) # 3Dベクトル描画関数 def visual_vector_3d(axes, loc, vector, color = "red"): axes.quiver(loc[0], loc[1], loc[2], vector[0], vector[1], vector[2], color = color, length = 1, arrow_length_ratio = 0.2)
pointer()
import matplotlib.pyplot as plt # ラベル付きポイント関数 def pointer(axes, x, y, text, angle = 45, textsize = 12, textcolor = "black", pad = 0.2, psize = None, pcolor = None, marker = None, cmap = None, norm = None, alpha = None, linewidths = None, edgecolors = None): # 点をプロット axes.scatter(x, y, s = psize, c = pcolor, marker = marker, cmap = cmap, norm = norm, alpha = alpha, linewidths = linewidths, edgecolors = edgecolors) # 数学関数モジュールをインポート import math # テキストの配置角度をラジアンに変換 text_angle = angle * math.pi / 180 # テキストの位置を計算 loc_x = x + pad * math.cos(text_angle) loc_y = y + pad * math.sin(text_angle) # テキストを配置 axes.text(loc_x, loc_y, text, fontsize = textsize, color = textcolor)
general_matrix()
from sympy import Symbol, var, init_printing from sympy.matrices import Matrix init_printing() # 添字付一般表記行列生成関数 def general_matrix(m, n, s): Symbol(s) elements = lambda i, j : var('{}{}{}'.format(s, i+1, j+1)) return Matrix(m, n, elements)
Mesh2Dクラス
import numpy as np # 2次元格子点クラス class Mesh2D: def __init__(self, xrange, yrange, n): self.n = n self.x_min = xrange[0] self.x_max = xrange[1] self.y_min = yrange[0] self.y_max = yrange[1] self.x = np.linspace(xrange[0], xrange[1], n) self.y = np.linspace(yrange[0], yrange[1], n) self.X, self.Y = np.meshgrid(self.x, self.y)
コメント
「ストラング:線形代数イントロダクション」が届いたので、本文や例題に出てくるベクトル計算やベクトル図の作成を Python でプログラミングしていますが、この記事の coordinate( )、visual_vector( )、pointer( ) を便利に使わせていただきました。
平面を塗るのに、class Mesh2D も便利でしたので、このライブラリに加えてもいいのではないでしょうか。
※general_matrix( ) のリンク先が張られていませんので、ご確認ください。
ライブラリを学習に役立てていただけて嬉しいです。
class Mesh2D をコードライブラリに追加し、general_matrix() のリンクを貼っておきました。
いつもありがとうございます。m(_ _)m