【ChatGPT】ChatGPT 4oに”Think”ボタンが登場→Plusプランでもo1 pro modeが使えるようになった?
はじめに
ChatGPTを触っていると、プロンプト入力欄に電球のボタンが出てきたので、クリックしてみたところ、”Think”という文字が。
せっかく何か考えてくれるのだから、ちょっと変わったお題を出そうということで、三平方の定理の新しい証明方法を考えてもらえました。
画面には、o1 proモードと同様、右サイドバーに思考過程のプロセスが表示されます。
何回かやると、出力にo1 proと書いてあったので、これはほぼ間違いないでしょう。
これはおそらくChatGPT Plusユーザーにo1 proモードの利用が解放された? ということでしょうか?
もしそうだとすると、月額200ドルを支払う必要なく、o1 proを使えるということです。
出力
以下では、一般的にあまり学校教育で扱われない「複素数平面」を用いた三平方の定理の証明例をご紹介します。すでに知られた方法(ユークリッド幾何の図形分割・相似・ベクトル内積など)は数多く存在しますが、複素数の「絶対値」がベクトルの長さと直接対応する性質を利用すると、見通しよく証明ができます。既存の証明のバリエーションの一種ではありますが、「幾何の問題を複素数で置き換える」という発想は学校でよく使われる図形的な証明とは少し違った雰囲気を持つため、新しい視点として楽しめるかと思います。
複素数平面を用いた三平方の定理の証明
概要
複素数と図形の対応
実数軸(xx軸)と虚数軸(yy軸)からなる直交座標平面を考え、点 (x,y)(x, y) に対応する複素数を x+yix + yi と書きます。複素数 z=x+yiz = x + yi の「絶対値(大きさ)」∣z∣|z| は、ベクトル (x,y)(x, y) の長さ x2+y2\sqrt{x^2 + y^2} に等しい。
直角三角形を複素数で表す
直角三角形の底辺長を aa、高さを bb、斜辺を cc とします。座標をうまくとることで、以下のように三角形の頂点を複素数として表せます:点 AA: 原点 00(複素数としても 00)
点 BB: 実軸上の aa(複素数としては a+0i=aa + 0i = a)
点 CC: 点 BB から鉛直方向に bb だけ上にあるので、複素数としては a+bia + bi
複素数の大きさ(絶対値)を用いる
AA から BB へのベクトルは B−A=aB - A = a(これは実軸上の長さが aa)
AA から CC へのベクトルは C−A=a+biC - A = a + bi
ここで、AA が原点なので単に複素数 aa と a+bia+bi の絶対値を考えます。
斜辺の長さを求める
斜辺 ACAC の長さは、対応する複素数 a+bia + bi の絶対値に一致します。よって∣a+bi∣ = (a)2+(b)2. |a + bi| \;=\; \sqrt{(a)^2 + (b)^2}.
これが三角形の斜辺の長さ cc にあたり、結果として
c=a2+b2. c = \sqrt{a^2 + b^2}.
すなわち
c2=a2+b2 c^2 = a^2 + b^2
が示され、三平方の定理が成立することがわかります。
証明のポイント
直角 であることをどう使うか?
「直角である」という事実は、「実軸方向」と「虚軸方向」が直交していることをそのまま用いています。座標幾何と同じ発想ですが、複素数を使うと「長さ」=「絶対値」というシンプルな形で処理できるのが特徴です。他の直角三角形でもよい
頂点の置き方はいくらでも変えられます。例えば、右上にある点を (b,0)(b, 0) にしても同様の議論ができます。重要なのは「直交する座標軸上へ辺を並行に置ける」ことです。
Pythonコードによる数値例の検証
以下は、具体的な値を入れて「斜辺の長さ」と「両辺の平方和」を比較して確認する簡単なコード例です。ここでは有名な (a,b,c)=(3,4,5)(a, b, c) = (3, 4, 5) を用いて実験します。
def check_pythagoras(a, b):
import math
# 複素数 z = a + bi の絶対値は sqrt(a^2 + b^2)
z = complex(a, b)
c_calc = abs(z) # 計算上の斜辺
lhs = c_calc**2 # 計算上のc^2
rhs = a**2 + b**2 # a^2 + b^2
return lhs, rhs
a, b = 3, 4
lhs, rhs = check_pythagoras(a, b)
print(f"a = {a}, b = {b} のとき")
print(f"計算による c^2 = {lhs}")
print(f"a^2 + b^2 = {rhs}")
if abs(lhs - rhs) < 1e-9:
print("c^2 と a^2 + b^2 は一致しました!")
else:
print("c^2 と a^2 + b^2 が一致しません。")
実行結果(イメージ)
a = 3, b = 4 のとき
計算による c^2 = 25.0
a^2 + b^2 = 25
c^2 と a^2 + b^2 は一致しました!
このように、数値例でも c2=a2+b2c^2 = a^2 + b^2 が成り立つことが確認できます。
まとめ
発想の新しさ
すでにたくさんの証明法が存在する三平方の定理ですが、「座標平面を使って証明する」というのはそこまで珍しくありません。しかし、複素数の絶対値を使うと、座標幾何の議論が「∣z∣|z|」というコンパクトな形にまとまり、式展開もシンプルになります。一般化との親和性
複素数は回転などの変換を一元的に扱えるため、三平方の定理を含む幾何学的事柄の一般化(回転の合成や相似変換の取り扱い)に使いやすい利点があります。
学校で出てくる三平方の定理の証明は「図形を分割して組み合わせる」「相似な三角形を使う」などが中心ですが、複素数を使うと「直交座標のベクトル長さ」というものがダイレクトに扱える点が面白いところです。ぜひ他のアプローチと比較しながら、新しい視点を楽しんでみてください。
o1 proについての感想
o1 pro を使っている方の意見には2種類あります。
今までのChatGPTとの違いがわからないという方と、もう手放せないという方です。
私は後者です、昨日コンサルティングさせていただいたある会社の社長さんも、o1 proを試しにやってみたけど、これ200ドルは安すぎる、というご意見でした。
皆さんはどうでしょうか?
ぜひコメント欄でo1 proモードの感触をお聞かせください。