D2MatE top
計算材料学基礎 top
講義で使ったLLM: 2024年度Q4 材料計算科学基礎
- 特に書いてなければ、Microsoft 365 Copilot (GPT4モデルとのこと) を使っている
関連Web
生成AIの活用に関する報告書作成
プロンプト: 生成AIをどのように活用したか、プロンプトと回答例を含めて報告書を作ってください。
活用の内容は以下を参考にしてください
**ここに本ページの内容**
講義で用いたプロンプト
-
状況: Visual Studio Codeのpython拡張のJupyter
notebookが実行できなかった
プロンプト: VSCodeにipykernelをインストールする方法を教えてください
回答: pip install ipykernel
-
状況: Jupyter
notebookファイルをpythonスクリプトに変換するコマンドがわからなかった
プロンプト: VSCodeでJupyter
notebookファイルをpythonスクリプトに変換する方法を教えてください
回答: jupyter nbconvert --to script test.ipynb
(Jupyter notebook編集画面のツールバーの"エクスポート"メニューでも変換できる)
-
状況:
pythonのimportについて、exp()関数を例に説明したので、他にどのような関数が使えるかを示した
プロンプト:
pythonのmathライブラリで使える数学関数を全て挙げてください。結果はコピペできる形で出力してください
回答: Pythonのmathライブラリで使える数学関数は以下の通りです。これらの関数をコピーして、コード内で自由に使うことができます:
import math
# 数学関数一覧
math.acos() # 逆余弦関数
math.acosh() # 逆双曲線余弦関数
math.asin() # 逆正弦関数
math.asinh() # 逆双曲線正弦関数
math.atan() # 逆正接関数
math.atan2() # y/x の逆正接関数
math.atanh() # 逆双曲線正接関数
math.ceil() # 切り上げ関数
math.comb() # 組み合わせ
math.copysign() # 符号のコピー
math.cos() # 余弦関数
math.cosh() # 双曲線余弦関数
math.degrees() # ラジアンを度に変換
math.dist() # 距離
math.erf() # 誤差関数
math.erfc() # 余誤差関数
math.exp() # 指数関数
math.expm1() # e^x - 1
math.fabs() # 絶対値
math.factorial() # 階乗
math.floor() # 切り捨て関数
math.fmod() # 浮動小数点数の剰余
math.frexp() # 仮数と指数を得る
math.fsum() # 精度の高い合計
math.gamma() # ガンマ関数
math.gcd() # 最大公約数
math.hypot() # 直角三角形の斜辺の長さ
-
状況:
最小二乗法のプログラムで使うデータファイルを作成する必要があった
プロンプト: y=3xに従い、ノイズを含むデータのCSVフォーマットのテキストを出力してください。xの範囲は0~10で1置きで
回答:
-
状況:
2023年のチュートリアルで、ChatGPT3.5に線形最小二乗法のプログラムについて質問した
プロンプト: pythonで logN = a + b * Tinv
にフィッティングするプログラムを作ってください
回答: 以下が回答のプログラム
# numpyライブラリを 別名 np でimport
import numpy as np
# numpy.polyfit() の呼び出し。
a, b = np.polyfit(Tinv, logN, 1)
問題点:
戻り値の順番を間違えている。チュートリアルでは、Bingで検索した記事を参照して修正する例を紹介
修正プログラム:
b, a = np.polyfit(Tinv, logN, 1)
-
状況: プログラムの自習に便利なプロンプトを紹介
プロンプト:
以下のプログラムが何をしているか、わかりやすく説明してください
回答: 以下、抜粋
このプログラムは、CSVファイルからデータを読み取り、線形回帰を実行し、その結果をプロットするものです。
以下に詳細を説明します:
1.CSVファイルの読み込み:
・ data2.csvというファイルを開きます。
・ 空のリスト xs と ys を初期化して、CSVファイルから読み取る
x 値と y 値を保存します。
・ファイルの最初の行を読み取り、x 軸と y
軸のラベルを取得して xlabel と ylabel に格納します。
2. データの処理
・ 残りの行をループで読み取ります。
・ 各行をカンマで分割し、x 値と y 値を取得します。
・ これらの値を浮動小数点数に変換して、それぞれ xs
と ys のリストに追加します。
・ 各行の x 値と y 値を表示します。
以下、続く
-
状況:
講義では、一般的なプログラム言語の書き方でpythonプログラムを作ってきたが、pythonにはpython固有の書き方もあり、場合によっては高速化、可読性の向上ができる
プロンプト: 次のプログラムを、リスト内包表記、sum, map関数などを使って、pythonらしいプログラムに書き直してください
回答:
-
状況: 非線形最小二乗法のプログラムを作成した
プロンプト: pythonのcurve_fit()を使って、非線形最小二乗法を行うプログラムを作成してください
回答:以下は、回答プログラムを修正したもの
-
状況:
試作プログラムを汎用的に使えるようにするため、
ハードコーディング部分を外部入力(起動時引数、入力ファイルの内容)で設定できるように修正する
プロンプト:
以下のプログラムに次の修正をしてください
#グラフで日本語が表示できるように
#入力ファイル名をargvでうけとれるように
#初期値p0はプログラムの最初の方で定義し、argvでも受け取れるようにする
#Excelのラベル文字列決め打ちではなく、1列目をx、2列目をyに入れる
#グラフのxlabelは、Excelの1列目のラベル、ylabelは2列目のラベル
#titleは入力ファイル名
回答:
-
状況:
生成AIで作ったプログラムが動かなかったときのトラブルシューティングを学ぶ。
pythonはデフォルトではUTF-8の日本語ファイルしか読めないので、Shift-JISコードを含むCSVファイルを読み込ませてみる
CSVファイル:
プロンプト:
CSVファイル peaks.csv を読み込み、複数のGaussian関数でフィッティングするpythonプログラムを作ってください。
argvが存在すれば、読み込むファイルの変数 infile、ピーク数 npeakをargvで設定してください
回答:
その他、プログラムを改善するプロンプト例:
- プロンプト:
以下のプログラムに例外処理を追加してください
# 例外処理: ファイルが無いのにopen()しようとしたなどの
エラーを処理するプログラムコード
- プロンプト: 以下のプログラムにコメント、docstringを追加してわかりやすくしてください
- プロンプト:
以下のプログラムをなるべく関数でまとめたうえ、リファクタリングしてください
# リファクタリング:
プログラムを読みやすくしたり例外処理を加えて、
保守性・堅牢性の高いプログラムになおすこと
- プロンプト:
以下のプログラムのコードレビューをお願いします
- プロンプト: 以下のプログラムのtestプログラムを作ってください