ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

曲線・曲面の多項式コミュのRISA/ASIRの使い方

  • mixiチェック
  • このエントリーをはてなブックマークに追加
RISA/ASIR
http://mixi.jp/view_bbs.pl?id=431044

のマニュアルは

齋藤・竹島・平野『日本で生まれた数式処理ソフト
リサアジールガイドブック』SEG出版

という本が出ています。

後ろのほうの関数一覧に書かれている関数を、
私も含めて多くの方は
少ししか知らないはずですので、
ここで使い方などの情報共有などできたらと思います。
ご協力くださると幸いです。

コメント(11)

例えば、私は分散表現多項式という聞きなれない言葉の意味を
知ったばかりでして、これは単に、

例えば x^2+y^2-1 を
(1)*<<2,0>>+(1)*<<0,2>>+(-1)*<<0,0>>

と書き直しただけなのですね。

これは dp_ptodという関数により

dp_ptod(x^2+y^2-1,[x,y]);

として出て、逆に分散表現多項式はdp_dtopで多項式に戻るようです。

これが分かれば、dp_hm,dp_restなどdpで始まる関数がだいぶ使いこなせるものと思います。

私はこれで、試しに s:=sin(t),c:=cos(t) の多項式 F(c,s) の t による導関数を出す
関数を作ることに応用してみました。下のような感じです。

--------------------------------------------------------
def der_of_cs_poly(F)
{
if(F==0) return 0;

FF=dp_ptod(F,[c,s]); /* 変数c,sの多項式Fを分散表現多項式FFに変換 */
P1=dp_hm(FF); /* FFの頭多項式をP1とする */
P2=dp_rest(FF); /* FFから頭多項式を除いたものをP2とする */

S1=der_of_cs_poly_aux(dp_dtop(P1,[c,s]));

S2=der_of_cs_poly(dp_dtop(P2,[c,s])); /* P2に対応する多項式の導関数 */
return S1+S2;
}

/* 単項式 a*c^k*s^l の導関数 */
def der_of_cs_poly_aux(T)
{
K=deg(T,c);
L=deg(T,s);
C=coef(coef(T,K,c),L,s);

if(K==0)
{
if(L==0) return 0;
else return C*L*s^(L-1)*c;
}
else
{
if(L==0) return C*K*c^(K-1)*(-s);
else return C*((-K)*c^(K-1)*s^(L+1)+L*c^(K+1)*s^(L-1));
}
}
-------------------------------------------------------

皆様もこのような関数を作られてみてはいかがでしょうか?
同じ著者による「グレブナー基底の計算 実践篇 Risa/Asirで解く」東京大学出版会も出ていますね。姉妹篇の野呂・横山「グレブナー基底の計算 基礎篇 計算代数入門」 もあわせてどうぞ。。。
・書籍のご紹介ありがとうございます。

* * *

・上で定義した関数der_of_cs_polyについて補足です。

der_of_cs_poly(2*c*s)

とする代わりに、
(偏)導関数を出す diff を使って同じようなことを

diff(2*cos(t)*sin(t),[t]);

として出来るのですが、もっと長い式について出した結果を、
変数c,sの多項式として扱いたいときは
手入力で書き換えるのが面倒なのでそういうとき便利です。
間が開きましたので、何か話題を書いておきます。

(「グレブナー基底の計算 実践篇 Risa/Asirで解く」
のp.17にある例を参考にしました。)

複素平面上の単位円を
正則関数 w=z^7+z^3-1 ,(w=p+iq) で移した
曲線を出そうとして下のように入れてみました。

load("gr");
L=gr([i^2+1,x^2+y^2-1,-p+i*q+(x-i*y)^7+(x-i*y)^3-1,-p-i*q+(x+i*y)^7+(x+i*y)^3-1],[i,x,y,p,q],2);
ifplot(L[0]);

すると14次曲線が現れます。円以外式や他の正則関数に
変えていろいろ見てみると楽しめるかもしれません。

出てくる次数の法則性もある程度あるような感じです。
一般のケースについて代数的に証明できるでしょうか?

図が面白いと思う例. w=z^3-z+1 , w=z^4+z-1

ではまた。
すみません。
前回の文は多少記号の説明が抜けてましたので補足です。

> 複素平面上の単位円
単位円の式は|z|=1 , z=x+iy と書きます。

あとは方程式の本数を増やすために複素共役を取って
工夫しています。

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

上に出てくる連立方程式を見て、x=cosθ , y=sinθ
と置いてみると、
p,q が cosθ , sinθ の多項式でパラメータ表示
されているのがお分かりでしょう。
それだから花のような形の曲線が多々出てくるわけですね。

- - - 有理関数の話その1

因みに、c=cosθ,s=sinθの有理関数F,Gでパラメータ表示された
曲線たちが、代数曲線(の一部ないしは全部)になる根拠は、

4変数のx,y,c,sの3本の
連立代数方程式が出てくるから、一般には1次元になる、
というふうな、少し曖昧な感じのする考えでも
間違いではないのでしょう。曲面(2次元)では7変数5本です。

もう一つの根拠は、積分でよく出てくる
cosθ=(1-t^2)/(1+t^2) , sinθ=2t/(1+t^2)
という変換をすると F,G が t の有理式になる
ということです。分母を払って x,y,t の連立式に出来ます。

あともう一つ、
cos(z)=(e^{iz}+e^{-iz})/2
sin(z)=(e^{iz}-e^{-iz})/2i
を使って u=e^{iz} と置くのも見通しがよいですね。

- - -
引き続き、(重複するかもしれませんが)
曲線・曲面に関連したRisa/Asirの活用法を
まとめて行きます。
RISA/ASIR

これは左から読んでも右から読んでもまったく同じ
左右対称性をもった”回文”ですねw
http://www.jssac.org/Editor/Suushiki/V12/No1/V12N1_104.pdf
複素平面の幾何的グラフでは、一般に複素関数を完全に表現できませんよね

あくまで模式的に、
多変数多項式の解(実値)を2次元直交座標(複素平面)の一点と対応づけるとか
あるいはコンピュータグラフィックスなどでは複素平面上の各点の2次元的複素値を色づけによって表現しているに過ぎない
色による表現は視覚認識の主観性が影響し人によって見え方が異なってきます

複素関数を実多変数関数に置き換えた場合の各変数は、まったく対等ではなく自由変数と束縛変数に大別される
これをうまく調整しないと複素平面上の一点の座標の複素値を正しく再現できないと思われます

ちなみに、複素代数式が同じ形の実代数式に比べて複雑な花びらのようなグラフになる理由は、複素代数式は、|z|=1(円をなす関数)を変数とする汎関数のグラフだからです

複素平面上に描かれた色表現の複素関数グラフの例
https://ja.wikipedia.org/wiki/%E8%A4%87%E7%B4%A0%E8%A7%A3%E6%9E%90
Buchberger's algorithm (ブッフベルガーアルゴリズム)

2つの多変数代数式を、1つの一変数代数式に変換するアルゴリズムのこと
より高次な一変数代数式へと一意的に変換する

このアイデアは素晴らしいものですよね



ちなみに、多変数多項式は同次項についてどのような順序で並べるか一意には定まらない
多変数代数式を連立した場合は、代数式の除法において項の順序が変わると一意性が保証されなくなるような、非可換な計算になる
数学の文脈では、多変数代数式の非可換性を多項式環の数論的考察によって説明するようなことだと思われます



Gröbner basisは、ブログナー基底と和訳されているが、基底とはいえリー代数などの文脈におけるいわゆる数学的に明確な”基底”ではない
うまく言えないが数論的にみた代数式におけるイデアルみたいなものといった印象です

ところで、多変数代数式を計算機で素因数分解すれば話は簡単だが、いくら計算速度があがろうと、多元連立方程式の計算をそのまま実行するととんでもなく時間がかかる
つまりアルゴリズムの課題は

 ブッフベルガーアルゴリズムなどの簡易プロセスによって連立方程式の本数を効率的に減らしたい

ということに関心が向いている
RISA/ASIRは日本製であり、連立代数式の計算を特徴とする数式処理アプリケーションなのでしょう
わたしなどが資料をちゃちゃっと見た範囲では、どこに独自性があるのかいまいち把握できずにいます
Asirの独自性としては・・・

分散表現多項式
http://www.math.kobe-u.ac.jp/~noro/html-jp/man_188.html

分散表現多項式とは、多項式の内部形式の一つである。通常の多項式は,再帰表現と呼ばれる形式で表現されている。すなわ ち、特定の変数を主変数とする 1 変数多項式で、その他の変数は、その 1 変 数多項式の係数に,、主変数を含まない多項式として現れる。この係数が、また、ある変数を主変数とする多項式となっていることから再帰表現と呼ばれる。

これに対し、多項式を、変数の冪積と係数の積の和として表現したものを分散表現と呼ぶ。

グレブナ基底計算においては、単項式に注目して操作を行うため多項式が分散表現 されている方がより効率のよい演算が可能になる。このため、分散表現多項式が


  識別子の型として Asir のトップレベルから利用可能となっている


このあたりなのかもな
このサイトの言い分についてはわたしにはまだよくわかりませんけど
まあ、ようするに多変数多項式を1変数代数式に置き換えて計算します
ということらしい

ここでわたしが気になるのは、関数解析と代数学が異なる数学理論であるという点であり
Asirで個々の具体的計算をする際どのような注意が必要なのか、あるいはまったく問題なくどんな空間の多変数関数(多項式)でも計算できるのかという点です

このレーポートでは”通常の多項式”とは、など各種用語を独自に定義しているようです
講義ビデオが公開されていますね
http://fe.math.kobe-u.ac.jp/Movies/oxvh/2011-07-25-yugo-1.html

わたしはWindows10ですが、このページの一番上のQuickTimeをクリックしてダウンロードしてから
たとえば

Flash video(about 16 min)  ←ここをクリック
イデアル

イデアルの講義ビデオが見れました
ビデオだと耳と目から情報を受け取るので二重になって覚えやすいし
リアルタイムで進むとついていけないこともあるわけですが
ビデオなら止めたり任意のとこから再生し直したりできて重宝します

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

曲線・曲面の多項式 更新情報

曲線・曲面の多項式のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング