『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

コードライブラリ

コードライブラリ

当サイトの各記事で使用するための関数をまとめてあります。ここに載っている関数を全部コピーして 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)

コメント

  1. HNaito より:

    「ストラング:線形代数イントロダクション」が届いたので、本文や例題に出てくるベクトル計算やベクトル図の作成を Python でプログラミングしていますが、この記事の coordinate( )、visual_vector( )、pointer( ) を便利に使わせていただきました。
     
    平面を塗るのに、class Mesh2D も便利でしたので、このライブラリに加えてもいいのではないでしょうか。
    ※general_matrix( ) のリンク先が張られていませんので、ご確認ください。

    • あとりえこばと より:

      ライブラリを学習に役立てていただけて嬉しいです。
      class Mesh2D をコードライブラリに追加し、general_matrix() のリンクを貼っておきました。
      いつもありがとうございます。m(_ _)m