エクセルは単なる表計算ソフト以上の機能を備えており、方程式を解くためにも役立ちます。
ゴールシーク機能は、ある数式の結果の目標値に合わせて、変数を自動調整する機能であり、非常に便利です。
この機能を使えば、手計算なしで簡単に変数xの解を求めることができます。
この記事では、エクセルのゴールシーク機能を使って、変数xの解を求める方法をステップバイステップで解説します。
ゴールシーク機能とは?
まず、ゴールシーク(Goal Seek)とは、エクセルの便利な機能で、特定の目標値を達成するために必要な入力値を求めることができるツールです。
2次関数ような関数の解を解くのにはもちろんのこと、
変数Xの解を求めたいが『X= 』の形にするのが困難な数式である場合に特に有効です。
例えば、化学工学でよく用いる、アントワン式で、ある気圧P における沸点 T を求めたいと思った時、以下の式を『T= 』の形にしてエクセルに入力する必要があります。
もちろん、手計算で出来る程度のボリュームですが、『T= 』の形にするのは少し面倒です。
また数式を手計算で変形するのは、計算ミスのリスクも出てきます。
そんな時にゴールシークを使うと素早く解を求めることができます。
ゴールシーク機能を使った解法
ここでは、実際の手順を例を交えて解説します。次の数式を使ってみましょう。
数式の例
2x2 + 3x = 5
この式を解くために、xの値をエクセルのゴールシーク機能を使って求めてみます。
ステップ1:エクセルで数式を設定する
セルA1に『2x2 + 3x』の数式を入力します。
ここではセルA2が変数『x』だとして、A1セルには次のように入力します
=2*A2^2 + 3*A2
2乗などの累乗計算は以下の記事も参考にしてみてください。
ステップ2:ゴールシークを設定する
1.メニューから『データ』タブを選択し、『What-If分析』をクリックすると出てくる、『ゴールシーク』をクリックします。
2.ゴールシークのダイアログボックスが表示されるので、以下を入力します。
・『数式入力セル』:数式が入力されているセル(今回はA1)
・『目標値』:結果として得たい目標値(今回は5)
・『変化させるセル』:xの値が入力されているセル(今回はA2)
3.設定が完了したら『OK』をクリックします。
ゴールシークが自動的に計算を行い、セルA2にxの解が表示されます。
ステップ3:解を確認する
自動計算された数値では、小数点以下の細かい数値が出力されているので、あらためて手入力で整数を入れてみます。
自動計算結果から見て分かる通りこの場合、xの解は1となるため、整数1をあたらためてA2に入力してみます。
その結果、数式の答えが目的の値となっていれば検算は完了です。
ゴールシークでは入力値を少しずつ変化し、トライ&エラーで解を自動探索してくれます。
このトライ&エラーの変化幅は変更可能です。
1.メインメニューの『ファイル』タブのオプションをクリックします。
2.左側の『数式』のタブから、計算方法の設定の欄にある、『反復計算を行う』にチェック☑をいれます。
3.『最大反復回数』を大きく、『変化の最大値』を小さくします。
これで、反復計算の変化幅(最大変化量)が小さくなり、トライ&エラーをより細かく探索してくれます。
複雑な数式で一回目のゴールシークで解がでなかった場合でも、この設定を変えることで、時間はかかりますが、解が出力されることがあります。
ステップ4:初期値を変えて異なる解を求める方法
今回の例 2x2 + 3x = 5 は2次関数であるため、もう一つの別解があると考えられます。
これをゴールシークを使って求めてみましょう。
ゴールシーク機能では、数値を変更するセルにあらかじめ数値を入れ、その初期値から探索スタートを指示することができます。
1.A2の初期値に、一つ目の解より大きい数値を入力します。ここでは『1.1』を入力してみます。
2.ゴールシークを起動し、『数式入力セル』に『A1』、『目標値』に『5』、『変化させるセル』に『A2』を入力します。
3.OKをクリックすると探索が始まります。
今回の例では、結果的に解が再び『1』に収束しました。
つまり1より大きい値に解は存在しなかった、という結果となりました。
4.同じように負の数字も探索してみます。ここではA2の初期値に『-10』を入力してみます。
5.ゴールシークを起動し、『数式入力セル』にA1、『目標値』に5、『変化させるセル』にA2を入力します。
3.OKをクリックすると探索が始まります。
すると『-2.5』という負の解に収束しました。これが 2x2 + 3x = 5 の別解になります。
ゴールシークの注意点
1.複数の変数が存在する場合:
ゴールシークでは1度に扱うことができる変数は1つです。複数の変数が絡む場合には、ソルバー機能を使うことを検討しましょう。
2.数式が非線形の場合:ゴールシークは非線形方程式に対しても使用できますが、必ずしも正確な解が得られないことがあります。その場合、ソルバー機能も試してみて解の妥当性を検討する必要があります。
2変数以上を扱う:ソルバー機能
ここではおまけとして、さらに複雑な数式を処理ることができるソルバー機能について紹介します。
ソルバー機能の有効化(初めての場合)
ソルバーはデフォルトでは無効になっていることがあるので、まず有効にする必要があります。
1.メインメニューの『ファイル』タブから『オプション』を選択します。
2.左側の『アドイン』タブを選び、下部にある『管理』のプルダウンメニューから『Excelアドイン』を選択して『設定』をクリックします。
3.『ソルバーアドイン』にチェックを入れて『OK』をクリックします。
4.するとメインメニューの『データ』タブに『分析』というセクションが追加されています。
問題の設定
ソルバーを使用するためには、まずExcelシートに解きたい問題の数式を設定します。
例として、次のような問題を考えます:
・数式:A1に『=B1 + C1 (B1とC1の合計)』と入力します。
・目標:この合計を100にしたい
・制約条件:A1とB1は正の整数にしたい
ソルバーの起動
『データ』タブを開き、『ソルバー』をクリックします。
これにより、『ソルバーのパラメータ』ダイアログボックスが表示されます。
ソルバーの設定
ソルバーのダイアログボックスで以下の情報を入力します:
1.目的セルの設定:このセルには、最適化したい数式(目的関数)を入力します。
今回の場合はA1を指定します。
2.目標値:達成したい目標値を指定します。
目標の合計が100であれば、『目標値』のフィールドに『◎指定値』のチェックを入れ『100』を入力します。
今回の例では『指定値』を設定しましたが、指定した関数の最大値、最小値を求めることも可能です。
3.変数セルの変更:目標値を達成するために変化させるセル(変数セル)を設定します。
ここではB1とC1セルを設定したいので、変数セル変更フィールドの右端にある⇧をクリックします。
すると、セルの選択モードになるのでB1~C1までをドラッグします。
変数セルが離れたところにある場合は『Ctrl+クリック』で複数選択することもできます。
4.制約条件の対象:必要に応じて制約条件を設定します。
例えば今回のように単純な「B1+C1=100にしなさい」という命題の場合、解はほぼ無数に存在します。
そのためここでは、例として、①B1とC1はどちらも負でないという条件と②B1は60以上、という条件を設定します。
『制約条件の対象』の欄にある『追加』ボタンをクリックします。
①の条件として以下の図のように、B1:C1>=0と設定します。
『OK』をクリックすると、『制約条件の対象』の欄に設定した条件が追加されています。
同様に、追加ボタンをクリックし②の条件を設定します。
『OK』をクリックして戻ると、『制約条件の対象』の欄に2つの条件が設定されいてる様子が分かります。
制約条件を設定する際、『>=』といった見慣れた条件の他に、『int』、『bin』、『dif』といった見慣れない条件もあります。
それぞれの条件が意味する概要は以下の通りです。
int:整数制約
変数に対して整数値のみを求める。
bin:バイナリ制約
変数に対して0または1の値のみを取らせる(選択肢)。
dif:異なる制約
2つの変数が異なる値を取るように制約を設定。
5.制約のない変数を非負数にする(オプション):チェック☑を入れることで、変数の全てを正の値の中で探索してくれます。
おすすめとしては、☑を外して、正の値に限定したいものがあれば、制約条件にしっかり記載しておくほうがよいでしょう。
個別の制約条件とバッティングする可能性もありますし、エラーが出たときの対処も検討しやすくなります。
6.解法の選択(オプション):多くの場合は『シンプレックスLP(単体法)』を使いますが、複雑な非線形問題や他の要件がある場合は別の方法(GRG非線形など)を選ぶこともできます。
エクセルの説明文には以下のように書かれています。
滑らかな非線形を示すソルバー問題にはGRG 非線形エンジン、線形を示すソルバー問題にはLP シンプレックスエンジン、滑らかでない非線形を示すソルバー問題にはエボリューショナリー エンジンを選択してください。
ここでは通常のシンプレックスLPを選びます。
ソルバーの実行
1.実行:設定が完了したら、解決(Solve)ボタンをクリックします。ソルバーが目標値を達成するために必要な解を計算します。
2.結果の確認 :ソルバーが解を見つけた場合、結果を確認できます。
もし最適解が見つかった場合、シートの値が自動的に変更されます。
解が見つからない場合、または目的関数が制約条件を満たさない場合にはエラーメッセージが表示されます。
3.解を保持:ソルバーが計算した解をシートに適用する場合は『OK』を選択します。
4.解を破棄:ソルバーが計算した解を適用したくない場合は『キャンセル』を選択します。
要求する解と異なっていた際には、再度、制約条件や解法を変更し、ソルバーの実行を行います。
さいごに
エクセルのゴールシーク機能は、変数の解を簡単に求めるための強力なツールです。
数式を手で解くことなく、目標の結果に到達するために必要な変数の値を素早く計算できます。数式の解法に困ったときは、ぜひゴールシークを活用してみてください。
また、もし複数の条件に対応した最適化を行いたい場合は、エクセルのソルバー機能を使うとより高度な計算が可能です。
これからもエクセルの便利な機能を活用して、仕事の効率をアップさせていきましょう!
皆さんのお仕事に少しでも役立てれば幸いです。ではまたノシ
コメント