SSブログ

なんちゃってMathematicaを作る - その2 [なんちゃってMathematica]

昨日の製作開始宣言に励ましの言葉を頂いたのでさっさと続きをしよう。

そもそも、「んなもん作んないでもあるじゃん」という突っ込みが励ましの言葉の128倍ぐらいあることはわかってる。では、なんでわざわざパチモンを作ろうとするのか、というのを説明しておく。

2  なぜ「なんちゃってMathematica」なのか?

MATLABやMathematicaを買わなくても、ScilabやOctaveといった優れたフリーの計算環境があっていまでも継続的に開発が進められている。また、昔は敷居が高かったREDUCEMaxima(昔欲しかったMacsymaの後継)などの数式処理ソフトウェアもGPLで頒布されている。そういう状況で、なんのために素人がわざわざ似たようなものを作ろうとするのか?

それはひとつには
  • ボケ防止
である。最近この動機の重要性があがってきている。

そしてそれに加えて
  • FORTRANではなくCベースの新しいライブラリを使いたい
  • グラフプロットをPDFで扱いたい
  • わかりやすいシンタクスにしたい
最後に
  • 単なる楽しみとして
である。
まず、ボケを遅くするためには頭を使う、そして指を使う、というのが効果的である。こういう比較的大きなソフトウェアの設計は結構頭を使う。しかも仕事でやるのではなく、つまり対価を求めるのではなく、無償でやるというのもボケ防止にはいい。というのは、誰の世話にもならないし、誰にも迷惑をかけないし、やめたければいつやめてもいい、という縛りのなさが大切だと感じるからである。

あと、指を使うことに関してはギターを弾く、というのがいい。ピアニストやギタリストはボケ老人が少ない、ような気がする。まあ、こっちは今回の話にはどうでもいいことだけど。

そしてもうひとつは、gslの動機なんかと全くいっしょ。ようするにFORTRANからおさらばしたい、あいまいなライセンス条項ともおさらばしたい、ということである。そして、以前発見したMacOS XのvDSPのFourier変換の速さを取り込みたい。vDSPを取り込んだ時点でライセンスは微妙なものになるけど。

そして、プロプライエタリなMATLABやMathematicaはMac OS Xにも最適化されていてほかのアプリと比較しても違和感はない。しかしScilabやOctaveは違和感がある。Octaveのほうはターミナルがまず開く、というところからちょっとつらい感がある。Scilabのユーザインターフェイスも、いかにもJavaでMac OS Xのデスクトップとはちょっと異質。

また、グラフプロットの画面表示は美しいんだけど、Illustratorなどで編集して、LaTeXに読み込んでという作業に耐えるほどではないことがある。ScilabのほうはEPSで出力できて、線などはBezier曲線で引かれたデータになるが、なぜか少なくとも僕の環境ではプロット中の文字はアウトラインになってしまって文字として編集できない。さらに、OctaveはGnuplotを使うせいでビットマップにしかならない。X-Window前提、あるいは互換のプロットライブラリも基本的には同様である。

ごちゃごちゃ言ったところで最後には結局、面白そうだから、ということになる。モチベーションを保つのはこれが一番で、何の見返りもなしに面白くないことなんで絶対にできない。

3  大まかな仕様

仕様の目標を一応まとめておく。

3.1  ユーザインターフェイス

インターフェイスはMac OS Xらしいシンプルなものにしたい。何の機能だかよくわからないボタンがずらずら並ぶ、というのは決して使いやすくないのでやりたくない。グラフプロットは別ウィンドウに出力するほうが実装は簡単だけど、できれば以前の出力も参照できて、履歴がわかるようなのがいい。入力の再利用も考えると、やはりMathematica型(一つのノートブック(ウィンドウ)に入力と出力がペアで上から下に並ぶ)というのがいいよな、大変だけど。

3.2  入力シンタクス

シンタクスはMathematicaをまるごとまねよう。つまり
としたい。特にオプションによる引数の整理は、どうしてもキーボード操作が増えてしまうこのたぐいのアプリでは、操作性の向上に非常に役に立つ。

ところで、なぜMathematicaのシンタクスがいいのか、またMathematicaのシンタクスで良くないところはどこか、などはまた後で別途まとめる。

3.3  グラフィクス

グラフプロットの出力はPDFベースにする。基本的に解像度に依存しない出力を生成する。

また、2次元プロットだけでなく3次元プロットも表示できるようにしたい。

3.4  Mathematicaとは違うところ

最初に書いたけどMathematicaのクローンを作ろうというのではない。単にMathematicaのシンタクスのマネをしたいというだけなので、Mathematicaと同じことはできない。Mathematicaとの大きな違いは
  • 代数演算ができない
  • 無限精度が扱えない
である。このため、Mathematicaと同じ名前の関数であっても、対象オブジェクトによって動作が異なる、ということが発生する。そういう動作をする関数は名前を変えておくのがいいのかもしれないけど、それをしだすとおそらくほとんどの関数の名前を変えることになる。

3.5  動作プラットフォーム

そしてもちろん、これはMac OS Xでしか動かない。ちゃんとしたGPLのソフトウェアはマルチプラットフォームが普通だけど、それをやっていたら非常に大変。それに僕はWindowsにアプリを書く知識は皆無だし。

でもそのおかげでCocoaのFoundationやApp kitのFrameworkを使い倒すことができて、マルチプラットフォームな開発に比べて作業量はグンと減らすことができる。
nice!(0)  コメント(7)  トラックバック(0) 

nice! 0

コメント 7

NO NAME

コメント投稿しおじゃましているモノです
讀んでいただけましたか?

無論 mathematica の 美味しい部分は
使わせていただき 他の 方面に 
乏しい我が思考回路を働かせようと努めております。
mathematica が 為すことは 依存しまくり...
by NO NAME (2011-11-01 00:38) 

★(とします)


              と 投稿直後
遡及もしていただき 讀んでいただいているコメントを拝見しました。
斜楕円錐面については 焦点ボケして 直に 焦点など  表に登場いただけなくとも
      代数曲面 表示は  容易です。

先ほど 推敲不足ですが 投稿した内容を 再投稿します;

http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132005425791013206641.gif
なる 院試 の 問題で 求めた F[X,Y.Z]∈Q[X,Y.Z] で定まる と云う 代数曲面 S の
(1)    双対曲面 S^* と
  S を 例えば (2,3,5)だけ 平行移動 Tした T(S) の 双対曲面 も 求め その名称を云うて 下さい。
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/131779844704613121599.gif
  の 場合は 曲線とその双対曲線の 名称が 「ガラッと変わった」
(2)このように 或る 平行移動 T した  T(S)の 双対曲面 T(S)^* の
   名称が かわることが在れば明記してください。
(3) 院試の問題で t∈R と あるが 制限し; t∈[-3,3] ,上の 開口部分から半径 Sqrt[36/25] の 鉄球を
   挿入すると 右下 の 図の 位置 で 止まった。
その 鉄球とSとの交線は高校生も容易に求めますが お願い します。
(4)今度は 比較にならぬ程 大きい 半径 3 の 鉄球S3   を S の 右下から Sに ぶっつけたら
   赤囲みの 図の位置に  「埋まり込んで!」止まった!!。(埋まり込んでいる様子の図示達を試みた)
埋まり込んでいる部分の体積は? なんて 好きな問 ではありませんが...
埋まり込んでいる部分の表面積は? なんて 猶更 好きな問 ではありませんが...

 S3 と S 交線  S3∩S は 高校生には 容易では ありませんが 空間の 何次曲線 ですか?

【完全交差多様体の定義】を述べ,S3∩S が そうなら証明して下さい。

(5) S3∩Sをx,y平面に正射影 prj した R^2 内の代数曲線prj(S3∩S) の 方程式を 求め,
その 双対曲線 prj(S3∩S)^* も  必ず 求め(12次ですか?), その特異点を 求め
(尖点 や 二重点が在りますか?), 想定の 範囲内の 特異点 であることを
対応する 元の曲線の特徴から 認知願います。
prj(S3∩S)は勾玉(曲玉とも表記)のような...曲線です。
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132007116894013120709_index_gr_1_20111031232608.gif
prj(S3∩S) には 二重接線がありそうです。 多様な発想で求めて下さい。
prj(S3∩S) には 変曲点がありそうです。 多様な発想で求めて下さい。
http://webcatplus.nii.ac.jp/webcatplus/details/book/8124586.html
       に述べられている発想をも。
此処に M.リード著 ; 若林功訳, 岩波書店
高校生のための代数幾何 永田雅宜著
代数幾何は連立方程式の解の集合の幾何学的性質を調べる学問です。本書の内容は、代数幾何の本格的勉強に適することよりも、高校生の知識で、代数幾何についての理解の糸口をつかむことを目標にして選びました。
代数曲線の幾何学  難波誠著  がっ!!!!!;
5 華麗な二次曲線の射影幾何 と ありますが 華麗でないのでしょうか? 三次以上の代数曲線, 面, ...は.
http://webcatplus.nii.ac.jp/webcatplus/details/book/7835771.html
>具体的関数への熱き想いを君に伝えたい――これがこの本をバレー劇になぞらえたおもな理由である。
>「具体的な個々の関数の面白い性質や挙動を偏愛する」...複素関数 三幕劇 らしい.
の 著者 だっ!!! (何れも 所蔵して いない..)

http://en.wikipedia.org/wiki/Manifold
>Figure 1: The four charts each map part of the circle to an open interval, and together cover the whole circle
http://ja.wikipedia.org/wiki/%E5%A4%9A%E6%A7%98%E4%BD%93#.E5.BE.AE.E5.88.86.E5.8F.AF.E8.83.BD.E5.A4.9A.E6.A7.98.E4.BD.93 の
> 単位円は次の 4 つの開近傍で覆うことができる。 なる模範解答 例 を 視て,
(6) 院試 の f([-π,π)×R) ⊂ R^3 の 二次元部分多様体 の 証明 は
      どのような 解答を 要求していると お考えですか?

by ★(とします) (2011-11-01 01:04) 

decafish


コメントありがとうございます。
どうしても全体が把握できないのですが、一番最初のgifページの内容は部分的には理解できました。

媒介変数表示された
(cos(s) + t sin(s), sin(s) - t cos(s), t)
はtに関して1次なので、いわゆる線織面です。
ただし、ガウス曲率は全面で負なので、ペーパークラフトでは作れない形状です。
ガウス曲率は問(iii)でもありますが、基本形式というのがなんのことなのかわからないので他の部分は答えられませんでした。

(x,y,z)の陰関数表示に書き換えると(三角関数を見てヒューリスティックに)
z^2 - (x^2 + y^2) + 1 = 0
の回転双曲面となることがわかります。これは問(i)の答えでもあります。
式の対称性から接球の中心はz軸上にあることになります。

z軸に関して対称なので、一般性を失わずにこの回転双曲面上の点を
(x0, 0, z0)
として(x-z平面内だけを考えて)、この点で球が接しているとすると、その球の中心は
(0, 0, 2 sqrt(x0^2-1))
にあることは、この点での接線を引けばわかります。

この接球の半径は(x0, 0, z0)との距離から
sqrt(2x0^2-1)
なので接球の一般解は
x^2 + y^2 + (z - 2 sqrt(c^2-1))^2 == 2c^2 - 1
となります。ただしcはパラメータで接円の半径です。

従って接球の
中心のz座標 = sqrt(22)/5、半径 = 6/5
は解であることがわかります。ちなみにそのときのcは
c = sqrt(61/50)
です。

これで勘弁して下さい。
by decafish (2011-11-01 21:01) 

★を名乗り


>これで勘弁して下さい。
>by decafish (2011-11-01 21:01

感謝感激雨霰です。じっくり 行間をも 明日 味読致します。

飯高先生への 日付入りの 投稿内容を ご覧願います。錐面の代数曲面 表示 に 絡みます;
 
投稿者:★ 投稿日:2011年11月 2日(水)01時23分39秒
xy平面=GAUSS平面 上 の 知悉の n=2次でない n=__次 の 青の 代数曲線 C を
          埋め込み 嵌めこみ ----->R^3
N=(0,0,1) との 組み合わせ から 小學生も工作する 錐面 を (誰デモナレル)オトナが 苦労し 具現した;
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132016134632613228663_index_gr_1.gif g
   じっと 手 なんか 視ないで 上の gif を 視て 問いかけに 対峙 なさって 下さい。

【御託を並べるなんて不遜な態度は一度もとらず 抽象的 理解 でなく 具象理解を と】
    恥を晒し続け中の ワタシ 故 如何なる 疑念の問達を 羅列するか
       火を見るより 明らか で しょう。
想定の範囲内の 諸問題で しょうが
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132016134632613228663_index_gr_1.gif
         是非 具現 願います。
--------------------------------------------------------------------------------
   双対曲面でなく 双対曲線の 具現の 苦労話 激白の 飯高先生 昨日 曰く;
代数幾何目白 投稿者:iitaka 投稿日:2011年11月 1日(火)10時50分13秒
代数幾何目白セミナー
12/27,28
募集中です

韓国では
日本のようなカーナビではなく
スマホのカーナビが多いそうです
http://www-cc.gakushuin.ac.jp/~851051/mejiro1.pdf

双対曲面ナンて 未知との遭遇者なんて∃せず 居ても シカト されそう な 怖い気配...

試しに 幾つかの 代数曲面の双対曲面の具現を所望してミタイ気もシマスが.......

(學長や 校長 から 双対曲面 御卒業 と 壇上から 云われようとも)



by ★を名乗り (2011-11-02 01:47) 

decafish

歳のせいで多項式の項が5つを超えると、頭がホワイトアウトするようになっていて、ついていけません。

双対曲線あるいは双対曲面は簡単そうに見えてすごく複雑になったりします。

僕は先日、平面上の双対曲線の例としてポースリエのリンク(http://decafish.blog.so-net.ne.jp/2011-02-22)を作ってみました。これは双対曲線の例としては非常に簡単で、その結果美しく、しかも物理学を経由せずに直接応用が得られた少ない例だと思います。他の例で思い浮かぶのはデジタル暗号ぐらいしかありません。他になにかありましたっけ?
by decafish (2011-11-02 22:01) 

NO NAME

http://www.gap-system.org/~history/Biographies/Bertini.html
http://it.wikipedia.org/wiki/Eugenio_Bertini
【 Bertini の 定理 なる文脈 中で dual variety を 定義 
しているのに 漂着(2011 11 4) し 真実に「慄 いています」】;
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132039857764813128490.gif
(文脈 中での dual variety 邂逅初夜で 感激 なさいますか?)

そして 導出法は 赤裸々にせず 結果のみ 明記されて おられます:
(無論 射影空間 に 於ける n=2より高次の 4 次 曲線 から スタートし;)
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132041735561013110944.gif
  解答 の 顛末図達(ワタシならビフォ- アフタ- で 色分けを為す)
を視てしまった でしょうが、みなかった こと に し
左図以外を 何かで覆って 双対曲線 の 概略を 手で 描いて ください。

無論 左図に は 飯高先生が 受験雑誌 を 立ち読みされ 激白:
「その=二重接線 なる 題材の新鮮さに体の血が逆流 した(ので再体験したく著述)」
や 変曲点が∃することは 誰が視ても疑いの余地はない!!!

其れ故  双対曲線 に 其の特性が 遺伝しないでは イラレナイ
----------------------------------------------------------------------------------------
     ので 双対曲線 の 概略は 手で 描いて 
その後  解答の顛末図達を全て視て 想定の範囲内でありましょう!!!

http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/131787298632913111443.gif
   には 先ず 射影曲線化 と ありますが 既に してある(そして 逆行列の手法は効かぬ) ;
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132041735561013110944.gif
 ので 上の手で描いた 定性的な考察 に 満足 せず 此処に コタエが 明記されている
 に至る 数多の プロセスを 包み隠さず 記述し、明記されている コタエの 射影曲線の
 アフィン化をし その 特異点を 求めてください。

明記されている コタエが あっているか 其の12次の射影曲線の双対曲線を必ず求めて下さい。
     (元の木阿弥は自明や  と 為す価値を  為さず  認めぬ方 も  ∃ しましょう が、
  多様な発想で具現すれば 得る処大で 為さぬで 済ませなくって よかったと 感じられるでしょう)

http://math.kyokyo-u.ac.jp/~skiriki/almuni/08shimoharai.pdf
で 丁寧に 論じられている 曲率等 の 概念の 具体例として
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132041735561013110944.gif
のアフィン化を為した 曲線 の 曲率を 具体的に 求め、想定の範囲内の 変曲点 の
出来るだけ 正確な位置を 定めてください;(____________,__________)

何故 デキルだけ なんて云う 理由は明らか で 蛇足でしょうが 付記します;
    変曲点を求める為の 連立方程式を 明記し,
それが アマリに高次故 人類が 正確な解を求めることの放棄を 迫られ た。

●(高校生が知悉の)変曲点を求める為の 連立方程式を 必ず 明記して下さい!(無論多義性が在る)

================    以下が ホントは メインです      =============================
【 Bertini の 定理 なる文脈 中で dual variety を 定義 
しているのに 漂着し「慄 いています」】; (と 申しました)
http://userdisk.webry.biglobe.ne.jp/020/691/47/N000/000/001/132039857764813128490.gif
定理に云う 前提 X の  具体例を 10 個 明記し ∃を云うている U を 明記願います!!!
==============================================================================================



by NO NAME (2011-11-05 01:20) 

decafish

http://decafish.blog.so-net.ne.jp/2011-11-03#comments
の第2コメント参照のこと。
by decafish (2011-11-05 09:28) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立10/31献立11/01 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。