0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLM・LLM活用Advent Calendar 2024

Day 9

生成AI時代のプログラミング科目の試験問題の試み(その2)

Posted at

昨年の記事に続いて今年もやってみました。o1がリリースされたりしていて更にLLMの能力が上がっており、LLMに丸投げしても正解は得られないが学生でも答えられる問題はなかなか作るのが難しくなっています。今年はこんな問題でした。

dy/dx=f(x,y)をルンゲクッタで解く。x=1からx=100までの解yを10×10の行列にしたものをAとする。bを長さ10のベクトルとし1,...,10が入っているとする。Ax=bという連立一次方程式の解をガウスの消去法で求めるプログラムを作ってください。Numpyは使ってよいが、出来合いのプログラム(例えばルンゲクッタやガウスの消去法を行うパッケージをimportして使うなど)は使わないでください。f(x,y)とy(0)の値は適当に決めてよい。

o1にやらせてみた結果はここにあります。
実はこの設問には罠があります。o1は勿論、この問題をちゃんと解くのですがdy/dx=f(x,y)を「素直なf」で解くと行列に入れるべき100個の数も「なめらかな数」になってしまうのでAは正則ではない(列ベクトル、または、行ベクトルが線形従属)場合が多く、o1の作ったプログラムはうごきません(o1は最初dy/dx=-yを選択したので見事にAが正則ではなくなってしまってうごかないです)。
さすがのo1もそこまでは頭がまわりません。ここで学生は「○○というエラーが出てしまった」とo1に尋ねるべきで、そうするとo1は正しく「Aが特異行列になっています。ODEを工夫してください」と答えるので「答えが得られるようなfを工夫してください」とお願いするとやっと正しいコードを出します。
実際には学生は課金していないでしょうから、o1は使えないでしょうし、無料版だともっと苦労するかもしれません。それでもただコピペをしただけでは答えが出ない問題は作れましたし、学生は線形従属だと連立方程式は解けないという(1年生の時に習った線形代数の)知識を覚えていないと先にはすすめないかもしれません。まだ採点していないのでわかりませんが、あんまり学生はできていないかも、ですね。
以上、o1でも簡単には答えをだせないけど、学生が頑張れば答えられるような問題の試みでした。みなさんはどんな工夫をしていますか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?