« 第67回 エクセルで方程式(その2) | メイン | 第68回 この列、何番目? »

2010年8 月21日 (土曜日)

コメント

y sakuda

からくちさんの出題者解答はやはり逆行列ですねーー
基本的には私の88も同じです。
=ROUND(INDEX(MMULT(MINVERSE($A5:$B6),--MID($C5:$C6,FIND("=",$C5:$C6)+1,9)),COLUMN()-4),)

中学生バージョンは132どまりでした
=-1^COLUMN()*(OFFSET($G5,,-COLUMN())*MID($C6,FIND("=",$C6)+1,9)-OFFSET($G6,,-COLUMN())*MID($C5,FIND("=",$C5)+1,9))/($A5*$B6-$B5*$A6)
これはたぶん大丈夫と言うことで、誤差処理はしてません。

これを短縮しようとして、分母を関数に置き換えた131は誤差がでるので、ちゃんとしたものにするにはRoundが必要になっちゃいましたので、参考例です。
=-1^COLUMN()*(OFFSET($G5,,-COLUMN())*MID($C6,FIND("=",$C6)+1,9)-OFFSET($G6,,-COLUMN())*MID($C5,FIND("=",$C5)+1,9))/MDETERM($A5:$B6)

ジョー3

MINVERSE ????

な、、なな、、、、、なんだこ・・・・・・・・・りゃーーーーーー

む印

MINVERSE、、
そんな計算してくれるのかぁ~、、、ww

わたしの116は間違いで、119でした、、
=ABS(SUM(MID(IF({1;0},$C6,$C5),FIND("=",IF({1;0},$C6,$C5))+1,15)
*IF(D5,$A5:$A6,$B5:$B6)*{1;-1}))/ABS($A5*$B6-$B5*$A6)

くまぷー


>MINVERSE ????

これを使いたかったんですよ。
逆行列を求める関数・・・

・・・で、私のは136で中学生・・・
=(IF(COLUMN()=5,$B6,-$A6)*RIGHT($C5,LEN($C5)-FIND("=",$C5))-IF(COLUMN()=5,$B5,-$A5)*RIGHT($C6,LEN($C6)-FIND("=",$C6)))/($A5*$B6-$A6*$B5)

特に短縮もしませんでした (^^ゞ


min

sakudaさんの88私のpcではうまくいかないんですが??

む印

忘れてました、、
私の119はCtrl+Shift+Enterです、、、

min

小手先でちょっと縮めた86は
86=ROUND(INDEX(MMULT(MINVERSE($A5:$B6),MID($C5:$C6,FIND("=",$C5:$C6)+1,5)+0),2-(D5=0)),)

む印さんもやっぱりd5を使いましたね。

む印

>d5を使いましたね。
はぁ~い^^;、参りました、、


>・E5の式をF5にコピーして下さい
まさかx・yが配列として1式で出来ちゃうなんて思っても見ませんでした、、、
MMULT & MINVERSE おそるべし!!

min

今回の問題、行と列、、MINVERSEってあったよなって調べたら
連立方程式で使うっ
ってことで定番の式があることを発見。
でもさっぱり仕組みが分かりませんでした。

MINVERSEを使わない
113{=IF(D5,(MID(B5,FIND("=",B5)+1,5)-D5*$A5)/A5,SUM(MID(C5:C6,FIND("=",C5:C6)+1,5)*IF({1;0},-B6,B5))/(A6*B5-A5*B6))}
式は単純ですが、ちょっとだけ絶対参照と相対参照を工夫しました。

通りすがり

>MMULT & MINVERSE おそるべし!!
「EXCEL 1次方程式」で検索すれば、出てきますよ。

通りすがり

>sakudaさんの88私のpcではうまくいかないんですが??
E5に入れてないからじゃないかな?E列専用

min

そうかあ、sakudaさんの式がうまくいかないのは私のpcだけなのかな?
自分で式を組み立てたときにもF9押したときに再計算しないので、ちょっと工夫してました。

む印

>絶対参照と相対参照を工夫しました。
おお、なるほど! うまいなぁ~

>「EXCEL 1次方程式」で検索すれば、出てきますよ
あぅ、、検索かぁ~、、、
そんなことさえ思いつけなくなってしまいました、、、

min

>わたしの116は間違いで、119でした、、
む印さんの116でよいのでは?
116{=ABS(SUM(MID(IF({1;0},$C6,$C5),FIND("=",IF({1;0},$C6,$C5))+1,15)*IF(D5,$A5:$A6,$B5:$B6)*{1;-1})/($A5*$B6-$B5*$A6))}
これでもいいのかな?
112{=SUM(MID(IF({1;0},$C6,$C5),FIND("=",IF({1;0},$C6,$C5))+1,15)*IF(D5,$A5:$A6,-$B5:$B6)*{1;-1})/($A5*$B6-$B5*$A6)}

y sakuda

ちょっと出かけてました。
>E5に入れてないからじゃないかな?E列専用
Column()使ってますからE、Fに入れないとおかしくなりますが、それ以外は思い当たる要素ないです^^;

min

>E、Fに入れないとおかしくなりますが
当然E、Fに入れているのですが、入れたばかりのときはいいんですが、
f9押しても再計算しないんです?

y sakuda

なるほど、X,Yの順とA列B列の逆転を実現するのに、D列使うっての全く思いつかなかったな^^
minmaxさん、79は出さないんですか?
コピーと言う条件には外れますが、一つの考え方だと思います。

y sakuda

>f9押しても再計算しないんです?
なんでや??
と言ってもねーー

min

>なんでや??
前からたまにそういうことがありましたが、それが一般的だと思っていました。
MID($C5:$C6,FIND("=",$C5:$C6)+1,5)+0
だと再計算OKなんですが、
--MID($C5:$C6,FIND("=",$C5:$C6)+1,9)
だと再計算NGなんです。
おいらのエクセルがおかしいのかあ?

79は間違いなくsakudaさんと一緒ですから。
良かったらsakudaさんから出してください。

む印

>む印さんの116でよいのでは?
ほんとだ、最初のファイルみてたら合ってました、、
ファイルをコピーして別式考えてるうちにABSの括弧を間違えてたみたい、、
お恥ずかしい、、

>112
これ、くまぷーさんの解答見ていたときに私も気付きました、、
お恥ずかしい、、×2

y sakuda

>79は間違いなくsakudaさんと一緒ですから。
じゃ、推測があってるかどうか、確認です。
E5:E6を選択して配列数式
{=ROUND(INDEX(MMULT(MINVERSE(A5:B6),--MID(C5:C6,FIND("=",C5:C6)+1,9)),{1,2}),)}


min

全く一緒です。って言いたいところですが、
やはりsakudaさんの式では、私のpcではF9で再計算してくれません。
中身は一緒ですが、
{=ROUND(INDEX(MMULT(MINVERSE(A5:B6),MID(C5:C6,FIND("=",C5:C6)+1,5)+0),{1,2}),)}
でした。

y sakuda

>私のpcではF9で再計算してくれません。
www
しかし、そういう選択的なトラブルってのも珍しい

くまぷー

>私のpcではF9で再計算してくれません。

よくわからないのですが私のPCでは
F9を押した時にE5,F5の数値は変わらないけれど
○×の判定は再計算しています。

ちなみにエクセル2007です。

min

>F9を押した時にE5,F5の数値は変わらないけれど
>○×の判定は再計算しています。
ね、2007ではそうなるんでしょうかね。

>特に短縮もしませんでした (^^ゞ
ということなので、
くまぷーさんのを適当に短縮してみました。
MINVERSE使わない中では一番短いのかな。
106=(IF(D5,-$A6,$B6)*MID($C5,FIND("=",$C5)+1,5)-IF(D5,-$A5,$B5)*MID($C6,FIND("=",$C6)+1,5))/($A5*$B6-$A6*$B5)

y sakuda

>ね、2007ではそうなるんでしょうかね。
あら、本当ですね。
実は2010でやってたのですが、そっちはOK。
また勤務先で2002でやった時もOKでした。
今、2003でやってみましたが症状は出ません。
2007でだけ発生する症状みたいですね。
minmaxさんご指摘のように、--を+0等に書き換えれば良いようですが・・・・
2007のバグなのかな?

y sakuda

ところで、変なケース見つけました。
B5を0にした場合、minmaxさんの113の式だけ、0Divのエラーになっちゃう
ぱっと見じゃ理由が分からないんですが・・・・

min

>ぱっと見じゃ理由が分からないんですが・・・・
b5が0の場合があるとすると
ある意味私の113の式の場合yの答えがエラーになるということは
間違いではなくなります。

b5が0の場合
私の113以外の式で結果として得られたx,yの値をc5に表示された式に当てはめると式が成立しなくなります。

あくまでもこの問題の設計では
a5からb6に0が入っている場合、
c列に表示されている式が成り立たなくなるため
「A5:B6に0を除く-99~99の数値を入れてください」
と0の入力が禁止されているものと思いますが。

ついでに、くまぷーさんの式の短縮ちょっと忘れていた個所がありもう2文字減らして104でもOKでした。

くまぷー

>=(IF(D5,-$A6,$B6)*MID($C5,FIND("=",$C5)+1,5)-IF(D5,-$A5,$B5)*MID($C6,FIND("=",$C6)+1,5))/($A5*$B6-$A6*$B5)

minさん、短縮ありがとうございます。
・・・で、素朴な疑問なんですが
X=0になる場合・・・、つまり式が
2X+y=1
x+y=1
・・・のような式は考慮しなくてもいいんですかねぇ?
x=0だとyの答えがおかしくなりませんか?

min

くまぷーさんどうもです。
確かからくちさんの緻密な設計ではx、yの値は0にならないように出来ていたかと?

ちょっと外出中

くまぷー

>くまぷーさんどうもです。

こちらこそです。

・・・で、完全に私事なんですが
明日、人間ドックなので午後8時(あと約5分)で絶食・・・
明日は検査が終わるまで絶飲食・・・(T.T)

y sakuda

>私の113以外の式で結果として得られたx,yの値をc5に表示された式に当てはめると式が成立しなくなります。
>「A5:B6に0を除く-99~99の数値を入れてください」
あら、本当だ^^;
問題の対象外ですねーー


む印

私は普段殆どExcel2000を使用しているのですが
今日、2003を使用する機会があり、数式バーのfxをクリックしたら
関数の挿入BOXが出てきたので「連立方程式」で検索
真っ先にMINVERSE関数がヒットしました、、、!

あはは・・・自分の遅れすぎを痛感致しました(ToT)/~~~2003、2007、2010

y sakuda

>関数の挿入BOXが出てきたので
使ったことないなw

しかし、この問題Minverseでは実質的に回答は同じになっちゃうんですが、中学生版は私自身は完敗でしたが、思わぬ手段があって面白かったです。
(思いつかなかった者の僻みかもw)

ジョー3

>私自身は完敗でしたが、
・・・・・・私なんか・・・完敗^3・・・・ぐれーだな、、、、

からくち

>私自身は完敗でした
只今、正解者約1名(を望むけど・・・う~ん)の問題製作中
出題者解答例は出来上がった
後は問題を考えるだけ

ええっ?、、、問題がまだ出来ていないのに
出題者解答例はもう出来ている???
なんだ、、、何だ、、、難だ


む印

>中学生版
それしか思いつけず・・・

最初、思考に入るとき欄外に書いたのは111文字で
=ABS((MID($C5,FIND("=",$C5)+1,15)*IF(D5,$A6,$B6)-MID($C6,FIND("=",$C6)+1,15)*IF(D5,$A5,$B5))/($A5*$B6-$B5*$A6))

くまぷーさんの解答とよく似てましたが、B列をマイナスするアイデアは出てこず、、
配列で思考してみたものの、よけいに無駄が出来たみたいです、、
{=SUM(RIGHT(SUBSTITUTE(IF({0;1},$C5,$C6),"=",REPT(" ",9)),9)*($A5:$B6-A5:A6/2)*{1;-1})/($A5*$B6-$B5*$A6)*-1^(D5=0)}
こんな、血迷ったことまでしてました、、、orz


>正解者約1名(を望むけど・・・う~ん)の問題製作中
>なんだ、、、何だ、、、難だ×2
ひぇ~~~~~

ジョー3

>ええっ?、、、問題がまだ出来ていないのに
>出題者解答例はもう出来ている???

・・・・・
・・・・・・・・・・・・・・
詰め将棋作るときは、、、、、

・・・・・
そんなことが、よくありましたけど、、、、、、

余詰みチェックと、、、、紛れのための駒配置とかで、,,問題完成が、、、
作為順完成より、、、、遅れて、,,,

y sakuda

>正解者約1名(を望むけど・・・う~ん)の問題製作中
なんだ、、、何だ、、、難だ×3
見たいような見たくないようなw

min

私自身のここのコンセプトは、前にsakudaさんも言ったことがありますが、パズル的な要素を楽しむってことです。
ですから、定番の式があっても、もう少し小さなトランクに入るのではないかと工夫をしてみてます。
もう少したたみ方を工夫すれば小さくたためるのではないかと。

ですから、今回の問題を例にとっても皆さんの答えを見た後でもう少しこの式は短くなるのではないかと、つい考えてしまいます。
MINVERSEなんて関数仕組みがまだよくわかっていませんが、
これを使わなくても100は切れるんではないかと。。
ということでこの後少し考えてみます。
今日中に文字数がめでたく短くなったら再度顔を出します。


明日次の問題が出題なのでしょうか。
そうだとして、私は、今回土曜日までは問題の解答は考えても、明日以降土曜日までしばらくは顔を出さないと思います。
日曜日にはここに帰ってくるかもしれませんが。

min

飲み過ぎましたm(__)m

くまぷー

>日曜日にはここに帰ってくるかもしれませんが。

お待ちしています。
事情はわかりませんが、お体にお大事に・・・

>正解者約1名(を望むけど・・・う~ん)の問題製作中

う~ん、その1名とはいったい、誰を想定しているのだろう・・・

からくち

>誰を想定しているのだろう・・・
もちろん、、、ジョー3さんです

ジョー3

>>誰を想定しているのだろう・・・
>もちろん、、、ジョー3さんです

がはは、、、、
常連で、ただ一人、、、解けない・・・・・
・・・・・・
ってのは、、、想定できるが、,,,
・・・・・・・・・・・・・・
・・・・・・・
・・


y sakuda

>もちろん、、、ジョー3さんです
きっと、ジョー3の発想なくしては解けないような問題だなw

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年3 月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

TOP メニュー