ラベル 数式処理システム の投稿を表示しています。 すべての投稿を表示
ラベル 数式処理システム の投稿を表示しています。 すべての投稿を表示

2013/02/07

数学入門セミナー

今月、SSH指定校の中学生・高校生向けに数学の話をする機会をいただきました(60分くらい話します)。
私のお題は
 「曲線の描き方」などなど
です(昔、本を書くくらいまで勉強した→ 「to amazon」)。

基本、作図なので式は使わなくて最低限の話はできるのですが、
いくつか方程式を知っていた方が話が膨らむので、
  平面曲線 → 円の方程式
くらいは教えようかと思います(そもそも知っているかな?)
三平方の定理でOKなので。

作図なので、方程式はなくても、て思うのですが、教育上はあるべきと思います。

円錐曲線の作図・方程式までやる予定。。。。
後は歴史。。。


中学、高校とろくに勉強しておらず、
進学校ってものを知らないので、SSH指定校で話すのは恐れ多い感じですが、
万人向けの話ができればと思います。。。。。


医学部なのに、なぜ曲線の描き方なんて話すの?ってくらいから始める予定です。。。
進路を決める上では、バラエティに富んだ人間が話すのもあり、かと。

2011/01/29

掛け算

とあるプログラムのサブルーチンとして、掛け算を書く破目になってしまった。

このご時世に、掛け算の実装なんて。。。

とりあえず、
  1. 普通の掛け算
  2. Karatsuba法
  3. FFT-based multiplication
と世間一般で使われているであろうものを書いております。
一般の教科書では、普通のより早くなりますよ~、と書いていますが、
そんなことはまったくなく、大きなところでは、という前提を入れる必要がある。

大きなところでは、というのがやっかいで、書き手の実力に左右されかねない。
出来ることであれば、大きなところ、の値を小さくしたいわけです。

ごく一部の本では、大きなところの値、について記述があるが、

百聞は一見に如かず

身をもって体験しようと思っております。。。。
(大きなところの値、は手計算でも出せますが痛い目にあう予定)

2010/12/12

pivotingについて(1)

今回は真面目(?)な数学(数値計算)の話。
興味ない人はスルーしてね。。。
(呪文のような言葉が並びます)

行列のLU分解に関して、数値計算の分野ではpivotingというかなり有効なテクニックがある。
(精度が抜群に向上します)よく知られているのは、
  • partial pivoting
    行列のfirst column (row)の中で絶対値の一番大きな要素を軸とする分解法
  • complete pivoting
    行列の要素の中で絶対値の一番大きな要素を軸とする分解法
であり、行と列に意味があったりするので通常はpartial pivotingが利用されます(教科書もこちらだけよくかかれます)。上の2つの計算精度については、Wilkinsonなどが過去にやっているようです。

結果だけ見ると、partial pivotingがcomplete pivotingに比べると大分ダメみたいに見えますが、本人も結果の見積もりはよくなく、2つともそれほど変わらないよ(数値実験から)とコメント。
結局のところ、2つの方法の差の見積もり(差がない?)というのはopen problemみたいで、使うユーザとしては、partial pivotingも安定という実験観測を信じようということらしいです。

文句を言う人もいないし、私もこれはOKと思っております。
(数値計算の立場から)


しかし、数式処理の算法⇔数値計算の算法という書き換え操作・対応を考えてつつ、算法の安定化を考えようというかなりマニアックな研究スタイルを好む私からすると、
  1. 要素をすべてみるという操作は数式処理の場合、係数リストをほとんど見る操作であり、無駄な操作(グレブナー基底の計算なんかは、頭稿しかみない)
    ―――
    数式処理屋さんがpartialでも十分に感じさせる一つの言いくるめ方かなと。
  2. すべての要素を見ると数値計算と変わらなくなるので、数式処理の良さが失われる
    (私の博士論文でコメントしてたはず)
  3. わざわざMaxをとる必要はない。
    (この辺も、博士論文でコメント済み)
とpartial pivotingでもやりすぎかなぁと思うところ(1, 2)。
3に対応する概念はないかなぁと調べてみると、

threshold pivoting

というものがあるらしい(しきい値でpivoting)。
あまり見覚えがないと思っていたら、やはりWilkinsonあたりの時代に一度研究されたみたい。
数値計算では、partial pivotingが有効で算法効率も落とさないので、あまり陽の目を見なかったのかも(要素をすべてみる時点でthreshold pivotingは意味なし)。 最近では、大きいサイズの行列を扱うため、交換操作を減らしたいということでthreshold pivotingを使うようです。

よくも悪くも解釈すると、
  •  ある程度、(いろいろなことを)サボることが可能
と数式処理の解析向きのpivotingのようです。
先週はpivotingの論文ばかり読んでたので、とりあえずメモを書いてみました。
日本語の解説もあまりないし、ドキュメントを残すことは有効かなぁと思っていますが、その前にまだ情報がほしいので、とりあえずコメントくだされば嬉しいです。

2010/11/04

数理研プログラム公開(数式処理分野)

本日、公開されました(Computer Algebra-Design of Algorithms, Implementations and Applications)。
http://www.kurims.kyoto-u.ac.jp/~kyodo/Program2010/Takeshima_program.pdf

初日です(やりました)。
当然ですが、近似代数セッションから外れました。

外れたの始めてで、ちょっと新鮮(^_^)

今年は30分の発表なので、いっぱい準備する必要なし。
ちょっとマニアックな話なので、導入に時間をかけよう。。。。

(いつものことですが重箱の隅をつっついたような研究テーマ)



 
プログラムを見ていつも思いますが、いつまでたっても若手
下が育ちづらい分野なんでしょうかね。。。

数値計算はいっぱい育つのに、数式処理はちょびっこ。
さびしいです。。。

2010/03/09

Risa conf.のプログラム

Risa Asir Conf.のプログラムが出ていました。

 http://www.math.kobe-u.ac.jp/RisaCon/


私は最終日です。
(数値計算・数値解析のセッションに入れられた感じです)
といっても、緊張とか全然しなくなってしまい、
なぁなぁでやってしまいそうでちょっぴり不安です。

珍しく、この時期にプログラムがきちんと動いているので、
近似用にきちんと書き直す時間が取れそうです。


この発表でGCDから足を洗うといつも言っていますが・・・・
その日はいつやってくるのでしょう。

そろそろ、別のものも発表できるようまとめなければと思っております。
(いつも似た話になっていないので、それだけが救いですね)

2010/02/06

数式処理・数値計算特有の悩み

通常の数学と違って、数式処理・数値計算では

算法の開発

というのが、結構メインの研究テーマになります。
(算法の改良の方が圧倒的に多いと思うけど)

すぐにホイホイ新しいものが生まれることもないけど、
生まれちゃった場合に

名前を付けるのが親心。

純粋数学だと、そんなことはほとんどせず、
他人が引用するときに○○の定理(命題)なんて勝手に呼んじゃうわけです。
(それがいつの間にかスタンダードになるのです)


そこでなのですが、数週間、命名で悩んでいます。。。。
前回はサクッと命名出来たのですが(Bezout construction)・・・
今回はボキャブラリーの無さから、ちょっと困っております。

なんたって・・・

ダジャレ込みだから。

大変です。

一応、候補はありますが。。。美しくない。

もう少し、悩むことにします。
近々、研究集会の申し込みをするのでその時にでも
またネタにします。

2009/11/01

研究集会の準備(6)

問題が殆ど解決しました。
(完全に解決しようとすると、全書き換えなので)

結局mapleでは、
 `+`(a,b)
 a + b
に明確な違いがあるのに、無頓着に書いてしまったため、

無茶苦茶遅くなってしまったのです。。。。。

`+`はプラスのルーチンをコールして計算するのに対し、
+ はただ2つをappendするだけ。

下手に、`+`をすると、しなくてもいいのにルーチンをコールしてしまい、
下手したら半無限ループ。

的確に書いたら、100倍くらい早くなりました。

よかった、よかった。
これで心おきなく、発表資料を作ることができます。

研究集会の準備(4)

mapleのAddTools[AddType]がすごく厄介です。

これを使ってホンキでプログラム書こうとすると・・・

えらい目にあいます。

書けばわかると思いますが・・・

融通が利かない。

1から数式処理システムの演算を書いている感じで・・・
(係数の構築くらいの気持ちで考えるとハマります)
システム内部の構造なるものを授業でやったことを思い出します。

しかし、思い出している暇はありません。
とっとと直そう。
(90%はできたと思われます)

2009/10/31

研究集会の準備(3)

いろいろやっていたら、
4年くらい前に書いた掛け算にバグがあった。

ちょっとショック。

maple使っているのに、
掛け算のコード書いている時点で矛盾をいろいろ感じますが、
〆切が近いので頑張ります。

これですべて解決する可能性があるので、ちょっと期待

2009/10/08

有効浮動小数の作り方 for Maple

いろいろ作業をするうえで必要になったので、
有効浮動小数のパッケージ(簡易版)の一部を公開します。
 ・日本語
 ・英語
数理研が終わるころには、近似代数での結果も公開します。

2009/09/24

休み中、サボってました

いつも恒例?となっている休み中の更新ですが・・・

世界を救うためにお休みしていました。
(結局は、ドラクエに夢中だったわけです)

ラスボスを見て、戦わずして帰ってきました。
(もう勝てると思いますが・・・)

すんませんm(_._)m



勉強の方はさっぱりで。。。したけど進まない。
数理研での発表も近いので、今進行中の研究はストップして数理研での発表に力を注ぎます。
(内容は固まっていますけどね)
〆切は26日・土曜日となっていますので、講演希望者は忘れずにね。

今年は行きますよ。
もう申し込みしたしね★

タイトルは

 ベズー構成を用いた多変数近似GCD計算

です。数値計算75%くらいの内容でお届けする予定です。

2009/09/16

講演会のお知らせ(Prof. Eugene Zima)

金曜日に飲む前に、次の講演を聞きに行きます。

3月にも聞いた記憶がありますが、復習ということで。
(3月、終わった後も先生とあーだこーだ言っていた気がします。)

興味のある方はぜひ。
(話の内容は)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

日時: 9月18日(金) 13:30 - 15:30
場所: 筑波大学 数学系(自然系学系棟8階)D814セミナー室
講師: Prof. Eugene Zima (Wilfrid Laurier University, Canada)
題目: Integral Representation and Closed Form Summation

概要: The use of integral representations (the method of
    coefficients) in various problems of indefinite and
    definite summation is considered. In particular,
    the algorithmic approach to rational summation is
    compared with the approach based on the integral
    representation. It is shown that the ideas used in
    the method of coefficients can be used to improve
    the known summation algorithms.

2009/09/06

CFP:数理研(数式処理)

数理研の研究集会(数式処理)がアナウンスされました。
 11月4日~6日:京都大学

去年はネタがあったのに行けませんでしたが、今年は何が何でも行きます。

ちなみに今年はネタがあるのかといわれれば、あるのでホッとしています。
(話さないとお叱りを受ける気がします・・・)
しかし、私の話はいつも数式処理ぽいだけで・・・6~8割は数値計算です。

我慢して聞いてください。

今も殺人的長さの数値計算の高速算法を書いているところで・・・
それもMapleで数値計算なので、for文の嵐。
Matlabの2倍くらいの長さになります。

今書いているのは、論文で多分使わない、次の論文のための練習コード。
できたらすぐに公開します。
LU分解などはすでにあげていますので、レポートの解答にどうぞ。)

2009/08/20

この歳になって

LU分解のプログラムを書くとは・・・
(学部のレポートでしょう)

ホントはコレスキー分解で計算したいのだが、
安定性が証明できていない・・・

ということでピボッティング付LU分解を
諸事情(研究)のためMapleで書いています。


ソースは他のものも含めて、おそらく来月末には公開できると思います。
(凄まじい長さです)

なんたって基本演算からoverloadで変更していますから・・・
TypeTools[***]、すごいぜ。

2009/08/15

ズルはどこまで許されるのか?

ある人と話して、
 tan(x)のグラフはどう書くの?
という話になった。

計算機に、値をぶち込んで、点をつなぐだけなんですが・・・

- - - - -
ということを、数式処理屋さんが素人さんに言ったところで、解決にならないので、
少しわかるような説明を考えてみた。
- - - - -

tan(x)=sin(x)/cos(x)
なので、cos(x)=0となる点では発散しちゃうのです(ここを問題に質問したわけです)。
そこで、cos(x)=0となるxを計算して、そこの前後では線をつながない。
それだけで、tan(x)のグラフは書けるのですが。。。

cos(x)=0となるxをどう計算するの?

意外にこれが面倒。なぜかというと、無数存在するから。
x=90 ± n*180°
描画範囲さえ決めてしまえば、そこに入る点をピックアップすればいいのですが、
そんな処理を書きたくない(ムズくないけど)


でも、それ以上もそれ以下の書き方もないので・・・
ちょっとズルをしてそれっぽく書ける方法を考えてみる。

sin(x)/cos(x)の分子くん分母さんのテイラー展開を考えます。
(彼らは、
収束半径が無限大なのでそれなりのテイラー近似で、
それっぽい挙動
を示すことが可能です)

実際に、Mapleさんで簡単にやってみます。

とりあえず、それぞれを原点で9次まで展開(Maple使用)
> s:=convert(evalf(taylor(sin(x),x,10)),polynom);
> c:=convert(evalf(taylor(cos(x),x,10)),polynom);

s := 1. x - 0.1666666667 x^3 + 0.008333333333 x^5 - 0.0001984126984 x^7 + 0.000002755731922 x^9
c := 1. - 0.5000000000 x ^2 + 0.04166666667 x^4 - 0.001388888889 x^6 + 0.00002480158730 x^8

そしてプロット
> plot(s/c,x=-10..10,view=[-10..10,-5..5],scaling=CONSTRAINED);











こんな感じ。
発散する場所の処理はこれだけではできないけど、なんちゃってグラフを書くのには十分です。

処理にはいろいろな方法がありますが、長くなるのでここでは述べません。
(cの解でも、十分な精度はあるので、この解の前後でつながないようにすればOKです)


p.s.
高校生のころ、N88Basicでやっていたころと違って、簡単にグラフが書けますね。
テイラー展開もfor文で回して書いていたのに、今はコマンド一発ですからね。

いい時代になりました。

2009/08/04

(再編集)無事というのか

・・・わからないですが、発表が終わりました。

発表は散々でしたが、
何をしているか伝わったので「よし?」とします。

とりあえず、私の研究は我が道を行くという感じなので、
いくらかはインパクトがあったでしょう。

ZhiとCorlessが
structured rank?structured condition number?という(聞きなれない)ものを知っているか?
と質問してきました(うる覚え)。
あるものの見積もりをメインの命題として、あげたのですが、相当ラフな見積もりなので、
もっとタイトに見積もれるのでは?
とのこと。

(もちろん知りませんと答えました。知っていれば書いてますしね・・・)

終わってからもCorlessが5分くらいアドバイスをくれたので、
ぜひぜひ参考にしないとです。
あと、最終日にZhiがそれに関して講演するらしいので、本気で聞かないとです。

structured ●●は、数式処理屋サンがするものでないと思っていたので、
あまり勉強していません・・・(displacementはやったのですが・・・)
日本で発表すると相当浮くのですが、私の方向性からすると勉強せざるを得ない感じです。
(でも、Zhi+その周りと、私一人で完全に戦うことになり、論文が書けるか問題です)
タイトに見積もるのは、誰の目から見ても私の仕事なので、
この仕事だけは私が論文にしないとです。

次のネタに組み込もうと思います。
でも数値計算の色が濃すぎるので数理研での発表ネタにはならないでしょう。。。。

残念。

2009/08/03

ニュース(サイバネット)

Mapleソフトが100%、サイバネットの子会社になったようです。

逆じゃないの?

と思ったのですが、これで正しいみたいです。

http://www.maplesoft.com/company/publications/articles/view.aspx?SID=33519

Maple@Canadaに行ったことがあるので、
あまり規模が大きくないことはわかりますが、
サイバネット@日本もあまり大きくなかった気がします。


何か裏があるような気がしますね。。。。
って話をしてました(あまり詳しく内容は話せません)。

当日の朝2時

う~ん。

気合いが入りません。

英語での発表というのは、海外でやって初めて気分が出るような気がします。

といいながらも、あまりにひどいことはしたくないので、こんな時間まで練習です。

数名、知っている外人さんにあったので
国際会議なんだぁという気分になりつつありますが、
日本語で日常会話が進む以上、
いまいち気分が乗りません。

当日の昼すぎになったら突然あせるような気がしますが、
いつものことなので、あまり緊張しません。

困りました。

2009/07/30

だいたい書き終わりました。

京都で書く予定だった論文さんですが、
今週は暇(?)で、仕事の延長の一部と思って、


サクッと書いてしまいました。
(京都で数名に、リサーチしておしまいです)


今のままでは、査読をつけるに値しないものなので、どうしようか?

という感じで、

査読のいらない雑誌に流してもいいかなぁ、

という感じです。

ニーズは絶対にあるので、載るのは間違いないでしょうが・・・

2009/05/17

結局・・・

パーサー書くのは諦めたようで、

式入力
 ↓
式をmaximaかreduceなど、問題ないフリーソフトに渡して、
処理を行う。
 ↓
元のものに値を返す。

という一番楽な方法で落ち着きそうです。
ですが、工学の人全員がこんな、ある意味アウトローみないな方法で計算できることは
知らないらしく・・・
(制御とか数値計算で計算ソフト使っている人間だけが、
 普通に行うような技術)

赤字のところは私がいろいろ口出してやるような感じです。
(やったことないですが、どうにかなるでしょう)
LinuxとかMacなら
 http://www.cymric.jp/maxima/tips.html
に従えば、簡単にできそうですが、windowsだとどうするのかしら?

まぁ、ベースでかく言語を聞いてないので聞いてからでしょう。