はじめに
こんにちは、ひよこです。今日はバレンタインデーなので、いろいろな LLM にハート型の関数を描かせてみました。果たして、どの LLM が最も美しいハートを描けるのでしょうか?
使った LLM
今回試した LLM は以下の通りです
- GPT o1-pro
- GPT o3-mini-high
- Claude 3
- Gemini 2 pro
- Deepseek
試したプロンプト
各 LLM に以下のようなプロンプトを与えました
今日はバレンタインデーです。
そこでハート型に見える関数を作って表示する python プログラムを書いて下さい。
以下の条件を考慮すること。
- 媒介変数を用いてもよい
- 条件分岐は可能な限り使わない
- ハートの部分だけが望ましいがその他の部分があってもよい
結果と考察
結果としてすべての LLM がカージオイドの変形である、いわゆるハート曲線を使っていました。
これはまあ予想の範囲内でしょうか。
** LLM が使った数式**
\begin{aligned}
x &= 16 \sin^3 t \\
y &= 13 \cos t - 5 \cos 2t - 2 \cos 3t - \cos 4t
\end{aligned}
以下に出力結果を示しています。どの LLM もきちんとハートを赤にしている辺りはさすがですね。
GPT o1-pro
LLM の応答
🐣 GPT o1-pro による応答
以下は,よく知られたハート型の媒介変数表示を用いて描画する Python の例です。条件分岐は使用していませんので,必要に応じて調整してみてください。🐣 GPT o1-pro によるコード
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2*np.pi, 1000)
x = 16 * np.sin(t)**3
y = 13*np.cos(t) - 5*np.cos(2*t) - 2*np.cos(3*t) - np.cos(4*t)
plt.figure(figsize=(6, 6))
plt.plot(x, y, color='red')
plt.axis('equal')
plt.axis('off')
plt.show()
GPT o3-mini-high
LLM の応答
🐣 GPT o3-mini-high による応答
以下に媒介変数 t を用いたハート型曲線を描画するサンプルコードを示します.🐣 GPT o3-mini-high によるコード
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2*np.pi, 1000)
x = 16 * np.sin(t)**3
y = 13*np.cos(t) - 5*np.cos(2*t) - 2*np.cos(3*t) - np.cos(4*t)
plt.figure(figsize=(6, 6))
plt.plot(x, y, 'r', linewidth=2)
plt.axis('equal')
plt.axis('off')
plt.show()
Claude 3
🐣 Claude 3 による応答
バレンタインデーにぴったりなハート型の関数を作成いたします。数学的な美しさを保ちながら、シンプルな方程式でハートを描きましょう。 このプログラムでは、以下の特徴を持つ数式を使用してハートを描画しています。- 媒介変数表示を使用し、x と y をパラメータ t の関数として表現
- 条件分岐を使用せず、連続的な数式のみで形状を表現
- サイン関数とコサイン関数の組合せで滑らかなハート形を生成
ハートの形状は、x 座標に 3 次のサイン関数、y 座標にコサイン関数の級数を使用することで実現しています。
この方程式は数学的に美しく、スムーズなハート形を生成します。
プログラムを実行すると、赤い線で描かれたハート型のグラフが表示され、薄いピンク色の背景と格子線で見やすく整形されています。
この数式を少し変更することで、ハートの形状を調整することも可能です。例えば、係数を変更することでハートの幅や高さを変えることができます。
🐣 Claude 3 によるコード
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2*np.pi, 1000)
x = 16 * np.sin(t)**3
y = 13*np.cos(t) - 5*np.cos(2*t) - 2*np.cos(3*t) - np.cos(4*t)
plt.figure(figsize=(10, 10))
plt.plot(x, y, 'r-', linewidth=2)
plt.axis('equal')
plt.grid(True, linestyle='--', alpha=0.3)
plt.gca().set_facecolor('#fff5f5')
plt.show()
Gemini 2 pro
LLM の応答
🐣 Gemini 2 pro による応答
はい、承知いたしました。バレンタインデーにちなんで、ハート型に見える関数を Python で作成し、表示するプログラムを記述します。条件分岐を可能な限り使わないように工夫します。解説
必要なライブラリのインポート
numpy: 数値計算用(配列の生成、三角関数の計算など)
matplotlib.pyplot: グラフ描画用
heart_function(t, a=1) の定義
この関数は、媒介変数 t を使ってハート型の x 座標と y 座標を計算します。
カージオイド (Cardioid) の変形を利用しています。カージオイドは、円の周りを別の円が滑らずに回転するときに、円周上の点が描く軌跡です。今回は、よりハート形に近づけるためにカージオイドの式を修正しています。
x = 16 sin^3(t)
y = 13 cos(t) − 5 cos(2t) − 2 cos(3t) − cos(4t)
媒介変数 t の範囲設定
np.linspace(0, 2*np.pi, 500) で、0 から 2π までを 500 等分した NumPy 配列 t を作成
ハート型関数の計算
heart_function(t, a=0.05) を呼び出して、x 座標と y 座標を計算
グラフの描画
plt.plot(x, y, color='red')
plt.axis('equal')
plt.title(...)
plt.show()
ポイント
条件分岐 (if 文) を使わずに、NumPy の三角関数と媒介変数表示を使ってハート型を表現しています。
heart_function は、滑らかな曲線を得るためにパラメータ t の値から x と y を算出します。
このプログラムを実行すると、バレンタインデーにぴったりの綺麗なハート型のグラフが表示されます。
🐣 Gemini 2 pro によるコード
import numpy as np
import matplotlib.pyplot as plt
def heart_function(t, a=1):
"""
ハート型を媒介変数表示で定義する関数
"""
x = a * 16 * np.sin(t)**3
y = a * (13*np.cos(t) - 5*np.cos(2*t) - 2*np.cos(3*t) - np.cos(4*t))
return x, y
t = np.linspace(0, 2*np.pi, 500)
x, y = heart_function(t, a=0.05)
plt.figure(figsize=(6, 6))
plt.plot(x, y, color='red')
plt.axis('equal')
plt.title("Happy Valentine's Day!")
plt.show()
Deepseek
LLM の応答
🐣 Deepseek による応答
特徴 数学的に正確なハート形状: 古典的なパラメトリック方程式を使用x = 16 sin³(t)
y = 13 cos(t) - 5 cos(2t) - 2 cos(3t) - cos(4t)
視覚的効果
ピンク色の塗りつぶし (#FF69B4)
濃い赤の縁取り (#8B0000)
正方形のアスペクト比維持
バレンタイン仕様
タイトルを追加
軸を非表示にして装飾
このプログラムを実行すると、数学的に正確なハート型が美しく描画されます。媒介変数を使用しているため条件分岐が不要で、純粋な数学的計算のみで形状を表現しています。
🐣 Deepseek によるコード
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2*np.pi, 1000)
x = 16 * np.sin(t)**3
y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)
plt.figure(figsize=(8, 8))
plt.fill(x, y, color='#FF69B4')
plt.plot(x, y, color='#8B0000', linewidth=2)
plt.axis('equal')
plt.axis('off')
plt.title("Valentine's Heart", fontsize=20, color='#8B0000')
plt.show()
まとめ
今回の結果では、各 LLM によって微妙な違いが見られました。特に GPT モデルは一貫して正確な出力を示しました。一方、Deepseek は視覚的な美しさを重視した出力を示しました。シンプルなハートの GPT、数学のグラフ感が残る Claude3 と Gemini、そして中まできれいに色を塗っている Deepseek と各 LLM の個性が出ていますね。個人的には桃色感満載の Deepseek のハートが気に入っています。
🐣 みなさんも LLM にバレンタインを祝ってもらってみてはいかがでしょうか?
ではまた次の記事で!