memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

Excelソルバーを少し

今、通勤電車で以下の本を読んでいます。

問題解決に役立つ数学

問題解決に役立つ数学

著者の方は社会人向けに数学のセミナーをされているとか。数学の論理的な思考がビジネスに役立つという視点で活躍されているそうです。

この41ページに、

\frac{1}{x}+\frac{2}{y}=\frac{1}{3}

を満たす自然数x, yの組みの中で、和x+yの最小値はいくつか。

という問題がありました。

ちょっと補って因数分解するというのが趣旨なのですが、最小値をみつけるのにx, yの値を列挙する。。。という工程が必要になります。”数学の問題”として出題される場合は答えが必ずあり、かつ、時間内に解答できる程度の解空間ですので手動で問題ありませんが、社会で出会う問題は解があるかどうか、解空間が広大である、ということはよくあると思います。

そんなときにはソルバーくんの出番です。

問題解決の思考方法を身につけるという本書の意図からずれているのですが。。。コンピュータを利用した可視化、解決は社会人にとっても、あるいは学生にとっても問題解決する方法の1つではないかと思います。

Excelのソルバーの使い方は以下のサイトを参考にさせてもらいました。書籍も出されているようです。今度、本屋で探してみたいと思います。

Link: Excelのソルバーを用いた科学技術計算

一般的なソルバーソフトを使う手もありますがやはりExcelは馴染みがありますしね。ちなみに僕はmac派ですが、macのExcel2011にはソルバーがありません。しかたがないのでvmwarewindowsを起動してExcel2010で試します。

Excelをふつうに起動して以下のようにデータを入力します。

f:id:ke_takahashi:20140222112847p:plain

B2およびB3のセルは単に数値を入力してください。これがxとyを探索するときの初期値になるようです。ソルバーくんが解を見つけられない場合がありますので、その場合は、ここの値を制約式の中にいれて、かつ、数値をいろいろ変えてみて(少し大きくしてみるとか)試してください。ここがソルバー利用時の一つ注意点のように思います。

B6セルには最小化したいx+yを表す数式「=B2+B3」を入力します。

そして、B7セルには問題文の式を変形するとx*y-3y-6x=0になりますので、その左辺を「=B2*B3-3*B3-6*B2」のように入力します。そして右辺の0をそのままC7に入力します。

これで準備完了です。

あとは[データ]-[ソルバー]を選択します。リボンインタフェースに「ソルバー」が無い方は設定する必要があります。こちらが参考になります。

f:id:ke_takahashi:20140222111536p:plain

こんな↑感じになるように各項目を設定してください。

ちょっと戸惑うところが「整数」と書いているところだと思います。問題文の通り、xとyは自然数ですから、以下のようなメニューを選択してxとyがintである指定をします。この指定をしない場合は実数(小数つき)の値を探索します。

f:id:ke_takahashi:20140222111806p:plain

で、うまく解が発見できると以下のようになります。

f:id:ke_takahashi:20140222111857p:plain

解析的に求めた答えと同じになります。

小中高を通して解析的な求解方法を学びますが、代数も幾何も微積数値計算で求める方法がある、ということを知っておくことは今後ますます大切になるんじゃないかと思います。個人的に。

macに標準でついてくるGrapherで数式をグラフ化してみると問題文の意味もわかりやすいでしょうし。最近ならPCを使わなくてもスマホでも数式をグラフ表示してくれるアプリもありますしね。。。中学生の1/3がスマホを所有する時代とくれば、利用しない手はないでしょう。

Excelソルバー便利です。機会があればぜひトライしてみてください。

昔懐かしい2次関数の最小値(最大値)を求める問題なんかはソルバーを使うと簡単に計算できます。中学生にこれを教えたら結構感動するんじゃないかなぁ。。。どうだろう?大学生も数理計画法なんかの授業で仕組みを学ぶはずだけど、Excelソルバーの使い方を知る機会はあるだろうか?知らないとすればもったいないですね。。。