見出し画像

あれこれ(2024前)


コンピュータは小数計算が苦手

(2024年1月 181号)

 何はともあれ、Pythonで書いた次のコードを実行してみてください。

s=0
for i in range(10):
    s=s+0.1
print(s)

 要は 0.1 を10回足しているだけなのですが、結果は 1 になりません。若干の誤差を生じます。コンピュータは2進法で計算しているわけですが、0.1 は2進数では割り切れない数、つまりコンピュータにしてみればキリの悪い数なので、正確に計算することができないのです。
 でも、諦めちゃいけない。そんなときこそ工夫のしがいがあるというものです。
 ここはアメリカ、ドル額を足し算するコードを書く場面を想定してください。基本はドル額を整数値で入力しながら、時々セントの単位の金額(1セント=0.01ドル)が登場して、その際は小数で入力するとしましょう。

s=0
a=float(input("ドル額を入力、セントは小数で。最後に0を "))
while a>0:
    s=s+a[ア][イ]
    a=float(input("ドル額を入力、セントは小数で。最後に0を "))
print(s[ウ][イ])

 上のコードで[ア],[イ],[ウ]が無いと誤差が出そうです。誤差を無くすために[ア]と[ウ]に四則計算の記号を、[イ]には数を入れてください。
 
 さっそく正解を言っちゃいましょう。4行目を「s=s+a*100」、6行目を「print(s/100)」とすれば誤差無く正確に動きます。なんのことはない、100倍して整数値に直して足し算して、最後に100で割って帳尻を合わせています。そう、これだけで計算ミスを回避できるのです。
 ついでながら、上のコードは Python で次のように書くこともできます

s=0
while True:
    a=float(input("ドル額を入力、セントは小数で。最後に0を "))
    if a==0:
        break
    s=s+a*100
print(s/100)

2行目で無条件に while のループに入って、4行目の条件(a==0)を満たしたら、5行目の break でループから抜け出します。私としては分かりやすいので、よく使う書き方です。

パスカルの三角形を再帰関数で書いてみる

(2024年2月 182号)

〈パスカルの三角形〉を書けば  (a+b)ⁿ の展開式の係数を簡単に求めることができます。パスカルの三角形の書き方は、
   ○ 各段両端は 1  ・・・(1)
   ○ 上段の2数の和を、2数の真ん中下段に書く ・・・(2)
   ○ これを繰り返す ・・・(3)
これだけです。上から n 段目の数が  (a+b)ⁿ の展開式の各項の係数というわけです。
 また (a+b)ⁿ の展開式の aⁿ⁻ʳbʳ の係数は、組合せCを使って ₙCᵣ と表せます〈二項定理〉。これを使えば、上の(1)と(2)は次のように書けます。
   ○ ₙC₀=1 , ₙCₙ=1 ・・・(1)
   ○ ₙCᵣ=ₙ₋₁Cᵣ₋₁+ₙ₋₁Cᵣ ・・・(2)
 さらに、上の(3)「繰り返す」をプログラミングのコードで書くのに適しているのは、再帰関数です。というわけで、Pythonで組んでみました。

def c(n,r):
   if (r==0)or(n==r):
       return 1
   return c(n-1,r-1)+c(n-1,r)
n=int(input())
r=int(input())
print(c(n,r))

 コードの1〜4行目で関数 c(n,r) を定義しています。2〜3行目が上の(1)に、4行目が上の(2)に当たります。
 コードの5行目以降がプログラム本体で、ここで表示(print)するものは、パスカルの三角形の上からn段目、左からr番目の値でもありますし、組合せ ₙCᵣ の値でもあります。

 また、プログラム本体部分で次のようにfor文で1回転させれば「パスカルの三角形のn段目」すなわち「(a+b)ⁿ の展開式の係数」を順に表示できます。

n=int(input())
for r inrange(n+1):
    print(c(n,r),end="  ")

 さらに、プログラム本体部分で次のようにfor文の2重ループで回せば「パスカルの三角形の1段目からn段目まで」すなわち「パスカルの三角形の全体像」を表示できます。

m=int(input())
for n in range(m+1):
    for r in range(n+1):
        print(c(n,r),end="  ")
    print()

 お試しください。(LaTeX数式・画像付きはこちら → https://note.com/omori55/n/n99a8cd396169 をどうぞ)

2024年はAI元年

(2024年3月 183号)

 一般の人がAIを使うようになるという点において「2024年はAI元年」と言って良いだろうと思います。
 象徴的だったのは「芥川賞受賞作がAIを駆使して書き上げた作品だった」ということ。年明け1/17にニュースになりました。
 その作者を含めて2023年にも一部の人は使っていたわけですが、2024年には自分では使わなくとも、身の回りを見渡せば「身近な人が使っている」という状況が当たり前になるでしょう。その点において「AI元年」と呼ぶにふさわしいと私は思うのです。

 合わせて、2024年は「AIに対する自分の立ち位置」をいやがおうにも考えなければならない年になるでしょう。立ち位置とは、例えば、
  ▷ 使いこなす
  ▷ 人並みに使う
  ▷ 距離を置く
  ▷ 背を向ける
など。「使うか、使わないか」あるいは「どのように使うか」は各自の自由なのですが、どっちつかずのあやふやな態度は早晩立ち行かなくなるでしょう。仕事場でAIを効果的に使う人が現れれば「自分はどうなのか」を表明しないとお互いにやりにくいでしょうし、その姿勢は日替わりで変えられるものでありませんから、意識してどこかに置かざるを得なくなります。
 そういう日が今年中に、おそらく今年の前半くらいにはやってくるだろうと私は思います。その意味でも「2024年はAI元年」だと私は言いたいのです。

 加えてもう一つ。多くの人は「AIに対する漠然とした不安」みたいなものを抱えています。現に「AIに支配される」というようなフレーズを老若男女、誰でもが口にします。
 それが「根拠の無い戯言」だとは私は思いません。むしろ、なんらかのシグナルだと思うのです。
 これを放置できないんじゃないでしょうか。AI元年の今年、その感覚が頭をもたげてくるとか、折り合いをつけなきゃいけないとか、個人の心の内でも、組織の中でも、そんな場面がきっとあるでしょう。面白い1年になりそうです。

哲学対話はじめました

(2024年4月 184号)

 私、勤務校で哲学対話を始めました。興味を持ってくれた生徒たち何人かと放課後に集まって、1時間ほど対話しています。
 哲学対話とは「日常で感じる問いに対して、考えたことや感じたことをみんなで話し合うもの」で、街場では「哲学カフェ」と呼ばれたりもしています。対面またはオンラインで、幼児から老人まで、いろんなテーマで、行われています。
 今日は私が経験しながら考えたことをお話しして、「哲学対話とAIの共通項」へと話を進めます。

 さて、対話は「聞く」ことから始まります(私はそう捉えています、話すより聞くのが先)。この場合の「聞く」は、次の3つの意味を含みます。
  ▷ 耳で聴く
  ▷ 受け入れる
  ▷ 質問する
 普段の会話では、聞いているようでいて実は「聞き流し」ていたり、もしくは(粗探ししながら)批判的に聞いていることが多いように思うのです。私自身、哲学対話を始めて「最近ようやく人の話が聞けるようになってきた」と実感しています。

 一方で、私は ChatGPT を使ってみて「哲学対話とAIの共通項」を感じています。以下のこと、どちらにも当てはまります。
  ▷ 正解を求めない姿勢
  ▷ 問うことの方が大事
  ▷ 参加者みんなの共同作業
 AIに「教えてもらう・作ってもらう」のではなくて、自分とAIとで「一緒に創り上げる」つもりでいましょう。AIから何が得られるかは、問い方次第です。問い方によって、どちら方向にどれだけ進むかが、まるで変わってきます。

 こうしてみると、人との対話もAIとの対話も同じようなものなんですね。大事なのは、聞くこと=問うこと。
 ところで、上のようなやり取りを通じて ChatGPT が出してくるものは、すでに誰かが発した言葉であって、上手く編集・要約されているけれども、そこに真新しさはありません。
 一方、人と人との対話では、うーんと唸りながら新しいものがポッと出てきたりします。それはAIには出せないものです。それが人の強みです。哲学対話の醍醐味です。

 AI時代になれば、対話の重要性は減るどころか、ますます増えていくでしょう。AIとの対話が上手になれば、人との対話にも活かせます。逆も然りです。両者には相乗効果が期待できます。それでいながら、
  ▷ AIとの対話術を身につけて人と対話すると、AIを超えたものが飛び出して来る
そんなことが十分ありえるのです。面白いですね。

※ 私の勤務校での哲学対話について、拙いものですが、こちら(→ https://note.com/omori55/n/ne23363a39322 )をご覧ください。

◇      ◇      ◇

あれこれ(2024年)
あれこれ(2024前)
あれこれ(2024中)
あれこれ(2024後)

この記事が気に入ったらサポートをしてみませんか?