2009-08-29[n年前へ]
■「自ビールのアルコール度数」計算グラフ
「自宅サーバ部屋で自ビール作り」をしたくなり、「農家が教えるどぶろくのつくり方―ワイン、ビール、焼酎、麹・酵母つくりも 」を読んでいると、「笹野流 濁りビールのつくり方」の中で自ビール(自分で作るビール)のアルコール度に関する説明がされていた。内容はおおよそこのようなものである。
「ビールの素」は(重量にして)65%が麦芽糖(マルトース)である。
900グラムのビールの素と、砂糖(スクロース)1kgを10リットルの水に混ぜると、麦芽糖600グラム・砂糖1000g、合わせて1600グラムの糖分が10リットル(10000グラム)の水の中に含まれる。つまり、原麦汁の糖分%は16%ということになる。
発酵により、糖分がアルコールと炭酸ガスに「完全に」分解されると、アルコール度数は糖分%に0.6を乗じたものになる。
日本では、酒税法によりアルコール度数1%以上のビールを作ることは禁止されている。そこで、どのくらい量の砂糖を追加するのなら、酒税法で許可されているアルコール度数になるのかを、エクセルで計算・グラフ化してみることにした。
よく販売されている900グラム入り「ビールの素」は、通常20リットルの水と混合するレシピになっているらしい(あくまで、実際にまだ買っていないので「らしい」である)。そこで、水20リットルと「ビールの素」1缶と追加する砂糖の量から、できあがる自ビールのアルコール度数を概算してみたのが、下のグラフである。
この計算してみた結果グラフを眺めると、砂糖を入れなくても、もしも完全に発酵が完了したならば、アルコール度数は1%を超えてしまう、ということになってしまう。発酵が半分程度しか進行しないような状態でなければ、アルコール度数は1%を超えてしまうのである。
使う水の量が違うのだろうか、どこを間違えているのだろうか・・・!? やはり、実際に作ってみなければ「わからない」ものなのかもしれない。
2009-09-13[n年前へ]
■エクセルで「ランダム・ウォーク」アニメーション
「Excelでランダム・ウォークを計算させ、アニメーションさせる」と結構気持ちが良いものです。下の動画は、Excelで50個の粒子をランダム・ウォークさせている動画です。動画が始まって数秒した辺りから、計算が始まり、粒子がブルブル振動しながら拡散していきます。
この計算・グラフ表示は、(マクロ機能は使わずに)Excelの反復計算機能を用い、反復計算の回数は1回、計算タイミングは手動し、F9キーを押しっぱなしにすることで、行っています。Excelファイルは、RandomWalk.xls(35kB)としてダウンロードできるようにしてあるので、それで実際に試すことができるようになっています(反復計算の設定は上記通りにしておいてください)。
計算の中身は、各粒子のX,Y座標を示すセルに対し、(単純に書くと)「自分のセル=自分のセル+乱数(-0.5~0.5)」と入力してあるので、反復計算を1回するたびに、各セルの値が少しランダムに動いていく・・・という具合です。
最左上のセルは、計算内容をリセットするためのフラグです。0を入力して、F9を一回押すと、計算内容がリセットされます。ランダムウォークの計算をする時には、この最左上セルに1を入力し、F9を押せば(押し続ければ)刻々と計算が実行され、グラフ上でランダムウォークのアニメーションを眺めることができます。最左上のセルの値を「各粒子のX,Y座標を示すセル」にかけているので、(反復計算を行った後でも)計算内容のリセットを行うことができる、というわけです。
Excel作業につかれたとき、粒子たちに「ランダム・ウォーク」をさせ、プルプル震えながら動いていくようすを眺めてみると、何だか少し疲れがとれるかもしれません。
2009-10-17[n年前へ]
■エクセルからMathematica(無料Player)の計算機能を使う
今日は、「Microsoft ExcelからMathematicaの計算機能を使う」ということをしてみたいと思います。エクセル(Excel)のシートにMathematicaのコマンドを入力して、その評価を(無料で使うことができるMathematica Playerに付属する)MathematicaKernel.exeに評価させよう、というわけです。もちろん、その評価された結果をさらに通常のエクセルの機能を使って操ってやろう、ということになります。
ExcelからMathematicaの機能を使うには、色々な実現方法がありますが、今回は「無料配布MathematicaカーネルとNET Framework実装IronRubyでグリッド・Matheatica計算環境は5分で作れる」で作った、「URIを介して渡されたコマンドを実行した結果を返すWEBサーバ・アプリケーション」とエクセル(Excel)の「WEBクエリ機能」(「Excel VBA WEB連携術―2007/2003対応 」参照)を使って実現してみることにします。
まずは、「無料配布MathematicaカーネルとNET Framework実装IronRubyでグリッド・Matheatica計算環境は5分で作れる」で作ったサーバを立ちあげましょう。たとえば、
ir.exe mathematicaServer.rb 80という具合にして、適当なポート(この例であればhttpの標準ポートである80番)でコマンドを待ち受けるWEBサーバが起動します。
次に、エクセルのセルを選択し、(エクセル2003くらいのバージョン以降に備わっている機能である)「WEBクエリ」をします。エクセル2007であれば、「データ」-「WEBクエリ」で、URLを入力してやるのです。つまり、今回の例であれば、"http://localhost/evaluate/2+2"といった風に入力をしてやれば良いわけです。すると、小さなブラウザ風の画面が表示され、そこに"2+2"の計算結果が表示されます。後は、下のブラウザ風画面の下にある「取り込み」ボタンを押すと、「開いています ダイアログ」が表示された後に、「データを返す先のセル選択ダイアログ」が表示され、セル中にMathematicaカーネルによる評価結果が入力されるのです。エクセルとマセマティカ・カーネルとの間で、httpを介してデータがやりとりされる、というわけです。
その実行過程を、もしも、エクセル側のVBAマクロを使って行うと、こんな具合になります。
Sub httpGet() Range("E3").Select With Selection.QueryTable .Connection = "URL;http://localhost/evaluate/2+2" .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With End Sub
つまり、エクセルを使っているように見えて、そのエクセルは実は単なるMathematicaカーネルのフロントエンドとして使われている、というようなワザも行うことができるわけです。しかも、そのMathematicaカーネルは、(無料で使うことができるMathematica Playerに付属する)MathematicaKernel.exeだったりするわけで、「安い・うまい・早い」の三拍子が揃った、超お手軽便利ツールになる可能性があります。そう考えると、プロトタイピングお手軽版ではなく、真面目にMathematicaカーネルを操作するWEBアプリを書いてみようか…という気になってきます。
2009-10-20[n年前へ]
■「美的曲線」を基準に「理想のバスト形状」を作り出すエクセル・シートを作る
究極の美的バスト形状作成コンテスト!?
「理想のバスト形状とはどういうものですか?」と聞かれたことがあります。色々な答えがあると思うのですが、その時、ふとこんなことを思いつきました。思いついたのは、適当なバスト形状を作成し、その形状がどれだけ「理想」に近いかの評価関数として「美的曲線」というものを使うことができるのではないか、「美的曲線」からのズレを「理想からのズレ」と評価し・参考にすることで、美的に最適化された理想のバスト形状を作ることが簡単になるのではないか、というアイデアです。ちなみに、美的曲線とはこのようなものです。
美的曲線に関して,和歌山大学の原田利宣先生が,「自然界や人工物におけるさまざまな美的曲線の多くは,曲率対数分布図が直線で近似できるということ」を指摘されました.原田先生が調べた美的曲線には,蝶の羽や自動車のボディのキーラインなどが含まれています.美的曲線の特別な場合として,曲率対数分布図における直線の傾きα=-1の場合にはクロソイド曲線,α=1の場合には対数螺旋となることが指摘されています.本研究では,曲率対数分布図が直線で表される曲率変化の単調な平面曲線を美的曲線と呼びます.
アイデアを思いついたら、まずはプロトタイピング(アイデアを簡単に形にした試作物)を作ってみるのが、アイデアが正しそうかを見極める常道です。・・・というわけで、「美的曲線」を基準に「理想のバスト形状」を作り出すエクセル・シート」を作ってみました。それが、simulation.xls 48kB になります。エクセル・シートは大体下図のような具合です。
中身はどうなっているかは、一見しただけではわかりにくいかもしれません。それがExcelを使った作業効率が長期的に見ればとても低い大きな問題点のひとつだと思います。けれど、よくありがちな言い訳説明ですが、「エクセルシートをとりあえず適当に眺めてみれば、わかるだろう」と思います・・・。
このシートは、まず最初に円形(三次元的には球形の)バストがあります。それが(右側のグラフで言うと)紺色のグラフです。ちなみに、このグラフに示されたバスト形状は90度右に回転して、右向きになっていると思って眺めてみて下さい。また、このバスト形状グラフの単位は、すべてミリメートルになっています。
さて、これだけではつまりません。次は、一番左側の列に適当な数値を入れると、そのバストの形状が変化します。つまり、あなたが「任意のバスト形状」を作り出すことができるのです。ちなみに、この計算では補正形状を作成する際に、「”繰り返し”計算をさせる(収束するまで)ことで滑らかさを表現している」言い換えると、ラプラス方程式を満たすように(実際には、あなたが入力した補正パラメータが入っているので、むしろポワソン方程式というべきかもしれません)作成されるので、エクセルのオプションで「反復計算」を行うように設定しておきましょう(これはエクセルで離散化された方程式を解く際に用いる常套手段です)。
そして、その際の「美的度」を示すグラフが右図です。これは、作成したバスト形状を「曲率対数分布図」で表したものです。一番最初のデフォルト形状バスト=半円(半球)バストでは、何だか複雑な曲線のようで「(直線形状を示す)美的曲線」にはなっていません。しかし、適当な補正係数を入れて、バスト形状を変化させてやると、次第に「曲率対数分布図が直線を示す」ようになってきます。つまり、美的な「バスト形状」ができあがってくるのです。それが、たとえば右上にある紫の線で示したバスト形状です。この形状の時の曲率対数分布図は、比較的直線状に分布していることがわかります。
さて、エクセルを使う作業というのは実に単調で、実務的で、ワクワク感がありません。しかし、今回のようにエクセルを使い、「美的曲線」を基準に「理想のバスト形状」を作り出すエクセル・シートがあったりしたら、どうでしょうか?エクセルを使う作業が、少しは楽しく感じられたりはしないでしょうか?
さて、もし最高に「美的なバスト形状」を作られたりしたならば、ぜひとも私宛に送って頂ければ幸いです。「これはすごい」という感動的に美的なバスト形状=実に見事に曲率対数分布図上で直線を示すバスト形状を作られた方には、「科学実験詰め合わせセット」をプレゼントさせて頂こうと思います。ミニ顕微鏡やら、警察鑑定セットやら・・・色々ありますので、とりあえず「これぞ再考というバスト形状」をお待ちしております。"Beautiful Bust Curve Award"開催です。
2009-10-25[n年前へ]
■「美的曲線」基準の「理想バスト形状」作成エクセル・シートを手直しする
続 「美的曲線」を評価関数に「理想バスト形状」を考えよう
「美的曲線」を基準に「理想のバスト形状」を作り出すエクセル・シートを作るで、「美的曲線」を基準に「理想のバスト形状」を作り出すエクセル・シート」を作ってみました。
思いついたことは、適当なバスト形状を作成し、その形状がどれだけ「理想」に近いかの評価関数として「美的曲線」というものを使うことができるのではないか、「美的曲線」からのズレを「理想からのズレ」と評価し・参考にすることで、美的に最適化された理想のバスト形状を作ることが簡単になるのではないか、というアイデアです。今日は、そのシートを少し眺めやすいように替えてみました。具体的には、前回のグラフでは縦横配置が分かりにくかったので、バスト形状を示すグラフの縦横軸を交換してあります。また、Excel 2007を使ったので、見た目が前回に比べると少し綺麗なものになっている、という具合です。…もちろん、ただいじるだけでは面白くないので、「理想のバスト形状」に少しでも近づこうと”少し”、「手作業チューニング」をして遊んでしまいました。
作成したエクセルシート(Excel 2003以前版と2007版は、日をおかずサーバからダウンロードできるようにしようと思います。とりあえず、今回のエクセル・シートで作成したグラフが下の図になります。左のグラフが「半球形状バスト(赤線)」と「作成形状バス(青線)ト」で、右のグラフがどれだけ「美的曲線」に近いかを示す曲率対数分布図です。
時間ができた折には、C++か何かで自動最適化形状作成処理も含めた、GUIソフトでも作ってみようと思います。…というわけで、最近とんと更新していなかった「できるかな?」を2週連続で更新してみました。