🏠
令和6年11月21日 (木)

python(パイソン)


colabの概要

colab は、googleのpythonプラットフォームです。


プログラミング言語

  1 プログラミング言語の種類
種類 分類 言語 特徴
インタプリタ Webアプリ JavaScript Webブラウザ上で動作(クライアントサイド)
vb script(vbs,vba,asp) 1 ) 1964 開発 キーボードとディスプレイが必要
AI Webアプリ python パイソン 2 ) * ビッグデータ データサイエンス * 、 マテリアルズインフォマティクス *、AI
教育 Scratch ビジュアルプログラミング
コンパイル OS C 3 ) ポインタ、構造体
汎用 VB.NET オブジェクト指向(多重継承なし)
汎用 Kotlin アンドロイドアプリ向け
OS C++ オブジェクト指向
colab jupyter

ファイルベースのシステムでは、コンパイラ言語は実行可能なファイルを生成し、 インタプリタ言語はそれを生成しないという違いがありました。 しかし、クラウドベースになって、実行ファイルそのものをクライアントにダウンロードしなくなり、 ジャストインコンパイルで実行結果だけを利用するようになると コンパイラ言語とインタプリタ言語の違いは、あまり本質的でなくなりました。

科学技術用の伝統的な言語としては、FORTRANがあります。 FORTRAN系列の言語としては、BASIC、pythonがあります。 統計用言語としてRがあります。

アルゴリズム重視の伝統的な言語としてALGOLがあります。 ALGOLは、Pascal, C, C++, C#,java, javascript, typescript, Kotlinと進化してきました。 juliaはCに迫る計算速度を誇ります。

サーバーサイドで使われてきたPerlや Ruby もクラウドで利用できるようになってきました。

人工知能で伝統的な言語Lispは、F#Schemeもクラウドで利用できるようになってきました。

人気 プログラミング言語 は、java script、そしてpython*と続きます。 *


注釈(コメント)

  2 注釈(コメント)
言語 説明
html <!-- コメント -- >
Python (パイソン)
# 注釈
#(クロスハッチ)を使います。
Basic (ベーシック)
REM 注釈
' 注釈
予約語REMを使うか、'(アポストロフィー)を使います。
C
/* 1行コメント */

/*
複数行に渡る
コメント
*/
javascript
// 1行コメント
/* 1行コメント */

/*
複数行に渡る
コメント
*/

ほとんどの言語には、注釈機能があります。 人間がよみやすくするためです。 (可読性)


変数

  3 変数
言語 記述例 説明
Basic Dim A As Integer 整数、浮動小数点、文字列、配列
C 厳密な型宣言
Python
# タプルの配列を円の座標で初期化
t = np.arange(start = 0, stop = 2 * math.pi, step = 0.05)
xy = [ (math.sin(p), math.cos(p))  for p in t]
複素数、リスト、タプル 配列の初期化の記述が柔軟

変数には変数名を付けます。 ほとんどの言語では、予約語があり、予約語は変数名に使えません。

変数名の命名規則にはいろいろありますが、スネークキャストがおすすめです。 *


関数

  4 関数
言語 呼び出し 説明
Basic Function Sub 変数のスコープに注意。
C 関数名は、関数のポインタの変数とほとんど同義。
Python
#関数定義 再帰呼び出しに挑戦
def func(xy,x1,y1,x2,y2,i):
  if i < 0:
def ():で宣言。呼び出す前にボディが記述されている必要があります。 関数の記述は、インデントされている必要があります。

図形と関数

  5 図形と関数
名称 グラフ 説明
指数関数
python +matplotlib
import numpy as np
import math
import matplotlib.pyplot as plt

xy = [(p, math.exp(p)) for p in \
      np.arange(start = - 2, stop = 2, step = 0.1)]
z = [list(t) for t in zip(*xy)]; x = z[0]; y = z[1]

fig, ax = plt.subplots()
ax.plot(x, y)

plt.show()
逆ネルンスト 電池の充放電曲線で現れます。
確率曲線
正規分布関数 確率統計で多用されます。 品質管理 でも大切です。

2dグラフィクス

  6 2dグラフィクス
言語 形式
java script canvas png インタラクティブ、 アニメーションが可能。 Webアプリ向け。 3次ベジェ曲線 実装。
svg svg htmlに埋め込み可能。 ベクトルグラフィックスに関する機能が豊富。 3次ベジェ曲線 実装。 viewBox=を設定することで、ワールド座標系でグラフィクス可能。 一旦、svgファイルにしてpptにインポートすれば、pngに変換可能。 asp(Basic、サーバーサイド)で記述することも可能。
python matplotlib png

ワールド座標系でグラフィクス可能。ビュー座標系 / スクリーン座標系への煩わしい変換から解放されます。 ベジェ曲線とか、コーディングが必要かも。 縦軸、横軸にTeXが使えるので超便利。

svg matplotlibから svgに出力するには、
plt.savefig('fig1.SVG')
files.download("fig1.SVG")
plt.show()
のようにする。 *
PIL png Colaboからでは、img.show()ではなく、IPython.display のdisplay(img)を使うなど、ちょっと変則的。
OpenCV png グラフィックスというより画像処理向け。 Colaboからは、 matplotlib を使った出力になるので、ベクトルグラフィックスならば、matplotlib.patchesを使うのとあまり変わらないかも。

python(パイソン)

  7 python
応用例
Django
cgi
静的png

回帰

  1 回帰

回帰

先日作成した https://a.yamagata-u.ac.jp/py/regression.py はCGIでpythonがうごいてますので,リクエストが 来るたびにpythonが起動します.リソースを消費するので CGIではなくDjnagoみたいなフレームワークをつかう 方向のようです.pythonのcgiパッケージは ver3.11(現行版)で非推奨,ver3.13で削除とのこと. 現在の設定だと,Djangoは16プロセスまで起動されます. Edgeで https://a.yamagata-u.ac.jp/dj/regression/ を表示させ,F5を連打してみてください.30回とか 添付の図みたいなのが出ると思います. うまい書き方があるんだろうなとは思います. (IISの再起動が必要かもしれません) まあCGIで連打されるとサーバーが落ちると思うので どっちもどっちだと思いますが.


回帰分析

  3 回帰分析
©K.Tachibana

python(パイソン)

  8 python 言語の使い方
応用例
無作為抽出
extracted = random.sample(data, 10)
平均
average = statistics.mean(data)
average = np.mean(data)
標準偏差
std = statistics.stdev(data)
std = np.std(data)
std = np.std(data, ddof=1) # 標本標準偏差
散布図 *
import numpy as np
import matplotlib.pyplot as plt
 
# 乱数を生成
x = np.random.rand(100)
y = np.random.rand(100)
 
# 散布図を描画
plt.scatter(x, y)
ヒストグラム
import matplotlib.pyplot as plt
ax1 = fig.add_subplot(211)
ax1.hist(x1, bins=bins)
画像 (matplotlib) の例:

ともひろてすと

可読性重視の科学計算向け。 4 ) 5 )

Phthon (パイソン)は、多様なデータ構造が組み込まれているので、データ処理しやすい 言語です。 Anaconda(アナコンダ)や、 Google Colaboratoy などの開発環境があります。 Phthonには、数値計算ライブラリNumPyがあります。 NumPyは、CやふFORTRANで、実装されていて、高速で実行できます。 ほかにも、Matplotlib(グラフ描画ライブラリ) pandas(データ分析ライブラリ) TensorFlow(機械学習ライブラリ) OpenCV(画像処理ライブラリ) など便利なライブラリが多数あります。

pymatgenライブラリは、まだあまり普及していない。 *

Webアプリ を書くには、 django プラットフォームがあったほうがいいかも。


Matplotlib

Matplotlib では、 色や 数式の表現も豊富です。


2dグラフィクス

  9 2dグラフィクス
言語 形式
java script canvas png インタラクティブ、 アニメーションが可能。 Webアプリ向け。 3次ベジェ曲線 実装。
svg svg htmlに埋め込み可能。 ベクトルグラフィックスに関する機能が豊富。 3次ベジェ曲線 実装。 viewBox=を設定することで、ワールド座標系でグラフィクス可能。 一旦、svgファイルにしてpptにインポートすれば、pngに変換可能。 asp(Basic、サーバーサイド)で記述することも可能。
python matplotlib png

ワールド座標系でグラフィクス可能。ビュー座標系 / スクリーン座標系への煩わしい変換から解放されます。 ベジェ曲線とか、コーディングが必要かも。 縦軸、横軸にTeXが使えるので超便利。

svg matplotlibから svgに出力するには、
plt.savefig('fig1.SVG')
files.download("fig1.SVG")
plt.show()
のようにする。 *
PIL png Colaboからでは、img.show()ではなく、IPython.display のdisplay(img)を使うなど、ちょっと変則的。
OpenCV png グラフィックスというより画像処理向け。 Colaboからは、 matplotlib を使った出力になるので、ベクトルグラフィックスならば、matplotlib.patchesを使うのとあまり変わらないかも。

SOC-OCV曲線

  5 SOC-OCV曲線
python (colab)→ pngsvghtml

電池の起電力は、充電率(State of charge、SOC) 7 ) によって変化します。 電池の過電圧も、充電率で変化します。また過電圧は、放電か、充電か、その方向でも変化します。

組電池 の電圧も、同様です。


パイソンで描いたコールコールプロット

  6 コールコールプロット(ナイキストプロット)
©K. Tachibana

python では、複素数が使えるので、短いプログラムでコールコールプロットのシミュレーションができます。



QRコード

2024年1月21日 松木健三名誉教授がご逝去されました。

名称:C1ラボラトリー
URL:🔗 https://c1.yz.yamagata-u.ac.jp/
管理運用
山形大学 工学部 化学・バイオ工学科 応用化学・化学工学コース
C1ラボラトリー ( 伊藤智博立花和宏 ) @ 米沢

© 2002 -2024 T.Ito , K.Tachibana * , C1 Lab. ALL RIGHTS RESERVED.