2012.03.15 Thursday
スポンサーサイト
一定期間更新がないため広告を表示しています
| - | | - | - |
にんべんきんべんに@サンディエゴ
|
||
CALENDAR
IN THIS PAGE
RECENT COMMENT
RECENT TRACKBACK
LINKS
ARCHIVES
PROFILE
|
2012.03.15 Thursday
スポンサーサイト
一定期間更新がないため広告を表示しています
| - | | - | - |
2009.12.06 Sunday
エクセルのソルバーでIF文は使ってはいけない(なるたけ)
ということが算数の授業で出てきた。
ソルバーって素晴らしいツール。 変数のセルを指定して、目的のセルを最大化したり、 ある値に近づけたりすることができる。 現実的な話では 23 X + 17 Y = 29 31 X + 11 Y = 13 とか、面倒な連立方程式を解くことにも使える。 このとき、方程式はインプットする条件文として出てくるんだけど、 この条件文は何でも良いと言うわけじゃないんですな。 基本、線形な感じが推奨される。 最低でも座標空間で表現できる何かしらの曲線。 ここにIF文は、あんまりやっては行けないことだという話。 確かにその通りで、IF文使って実際に色々試してみると、変数の数が 少ないときは何とか答えが出るんだけど、変数の数が多くなってくると 正しい答えに行き着かない。 結局ソルバーがなんで解けるかっていうと、座標空間での表現ができるから しらみつぶしでない方法でも効率的に答えを探せるという話なんだと。 なので、IF文で示されるものをいかに線形っぽく変換するか というのが重要なわけ。授業ではその例の幾つかを挙げて 終了だったのだけど、ちょっとここで一般化してみたくなった。 ここでゴールは 「X >= 3 ⇒ Y <= 2」を線形的に表現すること。 X、Yともに10以下の【整数】としましょう。 このとき肝になってくるのが、Binary:0か1っていう変数 <メソッド1> まず、 「X >= 4 ⇒ B = 0」みたいな、右側がbinaryのパターン 1.左から=を取り払う X > 3 ⇒ B = 0 2.左を>0の形式に直す X - 3 > 0 ⇒ B = 0 3.右を「B=1」か「1-B=1」にする X - 3 > 0 ⇒ 1 - B = 1 4.「>0」、「=1」を取っ払い、真ん中に「<=」を置く X - 3 <= 1 - B 5.このとき、左の最大値(あるいはそれより大きい数字)をMとする M = MAX (X-3) = 7 6.そのMは右側に掛けておく X - 3 <= 7(1 - B) こたえ: X + 7B <= 10 <メソッド2> 次に「B = 0 ⇒ Y >= 4」みたいな、左側がbinaryのパターン 0.対偶を取る Y < 4 ⇒ B = 1 これでメソッド1になる。 <メソッド3> 最後に「X >= 3 ⇒ Y <= 2」みたいなbinary無しのパターン −1.「B=1」をかまして既知のメソッド二つに分ける X >= 3 ⇒ B = 1 <メソッド1> B = 1 ⇒ Y <= 2 <メソッド2> 0.メソッド2は対偶を取る X >= 3 ⇒ B = 1 <メソッド1> Y > 2 ⇒ B = 0 <メソッド1> これでメソッド1になる。このまま続けると 1.左から=を取り払う X > 2 ⇒ B = 1 Y > 2 ⇒ B = 0 2.左を>0の形式に直す X - 2 > 0 ⇒ B = 1 Y - 2 > 0 ⇒ B = 0 3.右を「B=1」か「1-B=1」にする X - 2 > 0 ⇒ B = 1 Y - 2 > 0 ⇒ 1-B = 1 4.「>0」、「=1」を取っ払い、真ん中に「<=」を置く X - 2 <= B Y - 2 <= 1-B 5.このとき、左の最大値(あるいはそれより大きい数字)をMとする M1 = MAX(X-2) = 8 M2 = MAX(Y-2) = 8 6.そのMは右側に掛けておく X - 2 <= 8B Y - 2 <= 8(1-B) こたえ: X - 8B <= 2 Y + 8B <= 10 コメント
コメントする
この記事のトラックバックURL
トラックバック機能は終了しました。
トラックバック
■ 今日のお題: 音速パソコン教室 Office2007講座3点セット+特典12...
| 無知の知 | 2009/12/10 6:59 PM |
|
Copyright (C) 2004 paperboy&co. All Rights Reserved.
|