2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

MAXIMA

1 :max:02/01/15 22:47
MAXIMAに関するスレ

2 :名無しさん@1周年:02/01/15 22:50
maximaで値をunsetするときはどうするのですか?

3 :名無しさん@1周年:02/01/18 02:15
>>1 GUIやらplot3dウィンドウやらついてて、
なにやら便利そうですね。

ライセンスは要らないの?

4 :名無しさん@1周年:02/01/18 04:34
>>3
たしかGPLっす。
サーチ猿人で、"MAXIMA" + "数式処理"で検索!!

5 :max:02/01/18 04:39
わたしはGCLとmaximaをrpmで入れました。
今のところ問題無。
ふだんはMathematica使い。たまにmaxima使い。

6 :名無しさん@1周年:02/01/18 05:08
ライセンスについて、
今は 米エネルギー省公認のGPLになったのですね。一安心...

ttp://www.ma.utexas.edu/users/wfs/maxima.html

7 :max:02/01/18 06:31
>>5
ごめんなさい、うそです。
パッケージ、かなりの確率でだめっす。
固有値、固有ベクトルが死んでるの痛すぎ。

8 :名無しさん@1周年:02/01/19 01:39
>>1
remvalue()

9 :名無しさん@1周年:02/01/19 17:55
テンソルの表現ってどおするの?

10 :あぼーん:あぼーん
あぼーん

11 :名無しさん@1周年:02/01/19 22:46
>>7 ぢつは私、Maxima(=DOE MacsymaのCommonLisp版)見つけて、
 それを快適に使おうと、386BSD 0.1とか初代XFree98とか
 installして、結局よくわからないエラーが出まくりで閉口したものです。

 >パッケージ、かなりの確率でだめっす。
 >固有値、固有ベクトルが死んでるの痛すぎ。
それは、直せないのでしょうか?
#私が触った当時は、plot3dもすぐには動かなくて、
#手を入れた記憶があります。
#Gnuplot(って明らかにMacsymaっぽい)連携も不充分でした。

あるいは、きちんとした製品(Mapleとか)買った方が、有意義でしょうか?


12 :名無しさん@1周年:02/01/20 05:40
皆、どんどん追加求む。

Maxima リンク
御本尊
http://www.ma.utexas.edu/users/wfs/maxima.html

山内さんのMaximaページ
http://phe.phyas.aichi-edu.ac.jp/~cyamauch/maxima/
xaximaページ
http://phe.phyas.aichi-edu.ac.jp/~cyamauch/maxima/xmaxima.html

MathModern各種数式処理システムユーザー情報交流サイト
http://home.att.ne.jp/star/mathmodern/index.html

13 :max:02/01/21 01:04
>>7
このままではいけないので再インストール(OSも)。
Redhat7.X : イイ感じ
Vine2.1.5 : イイ感じ
Miracle : GUIがあやしい
カーネル?は大丈夫っぽい、パッケージ警告出る。
固有値/ベクトルも計算できとる(たぶん)。

14 :max:02/01/21 01:11
あ、それとrpm版はGUIでつかうときはQuit();しないで終了させると
プロセス残るよ。

15 :max:02/01/22 22:56
>>12
http://www.ma.utexas.edu/maxima/
http://www.math.meiji.ac.jp/~mk/maxima.pdf
マニュアル。
http://www.sra.co.jp/public/doc/gnu/Bull23j/Bull23j_4.html
SRAからmaximaもらえる!?

16 :名無しさん@1周年:02/01/26 13:38
maximaってlispかならずしも必要じゃないんですか?
maximaだけrpmでいれて動いてるようなんですけど...。

17 : :02/01/28 07:47
むかし同じく386BSDの時代から、苦労してAKCLからコンパイルしてとか
やっていたくちです。今はLinux上でだったら導入は楽チンですね。

18 :名無しさん@1周年:02/01/28 10:49
うん、rpmラクチンすぎ。->凄い勢いでサルになっていく自分発見。
あー、ところで、ここら辺でなんかMAXIMAのプログラムかきません、皆さん?


19 :名無しさん@1周年:02/01/29 18:49
数値解ってどうやって出すんですか?
厳密解しか返さないんですけど。

20 :    :02/01/29 20:51
浮動小数演算、長大浮動小数点数演算も最初から
組み込まれているので、そういった近似数をつかって
数値計算をすればいいでしょ。数値解を与える計算法・
アルゴリズムは、ライブラリでも作るか既に作った
人のを入手することになるでしょう。部分的には
Maxima自身にも数値での評価とか関数が入ってますよ。

21 :19:02/01/30 09:56
私がやりたいのはもっと簡単なことです。
SQRT(7)とかを機械精度あるいは任意精度の数値で返して欲しいのです。
SQRT(7.0)とすれば良いのですが、
MathematicaとかだとN[]ってありますよね、そういった関数はないのでしょうか?

22 :max:02/01/30 11:41
おー、まったくレス無しってわけでもないようですね。
私自身、MAXIMAよく知らないので、みんな、有益情報求む。
で、
>>21
ev()かな。eval()とかも。
ev(sqrt(7),FLOAT);て感じで、型を明示してやらなくてはいけない。
面倒かも知れないけど、ケースセンシティブに徹しているとこが潔い。
これも数式処理へのこだわりか。
Mathematicaももっと型を意識したシンタックスになっているとよいがな。
まあ、意図的に型を意識しないシンタックスになっているようだが。

23 :max:02/01/31 18:08
ちょっとコメント。
>>11
>>22
総合的に評価するとMaple7がいいようですね。バランスのとれたシステムといって良いでしょう。
Mathematicaもかなり速くなりました。
遅いといわれていますが、もはや気にする程度のものでないと思います。
ただ、バグが多いのとやはり基本的な処理能力はMapleが上でしょう。
しかし、設計段階からポリシーそのものは非常に練られたもので、
言語仕様の柔軟性と統一感は他のシステムの追従を許しません。
Macsymaは使ったことはないですが、Maximaよりは高速でしょう。
さて、Maximaですが、あきらかにlispとの連係を前堤としたもののようです。
言語仕様もlispとはだいぶ違うようですが、lispライクな機能を使いたいときは
lispを使えということでしょう。
11の方はメインでmaximaを使うことも考えているようですが、十分使用に耐え得ると思います。
まあ、商用だと逆にバグ取りを自分で出来ないってのもありますしね。
ほかに、数式処理システムとしてはMupad、Reduceがありますが、
Mupadはちょっとおそいようです(メモリ制限からか?)。

で、今回はこのへんで。
まあ、皆さんも気軽に感想など書き込んでくださいな。


24 :11:02/02/01 02:15
もう10年近く、MAXIMAに触っていませんが,,,
数式処理関係の資料も手元に溜まっているので
今度また触ってみようと思います。

ところで、この10年で、数式処理システム周りに
何らかの変化/進展は見られたのでしょうか?
もし御存知でしたら、お教え下さい。

25 :max:02/02/01 07:37
若輩者の私は、最初に数式処理に触れたのはMathematica2.0のころです。
因数分解をいとも簡単に解いてのけるのをみて感動したものです。

>>24
私の乏しい経験のなかで語らせて頂くと、
数式処理そのものに大きなブレイクスルーはなかったように思えます。
しかし、確実にその能力は、より高く、研ぎすまされたものになっていっているのは、
お感じになっているここと思います。これからもさらに期待できそうです。

むしろ、数式処理を使うことによる進歩の方が大きいでしょう。
数式処理システムを使うことにより数学的な新しい構造(?)が見つかった、
というのを聞いたことがあります
(Mandelbrotとかじゃなくて空間をいくつかに分けるようなのだったと思う)。
物理においてはそのシンボル操作の機能の高さとグラフィック能力により、
著しく効率の上昇した領域もあるといいます(logistic mapsとかかな?)。
また、教育においても数式処理なる授業があるそうです。
CとかフォートランといっしょにMathematicaやMapleを学ばせているそうです。

ちょっと違うはなしですが、ケイリー・パーサー暗号化のプログラムは
最初、Mathematicaで書かれたとか。


26 :max:02/02/05 17:44
びびった。
ヘルプテキストの一部がフランス語で書いてある。

27 :max:02/02/05 17:49
ところで、統計プログラムなんか書いてみようかと...
lisp-statもまだ多変量解析はそんなになかったと思うが。
いろいろ情報求む。

28 :max:02/02/05 17:54
とりあえず、ショボいが基本ってことで。
mean(list):=
sum(part(list,i),i,1,length(list))/length(list);

(ごめんなさい)

29 :    :02/02/15 23:51
日産の車にもマキシマというのがあったが、かぶってないのかな。

30 :名無しさん@1周年:02/02/16 20:25
>>29
かぶるんだよなー。
インターネットサーチの時とかも。
"math"とか"数式処理"とかつけないとなー。

31 :名無しさん@1周年:02/02/17 19:50
80年代になんとかMAXってのが流行った(楽器,コンピュータ,あと忘れた)のは、
  ヤパーリ MaxHeadroom (つうタモリ似のをっさんの出るCG)
が流行った影響だろーか?

あと、FP以降〜Haskellまでの関数型言語研究に、オースチン近辺が果たした役割
ってなにかありそう...

32 :名無しさん@1周年:02/03/25 17:13
技評の SoftwareDesign誌 2002/4月号に、
吉田爺@バークレー 氏のMaxima記事が載ってたので、あげ。

吉田爺は、絶対Mathematicaマンセーかと思ってたら、
mathematicaは「素人向け」で「電卓的色彩が強い」から使ってなくて、
昔からReduceを使用→Macsyma2.4を個人購入→Maxima.sourceforge.netに移行
とか言ってるし...

そろそろMaximaがブレークするのかなー。


33 :名無しさん@1周年:02/03/25 17:17
あと、Texas大で Maximaのメンテナンスをしてた
W.Schelter氏は、2001年に亡くなったんですね。追悼

34 :名無しさん@1周年:02/04/02 21:02
MAXIMAm age

35 :max:02/04/14 00:44
結構、あげられてるな。
maxima、ブレークすると嬉しいよなー。
なんか、むかしGNOMEのプロジェクトで、
数式処理を作るっていうようなのを聞いた気がする。ガセか?自信ない。
Linuxのパッケージに、maximaバンドルとかやってくれるといいな。

お、そろそろ、5.6.1、落しおわるな。

36 :名無しさん@1周年:02/04/14 01:40
GNUプロジェクトの Jacal なら知ってるけど。

Scheme処理系 scm上で動作する、数式処理プログラム。

ホロノミックなんとかいう計算方法を使ってる...
グレブナ基底とどう違うかサパーリわからなかった(哀

37 :36:02/04/15 19:15
Jacalのホームページ
 http://swissnet.ai.mit.edu/~jaffer/JACAL.html
"Algebra and the Lambda Calculus"
 http://swissnet.ai.mit.edu/~jaffer/lambda.txt

38 :max:02/04/20 01:13
Maple8でましたね。
http://www.maplesoft.com/main.shtml
数式処理ソフトの業界って、競争が結構良い方向に向かってますよね。
バージョンアップのたびに速くなってるし。
ほんとは、それが当然のことなんですけどね。

39 :GO MAXIMA:02/06/30 23:08
固有値 固有ベクトルのパッケージが死んでいるというのは
嘘です。
まずは メーリングリストに参加するか 過去ログを読むように。

例えば Jordan Canonical Form の計算について 私がcontribute
した パッケージ diag.mac とjordan.dem では mathematicaで
正しい計算できない8x8の 行列のjordan標準型についても 正しい
計算ができます。
maxima 5.5 以降 特に 5.6は かなり 安定していて おもなbugは
メーリングリストの 仲間によって fix されています。
わたしの パッケージも5.9.0の contributeのdirにあります。
メーリングリストは
http://www.ma.utexas.edu/mailman/listinfo/maxima
私の Jordanの投稿は
http://www.ma.utexas.edu/maxima/2002/001302.htmlとか
001182.htmlを参照

多倍長の計算は FLOAT2BF:true $
FPPREC:100 $ これは100桁−場合
とした後で 書く関数の引数をbfloat()とします
例えば exp(bfloat(10*0.1));などで百桁の計算ができます。

記述LISPは common lisp です。
まあ LISPが使えたほうが よいです。というのも すべての定義は
本質的に LISPで書いて読みこめば MAXIMAの本来の動作も簡単に
変えられます。嫌なBUGは とりあえずこの方法でFIXしています。



40 :GO MAXIMA:02/06/30 23:55
1 例題と演習

maxima(macsyma)の使い心地について

reduceとの一番大きな差は reduceは よくもあしくも 自動で計算してくれる
部分が多いのに maximaは 明示して計算させなければ 計算しない部分が多い。
これは reduceは しょちゅう clear文で 自分の定義したものを消さないと次
に移れないことになるのに対して、 maximaではそんなにしょちゅうkill文を
使う必要はない、(上手になれば)。しかし 最初から動かすのに必要な知識が
多めに必要ということにもなり、maximaの普及に影を落している。
したがって maximaの初心者は 自動計算を期待するのではなく 手計算の代わ
りに 計算してくれる 黒板の如きものというイメージをいだいておけば
挫折することも少なくなると思う。

この演習のもと本は早稲田の広田良吾 教授が bitの別冊に載せられたもので
ルーツは 広島大学の工学部の大学院生に 講義したノートであるそうだ。
reduceで書かれたものを 私がmaximaに書き直したものである。
数式処理システムは どれも個性が強く 単なる書き直しと言うわけにはいかず
私なりのmaximaへの すすめ となっている部分も多いと思う。

工学部の大学院生にとって必要な数学は線型代数を除けば、確率過程か 微分
方程式のどちらかが 必須というのは80年代前半によく耳にしたように記憶し
ている。このもとの演習はそれより一寸前のころ行われていたことを考えると
大変進歩的な 授業であったといってよいだろう。
現在のレベルはと考えると めまいのするほど沢山の数学が要求されているだ
ろうけれども。こんなときにも TOOLとしての 数式処理がまさにこの演習書の
内容でなくて この演習書のやりかたで役に立ことは疑い無い。

もちろん数学と 数式処理システムとは 素人が考えるより 無関係であり、
プロの数学者が 考えるよりは関係は 深い。それはスタイルの問題であり、今現
在の 数式処理システムは 江戸時代の和算家のそろばんというところであろう。
我々が 道具を使える サルであるいじょう 数学の表現の仕方も また変わって
行かざるをえないだろう。
そうして いつの日か和算が グローバルな宇宙数学として開花すると私は考え
る。もちろん そのときの 主役は人間ではないだろうし 人類が棲息している
かどうかもわからない。

そんな 遠い未来の話ではなくても 今第2の 和算の時代が開花しつつある。
Clifford Algebra のGeometricな解釈によって。
Clifford Algebraの 計算にはそろばんが必要であり、19世紀に開花しながら
十分に普及しなかった非ユークリッド幾何を徹底的に使いこなすための道具で
もある。また今後百年以内に登場するであろう 3次元car (宇宙船)に必須の
数学でもあろう。真に力のある理論は 天才のみが 使いこなせるのではなくて、
何百年かかるか分からないが やがては人類皆のよく理解できる常識となるよ
うに思える。


41 :名無しさん@1周年:02/07/02 02:23
Shelter亡くなったって本当?原因は?
それでバージョンアップがとまっていたのか?
将来に黒雲が立ち込めているような気がする。

42 :名無しさん@1周年:02/07/02 02:51
>>41
前述のギヒョーの記事によると、
2001年に訪問先のロシアで亡くなったそうです。

「1982年〜2001年まで DOE-Macsyma〜MAXIMAのメンテを続けていた」
という事は...GNU EmacsのR.M.Stallman並のグルですな、この方は。

>>40
ソリトンとか非線形数理科学で有名な先生ですね





43 :GO MAXIMA:02/07/02 05:00
現在は バークレーのFatemanが 親分のようです。
かってのウオルフラムのライバルですよ。実力は十分です。
別に 将来に不安はないですよ。
Shelterさんが亡くなってからの方が活溌にみんなやっています。
現在動かないパッケージは common lispに書き換えた際に発生したものが
ほとんどで必要なものは 二十年まえのものも 修復されているものも
あります。
問題なのは この手のTOOLは 研究の第一線で使う人が いなくなると
時代遅れというか だめになるようです。
製品のMacsymaが つぶれたのも MapleやMAthematicaに負けたという
面も もちろんありますが、ほんとうは 1995にはじまる サイバーグ
. ヰッテンの 理論からの 爆発についていけなかったのがほんとうの
ところではないかと思います。(つまり日本はまるごと おお負けだから
わからないといえます。) a-tensorのパッケージがしょぼかったね。
MAXIMAも80年の最初のころまで ウオルフラムが ガンマ行列パッケージ
を書いたりして 間違いなく第一線の研究者が使っていた。
あ これは いまもMAXIMAのパッケージに入っていますよ、動かねえけど。
ウオルフラムは 金儲けでも 天才で Macsymaの開発をしながら その
大衆受けしないポイントを 確認(つまり 見た目、GUIまわりが弱い)
それと 当初から テンソル計算など しろうとが使わない機能が
充実していた。だから 最初のMAthematicaは テンソルは別パッケージで
有料だった。これは わざとである、なんせ彼は数式処理ではその方面の
専門家として重宝されていたのだ。テンソル式がズラっと並ぶような
TOOLをしろうとが買うはずが無いと読んでいたと思う。
まあもちろん Macsymaの最大の弱点 である パターンマッチングは
彼一流の感性で 関数型言語として Mathematicaでは克服されている。

でも ある程度の力のある開発者からみれば その差は微差で まあ
LISPで書かねばならないことが 増えるのですが、、、、
MAthematicaにできて MAXIMAにできない重要な内容はないと思います。


44 :GO MAXIMA:02/07/05 01:36

=======================================================================
例題1.1
4則演算、2つの変数A、Bの和、差、積、商を計算してそれぞれを変数WA、SA、
SEKI、SHOに代入する。
=======================================================================

(C1) wa:a+b;
(D1)b + a
(C2) sa:a-b$seki:a*b$sho:a/b$
$だと出力は抑制される。

=======================================================================
例題1.2
1.1でA=1/2,B=1/3とおいてWA,SA,SEKI,SHOを出力させる。
=======================================================================
(C6) a:1/2$
(C7) b:1/3$
(C8) wa;
(D8)b + a
式のままである。このへんはreduceとおおいに異る。evalであるEvを使う
(C9) Ev(wa,[a=1/2,b=1/3]);
(D9)5
-
6
同じことを wa,[a=1/2,b=1/3]; と簡略に書くこともできる。
(C10) sa,[a=1/2,b=1/3];
(D11)1
-
6
以下同様

=====================================================================
例題1.3はmaximaでは不要
例題1.4
kill(a,b)としてa,bを消去して(変数の束縛をとるだけ)
(a+b)^3 としてもmaximaでは展開されない、明示的にexpandを使う
=====================================================================
(C12) kill(a,b)
(D12)DONE
(C13) expand((a+b)^3);
(D13)32 23
b + 3 a b + 3 a b + a
=====================================================================
例題1.5
(a+b)^2-(a-b)^2を計算して 変数SKに入れて出力する
=====================================================================
(C14) sk: expand((a+b)^2-(a-b)^2);
(D14)4 a b



45 :GO MAXIMA:02/07/05 01:41
第2章 FOR文

===================================================================
例題2.1

3+5+7+9+11+13の計算
====================================================================
(C1) sum:0 $
(C2) for i:3 thru 13 step 2 do sum: sum +i;
(D2) DONE
(C3) sum;
(D3)48

あるいは
for i:3 while i<=13 step 2 do s:s+i;
さらに和を求める関数sumも用意されている。

(C4) sum(2*i+1,i,1,6);
(D4)48
========================================================================
例題2.2

8!=8*7*6*5*4*3*2*1の計算
========================================================================
(C5) seki:1$
(C6) for i:1 thru 8 do seki:i*seki;
(D6) DONE
(C7) seki;
(D7)40320

あるいは
(C8) product(i,i,1,8);
(D8)40320

========================================================================
例題2.3

n=1,2,3に対して、f(n)の値を配列a(n)に入れ、a(2)にf(2)が入っていること
を確かめる。
========================================================================

とりあえず グローバル変数でよければ 配列は特に宣言しなくてもよい。
(C9) for i:1 thru 3 do a[i]:f(i);
(D9) DONE
(C10) a[2];
(D10)f(2)

演習2.1、2.2

-2+1+4+7+10を求めよ
1/2+1/6+1/12+1/20+1/30を求めよ
(7*6*5)/(3*2*1)を計算せよ。


46 :GO MAXIMA:02/07/05 01:44
=========================================================================
例題2.4

3次元ベクトルaとbについて次の恒等式(ラグランジュ(Lageange)の恒等式)が
成立することを示せ
|a x b|^2 =|a|^2|b|^2-(a.b)^2
xは外積 .は内積を表す。
=========================================================================
(C11) kill(a,b,f)$
(C12) aXb[1]:a[2]*b[3]-a[3]*b[2]$

(C13) aXb[2]:a[3]*b[1]-a[1]*b[3]$

(C14) aXb[3]:a[1]*b[2]-a[2]*b[1]$


(C15) aXb[1]^2+aXb[2]^2+aXb[3]^2-(a[1]^2+a[2]^2+a[3]^2)*(b[1]^2+b[2]^2+b[3]^2)+(a[1]*b[1]+a[2]*b[2]+a[3]*b[3])^2;

2 2 2 2 2 2 2
(D15) (- a - a - a ) (b + b + b ) + (a b + a b + a b )
3 2 1 3 2 1 3 3 2 2 1 1

2 2 2
+ (a b - b a ) + (b a - a b ) + (a b - b a )
2 3 2 3 1 3 1 3 1 2 1 2
(C16) expand(%);

(D16) 0

恒等式の証明は差をとって展開(expand)するだけでよいので簡単にできる。

演習2.4

ベクトルaXbは aおよびbに直交することを確かめよ。



47 :GO MAXIMA:02/07/05 01:47
むむ display2d:false にしないと 指数がばけるみたい

48 :GO MAXIMA:02/07/05 01:48
第3章 LET文

reduceの LET文には (a)パターンマッチングと(b) 演算規則の生成の2つが
あるとのことですが maximaでは (a)の機能が弱く パターンマッチングより
ジカ代入というか手動で行うことが多いと思います。letとletsimpだけでは
reduceのようには 気楽に扱えません。とはいえ、reduceの演算規則にあたる
ものはmaximaでは 関数で実現できるので機能に差があるわけではない。

==========================================================================
例題3.1

w=(x+y)^4 を展開してxyを zに 置き換えよ。

==========================================================================

(C2) let([x*y,z],one);

(D2) x y --> z
(C3) letsimp(expand((x+y)^4),one);

2 2 2 4 4
(D3) 6 z + 4 y z + 4 x z + y + x


let([x*y,z],one);は x y --> z というルールに oneという名前をつける
ことにあたる。そうしてこのルールは reduceのように 自動的に適用されるの
ではなくletsimp文で 明示的に指示するというやり方になる。
もし他にtwoというルールがあって 、oneを適用してからtwoを適用したい場合
には
letsimp(expand((x+y)^4),one,two);とできる。
またルールの名前から内容を確認するときは
(C4) letrules(one);

x y --> z
とする。
ルールを除去するのは
(C5) remlet(x*y,one);

というようにルールの左辺とルール名で指定する。これは本来ルール名のみで
消去できるほうがよいだろう。


49 :GO MAXIMA:02/07/05 01:50

=========================================================================
例題3.2と3.3

z=(1+x+x^2+x^3)^2を展開して4次までの項を求めよ。つづいて5次までの項
を求めよ。

=========================================================================

(C24) let([x^4,0],one);

4
(D24) x --> 0
(C25) letsimp(expand((1+x+x^2+x^3)^2),one);

3 2
(D25) 4 x + 3 x + 2 x + 1
(C26) let(x^5,0);

5
(D26) x --> 0
(C27) letsimp(expand((1+x+x^2+x^3)^2));

4 3 2
(D27) 3 x + 4 x + 3 x + 2 x + 1

ルールが1つのときは C26 のように無名のルールを使うこともできる。


=========================================================================
例題3.5

任意の自然数nにたいしてn!を計算する規則を作れ。

=========================================================================

maximaでは 多くのreduceの letにあたるものは ここで示すように 関数定義
で代行して不足は無い。
(C1) fact(_n):=product(k,k,1,_n)$
(C2) fact(40);

(D2) 815915283247897734345611269596115894272000000000



50 :GO MAXIMA:02/07/05 01:52
=========================================================================
例題3.6

z=exp(x+x^2+x^3+x^4+....)をxのべきに展開してx^4の項までもとめよ。

=========================================================================

exp(x)=1+x+x^2/2!+x^3/3!+..........からx^4の項まで考えればよい

(C3) let(x^5,0);

5
(D3) x --> 0
(C4) sum((x+x^2+x^3+x^4)^i/i!,i,0,4);

4 3 2 4 4 3 2 3 4 3 2 2
(x + x + x + x) (x + x + x + x) (x + x + x + x) 4 3
(D4) ------------------- + ------------------- + ------------------- + x + x
24 6 2

2
+ x + x + 1
(C5) letsimp(expand(%));

4 3 2
73 x + 52 x + 36 x + 24 x + 24
(D5) ---------------------------------
24


=========================================================================
例題3.7

C = A(A-1)(A-2)...(A-N+1)/(N(N-1)...2.1)
A N
を計算する規則を作り C , C を計算せよ
1/2 3 -3 2
=========================================================================

reduceの FOR ALL ...LET 文は maximaでは 関数で表現する。
factは例題3.5のものを使う。

(C38) comb(_a,_n):=product(_a-i+1,i,1,_n)/fact(_n);

PRODUCT(_a - i + 1, i, 1, _n)
(D38) comb(_a, _n) := -----------------------------
fact(_n)
(C39) comb(1/2,3);

1
(D39) --
16
(C40) comb(-3,2);

(D40) 6



51 :GO MAXIMA:02/07/05 01:53
=========================================================================
例題3.8

f22(n)=1/(1*2)+1/(2*3)+.....+1/(n*(n+1))を計算する規則をつくれ。
n=1,2,3,4,5に対して値を計算せよ。
帰納的に n/(n+1)であることを数式処理でどうやって証明するか?

=========================================================================

これも3.7と同様 ただし 現在の数式処理がバカチョンでいかないという例の
ようです。
(C43) f22(_n):=sum(1/(i*(i+1)),i,1,_n);

1
(D43) f22(_n) := SUM(---------, i, 1, _n)
i (i + 1)
(C44) for i:1 thru 5 do display(f22(i));

1
f22(1) = -
2

2
f22(2) = -
3

3
f22(3) = -
4

4
f22(4) = -
5

5
f22(5) = -
6

帰納法を使うf22(k)=k/(k+1)と仮定すれば f22(k+1)=(k+1)/(k+2)であること
を計算で示せばよい。
このへんは手で計算した方が速いが 型をしめせば以下の通り
(C45) let(f22(k),k/(k+1))$

(C46) letsimp(f22(k)+1/((k+1)*(k+2)));

3 2
k 3 k 2 k
----- + ----- + ----- + 1
k + 1 k + 1 k + 1
(D46) -------------------------
2
k + 3 k + 2
(C47) ratsimp(%);

k + 1
(D47) -----
k + 2


52 :名無しさん@1周年:02/07/06 00:47
WはMacsymaのソースを元にSMPをC言語で書いて開発し発売したが、大学の
計算機リソースを用いて開発したというかどで、訴訟になり放棄。
Mathematicaも最初はMacsymaのソースを見ながら、GNUーC言語に皮を
かぶせたような言語で開発したらしい。
 複雑なシステムやライブラリはそれを支える高級技術者、科学者が
それの開発とメインテに従事しながら高給を取れる仕組みがないと
なかなか、続かない。日本には長らくPHDプログラムがなく、大学院
生にも給料が出ないなどで、学業とは無縁のアルバイトに忙殺される
などにより、高度な学問レベルの最前線では、アメリカやヨーロッパの
敵ではなかった。しかも数式処理のシステムが主に成長普及した時期は、
豊富な時間的な制約のすくない計算機資源やプログラミング環境、
特にインタラクティブな(バッチではない)OSの利用が不可欠だったが、
日本はこれらに関しては大学では特にそういう面が反対を向いていた。

53 :名無しさん@1周年:02/07/06 00:51
国内で、HLISP, UTILISP, ReduceLisp とか、Lisp専用機作って頑張ってた人
いたと思いますが。少なすぎ?


54 :GO MAXIMA:02/07/06 04:00
最近Clifford 代数というか Geometric AlgebraをMAXIMAに
載せようと しているのだが よいスタイルにするのは相当
難しい。 古い数学の人から見れば R上で 2次型式をきめれば
それに対応してClifford 代数が決まり 、何らかの行列環と同
型になる、そんな 2次形式論がいまどき 重要なわけ??
行列のspinor表現ていっても Lie群論は 半単純群の分類ですでに
終っている理論よ〔有限次元では)。何がしたいの?
えーっと それを使っていままでバラバラに見えていた理論や
計算が 統一的に扱える モデルです。
ふーーん モデルとか解釈と言うのは 数学じゃあない。
そんなものに インパクトはないよ。
となりそうですが これもあまりに数学を固定的に考える日本の
弊害が見え隠れしている。MIT流の何が数学か分からない
自由さにも 個人的にはついていけないけども。。。
E. Cartan の論文は いまだに読まれていると思いますがあれほど
一世を風靡した ブルバキは ほとんど読まれていないとおもいますね。
ブルバキは Cartanの 弟子が 多く含まれていたはずですが埋葬に
失敗して Cartanのエキセントリックな(つまり飛んでる)もとの表現が
復活できる。これについては David Hestenes の Differntial Forms
in Geometric Calculus が へたな 小説の100倍は面白い。
特に2章の What is a manifold? とか3章がよい。
http://modelingnts.la.asu.edu/pdf/DIF_FORM.pdf
から手に入る。これを見て ブルバキが なぜあんなに型式主義に
走ったか 理解できた気がした。師匠の自由さに困惑してそして
40年も数学を停滞させたあの原論が生まれたらしい。なに止まって
いたのは 某国だけってか。

55 :GO MAXIMA:02/07/07 12:52
第4章 条件付き LET文
=========================================================================
例題4.1
クロネッカー (Kronecker) のδ
i j
δ = 1 (i=j)
i j
= 0 (i≠j) を作れ
=========================================================================
これも 関数定義で行う。
(C50) delta(_i,_j):= if (_i=_j) then 1 else 0;

(D50) DELTA(_i, _j) := IF _i = _j THEN 1 ELSE 0

(C52) delta(2,4);
(D52) 0
(C53) delta(2,2);
(D53) 1

例題4.2 略
=========================================================================
例題4.3
Legendre(ルジャンドル)の多項式P(x)は 次の漸化式を満たす。
n
(n+1)P (x) -(2n+1)xP (x)+nP (x) = 0, P (x) = 1,P (x) = x
n+1 n n-1 0 1
n=2,3,4について ルジャンドルの多項式を求めよ。
=========================================================================
漸化式は 普通に関数定義をすると 再帰になる。
(C6) p[_n](_x):=block(if _n=0 then 1 else (if _n=1 then _x else ((2*_n -1)*_x*p[_n-1](_x)-(_n-1)*p[_n-2](_x))/_n));
(D6)p[_n](_x):=BLOCK(
IF _n = 0 THEN 1
ELSE (IF _n = 1 THEN _x
ELSE ((2*_n-1)*_x*p[_n-1](_x)-(_n-1)*p[_n-2](_x))
/_n))
(C7) p[2](x);
(D7) (3*x^2-1)/2
(C8) p[3](x);
(D8) (5*x*(3*x^2-1)/2-2*x)/3
(C9) ratsimp(%);
(D9) (5*x^3-3*x)/2
(C10) p[4](x);
(D10) (7*x*(5*x*(3*x^2-1)/2-2*x)/3-3*(3*x^2-1)/2)/4
(C11) ratsimp(%);
(D11) (35*x^4-30*x^2+3)/8
block文は大きめの関数を書くときに便利。
演習4.1 上の例題でP[2/3](x)とするとどうなるか?
(注) stack overflow する。reduceとは動作が異なる。
演習4.2
Hermite(エルミート)の多項式の漸化式
H (x+1) -xH (x)+nH (x) = 0 (n>=1)
n+1 n n-1

H (x) = 1,H (x) = x とする。n=2,3,4についてH (x)をもとめよ。
0 1 n


56 :GO MAXIMA:02/07/07 13:05

第5章 DF 微分演算子

代数式fの変数x に関するn回微分あるいは変数x、yに関するm、n回偏微分など
を自動的に計算する。
maximaでは 微分は diff、関数関係は depends文で宣言する。

=========================================================================
例題5.1
代数式 5 2 3
f=ax y +bx y が与えられてたとき df/dx、
5 3 2
∂ f/∂x ∂y, df/dt を計算せよ。
=========================================================================
(C2) f:a*x^5*y^2+b*x^3*y $
(C3) diff(f,x);
(D13) 5*a*x^4*y^2+3*b*x^2*y
(C4) diff(f,x,3,y,2);
(D14) 120*a*x^2
(C5) diff(f,t);
(D5) 0
最後の結果は x、yが tと関数関係にある場合はdepends文で宣言してやれば正
しく計算できる。宣言しないときは 関数関係がないものとして扱われる。
(C7) depends(x,t,y,t);
(D7) [x(t), y(t)]
(C8) diff(f,t);
(D16) 2*a*x^5*y*'DIFF(y,t,1)+b*x^3*'DIFF(y,t,1)+5*a*x^4*'DIFF(x,t,1)*y^2
+3*b*x^2*'DIFF(x,t,1)*y
この表示はdisplay2d:true としたときの方がきれい。

==========================================================================
例題5.2
ルジャンドルの微分方程式
(1-x^2)y'' -2xy'+n(n+1)y = 0の解は Rodriguesの公式
P (x)=1/(2^n*n!) diff((x^2-1)^n,x,n)を満たす。n=1,2,3について
n

P (x)を出力してこれを確かめよ。
n
==========================================================================
(C9) p[_n](_x) := ratsimp(diff((_x^2-1)^_n,_x,_n)/(2^_n*_n!));
(D9) p[_n](_x):=RATSIMP(DIFF((_x^2-1)^_n,_x,_n)/(2^_n*_n!))
(C10) for i:1 thru 3 do display(p[i](x));
p[1](x) = x
p[2](x) = (3*x^2-1)/2
p[3](x) = (5*x*(3*x^2-1)/2-2*x)/3
(D10) DONE
p[3](x)はratsimp(p[3](x))で(5*x^3-3*x)/2となる。
(C15) for i:1 thru 3 do display(ratsimp((1-x^2)*diff(p[i](x),x,2)-2*x*diff(p[i](x),x)+i*(i+1)*p[i](x)));
RATSIMP(0) = 0
RATSIMP(3*(3*x^2-1)-6*x^2+3*(1-x^2)) = 0
RATSIMP(4*(5*x*(3*x^2-1)/2-2*x)-2*x*(5*(3*x^2-1)/2+15*x^2-2)/3+15*x*(1-x^2))
= 0
(D15) DONE


57 :GO MAXIMA:02/07/07 13:21
例題5.3は 略
==========================================================================
例題5.4
非線形偏微分方程式(KdV 方程式)
diff(u(x,t) + 6 u(x,t) diff(u(x,t),x) + diff(u(x,t),x,3) = 0
の 1 ソリトン解は
u(x,t)=2*k^2/cosh^2(k*(x-c*t)) である。cは kの関数 でありソリトンの速
度をあらわす。cを求めよ。
==========================================================================
maximaの3角関数の指数はcosh(x)^2のように 後に書くことに注意する。
関数型が与えられているので 左辺に代入して3角方程式を解くだけであるが
自動で 求まらなくても 落ち着いて 必要な項を 取り出し 黒板でやるように
手動でやらねば ならぬこともあることに 留意してください。
(C1) u(x,t):=2*k^2/(cosh(k*(x-c*t)))^2;
(D1) u(x,t):=2*k^2/COSH(k*(x-c*t))^2
(C2) depends(c,k) $
(C3) s:ratsimp(diff(u(x,t),t) +6*u(x,t)*diff(u(x,t),x)+diff(u(x,t),x,3));
(D3) -(48*k^5*SINH(k*x-c*k*t)^3+((-32*k^5-4*c*k^3)*COSH(k*x-c*k*t)^2+48*k^5)
*SINH(k*x-c*k*t))
/COSH(k*x-c*k*t)^5
ここで必要なのは 分子=0を解くことだから
分子を取りだす num(d3)、これはnumeratorの意味である。
または より一般的に part(d3,1,1)としても同じ maximaでは 細かい項の操作
はpart関数を使うので マニュアルを調べておくこと。
(C4) s1:num(%);
(D4) -(48*k^5*SINH(k*x-c*k*t)^3+((-32*k^5-4*c*k^3)*COSH(k*x-c*k*t)^2+48*k^5)
*SINH(k*x-c*k*t))
cosh^2(x)=1+sinh^2(x)の関係をいれる必要があるが置き換えは一回なので
substを使った。substは代入の演算子です。
本格的には matchdeclare(x,true);としてxはなんにでもマッチしますと宣言
してからlet(sinh(x)**2,cosh(x)**2-1); letsimp(d4);
でいける。3章のletsimpを参照せよ。
(C5) subst([cosh(k*x-c*k*t)^2=sinh(k*x-c*k*t)^2+1],s1);
(D5) -48*k^5*SINH(k*x-c*k*t)^3-SINH(k*x-c*k*t)
*((-32*k^5-4*c*k^3)*(SINH(k*x-c*k*t)^2+1)
+48*k^5)
(C6) trigsimp(%);
(D6) (4*c*k^3-16*k^5)*COSH(k*x-c*k*t)^2*SINH(k*x-c*k*t)
trigsimpしないでいきなりfactorでも この場合はうまくいくはず。
(C7) factor(%);
(D7) -4*k^3*(4*k^2-c)*COSH(k*(x-c*t))^2*SINH(k*(x-c*t))
c=4k^2 ここは solve(d7,c);でもよいとにかくcは定数だからこれしかない。
次の演習問題はやや難しい。
演習5.1
次の非線形波動方程式(sine-Gordon方程式)
diff(u(x,t),x,2) - diff(u(x,t),t,2) = sin u
の 解(1-K解)は
u= 4arctan (exp (±(x-vt)/sqrt(1-v^2))) となることを確かめよ。
ただしsin(x)=4tan(x/4)(1-tan(x/4)^2)/(1+tan(x/4)^2)^2を
途中で必要とする。
演習5.2
エルミート多項式H[n] (x)はつぎの微分方程式をみたす。
y'' - xy' + ny = 0
n=4のときの解は 3+ax^2+bx^4である手計算でa,bを求めよ。


58 :maximan:02/07/14 14:02
Maximaへのインターフェイス。
いくつか考えられますが、Souza, Fateman, Moses, Yapp氏らが書いた「The Maxima Book」が参考になりました。検索かけてみたください。PDFファイルがhitすると思います。
試してみた感じ、計算させるだけで印刷したりしないのなら、
emacs + maxima + maxima.el,maxima-symbols.el,maxima-font-lock.el
で充分だとおもいます。


59 :maximan:02/07/14 16:07
>>40
いい企画(?)ですね。いつも楽しみにしています。
ところでこの「例題/演習」は、第何章ぐらいまで続くのでしょうか?
それと、Maximaのドキュメントってあまり、充実していないように思うのですが(ですからこの「例題/演習」がありがたい)、市販のMacsyma関係の書籍で入門者にお勧めの1冊ってどれでしょうか?



60 :GO MAXIMA:02/07/14 16:52
>>59
11章くらいです。
今ちょっと H:matrix([e1,v,0],[v,e2-e1,v],[0,v,-e2]);
これの固有ベクトルを求めることが sci.math.symbolicmathのnewsgroupで
話題になっていて mapleでは 求まって maximaとmupadでは求まらない、
とあったので調べていた。原因は 固有値までは求まるのだが 固有方程式が
解けない。ただの3元1次方程式が 解けないのだから 厨房にまけ?

なお固有値の計算をするとき load("eigen")$としてライブラリをよびだす
のは eigen.mc (新しいバージョンではeigen.mac)をLISPにコンパイルした
ものは 完全に同じ動作をしないからである。このへんは コモンLISPのむずな
ところで 要するに eigen.macをきれいに書けばよいのだが VER7.0くらいまで
は見込がなさそうなので いちいち始めに一回loadする。eigenのライブラリは
ちょっとプログラムスタイルが 悪いというかコワイ部分(ループのなかでルー
プ終端値を書き換えたりする、HP-25のP.ヘンリッチを思い出す)がある。
時代もののせいだろうか。
L1:eigenvalues(H);
L1[1][1];は 固有値のひとつ 。たった3次の正方行列の固有値のひとつが
このようになること自体に 数値処理と数式処理の深いみぞが見れる。

(-SQRT(3)*%I/2-1/2)*(SQRT(-32*v^6-(21*e2^2+6*e1*e2+21*e1^2)*v^4
-(24*e2^4+6*e1*e2^3-36*e1^2*e2^2 +6*e1^3*e2+24*e1^4)
*v^2-4*e2^6+12*e1*e2^5+3*e1^2*e2^4 -26*e1^3*e2^3+3*e1^4*e2^2+12*e1^5*e2
-4*e1^6)/(6*SQRT(3)) +(e2*v^2+e1*(-v^2-e2^2)+e1^2*e2)/2) ^(1/3)
+(SQRT(3)*%I/2-1/2)*(2*v^2+e2^2-e1*e2+e1^2)
/(3*(SQRT(-32*v^6-(21*e2^2+6*e1*e2+21*e1^2)*v^4
-(24*e2^4+6*e1*e2^3-36*e1^2*e2^2+6*e1^3*e2+24*e1^4)
*v^2-4*e2^6+12*e1*e2^5+3*e1^2*e2^4-26*e1^3*e2^3
+3*e1^4*e2^2+12*e1^5*e2-4*e1^6) /(6*SQRT(3))
+(e2*v^2+e1*(-v^2-e2^2)+e1^2*e2)/2)^(1/3))
このくらいになると 検算をしておくのが普通です。(むやみに 数式処理シス
テムを信じないこと)
もとの特性方程式はcharpoly(H,x);としてもでてくるが,determinant(H
-x*ident(3));としても同じ。ratsimp(%);で整理する。
-x^3+(2*v^2+e2^2-e1*e2+e1^2)*x+(e2-e1)*v^2-e1*e2^2+e1^2*e2
という3次方程式(=0は省略される)の解になっていることを確かめる。
直接代入すると subst([x=L1[1][1]],この方程式);ratsimp(%);で
QUOTIENT by ZERO (0割のえらーでっせ)
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)
えーーそんなあほな この程度の検算もできん数式処理システム降りさせても
らいますとなるところ。でもちょっとまって固有値L1[1][1]をよく見てみると
6行目の/は最後までかかっていて そのなかに別の/がある。つまり数値用と
兼用のライブラリだから この固有値は 整理されていない。計算の途中で0で
割っている用に見えてもみかけだけやないだろうか?ということで
L2:ratsimp(L1[1][1]);subst([x=L2],この方程式);rasimp(%);であたりまえ
だが0が 返って来て 検算ができた。(続く)


61 :あぼーん:あぼーん
あぼーん

62 :GO MAXIMA:02/07/14 17:54
えーと 本では BARBARA HELLER の MACSYMA for Statisticans
John Wiley & Sons,Inc 1991
ISBN 0-471-62590-6
もし品切れでもこの本は外国では割りに出回っていたはずなのでアマゾンの
アメリカなら古本やで見つけてくれるとおもいますね。
品切れでなければ日本のアマゾンの方が安いでしょうけど。
この本は最後の7章Advanced Uses of MACSYMAのできが悪いが1章から
6章まで 解説と 演習もバランスもよく特に演習には 後ろに実行した解が
載せられていて 自習するひとに親切です。MACSYMAとなっていますが
すべてMAXIMAで実行できます。テンソルやGUI関連の記述はありません。

1章 Getting Started
1.1 Introduction
1.2 Entering MACSYMA and Typing Command Lines
2章 Variables,Lists,Equations,and Arrays
2.1 Atomic Variables,Numbers,Lists and Equations
2.2 Functions
2.3 Arrays
2.4 Subscripted Functions
2.5 Some Predefined MACSYMA Functions
3章 Iteration,Conditional,Blocks,Recursion
3.1 Iteration
3.2 Compound Statements
3.3 Conditionals
3.4 Blocks
3.5 Recursion
4章 Part Selection,Substitute,and Ev
4.1 Selection of Part of an Expression
4.2 Substitution
4.2.3 Edgeworth Expantionこの部分だけ数学的なレベルが高い
4.3 Ev
5章 Internal Representation,Storage,General Utilities
6章 Matrices and Lists
7章 Advanced Uses of MAXSYMA
7.1 Pattern Matching
7.2 Rules この章は改定してもらいたいがMacsyma Inc.がなくなったので無理
か!
Referenced
Answer to the Exercises
Index 全P241


63 :maximan:02/07/14 22:45
>>62
contentsまでありがとうございました。
参考にしたいとおもいます。


64 :maximan:02/07/15 02:26
次の問題を解け。
(問)生産技術x=K^(alpha)*L^(beta)を有する企業Aがある。この企業Aの費用最小化問題をラグランジュの未定乗数法を用いてMAXIMAで解け。
以上の問題を数式で表現すれば以下のようになる。
(ここで、x:生産量、L:生産要素(労働)、K:生産要素(資本)、w:Lの価格、r:Kの価格、cost:費用である。)
min cost=w*L+r*K
s.t. x=K^(alpha)*L^(beta)
MAXIMAプログラム:
(C1) cost:w*L+r*K$
(C2) constraint:x-K^alpha*L^beta$
(C3) mincost:cost+lambda*constraint$
(C4) FOC1:diff(mincost,K)$
(C5) FOC2:diff(mincost,L)$
(C6) FOC3:diff(mincost,lambda)$
(C7) solve([FOC1=0,FOC2=0,FOC3=0],[lambda,K,L]);
(D7) []

??? 解けませんねー。ここで選択変数K,Lの最適解を求めるにはどのような工夫をすればいいのでしょうか。どなたかご教示ください。
ちなみに、
K=(alpha*w/beta*r)^(beta/(alpha+beta))*x^(1/(alpha+beta),
L=(beta*r/alpha*w)^(alpha/(alpha+beta))*x^(1/(alpha+beta).
min.costは略。


65 :あぼーん:あぼーん
あぼーん

66 :GO MAXIMA:02/07/15 17:27
>>64
以下のような理由でこの問題には数式処理による厳密さを保った解は表現しき
れないよいうちょっとむずな話です。
いまちょっと時間がないのですが これは 昨年の9月か10月ころ話題になった
のですが
(C1) solve(x^n -x^m,x);
(D1) [x^n = x^m]
とよくにています。 このとき nとmの場合分けの複雑さから 数式的には
ほとんど正しい解または解法はない。ということだったようです。
いまの問題に即していえば lambdaを消去して
(C30)algsys([beta*r*k-alph*w*l,x-k^alpha*l^beta],[k,l]);を解くことにな
るのですがとけません。alphを3として betaを5とした場合がとけるので結果は
(C43) algsys([3*r*k-5*w*l,x-k^5*l^3],[k,l]);
(D43) [[K = (SQRT(2)*125^(1/8)*%I+SQRT(2)*125^(1/8))*(w^3*x/r^3)^(1/8)
/(2*27^(1/8)),
L = (3*SQRT(2)*5^(3/8)*%I+3*SQRT(2)*5^(3/8))*r^(5/8)*x^(1/8)
/(10*3^(3/8)*w^(5/8))],
[K = 125^(1/8)*%I*(w^3*x/r^3)^(1/8)/27^(1/8),
L = 3*5^(3/8)*%I*r^(5/8)*x^(1/8)/(5*3^(3/8)*w^(5/8))],
[K = (SQRT(2)*125^(1/8)*%I-SQRT(2)*125^(1/8))*(w^3*x/r^3)^(1/8)
/(2*27^(1/8)),
L = (3*SQRT(2)*5^(3/8)*%I-3*SQRT(2)*5^(3/8))*r^(5/8)*x^(1/8)
/(10*3^(3/8)*w^(5/8))],
[K = -125^(1/8)*(w^3*x/r^3)^(1/8)/27^(1/8),
L = -3*5^(3/8)*r^(5/8)*x^(1/8)/(5*3^(3/8)*w^(5/8))],
[K = -(SQRT(2)*125^(1/8)*%I+SQRT(2)*125^(1/8))*(w^3*x/r^3)^(1/8)
/(2*27^(1/8)),
L = -(3*SQRT(2)*5^(3/8)*%I+3*SQRT(2)*5^(3/8))*r^(5/8)*x^(1/8)
/(10*3^(3/8)*w^(5/8))],
[K = -125^(1/8)*%I*(w^3*x/r^3)^(1/8)/27^(1/8),
L = -3*5^(3/8)*%I*r^(5/8)*x^(1/8)/(5*3^(3/8)*w^(5/8))],
[K = -(SQRT(2)*125^(1/8)*%I-SQRT(2)*125^(1/8))*(w^3*x/r^3)^(1/8)
/(2*27^(1/8)),
L = -(3*SQRT(2)*5^(3/8)*%I-3*SQRT(2)*5^(3/8))*r^(5/8)*x^(1/8)
/(10*3^(3/8)*w^(5/8))],
[K = 125^(1/8)*(w^3*x/r^3)^(1/8)/27^(1/8),
L = 3*5^(3/8)*r^(5/8)*x^(1/8)/(5*3^(3/8)*w^(5/8))]]
これでbetaを6とすると
(C49) algsys([6*r*k-3*w*l,x-k^3*l^6],[k,l]);
(D49) [[K = (SQRT(3)*%I-1)*w^(2/3)*x^(1/9)/(2*4^(1/3)*r^(2/3)),
L = (SQRT(3)*%I-1)*r^(1/3)*x^(1/9)/(2^(2/3)*w^(1/3))],
[K = -(SQRT(3)*%I+1)*w^(2/3)*x^(1/9)/(2*4^(1/3)*r^(2/3)),
L = -(SQRT(3)*%I+1)*r^(1/3)*x^(1/9)/(2^(2/3)*w^(1/3))],
[K = w^(2/3)*x^(1/9)/(4^(1/3)*r^(2/3)),
L = 2*r^(1/3)*x^(1/9)/(2^(2/3)*w^(1/3))]]
つまりもし数式的に解けると仮定すると この単純な2つのalph betaにたいし
てさえ 解の個数つまり表現形がことなるので 場合分けが必要ですね。
では 一般のalphとbetaのとき どれだけ 場合わけしてしめしたらよいのでしょ
うか? ということで不可能としているのです。
ただし 実用上は 他の数式処理システムのように 厳密性に目をつぶって
えいやーとひとつの解をほしいときもあります。この場合もそれにあたるでしょ
う。こんなときは ほしい解の正当性をじぶんが 保証できる場合にあたり
mmmsolveとかいう名前でsolveの関数を書かなければいけません。

67 :あぼーん:あぼーん
あぼーん

68 :maximan:02/07/16 18:11
>>66
消化にはもう少しばかり時間が要りそうです。そこで2、3質問ですが、

(C) is(x^(1/3)*x^(1/3)=(x*x)^(1/3));
(D) TRUE
なのに、
(C) is(x^(1/2)*x^(1/2)=(x*x)^(1/2));
(D) FAULSE
となるのは、何故でしょうか?sqrt(x)をx^(1/2)とMAXIMAに扱わせたりできないのでしょうか。
それと、「これは 昨年の9月か10月ころ話題になった」そうですが、何処で話題になったのでしょうか?MAXIMA MLですか、それともsci.math.symbolicmathのnewsgroupでしょうか。
最後に、sci.math.symbolicmathのnewsgroupって、どこをたどっていけば講読できるのでしょうか?


69 :GO MAXIMA:02/07/16 19:20
えーと最初の問題についてはもう 気づいておられると思いますが

(C2) is(x^(1/2)*x^(1/2)=x);
(D2) TRUE
(C3) is((x*x)^(1/2)=x);
(D3) FALSE
C3の(x*x)=(-x*(-x))ですからね。このへんは受験生のほうが詳しいかも。
(C5) assume(x>0);
(D25) [x > 0]
(C26) is((x*x)^(1/2)=x);
(D26) TRUE

MAXIMAのメーリングリストです。8月かも、なんかおかしな大学の教官が
乱入してきて 皆あきれていたが さすが皆は親切でしたね。

>sci.math.symbolicmathのnewsgroupって、どこをたどっていけば講読でき
るのでしょうか?
今は http://www.Google.co.jp/ の画面上の グループをクリック
sci.応用科学.社会科学 をクリック
sci.math*をクリックしてsci.math.symbolicをクリック
ここから検索も投稿もできます。ただし 投稿はspamにさらされる可能性が
高いらしく私は友人のアドバイスに従って投稿は控えています。
このGoogleサイトのお蔭で(高速です。) 、購読する必要は無くなっていると
思います。特にグループ内検索は便利ですよ、90年以前のでもとってきますか
ら。


70 :GO MAXIMA:02/07/16 19:26
えーと最初の問題についてはもう 気づいておられると思いますが
(C2) is(x^(1/2)*x^(1/2)=x);
(D2) TRUE
(C3) is((x*x)^(1/2)=x);
(D3) FALSE
C3の(x*x)=(-x*(-x))ですからね。このへんは受験生のほうが詳しいかも。
(C5) assume(x>0);
(D25) [x > 0]
(C26) is((x*x)^(1/2)=x);
(D26) TRUE

MAXIMAのメーリングリストです。8月かも、なんかおかしな大学の教官が
乱入してきて 皆あきれていたが さすが皆は親切でしたね。

>sci.math.symbolicmathのnewsgroupって、どこをたどっていけば講読でき
るのでしょうか?
今は http://www.Google.co.jp/ の画面上の グループをクリック
sci.応用科学.社会科学 をクリック
sci.math*をクリックしてsci.math.symbolicをクリック
ここから検索も投稿もできます。ただし 投稿はspamにさらされる可能性が
高いらしく私は友人のアドバイスに従って投稿は控えています。
このGoogleサイトのお蔭で(高速です。) 、購読する必要は無くなっていると
思います。特にグループ内検索は便利ですよ、90年以前のでもとってきますか
ら。

71 :GO MAXIMA:02/07/16 21:51
えーと最初の問題についてはもう 気づいておられると思いますが
(C2) is(x^(1/2)*x^(1/2)=x);
(D2) TRUE
(C3) is((x*x)^(1/2)=x);
(D3) FALSE
C3の(x*x)=(-x*(-x))ですからね。このへんは受験生のほうが詳しいかも。
(C5) assume(x>0);
(D25) [x > 0]
(C26) is((x*x)^(1/2)=x);
(D26) TRUE

MAXIMAのメーリングリストです。8月かも、なんかおかしな大学の教官が
乱入してきて 皆あきれていたが さすが皆は親切でしたね。

sci.math.symbolicmathのnewsgroupって、どこをたどっていけば講読でき
るのでしょうか?
今は http://www.Google.co.jp/ の画面上の グループをクリック
sci.応用科学.社会科学 をクリック
sci.math*をクリックしてsci.math.symbolicをクリック
ここから検索も投稿もできます。ただし 投稿はspamにさらされる可能性が
高いらしく私は友人のアドバイスに従って投稿は控えています。
このGoogleサイトのお蔭で(高速です。) 、購読する必要は無くなっていると
思います。特にグループ内検索は便利ですよ、90年以前のでもとってきますか
ら。


72 :あぼーん:あぼーん
あぼーん

73 :maximan:02/07/16 23:54
>>69
ご回答、感謝いたします。
そうか、assume()を使えばいいんですよね。それにMAXIMAはsqrt(x)をx^(1/2)として扱っているって、manualをよくよく読むと書いてありました。しかも、
SQRTDISPFLAG:FALSE;
とすれば、x^(1/2)の形で表示されるとのことでした。
googleはいつも頻繁に使っていたのですがグループの検索なるものは使った試しがありませんでした。
情報提供ありがとうございました。


74 :名無しさん@1周年:02/07/18 04:06
W。シェルツァー氏はどういう原因で亡くなったのか、ご存知ですか?

Linuxに最初からMaximaがバンドルされると、多少はインパクトがあるかも。

75 :GO MAXIMA:02/07/18 09:57
>>74
一説によると ロシアに 再婚のための 結婚式に出席していて
心臓麻痺でということらしいです。まあ残念でしたが かなり
歳 くってから 若い娘と再婚を 考えるくらい馬力が あった
ということなんでしょう。

76 :GO MAXIMA:02/07/19 03:34
第6章 演算規則の生成
A + Bの +のように変数AとBの 間にあるOperatorを Infix Operator
DF(F、X)の DFのように 変数の前にあるOperatorを Prefix Operator
その他後置(postfix)や unary やmatchfixを追加することや取り除くこと再定
義することが可能である。
広田によれば "数式処理を勉強や研究にうまく利用できるかどうかは演算規則
の生成のやりかた次第である。ここを通過すると楽になる。" そうです。
=======================================================================
例題6.1
スカラー関数Vの勾配Grad V 、ベクトル関数F の発散Div F と回転Rot Fの計
算規則を作り次の等式を 確かめよ。
(1) Rot Grad V=0
(2) Div Rot F=0
========================================================================
Operatorの定義のやりやすさは reduceのほうがやりやすいかもしれない。
本体の定義の前に 演算子の強さについての宣言、名前の宣言が必要。
(C1) prefix("Grad",142,expr,expr);
(D1) "GRAD"
(C2) prefix("Div",142,expr,expr);
(D2) "DIV"
(C3) prefix("Rot",142,expr,expr);
(D3) "ROT"
次に中味を用意する。
(C4) "Grad"(_v):=block([uu1,uu2,uu3],uu1:diff(_v,x),uu2:diff(_v,y),uu3:diff(_v,z),return([uu1,uu2,uu3]))$
(C5) depends(f,[x,y,z]);
(D5) [f(x, y, z)]
(C6) grad f;
df df df
(D6) [--, --, --]
dx dy dz
(C7) grad (z*sin(x*y));
(D7) [y COS(x y) z, x COS(x y) z, SIN(x y)]
となりおおむねうまくいっているのが分かる。(C5)のdependsはfが x,y,zの関
数であることを宣言するもので記号微分のときは再々でてくる。これで具体的
に関数型を指定しなくともchainルールにしたがって微分ができるので便利。
もちろん (C7)のように具体型を与えても計算できる。


77 :GO MAXIMA:02/07/19 03:35
(C8) "Div"(_v1):=block([uu],uu:diff(_v1[1],x)+diff(_v1[2],y)+diff(_v1[3],z))$
(C9) div (D6);
2 2 2
d f d f d f
(D9) --- + --- + ---
2 2 2
dz dy dx
(C6)の(D6)は D6の内容を指定できるので便利である。ただD6という変数を使
いたいときはkill(D6)としてからしか使えないので注意。
(C10) div (D7);
2 2
(D10) - y SIN(x y) z - x SIN(x y) z

(C11) "Rot" (_v2):=block([uu1,uu2,uu3],uu1:diff(_v2[3],y)-diff(_v2[2],z),uu2:diff(_v2[1],z)-diff(_v2[3],x),uu3:diff(_v2[2],x)-diff(_v2[1],y),return([uu1,uu2,uu3]))$

(C12) rot ([f,f,f]);
df df df df df df
(D12) [-- - --, -- - --, -- - --]
dy dz dz dx dx dy
以上の準備のもとで (1)は
簡単に
(C13) rot (grad f);
(D13)[0, 0, 0]
(2)は 一般にgとhもx、y、zの関数としておく
(C14) depends(g,[x,y,z])$
(C15) depends(h,[x,y,z])$
(C16) div (rot [f,g,h]);
(D16) 0
以上 ▽演算子を定義しておけば div F =▽.F,rot F=▽XF でこれらの2つの微
分はCifford代数の枠で扱ったほうが判りやすいだろうが今はこれまで。

78 :GO MAXIMA:02/07/19 03:36
例題6.2
r=(x^2+y^2+z^2)^(1/2),p=[x,y,z]のとき
grad (r^n)= n*r^(n-2)*p であることをしめせ
========================================================================
(C17) r=(x^2+y^2+z^2)^(1/2)$
(C18) grad (r^n) -n*r^(n-2)*[x,y,z];
n - 2
-----
2 2 2 n/2 - 1 2 2 2 2
(D18) [n x (z + y + x ) - n x (z + y + x ) ,

n - 2
-----
2 2 2 n/2 - 1 2 2 2 2
n y (z + y + x ) - n y (z + y + x ) ,

n - 2
-----
2 2 2 n/2 - 1 2 2 2 2
n z (z + y + x ) - n z (z + y + x ) ]
(C19) ratsimp(%);
(D19) [0, 0, 0]
前置演算子であっても 演算子の作用範囲を明示するために()が必要なときが
あるがこの場合がそれにあたる。grad r^nと grad (r^n)は意味が異る。この
場合は後者でなければならない。
演習6.1
Div [x,y,z] =3 をしめせ。

演習6.2
Div (grad (r^(-1)))= 0 を確かめよ。

79 :GO MAXIMA:02/07/19 03:38
例題6.6
波動方程式
diff(u(x,y),x,2)+2*cos(x)*diff(u(x,y),x,1,y,1)-sin(x)^2*diff(u(x,y),x,2)-sin(x)*diff(u(x,y),y)=0
の 一般解はf、gを任意関数を
u(x,y)=f(x+sin(x)-y)+g(x-sin(x)+y)で 与えられるこれを確かめよ。
元の方程式は線形だからf(x+sin(x)-y) とf(x-sin(x)+y)を別々に確かめれば
よい。
================================================================================
微分のchainルールが 関数f(x,y)が具体的に与えられないときでも使えるのが
maximaの売りのひとつなのだが あくまで名詞的にすべてが 抽象的な変数の場
合に限るのであって 動詞的(つまり具体的)に与えられたものと混在するとき
は面倒な手順を踏む必要があり初心者向きではない。diff(f(x^2),x,1)などで
もx^2が具体形であるために スムーズに計算できない。このへんは私も
Clifford algebra での微分の計算のために調べているのだが 、なんとかBUG
ありながら MLのWillisb さんが pdiff.lispとして 提供してくださったのを
利用する。ほぼ正しく動作するようだが既存のものとのかみ合わせがもうひと
つか?
http://www.math.utexas.edu/pipermail/maxima/2002/002387.html
これのlispのコードだけを1つのファイルにいれてpdiff.lispとする。
(C1) load("pdiff.lisp")$
(C2) qput(f,true,pderiv)$
(C3) display2d:false$
(C4) diff(f(x),x);
(D5) PDERIVOP(f,1)(x)
これでは 判りにくいので
(C6) display2d:true$
(C7) diff(f(x),x);
(D7) f(x)
; (1)
これでまあ意味は判るだろう。念のため
(C8) diff(f(x^2),x);
(D8) 2xf (x^2)
; (1)


80 :GO MAXIMA:02/07/19 03:39
(C9) diff(f(x+sin(x)-y),x,2)$ ここから数行は実際には表示させて確認して
いる掲示板上で2D表現が でないのでこうした。
(C10) diff(f(x+sin(x)-y),x,1,y,1)$
(C11) diff(f(x+sin(x)-y),y,2)$
(C12) diff(f(x+sin(x)-y),y,1)$
これらを波動方程式に代入する。
(C13) d9+2*cos(x)*d10-sin(x)^2*d11 -sin(x)*d12;

2 2
(D13) - SIN (x) f (- y + SIN(x) + x) + (COS(x) + 1) f (- y + SIN(x) + x)
(2) (2)

- 2 COS(x) (COS(x) + 1) f (- y + SIN(x) + x)
(2)
(C14) ratsimp(%);
2 2
(D14) (- SIN (x) - COS (x) + 1) f (- y + SIN(x) + x)
(2)
板ではちょっと見ずらいかもしれないが
(-sin(x)^2-cos(x)^2+1)が係数だから当然0
(C15) trigsimp(%);
(D15) 0 残りf(x-sin(x)+y)が 解であることも同様に示せる。

演習6.7
x^2*diff(u,x,2)-y^2*diff(u,y,2)=0の一般解はf、gを任意の関数として
u(x,y)=f(xy)+(xy)^(1/2)g(y/x)となることを示せ。

pdiffはボスのFateman氏の意見で採用にならないみたいだが 此邊の応用には
必須なので 使ったらよい。個別の応用分野で このようなことはよくあること
のようだ。


81 :名無しさん@1周年:02/07/26 14:36
apt-get で、MAXIMAのパッケージを導入するのはどうやればいいの?

82 :ギャルギャル集合:02/07/26 15:32
http://fry.to/ft25ffg/

http://fry.to/zollp25/

 携帯対応

男性より女性の書き込み多し
女性性65%男性35%割合です
穴場的サイトです。
幼い中高生直アポ直電
OL〜熟女迄の出会い
 聞ける穴場サイトです
 

83 :GO MAXIMA:02/07/26 23:15
debianの場合でしたら
これを参照してください MLのsynthepian@uol.com.br さんによると
http://www.ma.utexas.edu/pipermail/maxima/2002/001526.html

/etc/apt/sources.listに deb-srcのサイトを追加してから

apt-get update
apt-get upgrade
fakeroot apt-get -q -b source maxima


84 :GO MAXIMA:02/07/27 01:31
>>maximanさんへ
補足です。
algsys.lispが 代数的に連立方程式を解くための関数が まとめられている
ファイルです。自分用のsolve関数を書くための hackingの参考になること
を少し書きます。この手のソースの解説がでまわるのは数年以上先になるはず
でそんなに待っていられないし、shelterさん亡き後 解説できるのはFateman
さん Willisb(Barton)さん他数人にすぎず、研究にも忙しいから出ない可能性
もある。ということで 自力しかない。はじめに だれでもできるprint スタイ
ルのやり方をおこなう。特にLISPに詳しい必要がないのがこの方法の良い点だ
ろう。勿論手をいれる段階では より詳しい知識が必要だが それでもGCLにつ
いては 岩波書店 Common Lisp 入門 湯浅太一.萩谷昌己 著 で十分だったり
する。不思議と今でもよく売れていると見えて大きな本屋には必ずある。
これと Paradigms of Artificial Intelligence Programming:Case Studies
in Common Lisp Peter Norvig著 MORGAN KAUFMANN との差が彼我の実力の
差であるが これからの人によって乗り越えられることを望む。

Commn Lisp 入門 のP268にあるように組込みのスペシャル変数*features*は
LISPシステムでその特質をあらわす記号が リストでくくられている。
そのリストの最後にDEBUG1という記号を追加して*features*にこれがあるとき
だけ print文を実行させるようにする。要するにCのスタイル。
#+debug1 (print 見たい変数)でよいのです。
そのため 次ぎの1行をalgsys.lispの はじめの方に加えておきます。
(setq *features* (reverse (cons 'DEBUG1 (reverse *features*))))
algsysの本体はマクロ関数(defmfun $algsys (lhslist varxlist &aux
varlist genvar)で$algsysのように$ではじまる関数は インタープリタから
(C30)algsys([beta*r*k-alph*w*l,x-k^alpha*l^beta],[k,l]); >>66
などと使える。あ忘れていましたが algsys.lispはソースのdirから自分の
作業するdirにコピーしてこれに手をいれます。(C32)load("algsys.lisp")$
とすることで変更したalgsysがその場で使えます。変更してloadしてのくり返
しで中味に迫るわけです。

ここで肝心の連立方程式はlhslistで[beta*r*k-alph*w*l,x-k^alpha*l^beta]
の内部表現はソースの
(defmfun $algsys (lhslist varxlist &aux varlist genvar)
; (declare (special varxlist)) ;;??
(setq $%rnum_list (list '(mlist)))
ここに#+debug1 (print lhslist)をいれて
(cond ((not ($listp lhslist))
。。。。。。。。。。。。。。
(C32)load("algsys.lisp")$
(C33)algsys([beta*r*k-alph*w*l,x-k^alpha*l^beta],[k,l]);とすれば
((MLIST SIMP)
((MPLUS SIMP) ((MTIMES SIMP) |$beta1| |$k| |$r|)
((MTIMES SIMP) -1 |$alph| |$l| |$w|))
((MPLUS SIMP)
((MTIMES SIMP) -1 ((MEXPT SIMP) |$k| |$alpha|)
((MEXPT SIMP) |$l| |$beta1|))
|$x|))
となりlhslistのひとつの内部表現がえられた。
次ぎに続く lambda式のなかで
lambdaの基本形は(lambda (x) (* x x)) このxにあたる
lambdaの変数は (tlhslist *tvarxlist* solnlist $ratprint $ratepsilon
$keepfloat varlist genvar $ratfac $breakup
$solvefactors *roots *failures *ivar* $polyfactor
varxl $infeval $numer $float numerflg)
こんなにあるがスペシャル変数で他で定義されているものも多い。
ここではvarxl、tlhslist、*tvarxlist*が決められている。
各setqの()のあとにprintを入れて上と同じことをくり返す。

85 :GO MAXIMA:02/07/27 01:32
続きです
#+debug1 (print varxl)
varxlは シンボルで 定数でないもの という事のはずだが
(|$x| |$alpha| |$w| |$l| |$alph| |$r| |$k| |$beta1|)
と全部のシンボルが入っている。

#+debug1 (print tlhslist)
このtlhslistは意味不明じゃなくて 正準表現(CRE)
canonical rational expression つまり多項式(有理式)の標準形だ。
((#:|k1393| 1 (#:|r1396| 1 (#:|beta11395| 1 1)) 0
(#:|l1392| 1 (#:|w1397| 1 (#:|alph1394| 1 -1))))
(#:|x1400| 1 1 0 (#:|l^beta11399| 1 (#:|k^alpha1398| 1 -1))))
lhslistを書き直したものただし微妙にやばそうなにおいがする。
#+debug1 (print *ivar*)
これは単に1つの虚数記号の内部表現
#:%I1401
#+debug1 (print *tvarxlist*)
ほんとの変数リストの意味だろう、つまりこれについて処理する。
(#:|k1393| #:|l1392|)

alpha 6、beta1 3の解ける場合と比較するとalgsysが何を嫌がって
いるのか判る。やはりtlhslistに問題があるようだ。printスタイルの
デバッグの良い点のもう1つの良い点は元の動作に障らないことがある。
(C49) algsys([6*r*k-3*w*l,x-k^3*l^6],[k,l]);としてtlhslistを見て
みると
((#:|k1519| 1 (#:|r1520| 1 3) 0 (#:|l1518| 1 (#:|w1521| 1 -6)))
(#:|k1519| 6 (#:|l1518| 3 -1) 0 (#:|x1522| 1 1)))
これはきれいに*tvarxlist*の多項式に表現されている。
だが 前の例では 変数は#:|l^beta11399|と#:|l1392|が区別されている。
あ#:|l1392|の1392は内部の識別番号で 全体で変数lと考えてよいです。
そうすると#:|l^beta11399|はこれとは別の変数でこれをlについて解け
といわれて 嫌がっているといえるのではと推測できる。
これの対策は主に2通り考えられるだろう。CREに変換する関数を書き換えるか
あるいは このtlhslistが出力されたとき指数表現を 書き直すか?
前者は CREを使うすべてに影響を及ぼすので ふつうは だめ。ただし
別のsolve関数を書く時にその内部からだけ呼ばれる関数とすればよい。
さらに 別の解決方法もあるだろう。前の2つの方法だと 内部でalphaと
betaを整数と扱うことになり 結果の式にはそれが一般の数の様に表現
されることに抵抗のある人もいるだろう。だから実解1つだけ求めると
割り切れば 頭の中での極限操作で合理化できるみたいであってそれを
知っている人というか 正当性を確認できる自分用のsolveが必要なの
だろう。


86 : :02/07/27 03:49
いまどき、可読性の悪いLispでプログラミングをしなければ
システム拡張ができない、システムを理解できないというのでは
長期的にはまずいと思う。Javaかなにかで綺麗に作り直した
方がよいのではないかと思うが、どんなもんだろうか?

87 :GO MAXIMA:02/07/27 12:30
>>86
確かに 保守の観点ではそのとおり。
しかしlispのすごさは 単純ではない。例えばこれを見よ。
http://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
彼は 自分の本を(On LISP)まるごと公開していたりする。
まあ彼も25歳以上の人には勧めないといっているけどね、彼のいうことも一理
あるだろうね。C++のSTLは ほとんど LISPの機能の不完全な輸入だとおもうね。
もちろん 企業には適さないよ、だってほとんどドラゴンボールの世界だから
修業につぐ修業一度Paradigms of Artificial Intelligence Programming:Case Studies
in Common Lisp Peter Norvig著 MORGAN KAUFMANN を読んでみたら?
実力の世界ではなくて 実力差の世界。LISPでないものにうまく移植できたと
しても改変するには LISPより困難なことは 確実だとおもうね。
MAXIMAはLISPの上に 別のインタープリタ言語が動いているんだから
JAVAなんかにすると バイトマシーンのレベルを LISPが直接プログラム
していると言う意味があって 多分LISPのほうが簡単さ。それにLISPは
敷居が低い、ルールがすくて奥が深い 、まあ囲碁のようなものかな。
25歳以上の人には勧めないといっても精神年令の話だからね、数学屋には
ほとんど棺桶に足突込みながら 15くらいの精神年令のやからが多い。
それに 若い人にLISPもいじってもらいたくて書いてたりする。


88 :GO MAXIMA:02/07/29 01:19
6章の補足(重要 )
マニュアルによるとAPPLY1は 最初の規則をexprに失敗するまでくりかえし
作用させるとあるが これは正しくない。正しくは失敗するまでではなくて
ruleを適用しても変化がなくなるまでだ。実際次の例では 失敗するまで
くりかえしてスタックオーバフローするが、こういうのを回避する手段と
してAPPLY1が存在するのだ。
(C2) tellsimp(sin(a)^2,if (a=1) then sin(1)^2 else 1-cos(a)^2) ;
は動くはずだが a=1の時は スタックオーバフローとなる。tellsimpは
tellsimpafterもこの点では同じだが 自分の出力したものに 失敗するまで
つまり マッチングする限り適用をくり返す。これではa=1のとき ルールが
自分自身を返すようになっているからとまれない。
ルールを使用するのは研究段階で最もよくでっくわす局面であり、その時
ある条件では変型しないでスループットしその他のときは変型するという
情况は一番多いのではないかと推測できる。
これができないと やってられないので BYE MAXIMAとなるところか?
あるいはさあイモイ部分をを書き直そうとなるところであるがそうではない。
defruleとapply1やapplyb1で可能である。このときの肝がAPPLY1の動作で
この既述が 間違っているのはまずいだろう。
APPLY1(expr,rules)は 正しくはexprにruleを適用して変化がなくなるまで
applyすると言う意味だ。ruleは順番に適用される。
まさにこの点がぴったりだ、tellsimpではruleが再帰的に適用され止まらなく
なるという困難を回避できる。スループットの時は1回で変化がなくなるので
意図した動作ができる。matchdeclare(a,true)としておく
(C72) defrule(tama,sin(a)^2,if (a=1) then sin(1)^2 else 1-cos(a)^2);
(D72) tama : SIN(a)^2 -> (IF a = 1 THEN SIN(1)^2 ELSE 1 - COS(a)^2)
(C77) APPLY1(sin(1)^2,tama);
(D77) sin(1)^2
(C78) APPLY1(sin(-5)^2,tama);
(D78) 1-cos(5)^2


89 :GO MAXIMA:02/07/29 01:20
(続き)
ではまず簡単なclifford代数の計算例をだしにこの手のルールによる計算を示す。
http://groups.google.co.jp/groups?hl=ja&lr=&ie=UTF-8&inlang=ja&threadm=dzpqj3g%40lynx.unm.edu&rnum=8&prev=/groups%3Fhl%3Dja%26lr%3D%26ie%3DShift_JIS%26q%3Dclifford%2Balgebra%26btnG%3DGoogle%2B%258C%259F%258D%25F5%26meta%3Dgroup%253Dsci.math.symbolic
十年前のnewsgroupでの問題ここにはmathematicaやreduceやmacsyma(商用)の
解が載っているが この解はMAXIMAでは実行できないのでここに示す。
=========================================================================
Consider the Clifford algebra in 10 variables, that is the
complex algebra with ten generators, s0,...,s9 obeying
si sj + sj si = 0 if i is different from j
si si = 1
Compute (s0+s1+....+s9)^5
==========================================================================
MAXIMAによる解
(C1) matchdeclare([i,j],integerp)$
(C2) tellsimpafter(s[i]^^2,1)$
(C3) defrule(tama,s[i].s[j],if (i>j) then -s[j].s[i] else (if (i=j) then 1 else s[i].s[j]));
(D3) tama : s[i] . s[j] -> (IF i > j THEN - s[j] . s[i] ELSE s[i] . s[j] )
(C4) apply1(expand((sum(s[i],i,0,9))^^2),tama);
(D4) 10
(C7) apply1(sum(s[i],i,0,9).expand((sum(s[i],i,0,9))^^2).expand((sum(s[i],i,0,9))^^2),tama);
(D7) 100*(s[9]+s[8]+s[7]+s[6]+s[5]+s[4]+s[3]+s[2]+s[1]+s[0])

まとめ
スループットのないルールは tellsimpafterまたはtellsimpで書ける。無限適
用の可能性がなければ 条件もtellsimp(マッチ元、変更結果)の変更結果の部
分にかける。これが別解、これは商用のものとほとんど同じ。
(C3)の変わりに
(C3)tellsimpafter(s[i].s[j],if (i>j) then -s[j].s[i] else s[i].s[j]);
(D3) [".RULE1",?SIMPNCT]で
(C4) expand((sum(s[i],i,0,9))^^2);
(D4) 10
(C6) sum(s[i],i,0,9).expand((sum(s[i],i,0,9))^^2).expand((sum(s[i],i,0,9))^^2);
(D6) 100*(s[9]+s[8]+s[7]+s[6]+s[5]+s[4]+s[3]+s[2]+s[1]+s[0])
ただし一般に条件によってマッチ元と同じものを返さねばならないルールのと
きは defrule とapply1のスタイルがよい。
この例題はおもちゃであるが 似たような例は研究ではしばしばある。
3章のletとletsimpとともにこれらのマスターは仕事に使えるかどうかの大事
なところだろう。


90 :名無しさん@1周年:02/07/29 17:19
GO MAXIMA さん、がんばって下さい。
GNUですごいソフトウェアを見ると感動してしまいます。
Mathematicaも皮をはぐとLispまがいのが動いてたりしますよね。

91 :GO MAXIMA:02/08/07 23:53
reduceとは6章の演算子の定義の仕方があまりに違うのでもうすこし具体的に
おもちゃでない例をあげよう。ここを記述したものはほとんどないので
参考になるだろう。
外積代数 grassman algebra を導入する。
簡単のため3項の積までの計算をとりあげた。
@^で 外積演算子を表すとする。s[i]が直交基底とする。
動作例
(C1) load("outertest2.mac")$
(C2) display2d:false$
(C3) (a*s[0]+b*s[1]+c*s[2])@^(aa*s[0]+bb*s[1]+cc*s[2])@^(aa1*s[0]+bb1*s[1]+cc1*s[2]);
(D3) (a*s[0]+b*s[1]+c*s[2]) @^ (aa*s[0]+bb*s[1]+cc*s[2])
@^ (aa1*s[0]+bb1*s[1]+cc1*s[2])
(C4) outersimp(%);
(D4) s[0] @^ s[1] @^ s[2]*a*bb*cc1-s[0] @^ s[1] @^ s[2]*aa*b*cc1
-s[0] @^ s[1] @^ s[2]*a*bb1*cc
+s[0] @^ s[1] @^ s[2]*aa1*b*cc
+s[0] @^ s[1] @^ s[2]*aa*bb1*c
-s[0] @^ s[1] @^ s[2]*aa1*bb*c
(C5) factor(%);
(D5) s[0] @^ s[1] @^ s[2]*(a*bb*cc1-aa*b*cc1-a*bb1*cc+aa1*b*cc+aa*bb1*c
-aa1*bb*c)
検算を行ってみる。
(C6) p1:matrix([a,b,c],[aa,bb,cc],[aa1,bb1,cc1])$
(C7) determinant(p1);
(D7) a*(bb*cc1-bb1*cc)-b*(aa*cc1-aa1*cc)+(aa*bb1-aa1*bb)*c
数式処理システム上で演算がのるということは 数式処理の持っている
いろんな機能が使えるということでメリットは 計り知れない。
この外積代数に付け加えれば 微分形式や ベレジン積分(Berezin integra)を
導入することもできるだろう。


92 :GO MAXIMA:02/08/07 23:54
ではプログラムの説明をします。maximaでのルールbaseの使い方を説明した文
書は非常に少ないので参考になるようにしたいと思います。
maximaでの ルールの定義の方法はtellsimp,tellsimpafter,lettと letsimp,
defrule とapply族、関数で書くといろいろあるが重要なのは 前回説明したよ
うにdefrule apply1でないと書けないものがあると云う事の認識だろう。
infix("@^");で演算子を定義する。
matchdeclare([i,j,k],integerp)$
matchdeclare([x,y,z],true)$は x,y,zは 何にでもマッチすると言う意味。
ただし(x+y)@^z で (a+b)@^cとマッチさせるとx=a+bでy=0 z=cとなってしまう。
これを緩和するにはfreeofを使える。
matchdeclare([_a,_b,_c],freeof(s[i],s[j],s[k]))$で_aは s[i],s[j],s[k]
を含まないものに マッチする。

肝は defrule のoutersimp1であってこれは let文でも tellsimpafter文でも
関数定義でもどれでも書くことができない。(書けるが 動作しない。)
マッチ後の 書き変えの文中の_s:_s+ pu @^ pupu の@^が マッチのx@^yと
マッチして再帰してしまい止まらない。英文のマニュアルが間違っていて
apply1も同じにみえるが 実は前回述べたように apply1では 変化がなければ
1回で止まってくれるので定義できるのだ。
outersimp1は @^の分配法則を定義しているのであって 他の自分の定義した
演算子に分配法則を定義したいときにも使えるので、LISPで拡張した関数
tonton(x)を使った。これはaho1.lispにはいっている。ファイル名は ざーと
書いて推敲していないのでこういう名前になっている。
tonton(x)は xを 内部表現したリストがでMPLUS(+のこと)を含むときは1
含まないときは0を返す関数である。
tellsimpafterは 自動的に実行されるので 定義を付け加えるときに 循環して
いておかしい場合は 注意してくれることもある。
とにかく いろいろ付け加えたり削ったりしていじれば ルールの書方がわかる
と思うね。
もう1つのLISPで定義した関数 pmcount(LIST)は LISTが 置換を表すとき
互換の積として最小何個で書けるかを返す関数であるが 力みすぎか?


93 :GO MAXIMA:02/08/07 23:55
以下のものを outertest2.macとして 作業dirにおく
呼び出しは load("outertest2.mac")$
==========================================================================
load("aho1.lisp")$
infix("@^");
matchdeclare([i,j,k],integerp)$
matchdeclare([_a,_b,_c],freeof(s[i],s[j],s[k]))$
matchdeclare([x,y,z],true)$

tellsimpafter(s[i] @^ s[i],0)$
tellsimpafter(s[i] @^ s[j],if (i>j) then -s[j] @^ s[i] )$
tellsimpafter(s[i]@^(s[j]+s[k]),s[i]@^s[j] + s[i]@^s[k]) $
tellsimpafter((s[i]+s[j])@^s[k],s[i]@^s[k] + s[j]@^s[k]) $
tellsimpafter((_a*s[j])@^s[k],_a*(s[j]@^s[k]))$
tellsimpafter(s[j]@^(_a*s[k]),_a*(s[j]@^s[k]))$
tellsimpafter((_b*s[j])@^(_a*s[k]),_b*_a*(s[j]@^s[k]));
tellsimpafter((_a*(s[i]@^s[j]))@^(_c*s[k]),_a*_c*(s[i]@^s[j]@^s[k]));
tellsimpafter((_a*s[i])@^(_b*s[j])@^(_c*s[k]),_a*_b*_c*(s[i]@^s[j]@^s[k]))$

defrule(outersimp1,x@^y ,block([tama,tama2,_s],_s:0,
if tonton(x)= 0 then (tama:x)else( tama:maplist(part,x),print("O")),
if tonton(y)=0 then tama2:y else tama2:maplist(part,y),
if not listp(x) then tama:[tama],
if not listp(y) then tama2:[tama2],
for pu in tama do (
for pupu in tama2 do (
_s:_s+ pu @^ pupu
)),_s));

defrule(outersimp2,x@^y@^z,block([_u],_u:outersimp(x@^y),_u@^z));
defrule(outersimp3,s[i]@^s[j]@^s[k],block( [_q,_q2],if (i=j or j=k or k=i) then 0
else (_q:pmcount([i,j,k]), q2:sort([i,j,k]),(-1)^_q *(s[q2[1]]@^s[q2[2]]@^s[q2[3]]))));
outersimp(_expr):= apply1(_expr,outersimp2,outersimp1,outersimp3);



94 :GO MAXIMA:02/08/07 23:56
れがLISPの関数 ざーと書いたので推敲されていないところがある。
前にも紹介した岩波のCommon Lisp 入門で 十分であることを再確認できた。
座右に是非1冊 置いておくべきだろうね。
以下をファイルaho1.lispにいれて作業dirに置く。
============================================================================
;;; -*- Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;

(in-package "MAXIMA")

;;formが MPLUSを持っていなければ false 持っていれば trueを返す
(defun $tonton (form)
;; (print form)
(ismplus (flatten1 form))
)

;;listをflatにする。これは Paul GrahamのOn Lispによる
(defun flatten1 (x)
(labels ((rec (x acc)
(cond ((null x) acc)
((atom x) (cons x acc))
(t (rec (car x) (rec (cdr x) acc))))))
(rec x nil)))

(defun ismplus (flattenlist)
;;;;(print flattenlist)
(if (null flattenlist)
0
(cond ((equal 'MPLUS (car flattenlist)) (return-from ismplus 1))
(t (ismplus (cdr flattenlist ))))))

;;置換が 偶置換のとき偶数を 奇置換のとき奇数を返す
(defun $pmcount (form)
(let* ((form2 (mapcar #'(lambda (x) (+ x 1)) (cdr form)))
(form3 (sort form2 #'<))
(form4 (mapcar #'- (mapcar #'(lambda (x) (+ x 1)) (cdr form)) form3)))
(print form4)
(kankan (remove-if #'zerop form4)))
)

;;力みすぎか?
;;

(defun kankan (form)
(let ((cnum 0)
(lnum (length form)))
(labels ((ctest (x y tama)
(remove-if #'(lambda (xx) (if (and (= xx y) (= tama 0))
(incf tama))) x))
(count (x)
(if (null x)
(cond ((= lnum (* 2 cnum)) cnum)
(t (- lnum cnum 1)))
(cond ((equal 'NIL (find (* -1 (car x)) (cdr x)))
(count (cdr x)))
(t (incf cnum)
(count (ctest (cdr x) (* -1 (car x)) 0))

)))))
(count form))))


95 :GO MAXIMA:02/08/10 15:49
この$pmcountと kankanは リストの長さが6以上では誤った互換数を返してし
まう例がある。5以下では大丈夫だが アルゴリズムの間違いでスマン。
正しくは 巡回置換の積に分解して から互換の数を数えるオーソドックスな方
法で計算する。以下のとおり aho1.lispの$pmcountとkankanは これと入れ換
えてほしい。ついでに 巡回置換の積のリストを返す正しい関数$prodcycも付
けておいた。
(defun $pmcount (form)
(let ((tform (sort (copy-list (cdr form)) #'<))
(rtform nil))
(dolist ( element (cdr form))
(setf rtform (cons (position element tform) rtform))
)
(apply #'+ (mapcar #'(lambda (x) (- (length x) 1))(kankan (reverse rtform))))))

(defun kankan (form)
(labels ((onecyc (fform klist)
( if (equal klist 'nil) (setf klist (cons (apply #'max fform) klist)))
(let ((fform2 (coerce (copy-list fform) 'vector)))
(cond ((equal 'NIL (find (aref fform2 (car klist)) klist))
(onecyc fform (cons (aref fform2 (car klist)) klist)))
(t (reverse klist)))))
;;replace all element by 0 at list1 if corresponding to element of list2
(ctest2 (list1 list2)
(dolist (element list2)
(setf list1 (mapcar #'(lambda (xx) (if (equal element xx) '0 xx)) list1)))
list1 )
;;main procedure
(prodcyc (fform klist2)
(let ((klist3 nil))
(cond ((equal nil (remove-if #'(lambda (xx) (if (equal 0 xx) t)) (copy-list fform)))
klist2)
(t
(setf klist3 (onecyc fform nil))
(setf fform (ctest2 fform klist3))
(setf klist2 (cons klist3 klist2))
;;(print form)
(prodcyc fform klist2))))))
(prodcyc form nil)))

;;巡回置換の積のリストを返す 参考まで 但(0)があるときは省略される
;;interpreterからLISPへは formは自動変換してくれるが LISPの出力で
;;maximaの組込みのデータ型を返すときは整形しないといけない。
;;最後の1行はlispなら (kankan (reverse rtform)))でよい。
(defun $prodcyc (form)
(let ((tform (sort (copy-list (cdr form)) #'<))
(rtform nil))
(dolist ( element (cdr form))
(setf rtform (cons (position element tform) rtform))
)
;;; (cons '(MLIST SIMP) (kankan (reverse rtform)))))
(cons '(mlist simp)(mapcar #'(lambda (x) (cons '(mlist simp) x)) (kankan (reverse rtform))))))


96 :GO MAXIMA:02/08/10 15:53
あまり言訳するのも 政治家みたいであるが、つまり恥ずかしい存在なわけね。
このへんは 錯覚しやすいところで macsyma for statisticiansの p80か
ら 81にかけての 置換を巡回置換に分解する関数prodcycsも 確信犯的に間違っ
ている。prodcycs([1,5,2,4,3]) に失敗する。これはアルゴリズムの間違い。
市販の数学の本としては珍しい。今は訂正されているかも知れないが?(1991版
ではまだ訂正されていない)

(C2) onecyc(p):=block([c,k],c:[apply(max,p)],k:apply(max,p),repeat ,if member(part(p,k),c) then return(c),c:endcons(part(p,k),c),k:part(p,k),go(repeat))$
(C3) onecyc([1,5,2,4,3]);
(D3) [5, 3, 2]
(C8) exclude(lis1,lis2):= if lis1=[] then lis2 else exclude(rest(lis1,1),delete(first(lis1),lis2))$
(C9) prodcycs(p):=if p=[] then [] else cons(onecyc(p),prodcycs(exclude(onecyc(p),p)))$
(C10) prodcycs([3,1,2,5,4]);
(D10) [[5, 4], [3, 2, 1]]
(C11) prodcycs([1,5,2,4,3]) はエラーになる
改訂版のaho1.lispを使って
(C12) load("aho1.lisp")$
(C13) prodcyc([0,4,1,3,2]);
(D13) [[3], [4, 2, 1]]
でOK

97 :コギャルとHな出会い:02/08/10 16:09
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
                  
おこずかいの欲しい女の子もたくさん来てね!!

全国デ−トスポット情報も有ります

98 :GO MAXIMA:02/08/11 00:23
第7章 COEFF 係数探策
reduceのCOEFFと違って maximaのcoeffは全部をリストにまとめてはくれない。
同様のものがほしければ 、hipow(expr,var)で最高次数を確認してループで
コンスアップする必要がある。 maximaのほうが 初歩的でよいからLISPのこと
を知っておいた方が 使いやすいかもしれない。(たぶん絶体に)
(C26) coeff(2*a*tan(x)+1,tan(x),1);
(D26) 2 a
というようにも使えるのでリストででないから 使いものにならないというわ
けではありません。
=========================================================================
例題 7.1
ベルヌーイ (Bernoulli)多項式 B[n] (x)は、母関数
z*exp(xz)/(exp(z)-1)= sum(B[n](x)z^n/n!,n,0,inf)
で定義される。n=0,1,2,3,4について B[n] (x)を求めよ。
=========================================================================
展開式
1/(1+y)=sum((-y)^i,i,0,inf),abs(y)<1であることを利用して
z/(exp(z)-1)=z/(z+z^2/2!+z^3/3!+....)
=1/(1+z/2!+z^2/3!+....)
=1-(z/2!+z^2/3!+..)+(z/2!+z^2/3!+..)^2-(..)^3+..
これとexp(xz)=1+xz+(xz)^2/2!+....をかけてzの式としてまとめれば
Generating Function (母関数)が求まる。
z/(exp(z)-1)は maximaではTaylor展開を利用しても良い。
ちょっと確認してみよう。
(C2) taylor(z/(exp(z)-1),z,0,6);
(D2) 1-z/2+z^2/12-z^4/720+z^6/30240
(C3) let(z^7,0);
display2dをfalseに設定していると この結果は見にくい。
(D3) ?MTEXT(z^7,?\ \-\-\>\ ,0)
display2d:trueなら
7
(D3) z --> 0 とかなり見やすくなる。
(C5) s1:sum(z^i/(i+1)!,i,1,6);
(D5) z^6/5040+z^5/720+z^4/120+z^3/24+z^2/6+z/2
(C6) letsimp(1-s1+s1^2-s1^3+s1^4-s1^5+s1^6);
(D6) (542002677350400000*z^6 - 22764112448716800000*z^4
+ 1365846746923008000000*z^2 - 8195080481538048000000*z
+ 16390160963076096000000)/16390160963076096000000
これでtaylorの結果と同じはず
(C7) expand(d6);
(D7) z^6/30240-z^4/720+z^2/12-z/2+1
となり一致した。display2d:trueの時は(D2)の次に/T/がつくが
/T/は内部表現が通常の標準形と異なることを示している。
(C8) s2:sum((x*z)^i/i!,i,0,6);
(D8) x^6*z^6/720+x^5*z^5/120+x^4*z^4/24+x^3*z^3/6+x^2*z^2/2+x*z+1
(C9) letsimp(d7*d8);
(D9) (30240*x^6*z^6-90720*x^5*z^6+75600*x^4*z^6-15120*x^2*z^6+720*z^6
+181440*x^5*z^5-453600*x^4*z^5+302400*x^3*z^5-30240*x*z^5
+907200*x^4*z^4-1814400*x^3*z^4+907200*x^2*z^4-30240*z^4
+3628800*x^3*z^3-5443200*x^2*z^3+1814400*x*z^3
+10886400*x^2*z^2-10886400*x*z^2+1814400*z^2+21772800*x*z
-10886400*z+21772800) /21772800
ここでzの各次の係数を抜き出す。リストにしてみよう。まず空のリストを用
意してひとつずつ係数をもとめて次数の階乗をかけたものを付け加える。
このリスト操作をコンスアップという。


99 :GO MAXIMA:02/08/11 00:24
(C16) B:[]$
(C17) for i:6 step -1 thru 0 do ( B:cons(ratsimp(i!*coeff(expand(d9),z,i)),B))$(C18) B;
(D18) [1,(2*x-1)/2,(6*x^2-6*x+1)/6,(2*x^3-3*x^2+x)/2,
(30*x^4-60*x^3+30*x^2-1)/30,(6*x^5-15*x^4+10*x^3-x)/6,
(42*x^6-126*x^5+105*x^4-21*x^2+1)/42]
これは通常の配列のようにB[3]として(6*x^2-6*x+1)/6が取り出せる。
配列の引数は1、2..と1から数える。
(C17)でiを0からにしたければconsの変わりにendconsを使えば良い。
リストが長くなるようなら endconsはconsに較べて能率が悪いのだがその理由
が判れば あなたは十分リスパーだ。
ループのなかでコンスアップするときは求めた結果を 代入しながら計算する
必要があることを忘れると Bは空のままであることに注意せよ。
これで求まったのだが ベルヌーイ多項式は maximaに実装されている。
bernpoly(x,n)で n次のベルヌーイ多項式が求まる。
(C19) bernpoly(x,6);
(D19) x^6-3*x^5+5*x^4/2-x^2/2+1/42

100 :GO MAXIMA:02/08/11 00:24
=========================================================================
例題7.2
7.1に続いて ベルヌーイ多項式は次の差分方程式を満たすことを
n=1,2,3,4で確かめよ。
B[n](x+1) - B[n](x) = nx^(n-1)
=========================================================================
前の問題からの継続
xにx+1を代入するのは substを使う。
(C20) for i:1 thru 4 do (a:ratsimp( subst(x+1,x,B[i+1])-B[i+1]),display(a));
a = 1
a = 2*x
a = 3*x^2
a = 4*x^3
(D20) DONE

演習7.1
ベルヌーイ多項式は 次の関係を満たすことをn=1,2,3,4について確かめよ。
diff(B[n](x),x) = n*B[n-1](x)
演習7.2
例題7.2の結果から自然数のm乗の和は
sum(i^m,i,1,n) = (B[m+1](n+1) - B[m+1](1))/(m+1)
m=3,4のとき確かめよ。
m乗の和の公式はベルヌーイより関孝和のほうが早かったそうだ。
和算の力である。

101 :GO MAXIMA:02/08/11 00:25
=========================================================================
例題7.3
ルジャンドルの多項式の母関数は
(1-2xt+t^2)^(-1/2)=sum(P[n](x)t^n,n,0,inf)
である n=1,3,5,7についてP[n](x)を求めよ。
=========================================================================
例題3.7の一般の2項係数を求めて2項展開し左辺を計算する。
(C1)comb(_a,_n):=product(_a-i+1,i,1,_n)/(_n!);
ところで coeffは有理式のままでは 係数を求めることができません。
これはreduceと同じです。したがって途中で expandしておく必要があります。
(C8) let(t^8,0);
8
(D8) t --> 0 ここだけみずらいので disaplay2dで表示した
(C9) letsimp(sum(comb(-1/2,k)*(-2*x*t+t^2)^k,k,0,7));
(D9) (54912*t^7*x^7+29568*t^6*x^6-88704*t^7*x^5+16128*t^5*x^5-40320*t^6*x^4
+8960*t^4*x^4+40320*t^7*x^3-17920*t^5*x^3+5120*t^3*x^3
+13440*t^6*x^2-7680*t^4*x^2+3072*t^2*x^2-4480*t^7*x
+3840*t^5*x-3072*t^3*x+2048*t*x-640*t^6+768*t^4-1024*t^2
+2048)/2048
ここで係数を求めるために展開します。
(C10) expand(%);
(D10) 429*t^7*x^7/16+231*t^6*x^6/16-693*t^7*x^5/16+63*t^5*x^5/8-315*t^6*x^4/16
+35*t^4*x^4/8+315*t^7*x^3/16-35*t^5*x^3/4+5*t^3*x^3/2
+105*t^6*x^2/16-15*t^4*x^2/4+3*t^2*x^2/2-35*t^7*x/16
+15*t^5*x/8-3*t^3*x/2+t*x-5*t^6/16+3*t^4/8-t^2/2+1
ここからコンスアップにはいります。
(C11) P:[];
(D11) []
(C12) for i:7 step -1 thru 0 do ( P:cons(coeff(d10,t,i),P));
(D12) DONE
(C13) P;
(D13) [1,x,3*x^2/2-1/2,5*x^3/2-3*x/2,35*x^4/8-15*x^2/4+3/8,
63*x^5/8-35*x^3/4+15*x/8,231*x^6/16-315*x^4/16+105*x^2/16-5/16,
429*x^7/16-693*x^5/16+315*x^3/16-35*x/16]
Pの配列の引数が1からのため 奇数次が 偶数項になる。
(C14) for i:1 thru 4 do display(P[2*i]);
P[2] = x
P[4] = 5*x^3/2-3*x/2
P[6] = 63*x^5/8-35*x^3/4+15*x/8
P[8] = 429*x^7/16-693*x^5/16+315*x^3/16-35*x/16

102 :GO MAXIMA:02/08/11 00:25
=========================================================================
例題7.4
ルジャンドルの方程式
(1-x^2)y''-2xy'+n(n+1)y=0 の解をP[n](x)とする。P[7](x)がxの奇関数で
7次の多項式でありP[7](1)=1のときこれを求めよ。
=========================================================================
求めるものを
(C1) f:a[1]*x^7+a[2]*x^5+a[3]*x^3+a[4]*x;
(D1) a[1]*x^7+a[2]*x^5+a[3]*x^3+a[4]*x
とおく 方程式に代入して係数探査する。
(C3) B:[]$
(C5) (1-x^2)*diff(f,x,2)-2*x*diff(f,x)+7*(7+1)*f;
(D5) 56*(a[1]*x^7+a[2]*x^5+a[3]*x^3+a[4]*x)
-2*x*(7*a[1]*x^6+5*a[2]*x^4+3*a[3]*x^2+a[4])
+(1-x^2)*(42*a[1]*x^5+20*a[2]*x^3+6*a[3]*x)
(C6) ratsimp(%);
(D6) (26*a[2]+42*a[1])*x^5+(44*a[3]+20*a[2])*x^3+(54*a[4]+6*a[3])*x
(C7) for i:1 step 2 thru 5 do B:cons(coeff(%,x,i),B);
(D7) DONE
(C8) B;
(D8) [26*a[2]+42*a[1],44*a[3]+20*a[2],54*a[4]+6*a[3]]
もうひとつの条件x=1のとき1から
(C11) subst(1,x,f-1);
(D11) a[4]+a[3]+a[2]+a[1]-1
これをD8のリストに付け加える
(C12) cons(%,d8);
(D12) [a[4]+a[3]+a[2]+a[1]-1,26*a[2]+42*a[1],44*a[3]+20*a[2],54*a[4]+6*a[3]]

これをa1,...a4についてとけばよい。こいうリスト表現されたものを解くには
maximaでは solveか algsysであるが ここでは algsysを使う。
(C13) algsys(%,[a[1],a[2],a[3],a[4]]);
(D13) [[a[1] = 429/16,a[2] = -693/16,a[3] = 315/16,a[4] = -35/16]]
これをもとの式に代入するには
d13が[[]]の形をしているからd13[1]で中味のリストが取りだせるので後は
substする(fに代入する)だけ。
(C14) subst(d13[1],f);
(D14) 429*x^7/16-693*x^5/16+315*x^3/16-35*x/16

手で計算するのと同じ要領で計算ができるのがお分りいただけましたか
(maximaでは)リスト表現をうまく利用するのが数式処理計算のコツといってもよい。
演習7.3
エルミートの多項式の母関数H[n](x)は
exp(tx - 1/2 t^2) =sum(H[n](x)t^n/n!,n,0,inf)
を満たす。
n=0,2,4,6についてエルミート多項式をもとめよ。(例題7.3と同じくcoeffは有
理式には 適用できないので分子部分を取りだすか、expandしておくことを忘
れないように)
演習7.4
エルミートの方程式
y'' - xy' + ny = 0 の解をH[n](x)とおく。
H[6](x)が xの偶関数で6次の多項式かつH[6](0)= -15とするときこれを求めよ

103 : :02/08/15 01:03
REDHAT用のパッケージはどこにおちているの?
掲示板で利用法のマニュアル書くのも結構だけど、
どこかのサーバーにPDFかHTMLのファイルにして
FTPダウンロードできるようにするか、WEBでアクセス
できるようにしてね。もちろん日本語がいいな。

104 :GO MAXIMA:02/08/15 03:32
>103
rpmは 例えば
http://ftp.yars.free.net/pub/software/unix/platforms/linux/dist/redhat/contrib/libc6/i386/
から gcl-2.4.1-2.i386.rpm
maxima-5.6-4.i386.rpm
が あれば いけるはずです。
まとまれば どっかに揚げますが まだよたよたしているのですぐには無理です
ね。matlabのとこでもちょこっと話がでましたが、現在は数値計算toolと
数式計算toolの境界があいまいになってきていて 開発のほうも 数値計算tool
では 数式よりに、 MAXIMAなどでも 開発の人達は数値計算の強化に関心がある
ようです。だから clifford algebraの周辺で使える道具をつくりながら ふら
ふらしているのが現状ですね。

105 :GO MAXIMA:02/08/15 03:33
Gableスタイルについて

gableは matlabようの clifford algebraの入門(教育)packageで カナダの
university of Waterlooのstephen Mann に university of Amsterdamの
Leo Dorst と Tim Boumaが協力してできあがったfreeの作品である。
cl(p,q) で(p+q=3)という限定されたものだが 教育用には 十分らしい。
もともと 加群としては grasmman algebra と clifford algebraは 同型で
イメージとしては 前者の量子化が 後者であると考えて良い。
計算はともかくとして algebraの性質としては clifford algebraが 断然
すぐれていて clifford algebraの第一発見者は実はgrassman そのひとであっ
たりしておもしろい。matlabにのせるのは まさに matlabが 数式処理システ
ムでないから 相当な工夫が必要なわけで そこに見るべきところがあるだろう。
前回までのながれから 外積にしぼってその工夫をみてみよう。
3次元ユークリッド空間の基底をe1,e2,e3とすれば 次数付き加群としては
基底は 1,e1,e2,e3,e1@^e2,e2@^e3,e3@^e1,e1@^e2@^e3 の8次元である。
(これは clifford代数でも加群同型だから同じ)
さて この8次元空間の2つの要素A、Bの外積@^をどう定義するか?
数式処理システムならまえに述べたようにルールで代数系を定義しようとするが
もうひとつの見方として (A、B)-> A@^Bと写像とみるとBについてLinearは
明らかだから (A,B)-> L(A)B= A@^B、L(A)はlinear map で行列表現すれば
L(A)Bは行列の積でかける。後はA->L(A)つまりL(A)の決定問題。
Aをa0+a1*e1+a2*e2+a3*e3+a4*e1@^e2+a5*e2@^e3+a6*e3@^e1+a7*e1@^e2@^e3と
おけばL(A)は{1,e1,e2,e3,e1@^e2,e2@^e3,e3@^e1,e1@^e2@^e3}が単位行列I8
だから L(A)I8を計算 {A@^1,A@^e1,A@^e2,...,A@^e1@^e2@^e3}を行列でかけば
それが答である。
これくらいは 手でできなくては いけないわけだが よく考えてみると L(A)が
求まった後では数式処理の出番が無い。このへんが一般に数式処理と数値処理
の関係で、ある式が数式的に求められるとあとは 数式処理はいらないが 数式
処理が飛道具と言われるように より強力な式があると 数値処理が自明に近く
なったりするのでどちらが 優位と云う事もないか、。。。であるか(信長風に)
。。。と思うね。
というわけで 前に定義した@^にルールを付け加えてこれが求められるように
しよう。(続く)


106 :GO MAXIMA:02/08/17 04:02

続きです。
a:a0+a1*s[0]+a2*s[1]+a3*s[2]+a4*s[0]@^s[1]+a5*s[1]@^s[2]+a6*s[2]@^s[0]+a7*s[0]@^s[1]@^s[2];
これを[a0,a1,a2,a3,a4,a5,a6,a7]にまとめる関数をtovect 逆をtoouterとす
るとcons(tovect(outersimp(a@^1)),[])てなことをくりかえして 最後に
reverseして matrixに変換して 転置行列をとればL(A)は求まる。まあ我々は
一度しか使わない関数を定義しないのが普通なのだが。
L(A)を求める関数をlinrep(_a)とする。引数は外積の表現をそのままいれる。

linrep(_a):=block([_uu,_q,_m,_i,_j],_q:[1,s[0],s[1],s[2],s[0]@^s[1],s[1]@^s[2],s[2]@^s[0],s[0]@^s[1]@^s[2]],_uu:[],
for _i in _q do _uu:endcons(tovect(outersimp(_a@^_i)),_uu),print(_uu),
_m:matrix(_uu[1]),for _j:2 thru 8 do _m:addrow(_m,_uu[_j]),transpose(_m))$

tovect(_outer):=block([_p1,_i],_p1:[],
for _i in [1,s[0],s[1],s[2],s[0]@^s[1],s[1]@^s[2],s[0]@^s[2],s[0]@^s[1]@^s[2]]
do _p1:cons(coeff(_outer,_i,1),_p1),_p1:reverse(_p1),
_p1[7]:-_p1[7],_p1[1]:(_outer-toouter(_p1)),_p1)$
tovectの_p1[1]の修整を行わないと
(C32) tovect(a);
(D32) [0, a1, a2, a3, a4, a5, a6, a7]
(C33) coeff(a,1);
(D33) 0
これでは 定数項が計算できない ので 定数項は D32のような結果からtoouter
で戻して_outerから引くことによって定数項を求める、くだらんことせにゃな
らん。
toouter(_form):=block([_q1,_qq,_i],_q1:0,
_qq:[1,s[0],s[1],s[2],s[0]@^s[1],s[1]@^s[2],s[2]@^s[0],s[0]@^s[1]@^s[2]],
for _i:1 thru 8 do _q1:(_q1+_form[_i]*_qq[_i]),
_q1)$
修正後は
(C16) tovect(a);
(D16) [a0, a1, a2, a3, a4, a5, a6, a7]
でOK


107 :GO MAXIMA:02/08/17 04:03
でなにができるかというと
(C1) load("outertest4.mac");
Loading ho2.lisp
Finished loading ho2.lisp
(D1) ?outertest4\.mac
(C2) a:a0+a1*s[0]+a2*s[1]+a3*s[2]+a4*s[0]@^s[1]+a5*s[1]@^s[2]+a6*s[2]@^s[0]+a7*s[0]@^s[1]@^s[2]$
(C3) linrep(a);
(D3) MATRIX([a0,0,0,0,0,0,0,0],[a1,a0,0,0,0,0,0,0],[a2,0,a0,0,0,0,0,0],
[a3,0,0,a0,0,0,0,0],[a4,-a2,a1,0,a0,0,0,0],[a5,0,-a3,a2,0,a0,0,0],
[a6,a3,0,-a1,0,0,a0,0],[a7,a5,a6,a4,a3,a1,a2,a0])
これがL(a)の行列である。やはりdisplay2d:falseはみずらい。
(C4) display2d:true$
(C5) d3;
[ a0 0 0 0 0 0 0 0 ]
[ ]
[ a1 a0 0 0 0 0 0 0 ]
[ ]
[ a2 0 a0 0 0 0 0 0 ]
[ ]
[ a3 0 0 a0 0 0 0 0 ]
[ ]
[ a4 - a2 a1 0 a0 0 0 0 ]
[ ]
[ a5 0 - a3 a2 0 a0 0 0 ]
[ ]
[ a6 a3 0 - a1 0 0 a0 0 ]
[ ]
[ a7 a5 a6 a4 a3 a1 a2 a0 ]

L(a)を使ったGABLEスタイルとルールで計算した結果の一致を確かめて
検算としよう。
(C6) display2d:false$
(C7) tovect(b1*s[0]@^s[2]+b2*s[1]);
(D7) [0,0,b2,0,0,0,-b1,0]
(C8) toouter(d3.transpose(d7));
これで行列の積をとり外積の表現に直す
(D8) [s[0] @^ s[1] @^ s[2]*(a6*b2-a2*b1)-s[1] @^ s[2]*a3*b2+s[0] @^ s[1]*a1*b2
+s[1]*a0*b2+s[0] @^ s[2]*a0*b1]
(C9) outersimp(a@^(b1*s[0]@^s[2]+b2*s[1]));
これがルールによる計算。
(D9) s[0] @^ s[1] @^ s[2]*a6*b2-s[1] @^ s[2]*a3*b2+s[0] @^ s[1]*a1*b2
+s[1]*a0*b2-s[0] @^ s[1] @^ s[2]*a2*b1
+s[0] @^ s[2]*a0*b1
(C10) d8[1]-d9;

(D10) s[0] @^ s[1] @^ s[2]*(a6*b2-a2*b1)-s[0] @^ s[1] @^ s[2]*a6*b2
+s[0] @^ s[1] @^ s[2]*a2*b1
(C11) factor(%);
(D11) 0


108 :GO MAXIMA:02/08/17 04:07
これがoutertest4.mac
load("ho2.lisp")$
infix("@^");
matchdeclare([i,j,k,i1,j1,k1],integerp)$
matchdeclare([_a,_b,_c],freeof(s[i],s[j],s[k]))$
matchdeclare([x,y,z,x1,y1,z1],true)$
tellsimp(0@^x,0);
tellsimp(x@^(y@^z),(x@^y)@^z);
tellsimpafter(i@^s[i],i*s[i])$
tellsimpafter(s[i] @^ s[i],0)$
tellsimpafter(s[i] @^ s[j],if (i>j) then -s[j] @^ s[i] )$
tellsimpafter(s[i]@^(s[j]+s[k]),s[i]@^s[j] + s[i]@^s[k]) $
tellsimpafter((s[i]+s[j])@^s[k],s[i]@^s[k] + s[j]@^s[k]) $
tellsimpafter((_a*s[j])@^s[k],_a*(s[j]@^s[k]))$
tellsimpafter(s[j]@^(_a*s[k]),_a*(s[j]@^s[k]))$
tellsimpafter((_b*s[j])@^(_a*s[k]),_b*_a*(s[j]@^s[k]))$
tellsimpafter((_a*(s[i]@^s[j]))@^(_c*s[k]),_a*_c*(s[i]@^s[j]@^s[k]))$
tellsimpafter((_c*s[k])@^(_a*(s[i]@^s[j])),_a*_c*(s[k]@^s[i]@^s[j]))$
tellsimpafter((_a*s[i])@^(_b*s[j])@^(_c*s[k]),_a*_b*_c*(s[i]@^s[j]@^s[k]))$
tellsimpafter((s[i]@^s[j]@^s[k]*_a)@^s[i1],_a*(s[i]@^s[j]@^s[k]@^s[i1]))$
tellsimpafter((s[i]@^s[j]@^s[k]*_a)@^(_b*s[i1]),_a*_b*(s[i]@^s[j]@^s[k]@^s[i1]))$
tellsimpafter((_b*s[i1])@^(s[i]@^s[j]@^s[k]*_a),_a*_b*(s[i1]@^s[i]@^s[j]@^s[k]))$

tellsimpafter((_b*s[i])@^(s[j]@^s[k]*_a),_b*_a*(s[i]@^s[j]@^s[k]))$
tellsimpafter((_b*s[i])@^(s[j]@^s[k]@^s[i1]*_a),_b*_a*(s[i]@^s[j]@^s[k]@^s[i1]))$
tellsimpafter((_a*(s[i]@^s[j]))@^(_b*(s[k]@^s[i1])),_a*_b*s[i]@^s[j]@^s[k]@^s[i1])$
tellsimpafter((_a*(s[i]@^s[j]))@^(_b*(s[k]@^s[i1]@^s[j1])),_a*_b*s[i]@^s[j]@^s[k]@^s[i1]@^s[j1])$
tellsimpafter((_a*(s[i]@^s[j]@^s[k]))@^(_b*(s[i1]@^s[j1])),_a*_b*s[i]@^s[j]@^s[k]@^s[i1]@^s[j1])$

defrule(outersimp1,x@^y,
if tonton(x)=0 and tonton(y)=0 then (if (havebase(x)=0 or
havebase(y)=0) then x*y else x@^y)
else (if tonton(x)=0 and tonton(y)=1 then (if (havebase(x)=0) then
x*part(y,1)+x*rest(y,1) else x@^part(y,1)+x@^rest(y,1))
else if tonton(x)=1 then part(x,1)@^y+rest(x,1)@^y))$
defrule(outersimp4,x@^y@^z@^x1,block([_u],_u:outersimp(x@^y@^z),_u@^x1));
defrule(outersimp2,x@^y@^z,block([_u],_u:outersimp(x@^y),_u@^z));
defrule(outersimp3,s[i]@^s[j]@^s[k],block( [_q,_q2],if (i=j or j=k or k=i) then 0
else (_q:pmcount([i,j,k]), q2:sort([i,j,k]),(-1)^_q *(s[q2[1]]@^s[q2[2]]@^s[q2[3]]))))$
defrule(outersimp5,s[i]@^s[j]@^s[k]@^s[i1],block([_q,q2],if (elementsame([i,j,k,i1])=1)
then 0 else (_q:pmcount([i,j,k,i1]), q2:sort([i,j,k,i1]),(-1)^_q *(s[q2[1]]@^s[q2[2]]@^s[q2[3]]@^s[q2[4]]))))$
outersimp(_expr):= apply1(_expr,outersimp4,outersimp2,outersimp1,outersimp3,outersimp5);

toouter(_form):=block([_q1,_qq,_i],_q1:0,
_qq:[1,s[0],s[1],s[2],s[0]@^s[1],s[1]@^s[2],s[2]@^s[0],s[0]@^s[1]@^s[2]],
for _i:1 thru 8 do _q1:(_q1+_form[_i]*_qq[_i]),
_q1)$
tovect(_outer):=block([_p1,_i],_p1:[],
for _i in [1,s[0],s[1],s[2],s[0]@^s[1],s[1]@^s[2],s[0]@^s[2],s[0]@^s[1]@^s[2]]
do _p1:cons(coeff(_outer,_i,1),_p1),_p1:reverse(_p1),
_p1[7]:-_p1[7],_p1[1]:(_outer-toouter(_p1)),_p1)$

linrep(_a):=block([_uu,_q,_m,_i,_j],_q:[1,s[0],s[1],s[2],s[0]@^s[1],s[1]@^s[2],s[2]@^s[0],s[0]@^s[1]@^s[2]],_uu:[],
for _i in _q do _uu:endcons(tovect(outersimp(_a@^_i)),_uu),
_m:matrix(_uu[1]),for _j:2 thru 8 do _m:addrow(_m,_uu[_j]),transpose(_m))$


109 :GO MAXIMA:02/08/17 04:13
ho2.lispはこれ
(in-package "MAXIMA")
(defun $tonton (form)
(ismplus (flatten1 form))
)
(defun $havebase (form)
(isbase (flatten1 form))
)
;; by Paul Graham's book (ON LISP)
(defun flatten1 (x)
(labels ((rec (x acc)
(cond ((null x) acc)
((atom x) (cons x acc))
(t (rec (car x) (rec (cdr x) acc))))))
(rec x nil)))
(defun ismplus (flattenlist)
(if (null flattenlist)
0
(cond ((equal 'MPLUS (car flattenlist)) (return-from ismplus 1))
(t (ismplus (cdr flattenlist ))))))
;;flattenlist has any base,s[i]or s[i]@^s[j]or so on ?
(defun isbase (flattenlist)
(if (null flattenlist)
0
(cond ((equal nil (find '|$s| flattenlist))
0)
(t 1))))
;;signature of permutation
(defun $pmcount (form)
(let ((tform (sort (copy-list (cdr form)) #'<))
(rtform nil))
(dolist ( element (cdr form))
(setf rtform (cons (position element tform) rtform))
)
(apply #'+ (mapcar #'(lambda (x) (- (length x) 1))(kankan (reverse rtform))))))



110 :GO MAXIMA:02/08/17 04:14
(defun kankan (form)
(labels ((onecyc (fform klist)
( if (equal klist 'nil) (setf klist (cons (apply #'max fform) klist)))
(let ((fform2 (coerce (copy-list fform) 'vector)))
(cond ((equal 'NIL (find (aref fform2 (car klist)) klist))
(onecyc fform (cons (aref fform2 (car klist)) klist)))
(t (reverse klist)))))
;;replace all element by 0 at list1 if corresponding to element of list2
(ctest2 (list1 list2)
(dolist (element list2)
(setf list1 (mapcar #'(lambda (xx) (if (equal element xx) '0 xx)) list1)))
list1 )
;;main procedure
(prodcyc (fform klist2)
(let ((klist3 nil))
(cond ((equal nil (remove-if #'(lambda (xx) (if (equal 0 xx) t)) (copy-list fform)))
klist2)
(t
(setf klist3 (onecyc fform nil))
(setf fform (ctest2 fform klist3))
(setf klist2 (cons klist3 klist2))
(prodcyc fform klist2))))))
(prodcyc form nil)))
(defun $elementsame (form)
(elementsame (cdr form)))
(defun elementsame (form)
(let ((count 0))
(if (null form)
count
(cond ((eql nil (find (car form) (cdr form)))
(elementsame (cdr form)))
(t (incf count) (return-from elementsame count))))))



111 :名無しさん@1周年:02/08/17 06:26
http://js-web.cside.com/

112 :GO MAXIMA:02/08/17 13:54
programの説明をする前に ルールを追加、 削除、 表示する方法を示す。
ぼくも この5月までrulebaseのプログラムはmaxima では 十分動かないと
錯覚していたので 経験不足でもっとうまい改変方法があるかもしれない。
userの定義したルールは rulesという配列に名前が書き込まれている。
例えば outertest4.macを読みこんだ後では
(C3) rules;
(D3) [@^RULE1, @^RULE2, @^RULE3, @^RULE4, @^RULE5, @^RULE6, @^RULE7, @^RULE8,
@^RULE9, @^RULE10, @^RULE11, @^RULE12, @^RULE13, @^RULE14, @^RULE15, @^RULE16,
@^RULE17, @^RULE18, @^RULE19, @^RULE20, @^RULE21, outersimp1, outersimp4,
outersimp2, outersimp3, outersimp5]
となっていて これの中味をインタープリタから確認したいのであるが
(C4) rules[1];としても名前が返って来るだけ。
(D4) @^RULE1
lispモードにはいってこのシンボルの属性リストを見てみる。
(C5) to_lisp();
Type (run) to restart
MAXIMA> (symbol-plist (cadr $rules))
(SYSTEM:PNAME "&@^RULE1" MPROPS
(NIL $RULE
((MEQUAL) (($@^ SIMP (6 "outertest4.mac" SRC)) 0 |$x|) 0)
RULEOF $@^))
でどうやらみれるようだ これをdisplaで受けるとインタープリタの表現が
返ってくる。
MAXIMA> (displa (symbol-plist (cadr $rules)))
(PNAME, &@^RULE1, MPROPS, (FALSE, RULE, 0 @^ x = 0, RULEOF, "@^"))
これをインタープリタから使えるようにマクロにする
MAXIMA> (defmfun $peekrule (form) (displa (symbol-plist form)))
MAXIMA>(run)
(C6) peekrule(rules[2]);
(PNAME, &@^RULE2, MPROPS, (FALSE, RULE, x @^ (y @^ z) = x @^ y @^ z, RULEOF,
"@^"))
(D6) FALSE でとりあえずの目的にはOK $peekruleはho2.lispに追加しておく
とよいだろう。tellsimpafterは 係数変数がらみの 軽いルールの定義に
使っているので インタープリタで結果をみながら手軽に付け加えたりできる。
が 付け加えたために動作がうまく行かなくなるときはとりはずさねばならな
い。これは例えば@^rule15を加えたために動かなくなったとすれば
(C10) remrule("@^","@^RULE15");
(D10) @^ とする。matchdeclareとの関連は >>92を見よ。

113 :名無しさん@1周年:02/08/17 21:31
MaximaとMathematicaの違いはなに?
前の書き込みに修得にMaxima  1年
     Mathematica 1ヶ月
と書いてましたが、どういう意味ですか?

114 :コギャルとHな出会い:02/08/17 22:17
http://book-i.net/sswab/

  ヌキヌキ部屋へ

女子高生とHな出会い



115 :GO MAXIMA:02/08/18 00:09
>>113
Mathematicaは SONYのnewsの頃からのつきあいで 3年前の十年間くらい使って
ましたが Maximaに乗り換えました。
このスレの43 、52 参照。52はぼくじゃないけど。mathematicaは Stephen
Wolframの考えた macsymaの改良版なのです。maximaは macsymaそのものですね。
この手の道具を研究の現場で 使うとしたら matlabと正反対に 非常に特殊な
要求に答えねばならないのであるが その時ソースが見れて 自分でLISPコード
を書いて読みこめば 本来の動作も返られるというものの方が 都合がよいです。
このレベルに1年くらいかかる(自分の経験からいって)
最も ソースに解説が付いていれば もっと短縮できるだろうけどね。
maximaも mathematicaも reduceも だいたいの機能を把握して自分の仕事に
使えるようになるのは 1か月くらいだ。(複数の友人の平均による)
ここから maximaでは 組込みの関数の組み合わせでは 書けないものにでっく
わす。これはLISPで書いて読みこませるしかないが それが当たり前だと感じ
られるまでに かかる時間と 解析にかかる時間で1年というわけ。
mapleで何年も直らないbugもあるし mathematicaのjordan標準型のbugも2000
年の11月に報告されてから1年以上も修正されなかった。ぼくがmaximaように
より完全なものを書いたら7日くらいでできたし 適用限界は自分で書いただ
けによく判っている。もっともこれはLISPで書く必要はなかったけど。
というように 自分の必要としているものが 必ずしも用意されていると期待で
きない世界では mathematicaより maximaのほうが 使い心地は良いと思うね。
まあ逆に用意されているものの範囲でまかなえるなら mathematicaのほうが
よいかもね、ただしbugを除いての話だが。バークレーの数学科の1年には
mathematicaを使わせないと聴いた。理由は 判断力の無い学生が mathematica
のbugによって うそを覚えてしまうからだそうだ。サイトライセンスで なに
も考えず あほ(失礼)学生に mathematicaを 与えて喜んでいる日本の大学が
勝てるわけがないような気がしてきた。

116 : :02/08/18 03:36
Macsymaはコンパイラがありましたが、むかしさわってみたら、
Maximaにはコンパイルの機能は備わっていないみたいでしたが、
今はどうなっているのでしょうか?

117 :名無しさん@1周年:02/08/18 06:42
http://js-web.cside.com/

118 :GO MAXIMA:02/08/18 12:28
compileは動いてると思いますが ご存知のように interpreterの動作に関連す
る部分を含む時はできないものもある。例ルールを含むもの。この場合も
translate_file("outertest4.mac")として lispファイルが出力されるので
このファイルと相談すればcompileできるように可能かも知れない。
その他のlispファイルは GCLができるものは ほとんどコンパイル可能。

(C3) compile_file("ho2.lisp");
Compiling ho2.lisp.
End of Pass 1.
;; Note: Tail-recursive call of ISMPLUS was replaced by iteration.
;; Note: Tail-recursive call of ELEMENTSAME was replaced by iteration.
;; Note: Tail-recursive call of ONECYC was replaced by iteration.
;; Note: Tail-recursive call of PRODCYC was replaced by iteration.
;; Note: Tail-recursive call of REC was replaced by iteration.
End of Pass 2.
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling NIL.
(D3) [ho2.lisp, #pho2.o]
これでho2.oがカレントにできている。load("ho2.o");でロードできる。
末尾再帰は 上にあるように iterationに変換される。GCLは配列がコンパイル
してもCより 3倍から5倍おそい。その他のくり返しは Cと遜色無いまで高速
化可能。CMUCLは 配列も3倍程度高速で CとそんなにかわらずMAXIMAで数値
計算をやらせようという勢力は GCLを排除しようという傾向にある。
それから どれくらい速くなるかは分らないが 部分的に関数(自分が
interpreterで定義した)を個々にcompileできる。
例えばoutertest4.macを読みこんだ後で
(C5) functions;
(D5) [outersimp(_expr), toouter(_form), tovect(_outer), linrep(_a)]
で自分の定義した関数を確認
(C6) compile(toouter,tovect,linrep);
で個々の 関数をcompileするように指示すると 自動的にtemporaly
fileを作成して読みこんでそれを消去までしてくれる。信頼性がいまいちなと
きがあるが。
Warning-> s is an undefined global variable.
Compiling gazonk0.lsp.
End of Pass 1.
End of Pass 2.
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling gazonk0.lsp.
Loading gazonk0.o
start address -T b486000 Finished loading gazonk0.o
(D6) [toouter, tovect, linrep]


119 :名無しさん@1周年:02/08/18 22:05
>>115

教えていただきありがとうございます

120 :小学生:02/08/19 12:30
mathematicaばぐってどんなところにありますか?

121 :GO MAXIMA:02/08/20 00:28
>>120
うーん 小学生か?。数学と 数式処理ソフトは 全然別物なのよね。つまり統一
された内容としての数学は 使う人の頭の中の 知識とセンスと思想としてある
んだよね。分りやすくいうと 数式処理を使うのは ノートや黒板に 式を書いて
計算するのに 近い。あるいは 自分の予想の確認とか、ある概念に慣れるた
めに 計算してみているとか(これは 小学レベルといっしょかな)
これは あくまでぼくのマイナーな考えだが、数式処理は 数学の材料を扱って
いるが 数学の概念を理解しているわけではない(ソフトが)ので 無茶な結果
を平気でだすことが多い。つまり計算ソフトに ある数学を載せるということ
は その表現のしかたを含めてモデルを立てるということだ。その適用限界は
モデルを立てる側で責任をもつしかない。
逆に 厳密な数学は 頭の中にしか無いが 厳密なものができるまでの いろんな
数学的材料も いままでは 頭の中にしかなかったが これを外に解放したもの
が数式処理ソフトといえるのではないか。そして 外に、目にみえることでま
だ厳密な数学になっていないものや、応用分野の(数学的には)あいまいな概念
をより多くの人と考えることが可能になる。
このとき bugも こちらが検知できる限り 有害度は低い。つまり数学の知識と
センスを 磨くべきかな。
小学生で数学が好きなら 岩波書店の高木貞治著 解析概論を買ってもらって
数式処理では 扱えない推論の展開カ所を探してみよう。例P119の(1)から
P120の(2)の導出など。その他いっぱいあるよ。

122 :小学生:02/08/20 15:27
さんすうのおにいさんどうもありがとう
むずかしくてよくわからないけどおにいさんは算数をこんぴゆーたでとく
ほうほうにばぐがあるといいたいのかなあ。ぼくは算数の式がむずかしい
のでミューパッドに算数をしてもらうとすごくよくわかります
算数のおにいさんはなぜあたまのなかにしかさんすうがないのですか
むげんをかんがえるためですかぼくもむげんのうんちはあたまのなかで
しかできませんコンピュータではむげんはつかえますか?
むげんにはどんないみがありますか?

123 :GO MAXIMA:02/08/21 01:23
>>122
数式処理では 任意有限の扱いも十分には できない。1,2,3,...,nというnが任
意の数を表すので 有限であるが 例えば x^nを 1回微分すると n*x^(n-1)
じゃあkをnより小さい自然数としてk回微分すると どうなるか というと
2回目は n*(n-1)x^(n-2) 3回目は n*(n-1)*(n-2)x^(n-3) てやって人間なら
n*(n-1)*,,,*(n-k+1)x^(n-k)てわかるよね。数式処理では 公式としてこれを
覚えさせてない限りこのカタチにはもってこれない。
1からはじめてk回微分するということを 数式処理で書くと 微分操作を
k回おこなうループか 再帰になる。例えばmaximaでは
(C11) a[k]:= if (k=1) then n*x^(n-1) else diff(a[k-1],x,1);
(C12) a[3]
(D12) (n-2)*(n-1)*n*x^(n-3)
(C13) a[k]
(D13)Error: Bind stack overflow.
Fast links are on: do (si::use-fast-links nil) for debugging
Error signalled by CATCH.とスタックがオーバーフローする
これは C11での定義が再帰になっていてSTOPルールは kが1になるときだけだ
から kからはじめて1つづつ引いて行けばかならずいつか 1になるはずだが
kがC12のように 3とかの具体的に与えられたときは OKだが 単なる自然数
を表す文字のときは 引いて行ってもいつ1になるかわからないので延々
引いて行って k-(スタックの限界)のところでオーバーフローする。
これはループでも同じで 1から終端(おわり)がkという文字なら 数式処理シス
テムにとってはいつまでも終れない無限ループと同じことになる。
このような場合 人間は 計算モードから推論モードへ切り替えてこれを乗り越
える。
文字が入ってきたらとたんに 数式処理の弱点が あからさまになる。
これをカバーするのが 我々の頭のなかの数学的センスと知識であって
それがないと 使いこなせない。
無限については こんなスペースでは書けねえけど 推論モードの強力な道具
といえると思うね。最終的には有限で済むことにも 無限を使った方が解りや
すい例は多い。2つのベクトル空間のテンソル積の定義でも 一旦 おのおのの
成分のペアを生成元とする 無限次元空間を考えてから商空間を作るほうが
大抵の人には解りやすいだろう???か? この無限次元空間は後では全然使わな
いが。


124 :名無しさん@1周年:02/08/21 01:25
http://www.geocities.co.jp/Hollywood-Screen/8924/profile.html
なあ、この女どう思う?

125 : :02/08/24 19:58
Maximaの文法で書いたルーチン(関数)を
Maximaの内部でコンパイルできないのでしょうか?

MACSYMAの時は出来たと思うのですが。

126 :GO MAXIMA:02/08/25 00:39
>>125

(C2) f(x):=expand(x^2)$
(C3) functions; で自分の定義した関数が 登録されていることを確認
(D3) [f(x)]
(C4) compile(f);
Compiling gazonk0.lsp.
End of Pass 1.
End of Pass 2.
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling gazonk0.lsp.
Loading gazonk0.o
start address -T 86682d8 Finished loading gazonk0.o
(D4) [f]
これで直接コンパイルできました。読みこみも完了してます。
またはMAXIMA言語で書いたファイルをtama.macとするとき
load("tama.mac")$ として読みこんでから 上の方法を使うかこのファイルを
lispファイルに変換してからcompileします。
translate("tama.mac"); これでtama.LISPができます。
compile_file("tama.LISP");これでtama.oができるのでload("tama.o")として
から使います。
Fatemanによれば 自分なら直接LISPで書くとのことですが普通は最初に述べた
functionsを確認してcompileするので十分でしょう。
いったんLISPに落さないと行けない場合は コンパイラにもっと多くの
指示を与えてより高速にしないと行けない場合か、またはインタープリタと
コンパイラで動作が異なる場合でソースに手をいれないといけない場合で
滅多にそのようなことにはでっくわさないでしょう。

127 :GO MAXIMA:02/08/25 00:43
>>126
ごめん 訂正 translate("tama.mac");は translate_file("tama.mac");
の間違い

128 :GO MAXIMA:02/09/03 23:52
8月末 maxima-5.9.0rc1が 正式発表された。
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.9.0rc1 http://maxima.sourceforge.net
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
とあるように 主にBUG FIX版の性格が強い。これからは より多くの人が様々
なアプリを書いて行くことで方向が決まると言うGPLらしいおもしろい展開局
面にあるようだ。VINE LINUX 2.5では GCL2.4.3(pre2.5.0)のコンパイルにちょっ
とひっかかったが MAXIMAでは 一発でコンパイルできた。CLISPでも問題ない。
Redhat7.0では GCLは一発だが MAXIMAでのコンパイルはちょっとつまずいた。
なんとかなったが CLISPでの実装は一発でできたことをみても どうもGCLは
MAXIMAのメインからはずされそうだ。
個人的には 日本語の岩波のCommon LISP 入門がGCLに対応しているだけに
残念かな。
現在 GPLの長所を生かしてMAXIMAはいろんなところで使われ始めている。
例えば
ttp://www.webpdelab.org/cadsol.html または started.html
にあるPDE Solverは クラスタマシーンで動いているがこれのフロントエンド
でMAXIMAは 活躍している。こういう使い方もあると面白いかな。


129 :bloom:02/09/04 00:04

http://www.leverage.jp/bloom/start/

130 :GO MAXIMA:02/09/28 03:52
超幾何級数を定義して遊んでみよう。
ここでは Euler流に 原始的に計算だけで 押してみよう。まず定義。

(C1) deftaylor(f1[a1,b1,r1](x),1+sum((x**n)*genfact(a1,n,-1)*genfact(b1,n,-1)/(n!*genfact(r1,n,-1)),n,1,inf))$
(C2) display2d:false $
deftaylorは 1変数しか扱えないが 無限級数であらわされた関数を定義して
扱えるので便利である。次に見るように 合成関数や微分もある程度扱える。
(C3) taylor(SQRT(f1[1,2,1](x)),x,0,6);
(D3) 1+x+x^2+x^3+x^4+x^5+x^6
これはdisplay2d:trueとしてみれば解るが最後は+...と表示される
検算は SQRT(f1[1,2,1](x))は1/(1-x)だから
(C4) (1-x)^2 *taylor(f1[1,2,1](x),0,6);
(D4) +1
次に(1-x)^aについて見てみよう
(C5)taylor(f1[-a,a,a](x),x,0,6);
(D5) 1-a*x+(a^2-a)*x^2/2-(a^3-3*a^2+2*a)*x^3/6+(a^4-6*a^3+11*a^2-6*a)*x^4/24
-(a^5-10*a^4+35*a^3-50*a^2+24*a)*x^5/120
+(a^6-15*a^5+85*a^4-225*a^3+274*a^2-120*a)*x^6/720
(C6) taylor((1-x)^a,x,0,6)-%;
(D6) +0
(1-x^2)^(-1/2)の積分が Arcsin(x)であるから
(C7) taylor(f1[1/2,-1/2,-1/2](x^2),x,0,10);
(D7) 1+x^2/2+3*x^4/8+5*x^6/16+35*x^8/128+63*x^10/256
(C8) integrate(%,x);
(D8) 63*x^11/2816+35*x^9/1152+5*x^7/112+3*x^5/40+x^3/6+x
x=1/2とすれば %PI/6の近似が得られる。上の10をINFとしたのが
arcsin(1/2) つまりASIN(1/2)である。で近似の精度はというとあまり良くない。
この式も和算では知られていたそうですが %PIの値の計算では使ってないようです。


131 :GO MAXIMA:02/09/28 03:54
(続)で何れくらい悪いか見てみよう。
(C9) fpprec:50 $ これはBFLOATの計算を50けたに指定した。
(C10) bfloat(subst([x=1/2],d8));
(D10) 5.2359611929581106827200577200577200577200577200577B-1
(C10) bfloat(%pi/6);
(D10) 5.2359877559829887307710723054658381403286156656252B-1
これを自動化してもう少し先を調べる。
(C11) numarcsin(_v,_n):=block([_x,_f,_g],_f:taylor(f1[1/2,-1/2,-1/2](_x^2),_x,0,_n),_g:integrate(_f,_x),bfloat(subst([_x=_v],_g)))$
(C12) numarcsin(1/2,12);
(D12) 5.2359823755318693215421731046731046731046731046731B-1
1項先まで計算しても精度は一桁しか上がらない、これはとんでもないだめな
計算ということだ。16桁の精度におよそ21項くらい計算する必要がある。
時間を出してみると
(C13) showtime:true$
(C14) bfloat(%pi/6)-numarcsin(1/2,42);
Evaluation took 00.20 seconds (00.20 elapsed)
(D14) 9.8662913764419102133897659117296824679165518484038B-17
これは3。5万のDURON800MHZましーん 昔のHPのHP97のプログラム電卓なら
二十分くらいかかるだろうというかそのままでは精度の点で計算不能。

132 :GO MAXIMA:02/09/28 03:54
何が言いたいかというと 僕等の置かれている困難な情况がここにあらわれて
いる、つまりプログラム電卓は 数表をプログラムに置き換えた、これは
良いことだろう。しかし理論計算でD8を得てもこれが精度が悪いので
Romberg加速が使える形に持っていくなど 工夫が必要とされてガウス流の
計算の基礎を学ぶことができた、僕等の世代では。確か70年代の 数値解析
の旗頭のひとりであった Peter Henriciは 現代数学社 ポケット電卓による計算解析
一松 信 氏の訳 の序文で(この本は いまは図書館でもいかないとないだろう
が)「ポケット電卓はすぐに使えて、使い易いために、これまでそれに触ったこ
ともなかった数学者達をも、経験の範囲にもたらす可能性をもっている。
したがってそれは、数学を重大な見当違いの、はるかな片隅へおいやるおそれ
をはらむ抽象の潮をくいとめるのに、大いに有用であろう。」とある。
おそらく数学は まったけのごときもので まわりの環境が十分出ないと育たな
いのではないだろうか? 計算技法も重要な環境の1つであると思うが。
計算機の進歩のすごさが Henriciの予想を越えて
計算技法への関心が抽象をくい止めるどころか、計算技法の有難さが見えにく
くなることによって 計算技法への関心も消滅させかねない情况だ。
良書 森口 繁一 著 数値計算工学 岩波書店 ですら 現在のPCを100%使うのに
は貧弱に見える。


133 :GO MAXIMA:02/09/28 03:55
(続) 超幾何級数の満たす微分方程式を求めてみよう。
(C1) deftaylor(f1[a1,b1,r1](x),1+sum((x**n)*genfact(a1,n,-1)*genfact(b1,n,-1)/(n!*genfact(r1,n,-1)),n,1,inf))$
の genfact(a1,n,-1)はa1*(a1+1)*(a1+2)....(a1+n-1)
n!もgenfact(1,n,-1)となる。
C2) a[n]:=genfact(a1,n,-1)*genfact(b1,n,-1)/(n!*genfact(r1,n,-1));
(D2) a[n]:=GENFACT(A1,n,-1)*GENFACT(B1,n,-1)/(n!*GENFACT(r1,n,-1))
a[n+1]/a[n]を計算したいのだが 小学生?の質問に答えたときにも触れたが
数式処理システムの持つ任意有限がまともに扱えない限界があっていっぺんに
はむり帰納法でやることになる。
その前にストレートに計算しておこう。
(C3) x*(1-x)*taylor(diff(f1[a,b,c](x),x,2),x,0,6)+(c-(a+b+1)*x)*taylor(diff(f1[a,b,c](x),x),x,0,6)-a*b*taylor(f1[a,b,c](x),x,0,6);
(D3) +0
6をINFにして計算できるとよいのだがそれはできない。6,7,8,,,,
maximaの評価(eval)のくせを使うとちょびっとだけましに書ける。
(C4) x*(1-x)*diff(f1[a,b,c](x),x,2)+(c-(a+b+1)*x)*diff(f1[a,b,c](x),x)-a*b*taylor(f1[a,b,c](x),x,0,10);
(D4) +0 これは10次までは0を意味する。
のようにできる。つまりf1[a,b,c](x)についてひとつが 具体形で与えられる
とそれを全体に利用して計算するのだが これは仕様だろうか?BUGだろうか?
どちらにせよ C4の微分方程式を求めるには 工夫がいるだろう
(C3) a[3]/a[2];
(D3) (A1+2)*(B1+2)/(3*(r1+2))
(C4) a[4]/a[3];
(D4) (A1+3)*(B1+3)/(4*(r1+3))でa[n+1]/a[n]=(a1+n)*(b1+n)/((n+1)*(r1+n)
Eulerの微分作用素 D=x*d/dxを定義して計算する方法が
吉田 正章 著 私説 超幾何関数 共立出版 の3章に出ている。

134 :GO MAXIMA:02/10/04 01:06
(続Eulerの微分作用素の計算)
番外篇として 問題形式にした。一部前と重複する。
----------------------------------------------------------------------
問題1
(a,n)=a*(a+1)*(a+2)*....(a+n-1)とするとき
n!=(1,n)とおける。genfact(a,b,c) 関数を使って(a,n)を定義せよ。
-----------------------------------------------------------------------

(C1) p(a,n):=genfact(a,n,-1);
(D1) p(a, n) := GENFACT(a, n, - 1)
(C2) p(a1,4);
(D2) A1 (A1 + 1) (A1 + 2) (A1 + 3)
(C3) p(1,10);
(D3) 3628800
------------------------------------------------------------------------
問題2
超幾何級数 f1[a,b,c](x)=sum((a,n)*(b,n)*x^n/((c,n)*(1,n),n,0,INF)であ
るが MAXIMAで無限級数で関数を定義するにはdeftaylorを使う必要がある。
deftaylorを使って超幾何級数f1[a,b,c](x)を定義せよ。
------------------------------------------------------------------------

(C1) deftaylor(f1[a1,b1,r1](x),1+sum((x**n)*genfact(a1,n,-1)*genfact(b1,n,-1)/(n!*genfact(r1,n,-1)),n,1,inf));
(D1) [f1]
具体的に級数として計算表示させるには display2d:false$ として
(C3) taylor(f1[a,b,c](x),x,0,3);
1+a*b*x/C+((a^2+a)*b^2+(a^2+a)*b)*x^2/(2*C^2+2*C)
+((a^3+3*a^2+2*a)*b^3+(3*a^3+9*a^2+6*a)*b^2+(2*a^3+6*a^2+4*a)*b)*x^3
/(6*C^3+18*C^2+12*C)
いちいちtaylorと書くのもめんどくさいのでm項まで計算させる関数f2を書いておく
f2[a,b,c,_m,_x]:= block([x],taylor(f1[a,b,c](_x),x,0,_m));
f2[1,1,2,8,x];
1+x/2+x^2/3+x^3/4+x^4/5+x^5/6+x^6/7+x^7/8+x^8/9

135 :GO MAXIMA:02/10/04 01:13
問題3
逆三角関数 Arcsin(x)はx*f1[1/2,1/2,3/2](x^2)となる。
9次の項まで展開して確かめよ。
-------------------------------------------------------------------------

x*f2[1/2,1/2,3/2,9,x^2];
x+x^3/6+3*x^5/40+5*x^7/112+35*x^9/1152
taylor(asin(x),x,0,9);
x+x^3/6+3*x^5/40+5*x^7/112+35*x^9/1152
で9次の項まで一致している。
-------------------------------------------------------------------------------
問題4
Arcsin(x)の微分は1/sqrt(1-x^2) はf1[1/2,-1/2,-1/2](x^2)とあらわせる。
これからxで積分してArcsin(x)の9次の展開を導け
一般に 超幾何級数の微分は また超幾何級数であらわせることをしめせ。
---------------------------------------------------------------------------------

(C10) integrate(taylor(f1[1/2,-1/2,-1/2](x^2),x,0,8),x);
(D10) 35*x^9/1152+5*x^7/112+3*x^5/40+x^3/6+x
これより f1[1/2,-1/2,-1/2](x^2)の積分がx*f1[1/2,1/2,3/2](x^2)
後半は 少し面倒だろうが普通にやればよい。
(C16) diff(taylor(f1[a,b,c](x),x,0,4),x);

136 :GO MAXIMA:02/10/04 01:14
(D16) a*b/c+((a^2+a)*b^2+(a^2+a)*b)*x/(c^2+c)
+((a^3+3*a^2+2*a)*b^3+(3*a^3+9*a^2+6*a)*b^2+(2*a^3+6*a^2+4*a)*b)
*x^2
/(2*c^3+6*c^2+4*c)
+((a^4+6*a^3+11*a^2+6*a)*b^4+(6*a^4+36*a^3+66*a^2+36*a)*b^3
+(11*a^4+66*a^3+121*a^2+66*a)*b^2
+(6*a^4+36*a^3+66*a^2+36*a)*b)
*x^3
/(6*c^4+36*c^3+66*c^2+36*c)
この結果から各次の係数を抜きだしてみる。例えば上の結果が16とすれば
(C17)a1:[];for i:0 thru 3 do a1:endcons(coeff(d16,x,i),a1);
(D18)[a*b/c,((a^2+a)*b^2+(a^2+a)*b)/(c^2+c),
((a^3+3*a^2+2*a)*b^3+(3*a^3+9*a^2+6*a)*b^2+(2*a^3+6*a^2+4*a)*b)
/(2*c^3+6*c^2+4*c),
((a^4+6*a^3+11*a^2+6*a)*b^4+(6*a^4+36*a^3+66*a^2+36*a)*b^3
+(11*a^4+66*a^3+121*a^2+66*a)*b^2
+(6*a^4+36*a^3+66*a^2+36*a)*b)
/(6*c^4+36*c^3+66*c^2+36*c)]
超幾何級数はその係数の比に特長があらわれるので、
(C19)[a1[2]/a1[1],a1[3]/a1[2],a1[4]/a1[3]]$
(C20) factor(%);
とすれば、ちょっとmaximaの配列のindexが1からということに注意して
(D20) [(a+1)*(b+1)/(c+1),(a+2)*(b+2)/(2*(c+2)),(a+3)*(b+3)/(3*(c+3))]
これからa1[n+1]/a1[n]は (a+n+1)*(b+n+1)/((n+1)*(c+n+1))と推測できる。
f1[a,b,c](x^2)の 対応項(a+n)*(b+n)/((n+1)*(c+n))と比較すれば
a->a+1,b->b+1,c->c+1 あとx=0のとき1であるから定数倍a*b/cをかけて
a*b/c *f1[a+1,b+1,c+1](x)と予測できる。
(C21) diff(taylor(f1[a,b,c](x),x,0,10),x)-a*b/c*taylor(f1[a+1,b+1,c+1](x),x,0,9);
(D21) +0となって少なくとも9次の項までは等しい。(もちろんINFでも成り立つが)

137 :GO MAXIMA:02/10/04 01:15
問題5
Eulerの微分作用素をDe と書きx*d/dxを表すものとする。
De x^n=n*x^n だからnが固有値 x^nが 固有ベクトルとなる。(多項式鐶Z[x]で)
次の等式を確かめよ。
(1) (De+a)f1[a,b,c](x)=a*f1[a+1,b,c](x)
(2) (De+b)f1[a,b,c](x)=b*f1[a,b+1,c](x)
(3) (De+c-1)f1[a,b,c](x)=(c-1)*f1[a,b,c-1](x)
(4) (1-x)*De f1[a,b,c](x)=(c-a)*f1[a-1,b,c]+(a-c+b*x)*f1[a,b,c](x)
(4)' (1-x)*De f1[a,b,c](x)=(c-b)*f1[a,b-1,c]+(b-c+a*x)*f1[a,b,c](x)
(5) c*(1-x)*De f1[a,b,c](x)=x*(c-a)*(c-b)*f1[a,b,c+1](x)+x*c*(a+b-c)*f1[a,b,c](x)
-----------------------------------------------------------------------------------

(1) 左辺は
x*diff(taylor(f1[a,b,c](x),x,0,4),x)+a*taylor(f1[a,b,c](x),x,0,4);
問題4と同様に係数を集めてみる。
a1:[];for i:1 thru 4 do a1:endcons(coeff(d32,x,i),a1)$
[a1[2]/a1[1],a1[3]/a1[2],a1[4]/a1[3]]$
factor(%);
[(a+2)*(b+1)/(2*(c+1)),(a+3)*(b+2)/(3*(c+2)),(a+4)*(b+3)/(4*(c+3))]
問題4と同様に係数比を比較してa->a+1、b、は不変
coeff(d32,x,0);
a から 定数倍はa となり右辺を得る。まあ計算だから左辺〜右辺でもよいが。
(2)は f1[a,b,c](x)が a,bに関して対称だから明らか
(3)も(1)と同様
(4)、(5)は練習2とする。Gaussはこれらから重要な連分数表示を計算している。
上達は多分 自分よりできるやつのやり方を看取る必要がある、たぶん。
これだけ準備すれば前述の 吉田氏の本で、下の計算の仕方を知れば誰でも専門
家になれると書かれている処に到達する。(煽りともいえるが、昔中国文学を専攻
していた院生の友人が この方法で漢文が読めればおまえでも プロだぜと言っ
ていたのを思いだした。どんな方法か内容は忘れてしまったが、残念。)

138 :GO MAXIMA:02/10/04 01:16
------------------------------------------------------------------------------------
問題6
[(De+a)(De+b)-(De+c)(De+1)*1/x] f1[a,b,c](x)=0を みたすことをしめせ。
これから超幾何級数の満たす微分方程式を具体的に書き下せ。
------------------------------------------------------------------------------------
問題5から (De+a)(De+b)f1-->(De+a)b*f1[a,b+1,c](x)-->a*b*f1[a+1,b+1,c](x)
[(De+1)*1/x] x^n--->De x^(n-1)+x^(n-1)=n*x^(n-1) これは微分だから 問題4の結果から
(De+1)f1=D f1-->a*b/c *f1[a+1,b+1,c+1](x)
これに(De+c)を作用させれば a*b/c *c*f1[a+1,b+1,c+1-1](x)=a*b*f1[a+1,b+1,c](x)
よって成立。後半はDeをDに書き換える。
[(De+a)(De+b)-(De+c)(De+1)*1/x] f1=0とDe=x*D,(De+1)*1/x=D
(x*D+a)(x*Df1+b*f1)-(x*D+c)(Df1)=x*(Df1+x*D^2f1)+b*xDf1+a*x*Df1+a*b*f1-x*D^2f1-c*Df1
=(x^2-x)D^2f1+(x*(a+b-1)-c)Df1+a*b*f1=0 の微分方程式をみたす。
思わず手でやってしまった。
余談
contextを切り替えてルールでMAXIMAで計算するのは この土日にでもやってみ
よう。それからGaussに数式処理システムを勧めたらきっと そんなものいらん
と言うと思うが、大学にも依るけど微分形式の計算練習を十分やる暇無いとこ
もあるようで気の毒だこんなときは数式処理が自分の手足になってほしい。
------------------------------------------------------------------------------------

139 :GO MAXIMA:02/10/07 02:58
maximaでの切り替えできるのはルールそのものではなくて ルール適用のときに
用いられるパターンマッチの情報が切り替えられるだけなので、結果として
ルールが切り替わったように見えるだけであることは記憶しておくべきだろう。
ここでは問題4、問題5の内容をルールとして定義してこのcontextの名前をhyp1
としてみよう。
newcontext(hyp1);
declare(eulerop,FEATURE);
euleropp(x):=featurep(x,'eulerop);
declare(de,eulerop);
matchdeclare([alph,beta,a1,b1,c1],true,de,euleropp);
defrule(hsym1,(de+alph).f1[a1,b1,c1](x),if (alph=a1) then a1*f1[a1+1,b1,c1](x) else if (alph=b1) then b1*f1[a1,b1+1,c1](x) else if (c1-alph=1) then (c1-1)*f1[a1,b1,c1-1](x) else (de+alph).f1[a1,b1,c1](x));
これは一部分である。
contextの切り替えは変数contextに名前をセットすることで行われる。
(C79) context:hyp1;
(D79) hyp1
(C80) apply1((de+a).f1[a,b,c](x),hsym1);
(D80) a*f1[a+1,b,c](x)
contextをINITIAL、(これがdefault)に切り替えると
(C81) context:INITIAL;
(D81) INITIAL
(C82) apply1((de+a).f1[a,b,c](x),hsym1);
(D82) (DE+a) . f1[a,b,c](x)

140 :GO MAXIMA:02/10/07 03:01
ルールhsym1の動作を切り替えることができた。これは次のような仕組で行われている。
(C83) facts(INITIAL);
(D83) []
よりINITIALのcontextではfactsは空である。一方contextをhyp1にすれば
(C84) context:hyp1;
(D84) hyp1
(C85) facts(hyp1);
(D85) [KIND(DE,eulerop)]
DEはeuleropという属性を持っているこれで ルールhysym1のパターンマッチング
が有効になる。このやりかたの長所はルールそのものは切り替える必要がないが
動作は切り替わるという面白いやりかただ。このやりかたを実行するには
(1) contextの作り方 とその階層構造の指定のしかた
(2) 新しい属性の定義のしかたとfactの付け加えと削除のしかた
(3) declare、matchdeclare、defrule、apply1の使い方
が最低限必要で す。
この順に説明すると。現在のcontextをみるには context;でよい。
activeになっているかどうかを別にしてすべてのcontextを調べるには
(C90) contexts; とする(複数形にするだけ)
(D90) [hyp1,INITIAL,GLOBAL] とflatなlistで返って来る。これがcontext間の
階層構造を表してはいないことを頭に入れておくこと。contextは階層構造を
作っていてルートはGLOBAL でdefaultのINITIALのcontextはこの下である。D90を
見ただけではINITIALの下にhyp1があるのか GLOBALの下で並んでいるのかは解ら
ない。作り方によってどちらでもつくれる。newcontext(hyp1);として作れば
GLOBALの下にhyp1が作られるし、supcontext(hyp1,INITIAL);とすればINITIALの
下にhyp1が作られる。上下関係はfactsに関する情報について継承関係にある。
今の目的はルールの動作の切り替えだからINITIALとhyp1はならんでいないと
いけないのでnewcontext(hyp1);として作ればよいことになる。

141 :GO MAXIMA:02/10/07 03:03
リスパーとして
みれば 静的な継承は概念として成立するが 実用的意味はあまりない、つまり
下で上書きは勿論できるがparsingが面倒になるだけ。つまりtamaの属性がcat
であるというfactをもつcontextと tamaの属性が seadogであるというfactを
もつcontextは継承関係なく分離されてしかるべきだ。その方が動的にいろんな
関連情報を切り替えてもparserに負担がかからない。このへんが黄金の60年代
をささえた連中の確かな設計の腕であって80年から90年のへなちょことは質が
違うような気がすると思うね。まあ今からはまたましになるかもしれんが。
contextをきたなく作ってしまうと active(..)関数やdeactivate(..)関数を
使わないといけなくなる。

(2)について 例えばeuleropという属性を新たに定義して deがこの属性を持つ
というfact をこのcontextに付け加えるには次のようにする。
declare(eulerop,FEATURE); これで新しい属性の名前を生成。
euleropp(x):=featurep(x,'eulerop); これがないと パターンマッチが働かない。
xの属性がeuleropならtrue 、この属性を持たないときはfalseをかえすテスト
関数であり、新しく属性を付け加えると必ずテスト関数を形式的でも書かねば
ならない。
declare(de,eulerop); これが factの一つになる。

142 :GO MAXIMA:02/10/07 03:04
この時 facts();とすれば [KIND(DE,eulerop)]というfactがあるのが解る。
factをとり除くには forget(..)が使えることになっているが 現在のverでは
forgetはきかないBUGがある。従ってこの場合 factを消せないので factを
無効にするにはkill(de);としてシンボルごと一旦消必要がある。
新たに復活するには もう一度declareする。このBUGは気持ちよくないが
致命的ではない。以下の実行例をみよ。(暇が無いとFIXできない)。
(C95) ''C75;
(D95) a*f1[a+1,b,c](x)
(C96) forget(de,eulerop);
(D96) [TRUE,TRUE]
(C97) facts(hyp1);
(D97) [KIND(DE,eulerop)] //forgetでは消えていない
(C98) ''C75; //動作も以前のままである。
(D98) a*f1[a+1,b,c](x)
(C99) kill(de); //killすると動作は切り替わるが
(D99) DONE
(C100) ''C75;
(D100) (DE+a) . f1[a,b,c](x)
(C101) facts(hyp1); //factは 以前のままである
(D101) [KIND(DE,eulerop)] //動作でこのfactは有効になっていないことが解る
(C102) declare(de,eulerop); //factを有効にするにはもう一度宣言する
(D102) DONE
(C103) facts(hyp1);
(D103) [KIND(DE,eulerop)]
(C104) ''C75; //動作はもとに戻せる。
(D104) a*f1[a+1,b,c](x)
(続く)

143 :名無しさん@1周年:02/11/14 18:25
最近GO MAXIMAさんを見ないなあ。
また降臨キボンヌ。

144 :名無しさん@1周年:02/11/15 12:40
Debianが一番楽だと思います。
Maxima+TeXmacsはかなり快適。

145 :名無しさん@1周年:02/11/17 01:08
>>115
(>>52は後真希縞さんではないそうですが、)
昔は日本も多少はガムバってた(>>53)はずなのに、
何故今は情けない(>>115)状態なんでしょ?>>115で挙げてる例はもともと情けない学校の事?

146 :名無しさん@1周年:02/11/18 20:37
剛まきすまはどうすた?

147 :名無しさん@1周年:02/11/26 12:16
>141で言ってる事が気になるんだけど、クラスの継承の事だよね?
superクラスを作らないで別にしろと言いたいのかなmaximaは。
実際オブジェクト指向のパーサってどれくらい複雑なのかなぁ。

148 :GO MAXIMA:02/11/27 22:19
>>143 いまちょっといそがしくて 12月から年末年始はひまですから
またぼちぼち はじめますね。忙しいと数学版のほうをみて一言書く
くらいで、長いのは"すべての素数の積は4Pai^2"のスレで書いたくらい。

>>145 学校というより、ご存知のように 数式処理システムは残酷なくらい
使う人の数学の力を写す鏡なわけで、あとうんぬんです。

>>147 オブジェクト指向のパーサをLISPで書くのは たやすいですが
現在のMAXIMAのいろんな概念は オブジェクト指向では捉えにくいものが
多いと思うね。(関数の扱いなど)
これには 答えがない問題なので おいおい議論したいと思います。
興味を持ってくれてありがとう。


149 :GO MAXIMA:02/11/27 22:27
A=Bという 数式処理に関する重要な論点を含む本が出ているので紹介します。
A=B by MARKO PETKOVSSEK ,HERBERT S.WILF,DORAN ZEILBERGER 1997
http://www.cis.upenn.edu/~wilf/Downld.html
から手にはいる220ページの本格的な本である。maximaのMLでsimpsumの
BUGが話題になった時に 此の本の主要なアルゴリズムは mapleとmathematica
に実装されていて、権利の問題が無ければMAXIMAにも載せられるか?というこ
とがでていたので読んでみたら なかなか面白い。
142の超幾何級数の話の続きは Gosperの不定和の計算に続けるつもりだったの
で (此の本での5つの基礎アルゴリズムとしてGosperのアルゴリズムも解説さ
れている。) ちょっと寄り道してみよう。
A=B の本のきっかけはKnuthの有名なTHE ART OF COMPUTER PROGRAMMING の1
の2.6の問題63 2項係数を含む和を簡単にするためのプログラムを開発せよ。
に由来するらしい。そこでKnuth先生が 序文を書いている。大変面白いので(
野次馬として)味わってもらうために 此の序文のヘタ訳をしておく、興味漏っ
たら是非ダウンロードして読んでもらいたい。ではKnuth先生の序文
*******************************************************************
Science is what we understand well enough to explain to computer. Art
is everything else we do.(いきなり先生のとんでも発言、数学は大部分Art
になちゃいますよ。)
科学とは コンピュータに説明できるくらいまで十分に我々が理解しているもの
のことである。Artとはそのほかのコンピュータに説明できる程には理解でき
ていないものをいう。(Knuth先生の本の題名を想起せよ。)
この数年間に 数学の重要な部分が Artから a Scienceに変換された。
(最初のScienceは冠しなしに対してa Scienceは科学の一部門くらいの意味)(続く)

150 :名無しさん@1周年:02/11/27 22:31
【ひろゆきのメルマガの答え】
警察が動いてるのは、この板だ!!
http://okazu.bbspink.com/test/read.cgi/ascii/1038220622/541

詳細は電波2chで
http://dempa.2ch.net/


151 :GO MAXIMA:02/11/27 22:31
2項係数を含む和の計算に鋭いひらめきを必要としないのとおなじく実用じょ
うしばしばでっくわす類似の和を計算するのにもひらめきは必要なくなった。
いまや機械的プロシージャを適用し、体系的に解を見つけることができる。
I fell in love with these procedures as soon as I learned them because
they worked for me immediately.(先生やはり若い、精神年齢15歳にケテーイ)
それらのプログラムは 過去に格闘した和の問題をかたずけただけでなく、そ
のとき初めて調べていた2つの新しい問題まで解いてしまった。
その成功率は脅威的であった。
実際 新しいおもちゃをもらった子どものように、どうやって昨日それを使っ
て遊んだのかを説明せずにはいられない。(あのね、あのねってか)
遠い昔に 私は kについての和 binomial(2n-2k,n-k)*binomial(2k,k)を調べて
いてnが 0、1、2、3に対して和が1、4、16、64だから4^nにちがいない。
結局のところ実際4^nになるということを証明するトリッキーなやりかたを学
んだが、此の本のやりかたを知ってさえいれば 直ちに同一だと証明できたの
に。(仮定法過去完了です。)
昨日 より困難な問題Snが kについての和binomial(2n-2k)^2*binomial(2k,k)^2
を調べていた、これはnが0,1,2,3に対して 1,8,88,1088で まったくパターン
を見つけることができなかったので、Gosper-Zeilbergerのアルゴリズムで計
算したら 数分でn^3*Sn=16(n-1/2)(2n^2-2n+1)*(Sn-1) -256(n-1)^3*(Sn-2)で
あることが解った。
このアルゴリズムは推測される一致 "A=B"を確認するだけでないことに注目せ
よ。まっとうな予測を形成できないときでも Aとは何か?という問いに答えて
いる。この例での答えは どんな簡単な形式に表すのも不可能と考えられるよ
うな 自明でない漸化式である。(続く)






152 :GO MAXIMA:02/11/27 22:35
私はこの本の出版を うれしく思う、というのも著者達はこの新しい発展に主
要な役割を果たしたばかりでなく数学の主要な解説者でもあるからだ。
真に重要な材料が論じられているところでは、彼等の論文を読むことが常に勧めら
れる。
Science advances whenever an Art becomes a Sience.And the state of the
Art advances too,because people always leap into new territory once
they have understood more about the old.This book will help you reach
new frontiers.
(ある分野のArtが 科学のいち分野になるときはいつでも 科学そのものが進歩
するときである。またArtの方も進歩する、というのは人は古い領域について
もっともっと深く理解しようとして 新しい領域にとびこむものだからだ。
この本があなたを新しいフロンティアへ導くであろう。)
以上 Donald E.Knuth 先生の序文でした。

153 :132人目の蛆虫さん:02/12/02 22:04
あげ

154 :名無しさん@1周年:02/12/02 22:06
山形浩生
 リンクを張らせろとかいうしゃらくせぇメールはよこすなバカ野郎! ケチなんかつけねーから、
どこへでも黙ってさっさと張れ! そういうメールをよこしやがったら、断るからな。いちいち相手
の身元を確認していいの悪いの判断するほど暇じゃねーんだ! そんなけちくさい真似するくら
いなら、最初っから無料でこんなもん公開したりしねーぞ! 世間様におめもじさせられねぇと
思ったら、その時点で引っ込めるわい。
 黙って張る分にはなんの文句もつけない。絶賛リンクも結構、「こんなバカがいる」的罵倒嘲笑
リンクも大いに結構。煮るなり焼くなり好きにしやがれ。ファンメールもかねた事後報告もオッケー。
あとおひねりでもくれるってんなら、もらってやるからありがたく思え。いいの悪いの返事も書いて愛
想の一つも振りまこうってなもんだ。
でも、そうでなきゃそんなメール受け取って、読んで、おまけに返事書くだけのコストを、なんでこ
のオレが負担してやんなきゃならんのだ。しかもそういうメールに限って、クソていねいでまわりっくどくて
あいさつと社交辞令ばっかで、いつまでたっても用件がはじまんないで、長ったらしくて官僚的で、
他人に配慮してるようなツラして実は自分のケツをカバーすることしか考えてねーのが見え見え。
 どうしても許可がないとリンク張りがリスキーだと思うんなら、明示的に許可がないと法的にリンク
が困難とかいうんなら、そんなとこはリンクしていただかないで結構。黙ってリンクしていいという文章
を読んで、それを理解する能力がないやつ(個人法人を問わず)なんか相手にしてられっか!
 丸ごとコピーしたいときも、文章自体を変えないで(変える場合にも変えたところを明示すれば
オッケー)、もとのURLと版権と、転載自由だってのさえ明記すればなーんも文句はつけないので、
これも黙ってやってくれ。
 でも山形が死んだらどうなるんだ、という心配性の人のために、遺言もつくっといてやろう。いたれ
りつくせり。親切だろう。どうだ、これでもまだ文句あるか。じゃあな。


155 :名無しさん@1周年:02/12/02 23:26
せっかくだから、例題とかをHTMLかなにかでWebサーバーで公開するか、
まとめてPDFファイルにでもしておいてもらいたい。すれが1000を
越すと、倉庫に入ってしまって読めなくなるのだ。
MAXIMA関係のWEB会議室とかあるのかな?

MACSYMAもREDUCEもそうだったと思うけど、内部の設計の根本体系を
まず、とうとうと説明して、それから数式を内部的に扱うデーター構造の
完全な解説詳解、そのデータ構造の上で効率的なアルゴリズムを実現する
方法、計算機代数システムのプログラミング機能の記述、モジュールの
構成という具合の解説書が欲しいよね。REDUCEもソースがあっても、
あまりにもCAR,CDRで具体的にかかれすぎていて、抽象度が低いし、
関数やPROCEDUREが沢山あるけど、相互にどういう処理をしているかの
記述は剥ぎ取られているとしか見えない。システム製作の中核にいる
人間の頭の中か、内部文書はあるのだろうけど、そこは配布になって
いないみたいな感じがした。 単にシステムを使うだけの人用に配布
するのであればそれでもよいが、肝心なことは、
すみずみまできちんとかかれた文書(ソースコードではなくて)があって、
抽象度の高いレベルから具体的な実装の記述までかかれていて、
その文書さえ読めば、プログラミングが相当にできる人間であれば、ソースを
みなくてもスクラッチからシステムを再構築できるようなものが理想だ。
数式処理のアルゴリズムは結構複雑で説明はマイナーも含めて学術論文誌
にあちらこちらとばらばらに散らばって載っているのが唯一の情報源
だったりするのだろうけれども、それではなあ。 

156 :GO MAXIMA:02/12/03 01:52
>>155 MAXIMAの本家のMLが まあ唯一の内部についてのマトモな情報元であるようです。
まあ大半は ごみに近いですが 時々他では絶対に聴けない議論があるので 見てみられたら
良いでしょう。今は 数式処理システムは 商用も含めて 激動期にあると思いますね。
version upも商用では かなり頻繁に行われそれを 儲のためと邪推する向きもあるが
はっきり言って間違ってます。従来の数式処理の内部は 幾つかの標準形を 中心とした
ほとんど ばらばらの表現を なんとかまとめたものに過ぎなかったのですが、メモリも
少なく CPUのスピードも遅いころは その継ぎ目のあらが見えなかった。しかし近年の
信じ難いほどのコンピュータの進歩によって より複雑なライブラリの組み合わせや
より大規模な計算への対応(ノーテンキなユーザは内部の計算アルゴリズムが3次の
多項式オーダであっても 平気で従来の十倍のメモリ積んだから 10倍の規模で計算しようと
するとか)、いろんなところで ベンダーは大変だと思います。Fatemanはいやがると
思いますがそう遠くない将来に 内部表現を含めて改変しなくてはいけないでしょうね。
その時MAXIMAと言えるかどうかは別として。Fatemanによると最近mapleは 内部表現の
大規模な改変を行ったそうです、外からは見えにくいですが。
Groebner基底を中心とした代数方程式の 解法も現在のMAXIMAの最も弱いところで一部
非実用的ともいえるので 此邊は外部のソフトを呼び出す仕組をテストしてみます。
明日 一日空いているので やってみますね。相手はSingularという可換環のアルゴリズ
をまとめたGPLのソフトです。まあ自動証明といえば グレブナーというのも 当たり前
のことながら 短絡イメージで より抽象度の高いところで 使える理論を探しています。
このあたりは工学や情報系の人には逆に解りずらいようですね。


157 :名無しさん@1周年:02/12/03 21:13
>>149
その本、1997年に邦訳出てましたけど、
お気に召しませんでしたか?


158 :GO MAXIMA:02/12/03 22:03
そうですね。気づいて探したのですが 手に入りませんでした。
いまでも売ってますかね。まあ個人的には 英文は苦になりませんけど
そういうことで 訳文が気に入らないとかいうことではありません。


159 :名無しさん@1周年:02/12/18 20:29
>>144cygwin版 TeXmacs ウpされてるみたいですね。 http://texmacs.org/316MBのzipファイル、展開して1GBでは足りなかった…。cygwinやXFree86,font等、すべて入っているみたい。私は試す環境がないんで、感想を希望>使ってみた人

160 :159:02/12/18 20:32
なぜか改行が入らなかった。スマソ
http://texmacs.org/


161 :多分4あたり:02/12/18 20:47
TeXmacsて何者なのか、解説きぼん

162 :161=3ですた。スマンヌ:02/12/18 20:55
画面見ました。
 http://texmacs.org/Web/Samples.html
WYSWYG系TeX編集環境を実装したXemacsつうところでせうか?

#その昔、例のPS版TeXフォント作成元の会社が作ってた、TeXtureと似た発想…
#GNUSTEP方面で有名な、DisplayGhostScriptでも流用してるんでしょうか?

MAXIMA連携の解説きぼー

163 :名無しさん@1周年:02/12/20 10:36
TeXmacs cygwin版、動かねぇぞぉ!
Linux版はrpmで楽々。
maxima-5.6とTeXmacs-1.0.0.25の組合せ、数式の文字化けまだ多し。
WYSWYGで書いた数式をその場で計算(ScientificWorkPlaceみたいな)を期待してたが無理そう。


164 :maximan:02/12/21 20:03
>>144
emacs21 + maxima + imaxima がbetter。
imaximaについては,http://www.dfi.aau.dk/~harder/imaxima.html
http://www.dfi.aau.dk/~harder/imaxima.png
を参照。

165 :新規ファン:02/12/25 15:31
MAXIMAがおもしろそうだと思ったので、Common Lispを始めてみました。
命令型言語しか使ったことがないので、Lispの勉強だけでも驚きの連続です。
何とか早いうちにソースを読めるようになりたいです。
あと数学ももっと勉強しないと理解できるようにはならないな...
この調子では遠大な計画になりそうですが、2年後くらい(藁 には
このスレに有用なライブラリを上げられるかもしれません。

166 :GO MAXIMA:03/01/03 02:54
MAXIMAのfactor関数は 整数と整式で共用のため 整数論をやりにくいことがあ
る。これは次のように回避できることが解ったので書いておく。
(C11) matchdeclare(q,primep,k,numberp)$
(C12) let([k*log(q),q],one)$
(C13) let([log(q),q],two)$
(C14) f[r]:=radcan(log(factor(r)))$
(C15) lisf[r]:= if nterms(f[r])> 1 then maplist(part,f[r]) else [f[r]]$
(C16) lis1[r]:=letsimp(lisf[r],one,two)$
(C17) lis2[r]:=map(numfactor,lisf[r])$

(C18) h(x,y):=(x^(y+1)-1)/(x-1)$
(C19) sigma[r]:=apply("*",map(h,lis1[r],lis2[r]))$
(C32) f[15];
(D32) LOG(5) + LOG(3)
(C33) lisf(15);
(D33) lisf(15)
(C34) lisf[15];
(D34) [LOG(5), LOG(3)]
(C35) lis1[15];
(D35) [5, 3]
(C36) lis2[15];
(D36) [1, 1]
このように 素数とその指数のリストとして factorの結果を表示することが
MAXIMAで初等整数論を展開するのに必須なわけだが part関数が因数分解表示され
た数の場合 微妙にBUGっているので(多項式ではOK) 使えない。
このルールベースのやり方は 実は前に紹介した Babara HellerのMACSYMA FOR
STATISTICAIANS の最終7章の最後の演習問題5 の解答に教えてもらった。
このようなfactorの表示は数式処理の仲間Pariではディフォールトである。
またここでのSIGMA[n]関数はMAXIMAの組み込みのdivsum(n)に等しいがそれよ
りlis1とlis2が役に立つだろう。

167 :名無しさん@1周年:03/01/03 03:53
maximaってlisp上で動いてんだ。知らなかった。
それにしてもgomaximaは可也の年寄りとみた。symbolicsとか使った事
あるんでないの?

168 :名無しさん@1周年:03/01/03 04:16
>>167
こらこら余計な詮索をするでない。
日本人でMAXIMAにこんなに詳しいのなんてすぐ同定できてしまうからな。

ところでDebianのMAXIMAはいつまで5.6ベースなのかしらん……

169 :名無しさん@1周年:03/01/03 13:33


今年も、、今年こそ、、
いい思いをしちゃいましょう(^▽^)v

http://ok.halhal.net/~2ch/



170 :名無しさん@1周年:03/01/03 14:46
  , /⌒⌒γ⌒ 、
 /      γ   ヽ
 l       γ    ヽ
l   i"´  ̄`^´ ̄`゛i | DebianのMAXIMAって素敵やん?
|   |         | |
ヽ  / ,へ    ,へ ヽ./
 !、/   一   一 V
 |6|      |     .|
 ヽl   /( 、, )\  )
  |   ヽ ヽ二フ ) / ∧_∧
  丶        .ノ(´<_`  )   そうやねー、伸介にいやん。
    \ ヽ、_,ノ  / ⌒i
    /   \     | |
    /    / ̄ ̄ ̄ ̄/ |        
  __(__ニつ/  FMV  / .| .|____
      \/____/ (u ⊃

171 ::03/01/04 02:27
 



172 :名無しさん@1周年:03/01/06 05:56
>168
数学雑誌に記事書いてたりとか?

173 :山崎渉:03/01/11 05:20
(^^)

174 :初心者:03/01/23 05:46
数式処理ソフトで因数分解すると、factor(....)何たらとかいて、
1^1,(x+y)^2
という風に答えが出るものがあるのだけれど、これはパーサみたいな物で計算処理しているの?
手計算とかでは(x+y)^2だけ求まるけれど、なんで1^1があるのかなぁ。だれかおしえてくらはい。

175 :あぼーん:あぼーん
あぼーん

176 :あぼーん:あぼーん
あぼーん

177 :名無しさん@3周年:03/01/26 14:14
Mac OS X 10.2.3 + fink 0.5.1a + X11 (by Apple )
clisp 2.29 + maxima 5.9.0rc3
texmacs 1.0.1

で動きました。mupad は mac だとグラフ表示が出来ないので
maxima の方が見た目行けそうです。



178 :GO MAXIMA:03/01/26 17:56
diag ライブラリの解説
使用例
(C1) load(diag);
Warning - you are redefining the MACSYMA function EIGENVALUES
Warning - you are redefining the MACSYMA function EIGENVECTORS
(D1) /usr/local/share/maxima/5.9.0rc1/share/contrib/diag.mac
Warningがでるが気にしない。実はeigenのライブラリも書き変えているのだが
これは公開していない。(現在test中。)
これで jordan ,dispJordan,diag,JF,ModeMatrix,minimalPoly,mat_function が
使えるようになる。

(C2) b1:matrix([0,0,1,1,1],[0,0,0,1,1],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0])$
(C3) display2d:false;
(D3) FALSE
(C4) jordan(b1);
(D4) [[0,3,2]]
(C5) a6:matrix([1,-1,0,-1],
[0,2,0,1],
[-2,1,-1,1],
[2,-1,2,0])$
(C6) jordan(a6);
(D6) [[-1,1],[1,2,1]]
jordan cell が3つ あって -1が1個、1が 2個と1個という意味である。

179 :GO MAXIMA:03/01/26 17:57
dispJordanで表示してみれば
(C7) dispJordan(d4);
(D7) MATRIX([0,1,0,0,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0])
(C8) display2d:true$
(C9) ''C7;
[ 0 1 0 0 0 ]
[ ]
[ 0 0 1 0 0 ]
[ ]
(D9) [ 0 0 0 0 0 ]
[ ]
[ 0 0 0 0 1 ]
[ ]
[ 0 0 0 0 0 ]
(C10) dispJordan(jordan(a6));
[ - 1 0 0 0 ]
[ ]
[ 0 1 1 0 ]
(D10) [ ]
[ 0 0 1 0 ]
[ ]
[ 0 0 0 1 ]
(C11) display2d:false$
(C12) mm:ModeMatrix(a6,jordan(a6));
(D12) MATRIX([1,-1,0,1],[-1,1,1,0],[-3,1,0,-1],[3,-1,0,0])
(C15) (mm^^-1).a6.mm;
(D15) MATRIX([-1,0,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,1])
(C16) mm . d10 .mm^^-1;
(D16) MATRIX([1,-1,0,-1],[0,2,0,1],[-2,1,-1,1],[2,-1,2,0])

180 :GO MAXIMA:03/01/26 17:58
このてのmmの計算は 理論的にはまったく自明でつまらないものだが 数式処理
に実装するときには ぜんぜん別のアルゴリズムを考案しないといけない。
もちろん mmは一意ではないのでmapleや Mathematicaと比べてみると 多分
異なっているだろうが、それは計算するアルゴリズムが違うからである。
まあ 商用のシステムは 中身がわからないが このdiag.macの計算アルゴリズ
ムは自分で書いてなんだが 極めて エレガントであると自慢しておこう。(W
行列の関数については 以下の通り。
(C17) mat_function(exp,%i*t*b1);
(D17) MATRIX([1,0,%I*t,%I*t,%I*t-t^2/2],[0,1,0,%I*t,%I*t],[0,0,1,0,%I*t],
[0,0,0,1,0],[0,0,0,0,1])
(C21) mat_function(cos,t*b1);
(D21) MATRIX([1,0,0,0,-t^2/2],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1])
(C22) mat_function(sin,t*b1);
(D22) MATRIX([0,0,t,t,t],[0,0,0,t,t],[0,0,0,0,t],[0,0,0,0,0],[0,0,0,0,0])
(C23) d17 -(d21+%i*d22);
(D23)
MATRIX([0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0])
とexp(iΘb1)= cos(Θb1)+isin(Θb1) が行列b1についても成立しているのが
解る。mat_functionの第一引数にくる関数は うまく定義しておけば ユーザ定
義の関数でも使える。

181 :GO MAXIMA:03/01/26 17:59
(C24) fpow(x):=block([k],declare(k,integer),x^k);
(D24) fpow(x):=BLOCK([k],DECLARE(k,INTEGER),x^k)
(C25) mat_function(fpow,a6);
(D25) MATRIX([-(-1)^k/2-k+3/2,-k,-(-1)^k/2-k+1/2,-k],
[(-1)^k/2+k-1/2,k+1,(-1)^k/2+k-1/2,k],
[3*(-1)^k/2+k-3/2,k,3*(-1)^k/2+k-1/2,k],
[-3*(-1)^k/2-k+3/2,-k,-3*(-1)^k/2-k+3/2,1-k])
これは ある行列のk(任意有限)乗だから こういう計算ができることは楽しい
ことではないかな?
JF とdiagは次のように使う。
(C26) JF(3,5);
(D26) MATRIX([3,1,0,0,0],[0,3,1,0,0],[0,0,3,1,0],[0,0,0,3,1],[0,0,0,0,3])
(C27) diag([JF(1,5),2*t,JF(3,2)]);
(D27) MATRIX([1,1,0,0,0,0,0,0],[0,1,1,0,0,0,0,0],[0,0,1,1,0,0,0,0],
[0,0,0,1,1,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,0,2*t,0,0],
[0,0,0,0,0,0,3,1],[0,0,0,0,0,0,0,3])
minimalPolyは
(C28) minimalPoly(jordan(a6));
(D28) (x-1)^2*(x+1)

182 :あぼーん:あぼーん
あぼーん

183 :名無しさん@3周年:03/01/28 08:43
texemacs を使うと、文字はタイプセットで奇麗だが
Mathematica のように plot をインラインで表示できない。

xmaxima を使うと、 plot をインライン表示出来るが
文字は昔の数式処理のようにテキスト端末。

でも中も見れるし、魅惑的。

184 :あぼーん:あぼーん
あぼーん

185 :名無しさん@3周年:03/01/28 23:14
今 Legendre の例題しました。
Mathematica 風に、P[0](x) と P[1](x) を定義して右辺で _x を x とした定義をして
P[2](y) を計算させたら clisp が落ちました。
漸化式タイプの物の定義は
f[0]といった停止用の式,f[n]の再帰定義という書き方が
できる方が楽そうです。

まあ LISP 生で定義したら出来そうですけど。。。

186 :GO MAXIMA:03/01/28 23:35
>>185
>>55をみよ。
(C1) p[_n](_x):=block(if _n=0 then 1 else (if _n=1 then _x else
((2*_n -1)*_x*p[_n-1](_x)-(_n-1)*p[_n-2](_x))/_n))$

(C2) p[2](y);
2
3 y - 1
(D2) --------
2
これは今のMAXIMA5.9でも問題ないですが
もしかしてうまくいかないならひょっとしたら変数の衝突かもしれない。
今のMAXIMAは変数の衝突に弱いので時々 kill(all);して初期化すると良いでしょう。

187 :名無しさん@3周年:03/01/29 19:45
右辺の _x とかの変数をちゃんと MAXIMA 流になるよう注意すると
Mathematica 風のパターンマッチング Legendre 計算が
出来ました。

それにしても右辺は_無しでも OK にならないかなぁ。
まあ変数がはっきり分かる利点はありますが。。。

またしばらく例題します。

(C3) pm[_n](_x):= ((2*_n -1)*_x*p[_n-1](_x)-(_n-1)*p[_n-2](_x))/_n;
(2 _n - 1) _x p (_x) - (_n - 1) p (_x)
_n - 1 _n - 2
(D3) pm (_x) := ------------------------------------------------
_n _n
(C4) pm[0](_x):=1;
(D4) pm (_x) := 1
0
(C5) pm[1](_x):=x;
(D5) pm (_x) := x
1
(C6) pm[2](y);
2
3 y - 1
(D6) --------
2
(C7) pm[1](_x):=_x;
(D7) pm (_x) := _x
1


188 :GO MAXIMA:03/01/29 23:50
>>187
pm[_n](_x)の _xや_nはwartである_をxとnの前に着けて 名前の衝突を
避けるためのものですから、 定義のとき以外に使用しては wartの役目を
なさなくなるので 注意して下さい。
漸化式を関数で記述せねばならないのに 引数が グローバルではつらいので
普通使わない変数をあらかじめ 使用者が 決めておくのです。
これは なかなか深い問題でLISPで 新しいパッケージを書いてもこれに
ぶつかることがあります。2002/1/29,31にBartonとFatemanと私のMLが
あるのでアーカイブを見るとよい。
数式処理システムは それぞれ強烈な個性をもっているので
MAXIMAを触るときは Mathematicaのことは 忘れた方がよい。(老婆心ながら)

189 :186:03/01/30 08:36
Document を読むと、別に函数定義時の変数に_付けなくて
いいんですね。ポカ避けの知恵の習慣に近いものがありますね。

Mathematica の n_Integer で整数型変数名n という感覚が
ぬけませんので、しばらくはぐちゃぐちゃしています。

190 :あぼーん:あぼーん
あぼーん

191 :名無しさん@3周年:03/02/06 09:10
数式処理システムって、どれもこれも、実際にはどっちでもよいことを
かって気ままに選んで悦に入っているの観が強い。
シンタックスや、名前のルール、函数名、評価の方式、プログラミング構文
の表現、…がばらばらで、利用者を混乱させ、ユーザーをばらばらに分割して
数式処理ユーザーの勢力を削ぎ、ユーザーを囲い込むことしか視点にない
ように思う。
 言語設計者が一同に会して、共通の表現になるべく統一してもらい、
内部の演算アルゴリズムやデーター管理法、ライブラリの豊富さなどなどの、
プログラム言語以外の部分で、競争をしてもらいたいものだと思う。
 とかく計算機言語処理系屋さんは、どうでもいいところを、ちょっとだけ
変えて表面上の差別化をしたがるように思う。

192 :GO MAXIMA:03/02/07 02:04
>>191
確かに 数値計算系では R言語のように SやSplusとほとんど同じ言語
設計で schemeのうえに良く考えられたものをのせることでver0.49が公開され
て、その頃は皆はおもちゃのようだといったものだが、数年で巨大なライブラ
リ群をもつ大勢力となった例はある。統計のTOOLとみられがちだが 実はシミュ
レーションや アルゴリズムの実験には本命で数値系では学生には これを推し
ている。
>シンタックスや、名前のルール、函数名、評価の方式、プログラミング構文
>の表現、…がばらばらで、利用者を混乱させ、ユーザーをばらばらに分割して
>数式処理ユーザーの勢力を削ぎ、ユーザーを囲い込むことしか視点にない
>ように思う。
ところが これについてはそう言う面もあることは否定はしないが ほんとうは
汎用の数式処理システムの本質的難しさが あると思うね。
この点については ぼくらは1980年代の半ば、そう第五世代うんぬんの頃から
半歩くらい前に進めただろうか? 文字を使うことにより なんらかの標準形が
ないとうまく処理できないのは当然として 様々な数学の分野でいくつの標準
形を用意すべきだろうか? お子様向なら データベースを用意してという解答
もできるが、特定の分野、例えば超幾何関数に絞っても 不可能にちかいこと
は前に紹介した"A=B"の中でも論じられている。

193 :GO MAXIMA:03/02/07 02:05
実際この手のアプローチを行うと 現在使用できる言語の中で最も強力かつ柔
軟なコモンLISPが ぎしぎしと軋むのだ。生意気な若い人の論文によれば(
Domain Logic Programming Theory and Application in Scientific
Knowledge Representation by K J Dryllerakis 1996)Dryllerakisいわく、
本質的に 現在の数式処理システムは 大変すすんだ パワフルな(だけの)数式
数値電卓にすぎない。つまり標題のDomain Logic Programming が 知識をうま
く表現してくれればいいんだけどね、僕は信じないが一つの行き方ではあるね。
こんな処でいってどうなるというものでもないが 現在の数式処理をささえる
いろんな分野でいくつかの重大なピース(部品)が欠けていると思う。もっとも
それがなにかはっきりしていないが とにかく欠けている。
怪人Doron Zeilberger のWZアルゴリズムも本質的に有限和だから、(
A WZ PROOF OF RAMANUJAN'S FORMULA FOR π)にあるように工夫して無限和に
対応できるとしても スタンダードアルゴリズムとして採用するには
適用限界がきつすぎるというひともある。(この論文は1Pしかなくて彼のホー
ムページから手に入る) むろん彼の一歩はこのへんでは 比類無い程重要だ。
"A=B"ではclosed form が重要だとしか書いてないが アイデアの源泉は
HOLONOMIC SYSTEM にあって 多くの特殊関数がholonomic systemsの解として
得られることにあるようだ。(HOLONOMIC SYSTEMS APROACH TO SPECIAL
FUNCTIONS IDENTITIES をみよ) つまり言語やアルゴリズムの問題の他に数学
自体の問題でもあるのだ。僕等の夢は このへんの分野では コンピュータ化し
たRAMANUJYANを作ることであるはずだが まだまだ道は遠い。

194 :名無しさん@3周年:03/02/11 13:14
MAXIMA 5.9.0 リリースあげ

# 早く.deb出ねーかな。

195 :名無しさん@3周年:03/02/12 04:53
リリースキタ━━━━━━(゚∀゚)━━━━━━ !!

SRPMは本家サイトにあるね
Momonga Linuxのほうにも早速取り入れられてるようだ

196 :あぼーん:あぼーん
あぼーん

197 :あぼーん:あぼーん
あぼーん

198 :名無しさん@3周年:03/02/19 10:01
cygwinでMAXIMAを使っている人いますか?
いたらインストール法を教えて下さい。
(gclすらインストールできない。。。)

199 :あぼーん:あぼーん
あぼーん

200 :GO MAXIMA:03/02/24 02:20
MAXIMA5.9の正式版がでたのでちょっと使って見たい人むけにサンプルを書い
てみる。
目標 高木関数関数のグラフ
合成関数はMAXIMAではf(g(x))とダイレクトに書くしかないので再帰の合成関
数を書きたいとき不便である。MathemaicaにはこのためのNest関数がある。
Mathematicaの合成関数を作る関数Nestは便利なので作ってtestしよう。
(C36) f2(x):=1-abs(2*x-1)$
(C37) nest(_f,_x,_n):=block([_a,i],_a:[_x],for i:1 thru _n do (_a:map(_f,_a)),_a)$
(C45) nest(f2,x,3);
(D45) [1 - ABS(2 (1 - ABS(2 (1 - ABS(2 x - 1)) - 1)) - 1)]
(C46) nest(f2,x,4);
(D46) [1 - ABS(2 (1 - ABS(2 (1 - ABS(2 (1 - ABS(2 x - 1)) - 1)) - 1)) - 1)]
うまくいっているようなのでグラフを書いてみよう。
(C49) plot2d(d46[1],[x,0,1],[plot_format,gnuplot]);
set samplesが100 100なので これくらいだときつい。parameterのoptionを変更する
方法をみつけておく必要がある。gnuplotでないときは[nticks,300」とかする
これはgnuplotの時にも効くようだ。これは分点の数なのでグラフを見て調整
せよ。ついでにNestListにあたるものも作っておく。
(C60) nestlist(_f,_x,_n):=block([_a,i],_a:[_x],for i:1 thru _n do(_a:endcons(map(_f,[_a[ i]])[1]
,_a)),_a)$
(C61) nestlist(f2,x,3);
(D61) [x,1-ABS(2*x-1),1-ABS(2*(1-ABS(2*x-1))-1),
1-ABS(2*(1-ABS(2*(1-ABS(2*x-1))-1))-1)]
これの有用性は_fにどれくらいのexpression(表現)が許されるか?にかかっており
とりあえずはλ式を書いた時に動けは良いだろう。
(C70)nestlist(lambda([u],1-abs(2*u-1)),x,3);
で動くことが確認できたら後で使う関数をsaveしておく
(C71) save(takagi,f2,nest,nestlist)$

201 :GO MAXIMA:03/02/24 02:22
高木関数2
さてnestとnestlistがそろったので高木関数にとりかかる。
高木関数の定義はΣ(n=1 to inf)nest(f2,x,n)*2^(-n) であるがinfは無理な
のでグラフの精度から10くらいでやってみよう。
(C1) load("takagi")$
(C2) functions;
(D2) [f2(x), nest(_f, _x, _n), nestlist(_f, _x, _n)]
これで 関数がロードされているのが確認された。
(C3) display2d:false;
(C4) sum(nest(f2,x,k)/2^k,k,1,3);
(D4)[(1-ABS(2*(1-ABS(2*(1-ABS(2*x-1))-1))-1))/8
+(1-ABS(2*(1-ABS(2*x-1))-1))/4+(1-ABS(2*x-1))/2]
いきなりn=10で確かめないで小さい数で確認した。OKなようなので
(C5) sum(nest(f2,x,k)/2^k,k,1,10)$
(C6) plot2d(d5[1],[x,0,1],[nticks,500],[plot_format,gnuplot]);
これで高木関数もどきがグラフでかけたと思う。C6で d5[1]としているのはC5
の結果のD5がD4にあるようにリストになっているから その中身をとりだした。


202 :GO MAXIMA:03/02/24 02:22
高木関数3
では反省会
C5の計算は遅いがこれはinterpreterの癖であって 覚えておくとよい。
単純ループは遅い。C5を明示的に書いてコンパイルするてもあるが、
上級者はリストと map関数を使う。これは非常によく使うテクニックだから
理解して使えるようになるとスピードに関する不満はすくなくなるだろう。
ようは高木関数の計算では[1,1/2,1/2^2,.....]と [x,f2(x),f2(f2(x)),....]
の成分ごとの積をとってその結果に和をとればよい。
(C7) map("*",makelist(1/2^n,n,0,10),nestlist(lambda([u],1-abs(2*u-1)),x,10))$
(C8) apply("+",%)-x$
(C9) plot2d(%,[x,0,1],[nticks,500],[plot_format,gnuplot]);
(C7)と(C8)はかなり速いだろう。Lispならapplyはmapより段違いに遅いのだが
MAXIMA言語上では違いはないようだ。
C6とC9が遅いのはplot2d関数がとろいのでこれは当分なおらない、だれかが
改良しないかぎり。。。。

203 :あぼーん:あぼーん
あぼーん

204 :名無しさん@3周年:03/02/24 20:03
数値計算で、卒論のテーマになるようなのってなんかありますか?

205 :Edit1:03/02/24 21:05
test

206 :名無しさん@3周年:03/03/12 02:59
Lispの上にそのまんま乗っかってかかれているシステムは、ポインタを
たぐりまくるので、記憶の局所性を言語がわからは制御したり意識したり
して記述が出来ないし、本来ポインターを使う必要が無いような処理も
必ずリスト処理になるので、Lispは汎用性はものすごく高いが、処理は
えらくスローになる。要するにキャッシュとかTLBが利きにくく、パイプライン
も乱れまくりでストールの嵐が吹きまくる。
 それぐらいだったら、JavaとかFortran9x上で数式処理システムを
記述した方が、いまからだったら良くないだろうか?

207 :GO MAXIMA:03/03/12 17:31
>>206
数式処理言語をどんな言語で記述するのが適当か?というのは 非常に面白い
テーマだろう。簡単に言うと親言語のとっても深く実装(親言語自体の)の仕
方にかかわる問題で、>206のいうようなLISPをひとまとめにするレベルでは
なにも有効な話はできないと思うね。2、3年前の春休みにJAVAを調べたところ
の印象だけど、そのvirtual machineはすごい。
が その言語はあほ(失礼)でついていけねえ、つまり親言語としてvirtual
machineを使えばかなりなシステムを組めるだろうと思える。ただしjava
仮想マシンの命令セットを直接コーディング(最適化をふくめて)できれば、。
もしJAVA言語そのもので(まあRUbyでもよいが)数式処理システムのまねごと
を組んで今のcommon lisp上のMAXIMAより効率的になるとは夢にも思えません。(続く)

208 :GO MAXIMA:03/03/12 17:31
ちなみに 優れた数式処理システムであるREDUCEも20年前に開発を始めた頃に
はMACSYMAなどがメモリ等で大規模なSOLVEシステムとしてつかえないため、多
項式を含むSOLVEシステムとしてスタートした。比較的最近スタートしたYACAS
は確かC++で記述されていて 現代的だがだいたいMAXIMAより効率は倍程悪いが
汎用言語としてYACAS言語を設計しているためである。REDUCEはcommon lisp上
でもコンパイルできるが もともとはスタンダードLISP上で書かれたもので
元がSOLVEにしぼったものだけにMAXIMAより効率は何倍もよい。(使いやすいか
どうかは ???) 効率なら最近発売中止になったAXIOMの親言語 ALDORがフリー
になりこれのlibraryとして載せるのもおすすめだろう。もし今から一から始
める気なら現存のシステムを見ないでまったく新しい数式処理システムを目指
しなさい。そこで今必要とされているのは、NETで参加できる黒板のようなも
ので書き込んで(自動または手動で)数式展開でき、それをみて会話(音声でな
くてもあってもよい)他の人が書いた横にも書き込め 消すこともできるもの。
というか黒板のどこにでも書き込めるようにしてほしいね。
数学屋でも同じ分野で議論できるやつなんて数人だろうし、たくさん集まって
もろくなことないので4、5人ようでいいのではないか?あ勿論PDFやPSファイル
も張り付けるようにしてほしいね。やるきなら中の数式処理部分の作成には
協力するよ。(GPLで頼む。)これができれば50年は使えるのできみは神さ。
その黒板を1りで使えばOLDスタイルの数式処理システムというわけ。

209 :名無しさん@3周年:03/03/13 09:03
実装されているアルゴリズムの善し悪しが、そのアルゴリズムを記述
している言語処理系や翻訳系の効率よりも、相当に効くのじゃないか?

210 :'(hoge):03/03/13 12:41
>>208
つまりWebアプリケーションを目指すべきだということか。
GhostScript Maxima TeX Mozilla をApacheか何かで組み合わせれば
手間をかけずにGPLでできそうな...
おれにやれとはいわないでね。

>>209
おれもそう思う。
そして携帯電話用もしくはグラフィック・プレゼン用言語Javaでは
よいアルゴリズムなぞ実装できるわけがないやね。

211 :山崎渉:03/03/13 13:05
(^^)

212 :名無しさん@3周年:03/03/14 00:06
ある Web へのコメントをみんなで共有できるシステムはあるよね。
同じように X Window の1つの Window に”取り憑く”コメントシステムもあるよね。

これに TeXmacs を改修したものを組み合わせればいいのか。

そんなもの設計実装できたらなー

213 :あぼーん:あぼーん
あぼーん

214 :初心者:03/03/27 16:09
有理式の部分分数展開ってどうすればよいのですか?

215 :GO MAXIMA:03/03/27 17:44
(C4) display2d:false;
(D4) FALSE
(C5) partfrac((2*x^3+6)/(x-4)^3*(x-2)^2,x);
(D5) 2*x^2+16*x+614/(x-4)+920/(x-4)^2+536/(x-4)^3+104

216 :初心者:03/03/27 23:20
ありがとうございました。

217 :名無しさん@3周年:03/03/31 22:18
数式処理システムの実装に、

JavaやC++みたいな手続き言語使うと地獄を見るヨカソな事とか、

関数型プログラミソグが可能なLispは、アルゴリズム書く時のコードが
短くなるんで保守が(比較的)楽な事、なんかは何となく理解したんだけど、

Prolog、KL1みたいな論理型プログラミソグによる実装の
実用性ってどの位なんですかね。

MaximaはLispだし、Mathmaticaな人もLisp的な発想の設計した訳だし、
関数プログラミソグがマンセーな事は十分証明されてるんだから、
素人はそれ使えって言われると素直に従わざるを得ないんだけど。

218 :名無しさん@3周年:03/04/06 06:03
AXIOMってGPLになったんですか?

219 :名無しさん@3周年:03/04/14 22:15
>>217
論理プログラミング言語はLispでしばしば容易に実装されるようだから,
後者の方が強力なのでは?
というか具体的にはLispでPrologを実装し,
それでシステムを構築するというのは一応Lispの精神に則っていると思われ.

220 :GO MAXIMA:03/04/16 23:39
>>218
Axionについてはほんとにfreeになったみたいですね。ただまだ開発協力者
にしかsourceが公開されていないようですが、そのうち公開されるでしょう。
AxiomについてMaximaのMLで親分のFatemanがFree Axiom change world?という
書き込みをしているのでちょっと訳してみよう。"
そうTim Dalyやその他のAxiomのエキスパート達は文句あるというだろうが、
私の見るところ、AxiomはMacsymaや他の数式処理システムよりはるか遠くをめ
ざしまたよりいきあたりばったり(ad-hoc)でないやりかたを求めた貴重なここ
ろみであったと言えると思う。そんなふうに、Axiomは 数式処理を構成するた
めの十分透明で 頑丈な基礎を提供できた。(はずであった。仮定法の気持ち)
にもかかわらず実際は Axiomは(他より)不十分であったし、ad-hocな構成を
認めざるを得なくなっていった。(実用性を高めるために)
非可換環上の多項式を扱うプログラムを書きたいならAxiomは頼りになるだろ
う。あるいはClifford Algebraをのせるなら。(僕のことか!)
しかし"integral result"を導入するときには それらを扱うプログラムを書く
ことは それほどきれいにはいかない。つまり Axiomが競争相手を一掃できな
かった理由の(かなりの)部分は 数学がきたないことにある。(ここでの数学が
きたないとは、数学自体が十分発達していないと言う意味だろう。Knuth先生
のいうArtと Sienceの発言と同一内容の発言と思われる。>>149 参照)(続く

221 :GO MAXIMA:03/04/16 23:40
大学院レベルのalgebraの知識を持たない人にたいして 使いやすいフロントエ
ンドを作ると言う問題もある。そして(ライブラリなどの)付加プログラムを書
くことは 院生レベルの代数の力をもたなければ難しい。もしあなたが物理屋
で応用数学の問題をかかえているなら Axiomでプログラムするのはかなり困難
な作業になるだろう。その進んだアルゴリズムもRish積分のような通常のプロ
グラムにおいては必ずしもMapleやMathematicaやMacsymaよりも良いわけでは
ない。
NAGによるマーケッティングがへたであった(たぶんIBMにも責任があるが)のは
また別の問題だったが Axiomがfreeになればこのことは問題ではない。
Axiomが利用できるのは良いことだし、学問的には(研究者には)Axiom上になに
かをのせるのはすてきなことだ。もしユーザインタフェイスやプロティングや
その他利用可能なものを作るなら また素敵なことだろう。実用的見知からい
えばMaximaが、Axiomからその進んだアルゴリズム様式のなかに輸入すべき多
くのものを見つけられるとか Axiomを呼び出すことで多くのことがなされる
とは思わない。"
以上さすがですね。Axiomはhttp://home.earthlink.net/~jgg964/axiom.html
をみよここからbzipの圧縮で124MBのCDイメージが配布されている。(たぶん
Lいぬx用) aldorはAxiomの親言語でこれとAxiomは別物です。コモンリスプと
MAXIMAの関係です。

222 :山崎渉:03/04/17 08:45
(^^)

223 :GO MAXIMA:03/04/17 17:25
これに関してStavros Macrakisから(MITのひと)MLに意見がでているがある意味
で現状をまとめているので訳しておこう。
"マーケッティング プランの重要な部分は、競合相手の全貌を明らかにして
そのなかで我々自身の身の置き所(拠点)を見つけることにある。
MathematicaやMapleやAxiomが持っていないもので 我々が持っているものは
なにか?またはその逆に われわれが持っていなくて競合相手が持っているもの
はなにか? 最もはっきりしている点は MAthematicaやMapleは無料ではないが
我々は無料だということだ。Axiomと比較すれば 我々の方が明らかに使いやす
く一般的にはより実用的であるが、Axiomよりpureではない。
どんなグループのユーザに対して競合相手より良いものにできるだろうか?
学部の物理教育を行っている人むけに ベストソリューションを提示すること
だろうか?(たぶん) 純粋数学者に対してか?(たぶん否) 数式処理システムを
ちょっと使ってみたい人にたいしてか?(たぶん) Lいぬxハッカーにたいしてか?
これらのこと(対象とすべきグループの特定のこと)を明らかにしてはじめて
システムのどの部分が最も緊急をようする仕事(改編)を必要としているか知る
ことができる。
またいかにしてMaximaへの関心を呼び起こすかについてあるアイデアがではじ
めているし、Maximaが Maximaから恩恵を受け得る人々にわたり始めている。
例えば もし物理の学部生が重要なユーザグループなら、すでに物理クラスで
Maximaを使っている人々に(Nikosなど)その経験をusenetと同様に物理教育
の専門紙に載せるようにしてもらおうではないか。"

224 :名無しさん@3周年:03/04/18 18:55
ここおすすめ
http://zoetakami.fc2web.com/

225 :名無しさん@3周年:03/04/18 19:08
これは安いアダルトDVD一枚900円!!
http://www.net-de-dvd.com/
これは安いアダルトDVD一枚900円!!
http://www.net-de-dvd.com/
これは安いアダルトDVD一枚900円!!
http://www.net-de-dvd.com/
これは安いアダルトDVD一枚900円!!
http://www.net-de-dvd.com/
これは安いアダルトDVD一枚900円!!
http://www.net-de-dvd.com/
これは安いアダルトDVD一枚900円!!
http://www.net-de-dvd.com/


226 :山崎渉:03/04/20 03:56
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

227 :名無しさん@3周年:03/04/20 13:22
保守

228 :あぼーん:03/04/20 13:48
( ´Д`)/< 先生!!こんなのを見つけました。
http://www.web2001.kakiko.com/koma/hankaku/hankaku09.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku10.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku07.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku08.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku05.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku06.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku03.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku04.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku01.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku02.html

229 :■□■週間アイドル盗撮ランキング【4月】■□■:03/04/20 15:51
安倍な●み 盗撮ランキング1位
http://rental.serikura.jp/~shop/nt/ans.jpg
加護○依 盗撮ランキング2位
http://www.all-mode.net/jrank/in.php?id=arifish
松浦○や 盗撮ランキング3位
http://pakopako.misty.ne.jp/enter.cgi?id=arifish
深田●子 盗撮ランキング4位
http://friends.rank.ne.jp/in.cgi?account=arifish
藤本●貴 盗撮ランキング5位
http://sagisou.sakura.ne.jp/~deai2/cgi/rank.cgi?arifish
浜崎あ○み 盗撮ランキング6位
http://it.sakura.ne.jp/~www/www/ranklink.cgi?id=arifish

先週のランキングベスト1はこの人!!!
http://sagisou.sakura.ne.jp/~deai2/cgi/rank.cgi?arifish

230 :名無しさん@3周年:03/04/20 18:04
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

231 :tantei:03/04/20 18:26
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●別れさせ工作
あらゆる手段を使ってターゲットを別れさせます!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  hentaimtt@k9.dion.ne.jp
   ■グローバル探偵事務所 



232 :vine user:03/04/21 21:48
maximaは便利そうでしたのでVine Linux 2.6にmaximaをインストール
してみたところ、グラフをpsにsaveしたあとgvで開いてもグラフの
文字が表示されません。なんでだろー;;

233 :名無しさん@3周年:03/04/25 02:07
数学での慣用の数式表現や、数式を議論や証明の中で用いていくやり方は、
人間の側の(それも特にその数学の分野の高レベルの知識共有者層の)
知性を使い、解釈される、あるいは前後との関係性に於いてその意味を
確定するという作業が含まれている。あるいは、活字による植字によって
数式を書物の形で公表印刷するための記号の制約や節約、慣用などが
長い歴史の中で少しずつ変貌しながら進化してきたものである。特に
代数を中心とする抽象数学の洗礼を浴びて、記号がより抽象的な意味に
使われるようになり、記号が意味する程度の高みはうんと増大したと思う。
 しかし、人間が考えながら読んだり意味を確定させていくものであるから、
機械の立場からすれば、あいまいで、不確実で、人語で書かれた補足や
環境、文章の脈、その分野での慣用(複数あるうちのどれであるかの推察)
をも総合して判別せねばならない。またそのような環境や文脈は、時代性、
学派毎、著者の好み、前提となる定義が乗っている文献との関連性、
などによって変化するもので絶対的なものではない。仮に今の時点で絶対
的な記述法則を作ったとしても、それは語学におけるエスペラント語の
ような存在になり、器としては美しくても、その中身があまり入っていない
ものになりかねない。普及性や政治的な力学も問題になる。
 数学公式集ですら、本ごとに、あるいは同じ本でもその場その場で記号の
意味や使われ方は、揺らぐのだ。

234 :名無しさん@3周年:03/04/25 12:31
>>233
その通りだと思うけど、この噺と maxima はどういう関係があるのかな?
mathML批判でつか?

235 :GO MAXIMA:03/04/30 16:25
Good news まともなスピードのgrobner basisパッケージが動き出した。
sourceforgeのMAXIMAのCVSからshare/contribにあるGrobnerのdirからファイ
ルをもってきてコンパイルする。GCL系では Ctr-CでLispモードに入り
(compile-file "maxima-grobner.lisp" :load t) でmaxima-grobner.oができ
るので 次回からはload("maxima-grobner.o")でよい。CLISP系でもほぼ同じで
to_lisp();でLispモードに入り(compile-file "maxima-grobner.lisp")で
maxima-grobner.fas ができる。次回からはload("maxima-grobner.fas")
これでSINGULARとの連係におさらばできる。前の例では
(C10) poly_reduced_grobner([x^2+y^2-z^2,(z+137189/648)^2-(2000-x)^2-y^2,(z+59673/82)^2-(5000-x)^2-(y-1000)^2],[x,y,z]);
(D10) [-177796944*z-1679616000*x+1660795178279,
-560285059824*z-2823434496000*y+21998053841087597,
-3784267872668034820203264*z^2-13159583791868133014496308064*z
+245854250789927016518031203430205]
(C11) solve(%,[x,y,z]);
(D11) [[x = (106870231*SQRT(5413398903675618976322126579018176079)
+334114126839289403351876931)
/284874124711535292096000,
y = (200342821*SQRT(19)*SQRT(23)*SQRT(29)*SQRT(31)*SQRT(557)
*SQRT(24738519583585834819353756469)
+2317813674867395903039582559)
/284874124711535292096000,
z = -(252396*SQRT(19)*SQRT(23)*SQRT(29)*SQRT(31)*SQRT(557)
*SQRT(24738519583585834819353756469)
+123829266334200288076787)
/71218531177883823024],もう1組解があるが略
このての3元連立方程式はMaximaのsolveでは解けず問題になっていた。

236 :GO MAXIMA:03/04/30 16:26
もう1つ例をあげとけば 三角形ABCの垂心H、重心G、外心Oは同一直線にある
ことを示せ(小平の初等幾何などにあるようにできる。)いわゆる重心座標から
matrix([[1,tan(A),sin(2*A)],[1,tan(B),sin(2*B)],[1,tan(C),sin(2*C)]])
の行列しきが0と同値。A+B+C=180のときは
tan(A)+tan(B)+tan(C)-tan(A)*tan(B)*tan(C)=0だから
tan(A)=x,tan(B)=y,tan(C)=zとおけば イデアルの問題として単項イデアル[x*y*z-x-y-z]
に上の行列式が属するかどうかの問題となる。
(C16)poly_grobner_member((x*z-x*y)*(1+y^2)*(1+z^2)+(y*x-y*z)*(1+x^2)*(1+z^2)+(z*y-z*x)*(1+x^2)*(1+y^2),[x*y*z-x-y-z],[x,y,z]);
(D16) TRUE
となり証明できた。
poly_grobner_member((x*z-x*y)*(1+y^2)*(1+z^2)+(y*x-y*z)*(1+x^2)*(1+z^2)+(z*y-z*x)*(1+x^2)*(1+y^2),poly_reduced_grobner([x*y*z-x-y-z],[x,y,z]),[x,y,z]);とおいても同じで単項イデアルでないときは
このスタイルでやる。

237 :名無しさん@3周年:03/05/06 23:53
Maximaの日本語参考書はないのかな?

238 :__:03/05/07 00:53
( ´Д`)/< 先生!!こんなのが有りますた。
ttp://www.yamazaki.90.kg/hankaku/hankaku04.html
ttp://yamazaki.90.kg/zenkaku/index.html
ttp://www.yamazaki.90.kg/hankaku/hankaku03.html
ttp://yamazaki.90.kg/hankaku/hankaku10.html
ttp://www.yamazaki.90.kg/hankaku/hankaku05.html
ttp://yamazaki.90.kg/hankaku/hankaku08.html
ttp://www.yamazaki.90.kg/hankaku/hankaku07.html
ttp://yamazaki.90.kg/hankaku/hankaku01.html
ttp://www.yamazaki.90.kg/hankaku/hankaku06.html
ttp://yamazaki.90.kg/hankaku/hankaku02.html
ttp://www.yamazaki.90.kg/hankaku/hankaku09.html

239 :__:03/05/07 03:23
   川o・-・)ノ <先生!こんなのがありました!
ttp://www.yamazaki.90.kg/hankaku/hankaku01.html
ttp://yamazaki.90.kg/zenkaku/index.html
ttp://www.yamazaki.90.kg/hankaku/hankaku04.html
ttp://yamazaki.90.kg/hankaku/hankaku10.html
ttp://www.yamazaki.90.kg/hankaku/hankaku07.html
ttp://yamazaki.90.kg/hankaku/hankaku08.html
ttp://www.yamazaki.90.kg/hankaku/hankaku05.html
ttp://yamazaki.90.kg/hankaku/hankaku03.html
ttp://www.yamazaki.90.kg/hankaku/hankaku06.html
ttp://yamazaki.90.kg/hankaku/hankaku02.html
ttp://www.yamazaki.90.kg/hankaku/hankaku09.html

240 :__:03/05/07 04:10
   川o・-・)ノ <先生!こんなのがありました!
ttp://www.yamazaki.90.kg/hankaku/hankaku01.html
ttp://yamazaki.90.kg/zenkaku/index.html
ttp://www.yamazaki.90.kg/hankaku/hankaku04.html
ttp://yamazaki.90.kg/hankaku/hankaku10.html
ttp://www.yamazaki.90.kg/hankaku/hankaku07.html
ttp://yamazaki.90.kg/hankaku/hankaku08.html
ttp://www.yamazaki.90.kg/hankaku/hankaku05.html
ttp://yamazaki.90.kg/hankaku/hankaku03.html
ttp://www.yamazaki.90.kg/hankaku/hankaku06.html
ttp://yamazaki.90.kg/hankaku/hankaku02.html
ttp://www.yamazaki.90.kg/hankaku/hankaku09.html

241 :動画直リン:03/05/07 06:24
http://homepage.mac.com/hitomi18/

242 :bloom:03/05/07 08:24
http://homepage.mac.com/ayaya16/

243 :山崎渉:03/05/21 21:50
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

244 :山崎渉:03/05/21 23:38
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

245 :名無しさん@Emacs:03/05/26 11:47
karaage

246 :132人目の素数さん:03/05/27 02:33
>>233
むしろエスペラント語を作るそのプロセスにこそ学ぶべきものが
あるんではないですか?エスペラント語それ自体は役に立たないとしても。

247 :山崎渉:03/05/28 14:17
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

248 :GO MAXIMA:03/06/11 04:24
以下は4元数のパッケージです。MAXIMAからload("yogen.mac");で使えるようにファイルyogen.mac
にいれてください。説明は今週じゅうに書き込みます。
dotdistrib:true$
dotexptsimp:false $
dotscrules:true $
dotassoc:false $
declare([i,j,k],nonscalar)$
declare([_a,_b,_c,_d,_e,_f],scalar)$
matchdeclare([_a,_b,_c,_d,_e,_f],scalarp)$

defrule(f1,j.j,-1)$
defrule(f2,i.i,-1)$
defrule(f3,k.k,-1)$
defrule(f4,i.j,k)$
defrule(f5,j.i,-k)$
defrule(f6,j.k,i)$
defrule(f7,k.j,-i)$
defrule(f8,k.i,j)$
defrule(f9,i.k,-j)$

expand4(_ex):=block([_eex],_eex:apply2(expand(_ex),f1,f2,f3,f4,f5,f6,f7,f8,f9),
_eex:apply2(_eex,f1,f2,f3,f4,f5,f6,f7,f8,f9),_eex)$

conj4(_ex1):=block([_eex1],_eex1:expand4(_ex1),
_ex1:coeff(_eex1,i)*i+coeff(_eex1,j)*j+coeff(_eex1,k)*k,ratsimp(_eex1-2*_ex1))$






249 :GO MAXIMA:03/06/11 04:25
norm4(_ex1):= sqrt(expand4(_ex1 . conj4(_ex1)))$

inv4(_ex):= block( if (norm4(_ex)#0) then conj4(_ex)/norm4(_ex)^2 else false)$

scalarpart4(_ex1):=block([_eex1],_eex1:expand4(_ex1),
_ex1:coeff(_eex1,i)*i+coeff(_eex1,j)*j+coeff(_eex1,k)*k,ratsimp(_eex1-_ex1))$

vectorpart4(_ex1):=block([_eex1],_eex1:expand4(_ex1),
coeff(_eex1,i)*i+coeff(_eex1,j)*j+coeff(_eex1,k)*k)$

decomp4(_ex1):=block([_nn,_mm],_nn:norm4(_ex1),_mm:vectorpart4(_ex1),[acos(scalarpart4(_ex1)/_nn),_mm/norm4(_mm),_nn])$

invdecomp4(_exlist):=block([_th,_pureq,_r],_th:_exlist[1],_pureq:_exlist[2],_r:_exlist[3],expand4(_r*cos(_th)+_r*sin(_th)*_pureq))$
//ここまで
とりあえず数学板の数学の本すれに使用例はあげときました

250 :名無しさん@3周年:03/06/11 12:41
http://www.videopokerclassic.com/~146717iUA/indexjp.html


251 :名無しさん@3周年:03/06/11 13:54
みてね〜♪
http://www1.free-city.net/home/s-rf9/page002.html

252 :GO MAXIMA:03/06/11 15:56
また4元数の計算などのように異なった種類の文字、たとえば基底のi,j,kとスカラーの
thや_a,_bなどが混合しているとき式の簡略化の機能が不足します。これを補うのが
formatパッケージで CVSからとってきて必ずインストールのこと。ちょっとコツがいるので
書いときますね。sourceforgeのmaximaのCVSからshare/contrib/formatから
coeflist.lisp,format.lisp,format.demo,format.psなどをとってくる。
2つのlispファイルの前の方にある数行を変更する。
(in-package 'climax)を;;(in-package 'climax)とコメントにする。
;;;(in-package 'maxima)を(in-package maxima)へ かならず'maximaを
ただのmaximaと クオートをはずすこと次の2行は
(defmacro mexp-lookup (item alist) `(assolike ,item ,alist))
(defmacro mlist* (arg1 &rest more-args) `(list* '(mlist simp) ,arg1 ,@more-args))
と;;;をはずすだけでOK
カレントDIRにこれらのlispファイルをおいて
maximaのなかから
(C1) load("coeflist.lisp")$
(C2) load("format.lisp")$ とすれば使えるようになる
一連のテンプレートを使ったマッチングで テンプレートを自分で
書けばかなり複雑な処理もこなせるが とりあえずformat(expression,%p(a,b),format)これは
expressionをaとbの整式に整理するというテンプレートでこれだけでも十分役に立つ

253 :GO MAXIMA:03/06/11 16:00
formatの続き
sumの扱いがmacsymaに比べて面倒なのはMLでなんどか取り上げられていて
おおむねdeclare(sum,linear)をいれておけばうまくいく。ただしこの時
でもsumの第一引数はevalされないので展開してくれず このlinear宣言が
効かないことがありこの場合はformatの出番だろう。
(C22) declare(sum,linear)$
(C23) sum((x^i+y^i)*(x^i-y^i),i,1,n);
(D23) 'SUM((x^i-y^i)*(y^i+x^i),i,1,n)
(C24) format(%,%sum,expand);
(D24) 'SUM(x^(2*i)-y^(2*i),i,1,n)
(C25) ev(%,sum,simpsum:true);
(D25) (ABS(x)^(2*(n+1))-x^2)/(x^2-1)-(ABS(y)^(2*(n+1))-y^2)/(y^2-1)
macsymaでは(C23)(D23)(C25)(D25)と1Step省くことができる


254 :GO MAXIMA:03/06/11 16:04
捕捉
formatの必然性は パターン認識が働くのにはパターンを数式処理システ
ムに理解させる必要があるが、数式処理システムの計算手順を変えないと
不可能な場合や、データ型を変更しないとできない場合にはお手上げであっ
た。formatは前者の場合には 極めて有効に働く。パターンにあたるテン
プレートを書けばuser独自のパターンを認識させることもできる。
ただし後者は無理なようだ。後者までできると 万能のそれだけで計算機
械となるがまだだれも実現できていない。ようするにいきなり猫を数える
計算式を評価している最中に猫は猫関数Fとするとされたら計算
の継続に問題を生じるだろう。そこまでいかなくても 関数の引数を関数
の外からformatできれば実用性はかなりますのだが。関数の引数は現在の
MAXIMAでは関数が最後に勝手に評価してしまうため formatとで変形して
も評価でもとに戻ってしまうのでうまくいかない。

255 :名無しさん@3周年:03/06/12 08:43
http://bizinfo.cool.ne.jp/biz-rank/ranklink.cgi?id=mercury

256 :Q1::03/06/13 03:14
どのLisp上のMaximaがもっとも便利で、有能で、丈夫で、早いので
しょうか?

257 :Q2: 64ビット版?:03/06/13 03:18
物理メモリーが沢山つけられる様になり、AMDのOpteronの
ように64ビットアドレスをもったPC用のCPUが普及しそうな今、
整数やポインタが64ビット幅のハードは普通になり、メモリーが
4GBを超えて沢山つくのです。
 さて、Maximaの場合、64ビットハードを有効に利用しようと
考えたら、その取るべき道はどうするのがもっとも素直で、32ビット
版の開発との整合性、平行性を保てるかという点が気になります。
 たとえば、Lispさえ、ポインターが64ビット化されたものを
用意できれば、それでMaximaも正常に動作すると仮定してよい
のでしょうか? 

258 :GO MAXIMA:03/06/13 04:03
>>256
cmuclです。一般にユーザが最高速で走らせたい場合は
コンパイルするのは常識ですよね。このときMAXIMA言語で書いてもコンパイラ
にLISPで書くのと同じような指示を出せます。
(C10)f(x):=block(mode_declare([function(f),x,y,z],float),declare([y,z],special),
sin(x^2+y^2+z^2));
(C11)
f1(y):=block(mode_declare([function(f1,f),y],float),declare(f,special),
romberg(f,0.0,1.0));
(C12) f2(z):=block(mode_declare([function(f2,f1),z],float),
declare(f1,special),romberg(f1,0.0,1.0));
(C13) translate(f2,f1,f); このようなmode_declareや declareの使いかたは
maximaのマニュアルには載ってないがmacsymaのマニュアルにはあってmaximaでも
効果的に動きます。
gclはコンパイルしても配列の操作はおそいようです。CLISPはネイティブに落すのでは
ないのでそれなりのスピードと思われていますが実装が新しいためかなり速いです。
gclと同程度。
>>257 残念ながら 正確なところは解かりませんが、メモリ管理などは完全にLISP
の側にあづけてあるので10ちゅう8、9動くと思いますが くだらないINTの問題などで
コンパイラには?

259 :名無しさん@3周年:03/06/13 05:16
☆Hサイト&サンプルムービー☆ 〜まずは無料で〜
http://yahooo.s2.x-beat.com/linkv/linkv.html

260 :名無しさん@3周年:03/06/30 12:58
COMMON LISPは仕様が大きすぎると感じます。
MAXIMAを移植したり動かす為には、COMMON LISPとして
何が「必要にして充分」なサブセット仕様であるかが
わかるとうれしいのですが。

261 :flatline:03/07/11 04:18
Common Lispがよかったのか、SRFIを十分含めたSchemeがよかったのか。
Schemeコンパイラくらいあるでしょ。SchemeからCでもいいのか?あっSchemeでは型宣言が使いづらい?
SchemerはCLの名前空間の分離に戸惑うらしい、どちらが優れているのか?
CLの例えば(format)は疑問。printf()の中にループ構文が必要かと小一時間(ry
-あるCL関数はMaximaソースで使われているのか?
HyperSpec内の関数をスクリプトで一つずつソースからGrep
-制御構文(?)if do catch etc... Call/CCとか入れたら役に立つのだろうか
-数学ソフトウェアとしては数値の扱いが外せない。
多倍長整数、有理数、浮動小数点数 etc... これはすでにCL処理系の違いでも問題化。
あるソフトで「可搬性がありそうなC++の小さいサブセットで書いてます」っていうのを見たことがある。
最後はマシン語(含む仮想)に落とすことを考えれば、等価性から、あまり下らない仕様は使わない方がいい。
しかし数学のような複雑な対象を扱う大規模アプリケーションなのだからプログラマに負担を書けない方がよい、抽象度を高く。
最近生協にRisa/Asirの人達によるグレブナ基底の新刊とRisa/Asirの新刊があるのを見ました(T大出版会)。
この方面の成長性はどうなのだろうか。素粒子物理でパッケージを書いた人がノーベル賞をもらったが、
ヰッテンのような神クラスに仕える計算機タイピストにならずにすむのならば生涯のテーマに選んでもいい。
その場合、最小サブセットをさがすこともいい修行?期待せずにお待ち下さい(w
JavaはVMを使っている、Scheme処理系の中にはJavaVMを使うものがある...類推から、
CLispのVMをJavaVMにしてしまうのは?Sunある限りCLispのメンテ、ポーティングは楽勝。
また東大杉本研では多体重力問題専用のマシン(正確にはグラフィックボードのような自己完結でない部品)を
チップレベルで設計して成果を挙げました。21世紀、Lispマシンの復活!!
ああ眠気に任せて下らないことを書いていたら一番分かったのは自分の無知だ。すいません。

262 :山崎 渉:03/07/12 12:19

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

263 :山崎 渉:03/07/15 12:53

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

264 :山崎 渉:03/08/02 02:28
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

265 :ぼるじょあ ◆yBEncckFOU :03/08/02 03:03
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

266 :名無しさん@3周年:03/08/08 10:35
ここは要するに専門用語と難解な数式を書き連ねて自分がいかに数学マニアか(本当は教養なきタコツボ)を
競うスレだろ.

267 :あぼーん:あぼーん
あぼーん

268 :名無しさん@3周年:03/08/08 13:40
※注意(海外から翻訳して見ている方へ)

ここの日本人はネット中毒により精神障害を患っております。

また2ch掲示板では、多くの工作員が存在し、誹謗・中傷を繰り返している所でもあります。

多くの日本人は韓国人に友好的です。誤解の無いよう、お願い致します。

※??(????? ??? ?? ?? (?)??)

??? ???? ? ??? ?? ?? ??? ?? ?? ????.

? 2 ch??????, ?? ???? ???,

?????? ???? ?? ???? ???.

?? ???? ???? ??????. ??? ??, ??????.

269 :あさがお:03/08/09 21:40
http://elife.fam.cx/a010/



270 :名無しさん@3周年:03/08/10 01:01
>>262-269
このスレにコピペ&広告書き込みするというのは、
いかがなものか?
このスレの住人は、誰もあんた等に興味はないよ。

271 :山崎 渉:03/08/15 17:54
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

272 :名無しさん@3周年:03/09/08 12:44
MAXIMA 付 1CD-Linux 登場!
ttp://unit.aist.go.jp/it/knoppix/#News

273 :名無しさん@3周年:03/09/22 02:28
MAXIMA死んだ?

274 :名無しさん@3周年:03/10/05 02:44
age

275 :名無しさん@3周年:03/10/07 01:16
八重洲ブックセンターにCambridgeから出たModern Computer Algebraという
厚目の本が平積になっていたので買ってみた.(計算機代数の本はもう1冊置いていたが)
関連する数学やアルゴリズムを広く浅く紹介するもので,面白そう(なかなか読みきれそうにはない).
シクロヘキサンの分子構造の表現から始まるのもユニーク.
著者の片方はMapleの関係者らしい.
各partには数学者の名前が冠せられていて短い伝記も付いている
(一次方程式系の部にはGauss,数値アルゴリズムの部にはNewton).
こういった本には珍しく,カラー図版がいくつも.
さすがケンブリッジ,楽しい本を出してくれた,と思った
(WeispfeningのComputer Algebra Handbookはまさにデータブックといった感じだったが).
GO MAXIMA殿でも誰でも構いませんが,読んだ方がいらしたら感想キボンヌ.

276 :GO MAXIMA:03/10/07 14:25
>>275
良い本です。ただし内容の深さにむらがありすぎて教科書にはならないと思う。
逆に面白そうなところを拾い読みする本だろう。いくつかは 商用システムに
採用されている新しい高速アルゴリズムであるし、整式については古いものから
かなり丁寧な解説と演習がついているのは良い。つまり数式処理の中核は 整式
であるという主張が読み取れる。おすすめはPARTIV Fermatの18 Primality testing
19 Factoring integers のLensta's elliptic curve method とか 21 Grobner bases
のP592のNotes と続くExercises とか(Grobner basesを学ぶのには別の本が必要)、
24 Applications くらいかな。
数式処理を実装する立場の人からみれば、たぶん きれいごとすぎるように感じる
本だと思うね。しかし確かに数式処理の中核は 整式であるから全体を見渡せる価値ある
本だと言える。P750の割に安いのもいい。

277 :名無しさん@3周年:03/10/09 23:41
お返事どうもです。確かに拾い読みというのは同感 (離散cos変換はやりすぎw
Groebner basisにはやはりCox, Little, O'SheerのUTMとGTMでしょうね。
最近、和書も出たようですし、Groebner basisは次第にメジャーになってきてるようですね。
しかし積分についてはこの本で初めてまともな説明に出会ったなあ...
(単なる不勉強ですかね?)
"Risch" をググってもまともな情報がかかりやしないし、認知度低いですね。

ROMな方への補足: 著者の片方はMuPadを作ってるPaderborn大学の人ですた。
補助サイトはここ ttp://www-math.upb.de/mca/

ちなみにこの前BSD magazineか何かに「BSDで使える数学フリーソフト」
みたいな特集があってMaximaとRisa/Asirが触れられてました。

278 :名無しさん@3周年:03/11/06 00:33
http://science.2ch.net/test/read.cgi/math/1065199228/461
http://science.2ch.net/test/read.cgi/math/1065199228/469-471
http://science.2ch.net/test/read.cgi/math/1065199228/485

何故このような現象が起こるのでしょうか?

279 :名無しさん@3周年:03/11/06 10:03
MAXIMAが(まだ)スピード重視路線じゃないってことかな?
具体的には素因数分解のアルゴリズムの違いだと思う。
例えば scheme で rho method を使うと
============================================
(define (rho-method n)
(find-fact 1 2 5 1 n))

(define (find-fact k xx x l n)
(let ((g (gcd (- xx x) n)))
(cond
((= g n) (list g))
((= g 1) (advance k xx x l n))
(t (cons g
(let ((new-n (/ n g)))
(find-fact k (modulo xx new-n) (modulo x new-n) l new-n)))))))

(define (advance k xx x l n)
(let ((new-x (modulo (+ (* x x) 1) n)))
(if (= k 1)
(find-fact l x new-x (* 2 l) n)
(find-fact (- k 1) xx new-x l n))))

(rho-method 32563607022451)
--> (5465377 5958163)
==============================================
533MHzで1秒位。末尾再帰をどうにかすれば lispでも同等だと思う。
lispだから遅いとは言えないと思う。

280 :名無しさん@3周年:03/11/06 10:06
インデントが変になっちゃった。

281 :GO MAXIMA:03/11/08 02:36
>>278
まあ 意欲のある高校生や 大学生にこう言っては失礼かもしれないが
数式処理システムを使いこなすのは きみらの素のままの頭では無理だろう。
数式処理システムは いかに文字計算において 人間および 数式処理システム
が限界にすぐぶつかるか、そのとき何がテーマになるか? どうやって限界を
もうちょっと先まで調べるのに何が役立つか?を考えるための道具としてその
存在意義があるのだから。つまりそんなとき役に立つのは数学そのものだろう。
先輩諸先生方にきいても、数学しらんやつが数式処理システムでやる計算なん
てないだろう、ということでしたね。(商用の利用は知らんけど)
大雑把にいえば 概念で表されたものはなんでも自由に操作できる我々と 記号
で表されたものならメモリ、CPUの限界まで計算しまくる数式処理システムと
はまったく別の数学のやり方であり、別のやり方だけに互いを知ることに大き
な意味があると思う。現段階では数式処理システムに あなたが数学を教えな
ければならない。この過程は初心のものには非常に有意義だ、自分で確かめ
工夫をすることで 数学自体に対するセンスもよくなる。つまるところ商用の
盛り沢山の数式処理システムは この教育的側面では Maximaより良いとはいえ
ない。

282 :GO MAXIMA:03/11/08 02:36
では279が rhoアルゴリズムの例を出してくれたので 数学的側面を Modern
Computer AlgebraのP515からP523にそって解説し、common lispで書いて
Maximaの関数として 載せて それぞれスピードをみてみよう。Pollardの1975
に出たこのアルゴリズムは ちょうど カオスが表に出てきた時代でランダム性
の応用とみても面白いだろう。Pollardは大きな数の素因子をみつけるのに
次のように考えた。Nが素因子pをもつとすれば mod N での或る種のランダム
列(有限列だけれども)はmod p で同じ値になるものがあるが、どれくらいたく
さんのものをとったら同じ値のものがみつかるか?は誕生日の問題として有名。
以外に少ないのだ。(誕生日の問題は余事象で考えよ。O(√p)のオーダで一致する)
このままでは mod N での或る種のランダム列と pが与えられれば その列の少
ない項の中に mod p で同じ値になるものがあるというだけで pを求めるのに
有効そうに無い。Pollardは カオス列の操作と同様に最初の列を1つ飛ばしに
取った列もカオス列だろうから この中で 同じ順に比較したものもmod p で同
じ値に なるものに比較的すくない項ででっくワスのではないか、このときの
x[i]-y[i] はmod p で0 gcd(x[i]-y[i],N)は仮定から1以外の約数で、ここで
発想を転換すれば gcd(x[j]-y[j],N)は 大抵は1であって これを しらべれば
pを表に出すこと無く計算は可能になる。つまり1つのランダム列からもう一本
ランダム列を作ってgcd(x[j]-y[j],N)を計算していけば比較的はやくNの約数
を見つけられる。(比較的早くと言うのが理論的背景なのだ。)

283 :GO MAXIMA:03/11/08 02:37
ええっと ランダム列はx[i]=x[i-1]^2+1でつくり y[i]はひとつ飛ばしでつく
る。これは 線形関数ではまづいから 2次にしただけと計算時間からも2次が
有利なのだ。別の関数でも計算はできるからやってみるとよい。
まあ日本語でちまちま読むのも苦手な人もあろうから 数値例(Modern
Computer Algebraから)をあげておく。N=82123 x[0]=y[0]=631 mod N
631 69670 28986 69907 13166 64027 40816 80802 ....x[i]
631 28986 13166 40816 20459 6685 75835 17539 ....y[i]
..1 ....1 ....1 ....1 ....1 ...1 ....1 ...41 ....gcd(x[j]-y[j],N)
7項目で最初の因子が出てきた。N=41*2003だからあとの因子がほしければ
mod 2003でやればよい。ここでは 大きなNについて 因子を1つ見つける関数を
書こう。
(defmacro while (test &rest body)
"Repeat body while test is true"
`(loop (unless ,test (return nil)),@body))

(defun one-rho (n m)
(let* ((x0 m) (y0 x0) (g 1))
(while (= g 1)
(setf x0 (mod (+ (* x0 x0)1) n))
(setf y0 (mod (+ (* (+ (* y0 y0) 1)(+ (* y0 y0) 1)) 1) n))
(setf g (gcd (- y0 x0) n))
)
(print g)))
これをtest-factor2.lispとしておく。(whileマクロはgclなどのためだが
スピードの比較のため同じにしておく)

284 :GO MAXIMA:03/11/08 02:38
clispでの例
[1]> (load "test-factor2.lisp")
;; Loading file test-factor2.lisp ...
;; Loading of file test-factor2.lisp is finished. T
[2]> (time (one-rho 32563607022451 16331))
5958163
Real time: 0.035059 sec.
Run time: 0.03 sec.
Space: 350500 Bytes
GC: 1, GC time: 0.01 sec.
[3]> (time (one-rho 32563607022451 31))
5465377
Real time: 0.046299 sec.
Run time: 0.05 sec.
Space: 499680 Bytes
GC: 1, GC time: 0.01 sec.
とまあ duron 700Mhz にしては高速だろう。(2年前で3。5万のもの)
cmuclの場合はコンパイルしなければ0.25secくらいで7、8倍遅いが
コンパイルすると同程度のスピードになる。clispはやたらループが高速
のようだ。

285 :GO MAXIMA:03/11/08 02:39
さてMAXIMAにのせてみよう。リストなどの構造を返すのにはちょっと工夫が
必要で此のすレの前のどこかにあるが、1つの数を返すにはなにも工夫入らな
い。次のファイルをtest-factor3.lispにしまう。

;;; -*- Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;
(in-package "MAXIMA")
(defmacro while (test &rest body)
"Repeat body while test is true"
`(loop (unless ,test (return nil)),@body))

(defun $one_rho (n m)
(let* ((x0 m) (y0 x0) (g 1))
(while (= g 1)
(setf x0 (mod (+ (* x0 x0)1) n))
(setf y0 (mod (+ (* (+ (* y0 y0) 1)(+ (* y0 y0) 1)) 1) n))
(setf g (gcd (- y0 x0) n))
)
(print g)))


286 :GO MAXIMA:03/11/08 02:40
これはclisp上のMAXIMA 5.9.0です。
(C1) load("test-factor3.lisp")$
(C2) showtime:true$
Evaluation took 0.00 seconds (0.00 elapsed) using 68 bytes.
(C3) one_rho(32563607022451,31);
5465377
Evaluation took 0.06 seconds (0.05 elapsed) using 488.066 KB.
(D3) 5465377
簡単に 新しい関数を入れられるのがおわかりだろう。此のアルゴリズムは
やはりカオスの影響を受けて生まれたものだろう。mapleにはさらに強力な
DIXON(群論の問題集のひと)のアルゴリズムが載っているが必要なら簡単に
載せることができる。

287 :名無しさん@3周年:03/11/24 04:32
ほっしゅ。

近況報告:今しばらくMAXIMAいじくる時間が捻出できそうにありません。
     この分野は、今後どのように発展するんでしょうね?
     GO MAXIMA様のご高説をまた拝聴したいです。でわでわ

288 : 質問:03/11/26 04:30
AMD64 のマシンを買って、64ビットのLINUXをOSにすれば、
MAXIMAは64ビットアドレスにふさわしい大容量メモリを
使うことができるのでしょうか?
ソースのコンパイルはGCCでやればOK?

289 :名無しさん@3周年:03/11/27 21:21
_________,,___________,,_____
| (3)  15版        毎   朝   新   聞
| ──────────────────────────
| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|        ┌‐──── ┐
| |  ( ・∀・)   | | ガッ   |  | | | |    .| _「l__「「」|
| | と    )?   | |       ?|  | | | | 相. | 'ーi r─i|  | 
| |   Y /ノ    人       |  ──??次??  |   ノノ . ノノ. .|
| |    / )    <  >__Λ∩   |  | | | | ?ぐ?? |  ~  ^´   . |
| |  _/し' //. V`Д´)/   |  | | | | 糞???|          ;|
| | (_フ彡        /    |  ── ス   |.          |
| └?───────────?┘ | | | | レ   |.          |
| ガッされる>>1容疑者─20日  ..| | | |. ?に   |  「「」 /7  |
| ────────────────.怒  .|    ノ '    |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | .り   |.          |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | の .└ ─.─── ┘
| ────────────────.声 ────────
| | | | | | | | | | | | :: | | | | | | | | | | | | | |. も    | | | | | | | | | | |
| | | | | | | | | | | | :: | | | | | | | | | | | | | |       | | | | | | | | | | |
| ──────────────────────────
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ̄痔には ̄| | | | | |



290 :GO MAXIMA :03/11/29 12:34
>>288
ええっと MAXIMAはcommon lispの上に載っている 言語だから
まず 64bitのcommon lispをコンパイルして動くようにする必要が
あります。GCLなどのMLで聞いてみたらよいのでは?
解きたい問題の種類によると思いますが、現在のCMUCL上の
MAXIMAは かなりのガーベージコレクションのスピードを持っていて
相当の計算はできるようです。ただし、solveまわりには common lisp
に移行したときに入り込んだBUGのため 大規模計算はできません。
500万(ノンアカデミー版)もしたころのVAX版よりこの点では性能はでない
と思います。僕を含め、かなり使い込んでいる人はそれぞれ(たぶん別の)
回避手段を持っていると思いますが、事がLISPの種類の違いによるものだけに
複雑で大変です。gensymまわりが 特にひどいようで この間などはdebugしたら
ちょっとしたループで|G198......|と4万桁の変数が(これは変数名だ)
数ヒャッ個メモリ内をうろうろしていたのでこれではメモリを増やし
スピードをあげたのに解けないのは無理からぬと感心したことがある。
>235,236で紹介したような新しく書かれたgrobner basisパッケージなど
ではこのような問題はないようです。
個人的にはソースからgensymを使う処はすべて使わないで書き直すべきと
思っていますが、。。。。(説得するのは苦手ですね)


291 :GO MAXIMA :03/11/29 16:55
>>287
数学の教育には 向いていることが 序々に浸透すると思うね。
数学もそれぞれの分野の進展が 膨大な量のいわゆる知識を生み出して 短い時間の
教育で 第一線に送り出そうとすれば エッセンスのみを教えざるを得ない。人にも
依だろうが これでは同じタイプの研究者ばかりになって面白みがないのでは?
例えば 数学の中で まず第一に教えなければならない 群論にしても この手の
人に聞くとGAPを使いましょうとなる。違うだろう、GAPのlibraryにあるものを
理解して使えるのは 研究者に近い人だけだよ。小平さんの 教育論にあるように
数学はその歴史的発達に即して教えるほうが良いとしたら、1850年くらいまでは
群と言えば置換群でしたよね、それから変換群〔行列の群)と群論固有の研究が
同時にすすんで 1900ころのBurnsideのTheory of Groups of Finite Orderに結実
する。ところがこのころは まだ表現論は十分ではなくて 第一版の序では"多くの
成果は置換群を直接扱うことで得られる"と言った後に "it would be difficult
to find a result that could be most directly obtained by the consideration
of groups of linear transformations." とあるが これは 1911年の第2版では
完全に書き改められている。この間のSchurやFrobeniusやBurnside自身の成果によって
状況が一変したのだ。このくらいの時代までを射程にいれたらどんなものになるか?
具体的に置換群が計算できるライブラリ、行列のライブラリ、後は工夫次第。

292 :名無しさん@3周年:03/12/05 01:19
Maxima 5.9.0 で plot2d(1/(x-2)^2,[x,0,4]) の様に、特異点を定義域に含む
関数をプロットさせようとすると処理が帰って来ないんだけど、これは諦めるしかないの?

293 :GO MAXIMA :03/12/05 04:04
>>292
ほんとだ。これは ひどいので週末に調べてみます。
まあ MAXIMAでグラフを書くことは滅多に無いので今気づいたけど
まえのversion maximaの5.6では 書けますね。新しい方がbugはかなり
とれているのだが、新たにBUGを付け加えてしまうこともあるようですね。


294 :名無しさん@3周年:03/12/05 15:52
おねがいすます。
とりあえずは xgraph_curves と ?draw2d 組み合わせてしのぐことにしました。

295 :名無しさん@3周年:03/12/06 00:19
大学入り立ての学生が、微積分や線形代数を学習するのにMATHEMATICAやMAPLE
などでいきなりコマンドを叩くようなカリキュラムは、絶対に間違っている。

296 :GO MAXIMA :03/12/06 01:30
置換群から群論を教えるのには適している。最初に教えるのは群論にしたい。
カリキュラムはそうなっていないけど。手計算で具体的なものが与えにくい
対象にはCASはしっくりくると思うがね。
大学入り立ての学生なら あまり使い道はないだろう。微積なら 形式べき級数
の計算とか二重級数の計算、特殊関数の計算くらいからCASが使えるはずだよね。
ぼくは 数式処理は人間とは別の数学のやり方をする存在と認識しているので、
そういった別のものと向き合って有益なのは 人間のやり方を身に着けていないと
いけないのは勿論だよ。

297 :名無しさん@3周年:03/12/07 03:29
デスクトップ広告って知ってます?
特にパソコンを長時間使用する方は必見です。
http://k.excite.co.jp/hp/u/mufufu-21/?yid=mufufu-21&ssl=4YI7OA10OHTCC7N2PM30

298 :GO MAXIMA :03/12/07 04:57
>>294
人のプログラムを読むのには大変時間がかかる。これを書いたのは
cmuclの開発でも知られたRaimond Toyだと思うが、技巧的で読みにくい。
まあ5時間程 debugしてみてこれはbugではないことが解かった。
間に不連続点があってその点で発散している場合にはyのraneも明示的に与えないと
限りなく分点を増やそうとして時間で発散する。

(C3) plot2d(1/(1-x)^2,[x,-2.5,2.5],[y,-1,100],[nticks ,300]);と
yの範囲を明示すればきれいに書けるよ。


299 :292:03/12/08 06:40
>298

確かに値域を明示してやるときちんとプロット出来ますね.ちょっと不便な気
もしますが,今のケースでは値域が誘拐であることがわかっているのでこれで
いけそうです.どうもありがとうございます.


300 :flatline@Vim%Chalice ◆r6EONKKhcc :03/12/09 22:33
ここ数日,統計システムGNU RのメーリングリストR-jpに,Maximaの数式処理機能を
Rから利用できたらいいな,やってみたい,という話題が流れている.
統計は分からないけど,データ解析が主体のシステムの下請けとして組み合わせて使うというのは
GPLのMaximaならではの活用法と言えるだろう.
精度保証数値計算というものを (Maximaを利用して?) Rで行えるようにもしたいらしい.
がんばってほしいものです.

301 :名無しさん@3周年:03/12/19 01:47
>>300
どちらががんばるかですよね。でもそれはRのほうから歩みよればいいことで
あって,cas側からすれば,独自に統計用関数をこさえることのほうがメリッ
トがあるのかもと思ったりしますが。


302 :名無しさん@3周年:04/01/04 00:02
MAXIMA本来の利用方法には反するでしょうが,計算手順をあるファイル
(input.txt)に記述し,計算結果(output.txt)を得るという利用方法は可能で
しょうか?
例えば,以下のような具合にコマンドで利用する方法です。
$ maxima input.txt > output.txt


303 :名無しさん@3周年:04/01/04 00:20
$ maxima < input.txt > output.txt
とすればできました。おさわがせしました。

304 :名無しさん@3周年:04/01/11 07:33
最新バージョンmaxima-5.90を使っているんですが、以下のように、
微分を展開してくれません。何か仕様が変ったのでしょうか?
(初歩的な質問ですみません)

(C1) diff(x^2,x);
d 2
(D1) -- (x )
dx
(C2) diff(sin(x),x);
d
(D2) -- (SIN(x))
dx


305 :GO MAXIMA :04/01/11 13:46
>>304
コンパイルに問題があるかもしれません。使っているLISPがGCLなら
バージョンが新しくないとうまく行きません。CLISPでも2.30ではうまく
合わないようで、2.29か新しい2.31か2.32を必要とするようです。


306 :名無しさん@3周年:04/01/11 19:40
>>305
有難うございます。lispの問題なんですね。
clisp-2.31で使っていました。ちょっとclisp-2.32でも試してみます。

307 :名無しさん@3周年:04/01/11 21:15
>>305
残念ながら、clisp-2.32、maxima-5.90でも、同じ症状でした。
diff(x^2,x); → d/dx(x^2)
diff(cos(x),x); → d/dx(cos(x))

バージョンを下げた方がいいのか、もっと別な問題なのか良く
分りませんが、maxima-5.90で同じ症状が出ている人はいませんか?

因みに、コンパイルは以下の通りです。
(1)clispのインストール
% tar xvzf clisp-2.32.tar.gz
% cd clisp-2.32
% ./configure with-gcc-wall
% cd with-gcc-wall/
% ./makemake --with-dynamic-ffi > Makefile
% make config.lisp
% make
% make check
% su
# make install
(2)maxima本体のインストール
% tar xvzf maxima-5.9.0.tar.gz
% cd maxima-5.9.0
% ./configure
% make
% su
# make install


308 :GO MAXIMA :04/01/11 23:48
こちらは clispの2.29でcompileして問題ないので
2.29に下げてみてやってみてください。


309 :名無しさん@3周年:04/01/12 08:26
>>308
有難うございました。clisp-2.29でうまく動きました。

310 :名無しさん@3周年:04/01/25 00:23
AMD64の上で64ビットの広大なアドレス空間が使いたいのです.
CLISPとかを64ビット化するのに成功されてたら教えて下さい.

311 :名無しさん@3周年:04/01/25 07:44
これなんかがそのうちamd64にも対応してくれるかも
http://sbcl.sourceforge.net/

312 :名無しさん@3周年:04/01/25 09:58
GO MAXIMAさんお勧めのaxiomがいつのまにか落とせるようになってるね。
Debianは既にパッケージになってた。Gentooはこれからかな。

313 :名無しさん@3周年:04/01/28 01:48
DOE maxima のオンラインマニュアル:
http://starship.python.net/crew/mike/maxima/html/macref/


314 :名無しさん@3周年:04/01/28 01:48
【時間がない!!まじコピペ奨励!!!】
それより新シャア板言ってみな、糞スレ乱立でかなりすごいことになっている。
糞スレ祭りですよ!!マジ凄い!他板からも糞スレ立てに大勢来ているもよう!
マジ凄いからすぐにこい!!板が閉鎖される前に早く早く!!!!


315 :名無しさん@3周年:04/01/29 20:02
>>312 ttp://axiom.tenkan.org/

make に6時間半かかってしまった。
rpm キボンヌ...

316 :sage:04/02/12 13:42
f(x,y)=2*x^2+3*y
x(t)=sin(x)
y(t)=cos(x)
のとき、df/dt を計算させることはできるのでしょうか?
dependsを利用しても、dx/dtやdy/dtという表示が入るのですが…。


317 :GO MAXIMA :04/02/12 20:40
>316
それで正しいのです。例えば
load("pdiff.lisp");
f(x,y):=2*x^2+3*y$
diff(subst([x=sin(x(t)),y=cos(x(t))],f(x,y)),t);なら
4*PDERIVOP(x,1)(t)*COS(x(t))*SIN(x(t))-3*PDERIVOP(x,1)(t)*SIN(x(t))
つまり
4 x[1] (t) COS(x(t)) SIN(x(t)) - 3 x[1] (t) SIN(x(t))が返って
きてとうぜんです。


318 :sage:04/02/13 09:48
もう1つ教えて下さい。
x(t)=sin(x)
y(t)=cos(x)
のとき、dy/dx を計算させることはできるのでしょうか?
やはりこれも d(y(t))/dx としか返ってこないものなのでしょうか?

319 :GO MAXIMA :04/02/13 12:26
ええっと 問題は noun 表現と verb 表現の混在の問題なのですが
(C1) u:'sin(x(t))$
(C2) y:'cos(u);
(D2) COS(SIN(x(t)))
(C3) diff(y,u);
(D3) - SIN(SIN(x(t))) でよいでしょう。
(C8) diff(y,t);
(D8) -COS(x(t))*'DIFF(x(t),t,1)*SIN(SIN(x(t)))
dependsは 関数のnoun 表現しかサポートしていません。このへんは
微分は淡泊で 抽象的に(nounで)表現されたfについて
(C6) diff(f(x^2),x);としても 計算してくれません。これでは
あんまりなので Barton WillsによるpdiffのパッケージがCVS
のsharのcontribにあるので取ってくるとよいでしょうね。
load("pdiff.lisp")$
diff(f(x^2),x);
で 2 x f[1] (x^2)が返ってきます。

320 :sage:04/02/13 13:35
すみません。
↑の表現間違ってました。
x(t)=sin(t)
y(t)=cos(t)
のとき、dy/dx を計算させるでした。

u:'sin(t)、v:'cos(t) として、diff(v,u) という式で正しいのでしょうか?


321 :名無しさん@3周年:04/02/13 17:37
a^2+b^2=c^2,a=c*sin(x);
solve(d1,b);
でb=c*cos(x)って出てくるにはどうすればいいんですか?
b=+-c*SQRT(1-sin^2(x))になってしまう。

322 :名無しさん@3周年:04/02/13 23:49
新人レイプマン誕生!スーフリとの関連は?!
電通のレイプマン
サトウ食品のバカ息子を追放せよ
広告板は今お祭り騒ぎ!!
http://society.2ch.net/test/read.cgi/koukoku/1076247919/l50
※※※※※※※※※※※※※※※※※※※※※※※※※※※※
電通社員と受付嬢が会議室でバックでやってるところを会議室の監視カメラが
しっかりと記録していて、受付嬢だけが首になった。社員はというと・・・、結局
なんの影響もないし。
これってどうなの?
顔がキモイので学生時代モテなかったらしい
それで親のコネで電通入社
モテなかった反動からか、電通内部でやりたい放題
電通社員2年目で和田さん並の暴れん坊に昇格。
この底辺生物に社会的制裁を!


323 :KingMathematician ◆5lHaaEvFNc :04/02/23 20:15
Windows版MaximaのフォルダにUNIXで使うらしいフォルダとファイルが幾つも混ざっているのですが、これらはどうやって使うのですか?

324 :GO MAXIMA :04/02/24 21:59
xmaximaは フロントエンドとしてwindowsでも使えるはずです、
emacs関連は windows用のemacsをインストールすれば フロントエンド
として使えるものです。私は windowsは使ったことがほとんどないので
詳しいことはわからないのですが 友人によるとxmaximaよりemacsから
使った方が 快適だそうです。

325 :小林@那須:04/02/27 00:38
KingMathematician>>これらはどうやって使うのですか?

今年になってから Win2K 上で maxima を使い始めました

maxima\lib\maxima\5.9.0\binary-gcl にある、maxima.bat, maxima.exe を
コンソールから使っています。

GUI の xmaxima だと、立ち上げるたびに、画面サイズと、primer pain の調
節のために mouse 操作が必要となり面倒なので、CUI を使っています。数式
処理を行わせているぶんには、CUI のほうが楽です。

ただし、下の二つが必要です。

 ・環境変数の設定 MAXIMA_PREFIX=c:\lng\Maxima
 ・maxima.bat を max.bat など exe と違った名前にする

Windows のコンソール、Cygwin のコンソール、どちらでも max.bat だけで
maxima が動いてくれます。私自身は Wz editor の shell macro に手をいれ
たものから maxima を使っています。

ただし、CUI maxima では plot2d/3d が動いてくれません。下のようになります。

'c:\lng\Maxima/libexec/maxima/5.9.0/omplotdata' は、内部コマンドまたは外部コマド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

どなたか、Windows の CUI から plot2d/3d を実行させている方がいらっしゃるでしょうか


326 :小林@那須:04/02/27 00:39
maxima で扱える行列サイズは 10 x 10 程度が限度だと思っています。上手い対策があるでしょうか。

maxima では matlab のように規模の大きな行列演算をさせるのは不得手だと
思っています。逆行列演算がはいると 30 x 30 の行列では 30 分待っても計
算を続けています。また maximabook でも、chapter 7 の行列・ベクタの章は
下の二行だけで終わっています。

Maxima has many matrix capabilities. Unfortunately it’s vector handling at the time of this writing is not terribly
robust, and the reader is cautioned to use it with care.

ネット上で探しても、maxima による行列・ベクタ演算例はあまり見つけられません。

maxima は 10x10 以下の小規模な行列処理に限られるとの私の理解は正しいでしょうか。


327 :GO MAXIMA :04/02/28 11:57
>326 あまり正しくありません。
行列計算では 数式処理と 数値処理は根本的に異なります。
数値計算に使うものではないのですが、(理論計算が主) share/contrib
の下にあるdiag.mac (ジョルダン標準型のパッケージ)とそのへんのデモ
をみてください。本質的にLISPで動いているのでC++の半分くらいのスピード
で動かすことはできます。(ただし関数のコンパイルは必須。>285 286あたり参照)
学生に遺伝アルゴリズムのプログラムのプロトを
MAXIMAで組ませたときは100X100くらいの行列は平気で動きました。
私は群論の実験で数百次を越える行列をMAXIMAで扱っています。
逆行列や固有値の数値計算法はまったく実装されていないので、適当な
ものを自分で書くことになります、最初はLISPでなくてMAXIMA言語で書いて
その関数をコンパイルして使いましょう。
行列を一般の数式のまま扱うとMapleで5次の正方行列で限界で、Mathematica
やMAXIMAでは3次で限界になる問題にすぐぶつかります。それ以後は
比較的高度の数学を個別の問題に応じて適用することでなんとかするのです。
Matlab程度のことなら逆行列や固有値の数値計算法をのせれば簡単にできます。

328 :名無しさん@3周年:04/03/01 04:14
FORTRANで倍精度実数なら、1万x1万の行列でも扱えるのだけどね。


329 :小林@那須:04/03/01 11:44
GO_MAXIMA さん、御教授ありがとうございます。

"diag.mac" で遊んでみました。maxima590 では
compile_file("diag.mac"); だけで、diag.lsp と diag.o の両方を作ってく
れました。(diag.mac を current directory に持ってくる必要がありました)

デモ例も動いてくれました。でも、下の最後の計算で hung up してくれまし
た。(diag.mac で同じです)

 load("diag.o");
 H[I,J]:=1/(I+J-1);
 jordan(GENMATRIX(H,3,3)); # OK
 jordan(GENMATRIX(H,4,4)); # hung up

やっばり、maxima book で行列の章を書けないだけの理由があるようです。

>Matlab程度のことなら逆行列や固有値の数値計算法をのせれば簡単にできます

行列の数値計算を自分で実装するときは、別の行列要素からの累積誤差が回り
こんでくる問題との格闘が予想されます。当面、C-LAPACK などで済ませられ
る部分は、そちらで済ませます。それを MAXIMA と組み合わせて使います。
MAXIMA 内で行列数値計算を閉じさせる必要が発生したとき、maxima による行
列数値計算に挑戦してみます。

ありがとうございました。


330 :名無しさん@3周年:04/03/01 16:18
その件に関してはこちらが詳しいようです。

http://www.geocities.jp/sasatitikoko/tobu.html

331 :GO MAXIMA :04/03/01 17:31
>329
>H[I,J]:=1/(I+J-1);
>jordan(GENMATRIX(H,4,4)); # hung up
ええっと これは組込みの eigenvectorsのバグです。さらにいうと
algsysという方程式のsolverのバグで、この影響はすべての関連
分野に深刻な障害を与えています。大抵はshare/contribにあるgrobner
のパッケージを使うことでなんとかなりますが、上の例では
eigennvaluesは求まってeigenvectorが求まらないという嘘のような
話しなので困ったものです。H(5,5)以上は特性方程式を数式で解こうと
するMAXIMAでは解けないのは原理的に正しいのですが。去年の今ごろは
新しいgrobnerのパッケージもなかったので singularと連係させて
解いていましたね。share/contribにあるgrobnerのパッケージも
diagも 新しく書かれたものは優秀でもしbugがあれば それらが
呼び出している本来のMAXIMA関数のbugだろうと思います。


332 :小林@那須:04/03/02 12:39
GO_MAXIMA さん、御返事ありがとうございます。

>大抵はshare/contribにあるgrobner のパッケージを使うことでなんとかなりますが

でも、グレブナー基底を理解していないヘタレです。 maxima の行列処理に
基本的な問題がある、maxima で行列を扱うには、自分でデバッグ・トレース
して原因追求と対策できるだけの力が必要だ、としか分かりません。

もう少ししたら、別の側面からですが、行列の数値計算に contribute できる
ソフトを公開できると思います。そのとき、御意見を伺えたらと思っています。

ありがとうございました。


333 :名無しさん@3周年:04/03/14 05:14
NetNewsで紹介されていたけど、
http://homepage.mac.com/peso1/MaximaMuPAD/MaxMuP.html
のページ、もう御覧になりましたか?非常に参考になりますよ。
Maximaってまだまだバグが多いんですね。
特に不等式とか、複素数のあたりのバグがちょっと深刻、っていうか使えない。

(かと言って、Mupadを使う気にはならないですが。
書式・文法に馴染めないし、完全なオープンソフトという訳でもないようだし、
以前試しに使った時に結構遅いなと感じたものですから)

Maximaの更新って、結構頻繁に行なわれているんでしょうかね?


334 :名無しさん@3周年:04/03/14 13:16
とりあえずSF.netのLispのプロジェクトの中では、一番活発度が高いですよ。

335 :名無しさん@3周年:04/04/01 20:11
保守age

336 :名無しさん@3周年:04/04/04 20:12
保守

337 :名無しさん@お腹いっぱい:04/04/11 20:11
保守

338 :名無しさん@3周年:04/04/12 00:08
>>337
この板ならわざわざ保守せんでも落ちんだろ

339 :GO MAXIMA :04/04/23 03:07
>>248、249 の4元数のパッケージの使用例
4元数 モーガン著 二木昭人訳 サイバーグ ヰッテン理論とトポロジー 培風館 ISBN 4563002623
2章のはじめの1ページ分に4元数と回転群の説明がある。
4元数体Hの中の単位球面S3 を考えると4元数体の積はS3に群構造を誘導
する。この群のHへ 共役による作用 S3 X H -> H
(a,λ) -> aλa^(-1) を考えれば ノルムを保つ、直交表現を得る。この
作用でHの中心Rは不変であり、したがってRの直交補空間である純虚数4
元数全体のなす3次元部分空間ImH も不変である。
ええっとその通りで何の疑問もないところだけど 計算でImHが不変を示す
のは結構面倒でmaximaにやらすと以下のようになる。
(C2) load("yogen.mac");
(C3) a:_a+_b*i+_c*j+_d*k$
(C4) declare([_g,_h],scalar)$
(C5) x:_e*i+_f*j+_g*k$
(C6) expand4(a.conj4(a));
(D6) _d^2+_c^2+_b^2+_a^2 //つまりノルムが1ならconj4(a)がaの逆元
(C8) ratsimp(expand4(a.x.conj4(a)));
(D8) ((_d^2-_c^2-_b^2+_a^2)*_g+(2*_c*_d+2*_a*_b)*_f+(2*_b*_d-2*_a*_c)*_e)*k
+((2*_c*_d-2*_a*_b)*_g+(-_d^2+_c^2-_b^2+_a^2)*_f+(2*_a*_d+2*_b*_c)*_e)*j
+((2*_b*_d+2*_a*_c)*_g+(2*_b*_c-2*_a*_d)*_f+(-_d^2-_c^2+_b^2+_a^2)*_e)*i
(C9) scalarpart4(d8);
(D9) 0
これで純虚数4元数全体ImH も不変であることが計算で示せた。

340 :GO MAXIMA :04/04/23 03:08
当然ノルムも不変である。
(C9) factor(norm4(d8)^2);
(D9) (_d^2+_c^2+_b^2+_a^2)^2*(_g^2+_f^2+_e^2)
さてImHは 自然にS3のリー環と同一視され、(a,λ) -> aλa^(-1)はS3の
自分自身のリー環への随伴作用と同じになる。
ええっとこの部分は計算でも比較的単純です。S3はノルム1のHと考えてい
るので任意のImHのノルム1の元x と任意の実数thについて exp(th*x)を
cos(th)+x*sin(th)で定義してこれがS3の元であることを示せば良い〔前半)
(C10) expand4(x.x);
(D10) -_g^2-_f^2-_e^2 //これからx.x=-1
(C11) (declare(th,scalar),norm4(cos(th)+x*sin(th))^2);
(D11) SIN(th)^2*_g^2+SIN(th)^2*_f^2+SIN(th)^2*_e^2+COS(th)^2
(C14) trigsimp(subst([_g^2=1-_f^2-_e^2],d11));
(D14) 1 //よってexp(th*x)はS3の元、ImHは S3のリー環と同一視できる。
後半は随伴表現の定義から明らかであるが もう少し書くと S3の元gに対
して(Ad g)x= gxg^(-1)とおけば (Ad g)は リー環の一次変換であって
g -> (Ad g)は随伴表現(特に連続である)

341 :GO MAXIMA :04/04/23 03:09
以下はやさしい演習問題
±1と異なる長さ1の4元数aは ImHへの共役作用 axa^(-1)によって一次元部分
空間RImaとその2次元直交補空間を不変にする、前者には自明に作用し後者に
はaと1のなす角thの2倍の角度の回転として作用する。
この部分を計算で示してみよう。前の議論からaをcos(th)+x*sin(th)、
xはノルム1の純虚数4元数として一般性を失わない。(D10よりx.x=-1)
(C15) a:cos(th)+x*sin(th)$
(C16) expand4(a.x.conj4(a));
(D16) SIN(th)^2*_g^3*k+SIN(th)^2*_f^2*_g*k+。。。と面倒な式
(C17) trigsimp(ratsubst(_g^2,1-_f^2-_e^2,d16));
(D17) _g*k+_f*j+_e*i //これはxであって(Ad a)でxは不変であることがいえ
た。ratsubstは substより強力でよく使うのでマニュアルを参照せよ。
さてImHは3次元だからこのxと直行しておおきさ1のn2とn1がとれる。
n2,n1,xを左手系とすれば n1.x=-x.n1=n2,x.n2=-n2.x=n1このへんは成分
で計算しない方が楽だ。

342 :GO MAXIMA :04/04/23 03:10
(C18) kill(a,x)$ //前に成分表示したものを消して再定義する
(C19) declare([x,n1,n2],nonscalar)$
(C20) a:cos(th)+x*sin(th)$ //前と同じだがxが成分計算されない
(C21) expand4(a.n1.(cos(th)-x*sin(th)));
(D21) -SIN(th)^2*(x . n1 . x)+COS(th)*SIN(th)*(x . n1)
-COS(th)*SIN(th)*(n1 . x)+COS(th)^2*n1
(C22) trigreduce(subst([x.n1.x=n1,x.n1=-n2,n1.x=n2],%));
(D22) COS(2*th)*n1-SIN(2*th)*n2
(C23) expand4(a.n2.(cos(th)-x*sin(th)))$
(C24) trigreduce(subst([x.n2.x=n2,x.n2=n1,n2.x=-n1],%));
(D24) COS(2*th)*n2+SIN(2*th)*n1 //D22と D24から ImHの1次変換(Ad a)
でxの直交補空間は2*thの回転となっていることが示された。
従ってImHのすべての回転は表現S3 ->SO(ImH)=SO(3)の像に含まれる。
この表現のカーネルはS3とHの中心との共通部分、すなわち±1である。
(カーネルはd22とd24がn1、n2になる条件からCOS(2*th)=1,+SIN(2*th)=0からでる)
このようにしてSO(3)の2重被覆を長さ1の4元数全体の群として構成できる

343 :GO MAXIMA :04/04/23 03:11
では反省。人間風には最初から成分でxを展開しない計算がよい。
(C5) expand4(a.x.(cos(th)-x*sin(th)));
(D5) COS(th)^2*x-SIN(th)^2*(x . x . x)
(C6) trigsimp(subst([x.x.x=-x],%));
(D6) x //これでxの方向は不変でありよってその2次元直交補空間も不変
回転になることは純虚数ImHの元x1、y1とすればx1.x.x1はこの3次元
空間で法線方向x1の平面に関してxの鏡映あること、y1.x1.x.x1.y1は
この鏡映に続いて法線方向y1の平面に関する鏡映を行ったものだから回転
である。x1とy1の大きさを1としているのでx1.y1=(y1.x1)^(-1)が成立
、y1.x1=aとなるx1、y1がとれれば終了。
ここでは鏡映2回が回転ということを言いたかったのではなくて
SO(3)の2重被覆を長さ1の4元数全体の群として構成できることが
言いたかったことですね。さらに特殊直交群SO(n)の普遍被覆群Spin(n)は
クリフォード代数を使えばn=3の時と同じながれでシステマティクに
構成できることが続く8ページの間に述べられている。ここで
とろとろ説明したのは1ページ分なのだ。
一年の後期にこの部分を1時間でやると、単位球面S3に群構造(Lie群)
が入る、ということがわかりませんときた。むむ鋭い、S0、S1、S3だけ
がLie群の構造を持つ球面なのだ。S3の群構造を分かりやすく書いてあるのは
曲線 曲面と接続の幾何 小沢哲也 培風館 ISBN 4563006408
9.4のHopf束のところだ。

344 :GO MAXIMA :04/04/23 03:11
これは 非常に良い本だ。著者いわく、本書に深く関連する微分幾何の道具を
3つあげると 多様体(曲面)、リー群(S1とSO3)、リー群束の接続(S1束の接続)
で()のなかはもっとも簡単な例でありこの本で解説するものである。とある。
各章の終わりに解説と問題があってこれが特に良い。問題数は不足しているが
6章の球面上の接続の幾何では 地球の自転を証明するために行われたフーコー
の振り子の実験がホロノミーと密接な関係にあることを考えよというユニーク
なもで、これだけでも1800¥の何倍の価値がある。とあるスレで紹介したら
頓珍漢なレスがついていた。思うに計量によらない多様体の性質と 計量によ
る精密なかつこみいった性質のギャップを理解していない人が多いのは、学部
で多様体の速習をやって微分幾何はちょっとおつまみの状況にあるのかしらん。
と感じたね。

345 :GO MAXIMA :04/04/24 17:28
数式処理の機能を生かして行列の4元数表示を求めてみよう。maximaには行列の
積を変更する機能がついていて便利に使える。
matrix_element_mult:lambda([x,y],expand4(x.y));これで成分の積を4元数で
計算することができるようになる。元に戻すのは matrix_element_mult:"*";
とする。確認してみる。
(C1) load("yogen.mac")$
(C2) display2d:false$
(C3) matrix([1,2*j],[3*i,4]).matrix([i,0],[j,k]);
(D3) MATRIX([2*j^2+i,2*j*k],[4*j+3*i^2,4*k]) //通常の計算結果
(C4) matrix_element_mult:lambda([x,y],expand4(x.y))$ //積を4元数に変更
(C5) matrix([1,2*j],[3*i,4]).matrix([i,0],[j,k]);
(D5) MATRIX([i-2,2*i],[4*j-3,4*k]) //4元数で計算されている
変更して困るのは逆行列が一般には計算できないことだ。
任意の行列を4元数表示する(または表示できないことを示す)という目的には
次の行列の逆行列が求まればよいがこれは 可能だ。
(C6) a:matrix([1,i,j,k],[i,-1,-k,j],[j,k,-1,-i],[k,-j,i,-1])$
(C8) a.a.a;
(D8) MATRIX([-8,0,0,0],[0,-8,0,0],[0,0,-8,0],[0,0,0,-8])
a.a.aが単位行列の-8倍だからaの逆行列は-1/8*(a.a)である。
(C9) inva:-1/8*(a.a)$

346 :GO MAXIMA :04/04/24 17:29
Xを未知の四元数? _a+_b*i+_c*j+_d*kと置けたとすれば
a.(matrix([_a],[_b],[_c],[_d]))=matrix([_a+_b*i+_c*j+_d*k],[-_b+_a*i+_d*j-_c*k
],[-_c-_d*i+_a*j+_b*k],[-_d+_c*i-_b*j+_a*k])
右辺はmatrix([X],[X.i],[X.j],[X.k])でこれをbとでも置けば
(matrix([_a],[_b],[_c],[_d])=inva.b でXに対応する係数が求まる。
確認と記号計算への準備
(C10)b:matrix([_a+_b*i+_c*j+_d*k],[-_b+_a*i+_d*j-_c*k],[-_c-_d*i+_a*j+_b*k]
,[-_d+_c*i-_b*j+_a*k])$
(C11) inva.b;
(D11) MATRIX([_a],[_b],[_c],[_d]) //一応OK
(C12) declare(xx,nonscalar)$
(C13) b:matrix([xx],[xx.i],[xx.j],[xx.k])$
(C14) inva.b;
(D14) MATRIX([xx/4-(k . xx . k)/4-(j . xx . j)/4-(i . xx . i)/4],
[-(xx . i)/4-(k . xx . j)/4+(j . xx . k)/4-(i . xx)/4],
[-(xx . j)/4+(k . xx . i)/4-(j . xx)/4-(i . xx . k)/4],
[-(xx . k)/4-(k . xx)/4-(j . xx . i)/4+(i . xx . j)/4])
i,j,kとxxが行列で与えられたときD14を計算すればよいことが分かった。


347 :GO MAXIMA :04/04/24 17:30
計算例 //繰り返し書くのは面倒なので関数にしておく
(C15) basematrix1:[matrix([0,-%I],[-%I,0]),MATRIX([0,-1],[1,0]),MATRIX([-%I,0],[0,%I])]$
(C16) matcoeff4(_xx,_basematrix):=block([xx,bmat:_basematrix],expand(subst([xx=_xx,
i=bmat[1],j=bmat[2],k=bmat[3]],[xx/4-(k . xx . k)/4-(j . xx . j)/4-(i. xx . i)/4,
-(xx . i)/4-(k . xx . j)/4+(j . xx . k)/4-(i . xx)/4,-(xx . j)/4+(k. xx . i)/4-
(j . xx)/4-(i . xx . k)/4,-(xx . k)/4-(k . xx)/4-(j . xx . i)/4+(i . xx . j)/4])))$
(C17) matcoeff4(matrix([1,-2*%I-3],[3-2*%I,1]),basematrix1);
(D17) [MATRIX([1,0],[0,1]),MATRIX([2,0],[0,2]),MATRIX([3,0],[0,3]),
MATRIX([0,0],[0,0])]
(C18) subst([i=matrix([0,-%i],[-%i,0]),j=matrix([0,-1],[1,0]),k=matrix([-%i,0],
[0,%i])],matrix([1,0],[0,1])+2*i+3*j);
(D18) MATRIX([1,-2*%I-3],[3-2*%I,1]) //D17は[I、2I、3I,0I]で[1,2,3,0]と
同じ 一方このbasematrix1で〔実)4元数表示できないものとして
(C19) matcoeff4(matrix([1,-2],[3,1]),basematrix1);
(D19)[MATRIX([1,0],[0,1]),MATRIX([%I/2,0],[0,%I/2]),MATRIX([5/2,0],[0,5/2]),
MATRIX([0,0],[0,0])] //iの係数が%I/2で虚数になる。
いろいろ試して遊んでみてほしい。
basematrix2:[matrix([0,0,-1,0],[0,0,0,1],[1,0,0,0],[0,-1,0,0]),matrix([0,-1,0,0],
[1,0,0,0],[0,0,0,-1],[0,0,1,0]),matrix([0,0,0,1],[0,0,1,0],[0,-1,0,0],
[-1,0,0,0])];も使える。

348 :GO MAXIMA :04/04/24 17:30
次のようにmatcoeff.macファイルを書いておけばload("matcoeff.mac")$ですべ
て使える。
load("yogen.mac");
matrix_element_mult:lambda([x,y],expand4(x.y));
basematrix1:[matrix([0,-%I],[-%I,0]),MATRIX([0,-1],[1,0]),MATRIX([-%I,0],[0,%I])];
matcoeff4(_xx,_basematrix):=block([xx,bmat:_basematrix],expand(subst([xx=_xx,
i=bmat[1],j=bmat[2],k=bmat[3]],[xx/4-(k . xx . k)/4-(j . xx . j)/4-(i. xx . i)/4,
-(xx . i)/4-(k . xx . j)/4+(j . xx . k)/4-(i . xx)/4,-(xx . j)/4+
(k . xx . i)/4-(j . xx)/4-(i . xx . k)/4,-(xx . k)/4-(k . xx)/4-
(j . xx . i)/4+(i . xx . j)/4])))$
なおdisplay2d:falseにしたのはここに書き込むためでtrueのままの方が
行列の表示はきれいである。さらに遊ぶための 参考書
岩波講座 基礎数学 2次形式 I 田坂 隆士 著 (第三章 4元数的計量空間)


349 :名無しさん@3周年:04/04/25 13:51
Windos 版で、デスクトップに置いたファイルが読めないのは
ファイル名の多国語化対応が為されてないと云う事なんでしょうか?

350 :GO MAXIMA :04/04/25 16:18
windowsは使ったことがほとんどまったく無いのでよく分らないのですが
多分 FILE_SEARCH_MAXIMA 変数(LIST)にそのdirが書いてないのでしょう。
書き加えればMAXIMAから探せるはずです。LINUXの場合
(C9) FILE_SEARCH_MAXIMA;
(D9) [/home/go_maxima/.maxima/###.{mac,mc}, /usr/share/maxima/5.9.0/{share,share/#
algebra,share/calculus,share/combinatorics,share/contrib,share/diffequations,s#
hare/graphics,share/integequations,share/integration,share/macro,share/matrix,#
share/misc,share/numeric,share/physics,share/simplification,share/specfunction#
s,share/sym,share/tensor,share/trigonometry,share/utils,share/vector}/###.{mac#
,mc}]
(C10) FILE_SEARCH_MAXIMA:cons("/home/go_maxima/memo/###.{mac,mc}",D9);
とすれば /home/go_maxima/memoのdirも探してくれます。windowsとはdirの書き方が
異なるので(C9)のようにFILE_SEARCH_MAXIMA;として中味を見てその書式で(C10)の
ように追加してください。


351 :GO MAXIMA :04/04/27 03:55
>>64の問題が解けました。新しいSolverの威力です。再録しておくと
(問)生産技術x=K^(alpha)*L^(beta)を有する企業Aがある。この企業Aの費用最小化問題をラグランジュの未定乗数法を用いてMAXIMAで解け。
以上の問題を数式で表現すれば以下のようになる。
(ここで、x:生産量、L:生産要素(労働)、K:生産要素(資本)、w:Lの価格、r:Kの価格、cost:費用である。)
MAXIMAプログラム:
(C1) cost:w*L+r*K$
(C2) constraint:x-K^alpha*L^beta$
(C3) mincost:cost+lambda*constraint$
(C4) FOC1:diff(mincost,K)$
(C5) FOC2:diff(mincost,L)$
(C6) FOC3:diff(mincost,lambda)$
(C7) solve([FOC1=0,FOC2=0,FOC3=0],[lambda,K,L]);
(D7) []
??? 解けませんねー。ここで選択変数K,Lの最適解を求めるにはどのような工夫をすればいいのでしょうか。どなたかご教示ください。というものでした。
(C7)の方程式は次の通り、solver(方程式リスト、主変数リスト、媒介変
数リスト)のように使います。
(C13) solver([r-ALPHA*K^(ALPHA-1)*L^BETA*LAMBDA = 0,
w-BETA*K^ALPHA*L^(BETA-1)* LAMBDA = 0,x-K^ALPHA*L^BETA =
0],[K,L,LAMBDA],[ALPHA,BETA,r,w,x]);
(D13) [[K = ALPHA*w*(BETA^ALPHA*r^ALPHA*x/(ALPHA^ALPHA*w^ALPHA))^(1/(BETA+ALPHA))/(BETA*r),
L = (BETA^ALPHA*r^ALPHA*x/(ALPHA^ALPHA*w^ALPHA))^(1/(BETA+ALPHA)),
LAMBDA = BETA^(ALPHA-1)*r^ALPHA*w^(1-ALPHA)
*(BETA^ALPHA*r^ALPHA*x/(ALPHA^ALPHA*w^ALPHA))^(-BETA/(BETA+ALPHA)-ALPHA/(BETA+ALPHA)
+1/(BETA+ALPHA))/ALPHA^ALPHA]]


352 :GO MAXIMA :04/04/27 03:56
これであっているようです。これは新しいSolverのパッケージを使うことで得ら
れます。>65 で述べたようにheuristic なアルゴリズムを発見実装した
Eckhard Henning のおかげです。このparameter solverをMAXIMAに移植した
Stanger 等の尽力のたまものでもあります。これで応用分野の人から後ろ指を指
される回数は減りそうですね。Eckhardのドイツ語の1994年の論文はCVSの
share/algebra/solverにあります、ここから全てのファイルを取ってきてとりあ
えずカレントのディレクトリィに置いてください。困ったことにそのまま
load("solver.mac")としただけでは動きません。次のようにしてください。
(C1) EquationP(e):=if part(e,0)= "=" then true else false$
(C2) load("misc.mac")$
(C3) load("solver.mac")$ //これでoKです、(C1)と(C2)が必要ですがどこにも
文章化されてません。此邊が新規の人が増えない原因かも、暇ができたら本書い
てもいいけどね、(ただし英語で) 例えば
(C4) solver([x+2*y-z=6,2*x + y*z - z^2 = -1, 3*x - y + 2*z^2 =3],[x,y,z]);
(D4) [[x = (27*SQRT(13)*%I-41)/14,y = -(17*SQRT(13)*%I-87)/14,
z = -(SQRT(13)*%I-7)/2],
[x = -(27*SQRT(13)*%I+41)/14,y = (17*SQRT(13)*%I+87)/14,z =(SQRT(13)*%I+7)/2],
[x = 1,y = 2,z = -1]]
もっと重要なものはEckhardの論文を見てください。

353 :名無しさん@3周年:04/05/07 08:25
今日からボクもMAXIMAだ。

まず最初の質問なんですが
(C1)
(D1)
の、C、Dってなんすか? INPUT,OUTPUTっぽいんだけど。
(D1とかがラベルで f:D4; みたいに使える事は知ってます)


354 :名無しさん@3周年:04/05/08 00:26
http://tv5.2ch.net/test/read.cgi/morningcoffee/1082931262/l50#tag940

355 :名無しさん@3周年:04/05/08 10:01
plot2d(sin(x),[x,0,10]);
とかでグラフが出せますが、maximaのグラフって自由度少ないので(グリッドとか)
gnuplotとかdeltaGraphで書くために、XYデータを出力したいのですが、
どうすればいいですか?
マニュアルにあった、
points1:?draw2d(1/x,[.05,10],.03)
ってやると、
Error: MACSYMA-TOP-LEVEL [or a callee] requires less than three arguments.
って出ますが、これは

points1:?draw2d(1/x,[x,0.05,10]);

ですよね?






356 :名無しさん@3周年:04/05/08 10:47
p:?draw2d(1/x,[x,0.05,10])$
with_stdout("c:\\0\\test4.dat" , for i:1 step 2 thru length(p) do(print(p[i] , p[i+1])));

これでどう?


357 :_:04/05/08 14:18
http://www.amazon.co.jp/exec/obidos/ASIN/4634346702/ref=sr_aps_b_/250-4226821-2037825



358 :名無しさん@Vim%Chalice:04/05/08 15:08
なんだよMaximaの本が出たのかと思って期待しちまったじゃねーかカスが。

359 :名無しさん@3周年:04/05/08 15:39
>>355
windows版でも、gnuplot(wgnuplot)を
パイプpipe-gnuplot.exe で繋げば動くんじゃなかったっけ?
試してないけど


360 :名無しさん@3周年:04/05/08 15:41
>>358
MAXIMAの本、洋書でよければ、出ているらしい
http://www.amazon.co.jp/exec/obidos/ASIN/1563923653/qid=1083998422/sr=1-9/ref=sr_1_8_9/249-0764915-4045128


361 :GO MAXIMA :04/05/08 17:26
>>355
まもなく出るmaxima5.9.1では
plot2d([sin(x),cos(x)],[x,0,2*%pi],[gnuplot_out_file,"tama.eps"])
とかパラメータに[gnuplot_preamble,"set grid;set..."]とかができて
;の後にコントロールがmaximaに戻ってくるので何枚でもgnuplotを開い
たままにできるのでかなり使い心地が良いです。cvsのソフトがあれば
ソースはcvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/maxima checkout maxima
でとってこれます。
>>353 頑張って使いこなしてください。まずは自力で。
まあ>281が 私の正直な気持ちです。


362 :名無しさん@3周年:04/05/09 20:26
Maxima でπの値を出力するみたいなことできるの?
(C1) number(%PI)
(D1) 3.14159265358979...
みたいな感じで

363 :名無しさん@3周年:04/05/09 21:12
>>362
普通は、
(C1) %pi,numer;
(D1) 3.141592653589793

または、

(C1) FPPREC:100 ;
(D1) 100
(C2) bfloat(%pi);
(D2) 3.14159265358979323846264338327950288419716939937510582097494459230781640#
6286208998628034825342117068B0



364 :GO MAXIMA :04/05/10 00:15
数式処理システムの利用については mathematicaのでる前あたりに専門家の間
で 数式処理システムのような高度に組み立てられたシステムが素人に使える
わけがない、誤用により誤解されるか、無知により無能よばわりされるのはい
やだから普及はさせたくない、というのが多数意見だったのは覚えておいてよ
いだろう。一方数学屋は 任意多倍長計算と無限整数計算と多項式計算があれ
ば使い道に困らないから早く使えるようになりたいと思っていた人が結構いた。
さてmathematica以後は あきれるほどのたくさんの駄本が出版されけっこう売
れている。たぶん数式処理屋がみても数学屋がみても箸にも棒にもかからない
内容と思える本が日本のみならず世界中で売れているのは、一般の人のあいだに
いかに数学が受け止められているかを考えさせるられる。
広がりのある知識というか応用の効く知識と言うのは、結果のみの伝達は不可
能であって他の様々な学問と同じく背景の思想の伝達を伴う必要があり、それ
には知りたい側の思いの深さによってのみ達成できる部分があるのではないか。
まあ思いの深さは、固定されたものではなく、あるきっかけでぐっと深くなっ
たりするので いろいろな出会いを求めるのは悪くない学習法だ。
ラマヌジャンに興味のある人なら,数式処理システムで計算をしてみるのもよ
いきっかけとなるだろう。(MAXIMAはただなのですぐインストールせよver5.9)
Mathematica 計算の愉しみ I.ヴァルディ著 時田 節訳の第8章RiemannのZeta
関数 および練習問題の解答のA.8はRamanujanも顔をだすので見てみることを
すすめる。まあこれは駄本ではないだろう。つまり結果だけでなく考え方を
提示し推論しと普通の講義スタイルになっているだけだが。

365 :GO MAXIMA :04/05/10 00:16
この本を知ったのは、某君が練習問題8.6に解答がついてないので解かりません
と言ってきたことから始まる。Catalanの定数 1-1/3^2+1/5^2-1/7^2+...の収束
をζ関数の整数点での値を利用して加速せよ、というものだった。Gregory級数
π/4=1-1/3+1/5-1/7+...をζ関数の整数点での値を利用して加速するのは本文
に解説してあって要点はΣの順序交換だ。
Σ[n=1 to inf](1/(4n-3) -1/(4n-1))=Σ[n=1 to inf]1/4n(Σ[k=1 to inf] 1/n^k {(3/4)^k -(1/4)^k})
=Σ[n=1 to inf]1/4Σ[k=1 to inf](3^k-1)/4^k 1/n^(k+1)ここで順序交換
=1/4Σ[k=1 to inf](3^k-1)/4^kΣ[k=1 to inf] 1/n^(k+1)
=1/4Σ[k=1 to inf](3^k-1)/4^k ζ(k+1)
これはk>2でζ(k)は1と2の間からこの収束の主要項は(3/4)^kでもとのもの
よりは格段に良いという趣旨だ。話を面白くしているのは数式処理システムに
任意多倍長でζ(k),(kは2以上の整数)を計算できるアルゴリズムが実装され
ているからで、πの計算が面白いわけではない。もちろんmaximaにも実装され
ていて(C4) load(bffac)$ (C5) bfzeta(3,20);(D5) 1.2020569031595942854B0
zetaの3における20桁のbigfloat値は1.2020569031595942854B0ということ。
load(bffac)$はパッケージをloadして使える状態にすることを意味する。

366 :GO MAXIMA :04/05/10 00:17
ええっとこれもΣの順序交換で簡単でしょ、どこまでできたの?
Σ[n=1 to inf](1/(4n-3)^2 -1/(4n-1)^2)
=Σ[n=1 to inf]1/(4n)^2(Σ[k=1 to inf] 1/n^k {(3/4)^k -(1/4)^k})*
Σ[s=0 to inf] 1/n^s {(3/4)^s +(1/4)^s}
=1/8Σ[n=1 to inf]Σ[k=1 to inf]1/n^(k+2) (3^k-1)/4^k +
1/16Σ[n=1 to inf]Σ[k=1 to inf]1/n^(k+1) (3^k-1)/4^kΣ[s=1 to inf] 1/n^(s+1) (3^s+1)/4)^s
ここまでで前半は1/8Σ[k=1 to inf](3^k-1)/4^k ζ(k+2)ですが後半は
Σが3つあってどうしてよいかわかりませんとのこと。これは二重級数の典型
的計算だよ。nはひとつにまとめて1/n^(s+k+2)でkとsをまとめると
Σ[k=1 to inf]Σ[s=1 to inf](3^(k+s)-3^s+3^k-1)/4^(k+s) 、k-s平面の直線上の格子点
すべて(k>0,s>0)に渡って和を取ると言う意味だよね。と黒板にいやみに格子
点を書いて行くと、わかりました、k+s=tと変数をtに置き換えてこの直線上で
はと線を引く、-3^s+3^kの和は対称性から0になり3^(t)-1はt-1個同じものが
あるからΣ[t=2 to inf] (t-1)(3^t-1)/4^t これでΣを入れ換えて
1/16Σ[t=2 to inf] (t-1)(3^t-1)/4^t ζ(t+2) これはt=1の時0だから前半
とあわせて1/16Σ[t=1 to inf] (t+1)(3^t-1)/4^t ζ(t+2) OK
ではmaximaで計算してみよう。100桁くらい出したいのでちょっと工夫する。
bfzeta(301,101)を計算してみよう。1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002454546733B0
とほとんど1.0でこれより先はbfzeta(n)は1.0としてもよい。

367 :GO MAXIMA :04/05/10 00:17
(C1) load(bffac)$
(C3) fpprec:100$ 100桁の多倍長で計算を指示
(C6) (s:0,for k:209 step -1 thru 3 do(s:s+bfzeta(k,100)*(k-1)*(3^(k-2)-1)/4^(k-2)))$
(C7) s:s+bfzeta(210,101)*(209)*(3^(208)-1)/4^(208)$
(C8) for k:301 step -1 thru 211 do(s:s+bfzeta(k,100)*(k-1)*(3^(k-2)-1)/4^(k-2))$
(C9) for k:2000 step -1 thru 302 do(s:s+(k-1)*(3^(k-2)-1)/4^(k-2))$
302以降のζ値を1.0とした。
(C10) s/16;
(D10) 9.1596559417721901505460351493238411077414937428167213426649811962176301#
97762547694793565129261151073B-1
これは98項まで正しい。(最後は1151062が真値)
加速しないで直接80000項計算しても(100桁で) 10桁しか真値と一致しない。

368 :GO MAXIMA :04/05/10 00:18
カタランの定数についてはRamanujanのノートにEuler変換をまず試みよ、とあ
る。Euler変換については森口 繁一著 計算数学夜話 日本評論社 P36からP60
良書。差分演算子(difference operator)Δ
シフト演算子(sift operater)E とおけばE a[n]=a[n+1]
Δa[n]=a[n+1]-a[n]からΔ=E-1 (1は恒等演算子)
交代数列に関するEuler変換とは交代級数S=a[1]-a[2]+a[3].....
に対してS=(1-E+E^2-E^3....)a[1]からa[1]/1+E=a[1]/(2+Δ)
=(1/2-Δ/2^2+Δ^2/2^3-Δ^3/2^4+....)a[1]を対応させるものをいう。
Catalanの定数 1-1/3^2+1/5^2-1/7^2+..も交代級数だからEuler変換が有効
maximaで実装してみよう。実装テストΣ(-1)^(n-1)1/n 11項から20項までの変換をして
10項までの和とあわせる。(計算数学夜話の例である、maximaの検算のため)
(C108) _a1:makelist(1/n,n,11,20)$
(C117) for k:2 thru 10 do(for i:10 step -1 thru k do(_a1[i]:_a1[i]-_a1[i-1]))$
(C119) map("*",makelist(-1/(-2)^n,n,1,10),_a1)$
(C120) apply("+",%)$
(C121) bfloat(%)+0.6456349207;
(D122) 6.931471804564033349010031480876232685384896745818194307922200563358213#
188241979057214508909263525877B-1
最初の9けたが合っており直接計算すれば十億個以上の和をとらねばこの
精度に達しない。最初の20項を利用しただけで得られるのはすごい。

369 :GO MAXIMA :04/05/10 00:19
Catalanの定数の級数の最初の100項を利用してみよう。
(C126) _a2:makelist(1/(2*n-1)^2,n,1,100)$
(C127) _a2:bfloat(_a2)$ こうしないと有理数計算となり遅くなる。
つぎはΔのべきをリストで計算(Δ^0,Δ,Δ^2,....Δ^99)
(C128) for k:2 thru 100 do(for i:100 step -1 thru k do(_a2[i]:_a2[i]-_a2[i-1]))$
これに重み(1/2,-1/4,1/8,-1/16,....,(-1)^99/2^99)をかける。
(C129) map("*",makelist(-1/(-2)^n,n,1,100),_a2)$
和をとって完成
(C130) apply("+",%);
(D130) 9.159655941772190150546035149321557867681484349275542631973729977624577#
311764817967840720710347051988B-1
30桁まであっている。
300項までとれば90項まで正しい。ただし500項とっても100桁の多倍長計算に
よるまるめのため99項ほどしか正しくない。このときはFPPREC:200くらいの
多倍長計算をする。もちろん100万桁以上をねらうにはEuler変換でもよいが
多倍長計算が高速におこなえるような言語でないと不可能。

370 :名無しさん@3周年:04/05/10 10:55
MAXIMAって C++で言うところの、
gg = 9.8 ; // [m/s2]
みたく、行の後ろにコメント付けるにはどうすりゃいいんすか?
Basicで言うところの '
アセンブラでいうところの ;
Perlでいうところの #


371 :名無しさん@3周年:04/05/10 19:02
>>370

a:1; /*a=1 */
b:2;
c:a+b;

をバッチで流してみたら、ちゃんと通ったよ。


372 :名無しさん@3周年:04/05/10 19:56
>>356
display2d:false;

を頭に書かないと -0.2 が - 0.2 となって、gnuplotで読めなくなるみたいです。



373 :名無しさん@3周年:04/05/10 20:01
points1:?draw2d(1/x,[.05,10],.03)

の?draw2d ってなんすか?
確かに
points1:?draw2d(1/x,[.05,10],.03);
ってやると
MACSYMA-TOP-LEVEL [or a callee] requires less than three arguments.
って言われちゃいますね?


374 :名無しさん@3周年:04/05/12 05:58
GO MAXIMA へ
2CHでコテハン名乗ってグダグダ書いてるぐらいなら論文でも書け。
友達居ないのか?
ハードウェアは全くわかってなさそうだし、純粋数学にあぶれた数学屋か?

375 :名無しさん@3周年:04/05/12 10:36
>>374
別にグダグダ書いてもいいんだが、
例えば mx'' + kx=Fsin(wt)の解析をMAXIMAでやってみせるとか、
もうちっと「シミュレート板」らしいことをやってくれないかと。


376 :名無しさん@3周年:04/05/12 17:49
大体 MAXIMA の基本は数式処理ツールであってシミュレートするためのツールじゃないでしょ。
数値演算シミュレーションを意識して書いてるんだけどね。
自然科学とか工学にとって必要なのは数式解じゃないからね。

377 :名無しさん@3周年:04/05/12 20:11
>>376
そうなんだけどさ、だけど例えば
mx''+cx'+kx=0 の解が
パッと見で、expとsinとcosの塊から出来ている っていうのはちょっと参考になるかとは思う。
例えば、ね。

(C1) ic2( ode2( 'diff(x,t,2)+'diff(x,t)+x=0 , x , t) , t=0 , x=1 , 'diff(x,t) = 0 );
(D1) x = %E^-(t/2)*(SQRT(3)*SIN(SQRT(3)*t/2)/3+COS(SQRT(3)*t/2))



378 :名無しさん@3周年:04/05/13 08:48
>>377
参考になると思ってるのはアンタだけだろ
そんなの当たり前じゃん


379 :名無しさん@3周年:04/05/13 14:13
Mathematica でポワソン括弧定義して、ヤコビの恒等式の成立示そうと思うも
任意有限個の問題等で失敗しました。maxima ならどうでしょうか? そんなもん
一発じゃという方いらしたら、解答見せていただけるとありがたいです。(maxima
に乗り換えるかも)

380 :名無しさん@3周年:04/05/17 12:05
目標、完全沈黙!(w


381 :名無しさん@3周年:04/05/19 15:41
黙秘します

382 :KingMathematician ◆5lHaaEvFNc :04/05/22 13:05
誰か、maximaでFourier transformationを実装してみませんか?
∫exp(-ixz)dx=2πδ(z)
とかやってみましょう。

383 :名無しさん@3周年:04/05/22 13:29
>>382
(C1) dislay2d:false$
(C2) laplace(exp(a*t),t,s);
(D2) 1/(s-a)


384 :KingMathematician ◆5lHaaEvFNc :04/05/22 18:53
Re:>>383 dislay2d:false$って何ですか?
dislay2dって何ですか?

385 :名無しさん@3周年:04/05/22 21:25
>384 割坊はだまってろ 恥書くぞ

386 :名無しさん@3周年:04/05/25 00:14
>>385
え、クラック版のMAXIMAですか。ぜひ欲しいなぁ


387 :KingMathematician ◆5lHaaEvFNc :04/05/28 16:50
In the maxima system, there are two assignment operators, : and ::,
but I don't know if there are some differences between two operators.
How does the : operator differ from the :: operator?

388 :名無しさん@3周年:04/05/29 09:29
>>387
Lispがわかっているなら、そんな質問は出ないはず。
Lispがわかっていないなら、Lispの本を読めばいい。
いじょ


389 :KingMathematician ◆5lHaaEvFNc :04/06/01 19:04
Re:>>388
I have only a little knowledge of the LISP.
What is the colon and double colon operator?

390 :名無しさん@3周年:04/06/01 20:17
>>389
そう慌てずに、まず、ここを読め
http://www-antenna.pe.titech.ac.jp/~hira/hobby/symbolic/index.html


391 :名無しさん@3周年:04/06/15 02:32
以前に、変数名で、d3 とか、c4 などを係数として計算などをやっていて
ひどい目にあいました。そういう何気ない名前を意図したとおりにつかえない
設計は、間違っていると思う。

392 :名無しさん@3周年:04/06/15 02:49
あと、わけがわからないのが、大文字と小文字の名前の勝手な変換。
Maxima 5.9.0 (GCL 2.5.3 on Linux) で、
a0 と入力すると、結果が 小文字のままで a0 となるのに、
a1 と入力すると、結果が 大文字で A1となるのは、なぜだろう?
a1,a2,a3,a4 までは大文字になるのに、a5からは小文字になる。
b0 は小文字なのに、 b1,b2 は大文字、b3からは小文字になる。
g0、g1は大文字なのに、g2からは小文字になる。
i0, i2 は大文字になるが、i3 からは小文字になる。
j0, j1 は大文字になるが、j3からは小文字になる。
y0 は小文字だが、y1、y2、y3、y4は大文字になり、y5は小文字になる。

このような奇妙な振舞いは、わけが分からない。




393 :UltraMagic ◆NzF73DOPHc :04/07/02 22:38
シミュレート板の皆さんこんばんは。
Re:>391-392
使う前にMaximaの仕様書(?)を熟読しよう。英語だけど頑張れ。

394 :名無しさん@3周年:04/07/09 06:59
出てきた結果が、長大で、しばしば100ページを越えてしまうんですが、
こうなると、その先処理させるための指示を与えることすら、困難です。

目で見わたせる場合にも、ここの部分の項を取り出してうんぬんという
のが見て分かっても、それをMAXIMAに指示するのには、コマンドで指示
する外無くて靴の底から足の裏を掻くかのような感じがします。
GUIならば、ここの部分というのを例えばマウスでカットアンドペースト
的に指定して切り取って新しい変数に入れる、というような指示が出来る
のではないかと思うのですが。

395 :GO MAXIMA :04/07/09 13:49
>>394
インタープリタの対話環境では、あくまで調べる問題の雰囲気を探るのが
主眼になると思いますね。本格的に使うには次のように教えています。

maximaのような数式処理ソフトでは プログラム開発事態が極めて個人的
興味に基づくものであるだけでなく、開発スタイルも個性的にならざるを得な
いが最初はインタラクティブモードで いろいろ調べて、周辺が見えてきたら
欠けている関数や テストデータなどをファイルからバッチモードで加えてい
くというのが僕の開発スタイルである。この時 ファイルから作業を行うと
mmaなどのnotebookスタイルがサポートされていないので、文章などと混在す
るスタイルがとれないのが泣き所であった。もっともmmaのnotebookスタイル
はお仕着せが強く好みのものではないし、プログラム開発では能率も悪い。
ここではemacs上のhowmと連係した自由ノートのスタイルを紹介しよう。
これはwin環境でもmedowなどのemacsが動けばそのまま使えるので検討して
みてください。まづhowmをとってきてインストールする。(開発者に感謝)
使いかたは ホームページをみるべし、1分で了解。.emacsに次の関数を書いておく。
間に合せだがまあ動くので、改良は腕次第です。

396 :GO MAXIMA :04/07/09 13:49
;;;howm-maximaのテスト関数でregionをmaximaで実行し結果がバッファに表示されます
;;;program部分はtest-tamaxに残りますが普通は必要ないでしょう
(defun temp-region-write (start end)
(interactive "r")
(let ((rago "test-tamax")
(win (selected-window))
(tmpbuf " *temporary* "))
(save-excursion
(setf default-directory "/home/gomaxima/")
(write-region start end rago))
(pop-to-buffer tmpbuf)
(setf default-directory "/home/gomaxima/")
(call-process "maxima" nil tmpbuf t "-b" rago)
(select-window win)))


397 :GO MAXIMA :04/07/09 14:03
さて使いかたですがプログラムとその結果のリンクが可能で 解説orメモも混
在させることができるので大変便利です。例を示します。
howmから新規メモを開く
=
[2004-04-23 19:23]
cartan_test.lispでは 外微分D、外積@、clifford積 &が定義してある。

load("cartan_test.lisp")$
infix("@")$
infix("&")$
/*coords:read("Input new coordinate"); */
/* インタラクティブにはできないのでとりあえずreadはコメント*/
/*手動で球座標をセットした */
coords:[r,phi,th]$
dim:extdim:length(coords)$
basis:VR:extsub[1]:extsubb[1]:[]$
for i thru dim do
(ci:concat(zzz,i),basis:endcons(ci,basis),
extsub[i+1]:cons(ci=-ci,extsub[i]),
extsubb[i]:cons(ci=0,extsub[i]),apply('alias,
[concat(D,coords[i]),ci]),ci:concat(v,i),VR:endcons(ci,VR))$
basis;
/*cliffordtype:read("please input metric type,for example [1,1,1],if E3");*/
cliffordtype:[1,1,1]$
/*translist:read("represent the standard coordinates with new one");*/
translist:[r*sin(phi)*cos(th),r*sin(phi)*sin(th),r*cos(phi)]$
/*calculation norms */

398 :GO MAXIMA :04/07/09 14:04
norm_table:[]$
_l:[]$
for i:1 thru dim do (_l:map(lambda([x],diff(x,coords[i])),translist),
_l:map(lambda([x],x^2),_l),_p:ratsimp(trigsimp(apply("+",_l))),
norm_table:endcons(cliffordtype[i]/_p,norm_table))$
norm_table;
for i:1 thru dim do
(ci:concat(zzz,i),
extsubb2[i]:cons(ci=norm_table[i]/basis[i],extsub[i])
)$
nest2(_f,_x):=block([_a:[_x],i],if listp(_f) then (
_f:reverse(_f),for i:1 thru length(_f) do(_a:map(_f[i],_a)))
else (_a:map(_f,_a)),_a[1])$
nest3(_f,_x,_n):=block([_a,i],_a:[_x],for i:1 thru _n do(_a:map(_f,_a)),_a)$
/*本来はここから別ファイルnorm_tableを見て次に進むため */
/*you shoud define the volume such that 1/sqrt(norm[1]*norm[2]*norm[3]*/
/*h_st()はhodge-star演算子 */
volume:r^2*sin(phi)$
inargs(q):=block([inflag:true],args(q))$
inop(q):=block([inflag:true],op(q))$
h_st(_f):=block([_f1:expand(_f),_l1:[],_l2:[],_l3:[],_l4,_l5,_l6],
if atom(_f1) then _l1:[_f1] else
if is(inop(_f1)="+") then _l1:inargs(_f1) else _l1:[_f1],
_l2:subst(map("=",basis,makelist(1,i,1,DIM)),_l1),
_l3:map(lambda([x,y],y/x),_l2,_l1),
_l6:subst(map("=",basis,norm_table),_l3),
_l4:map(lambda([x],(apply("*",basis))/x),_l3),
_l5:map(lambda([x,y],(x@y)/(apply("*",basis))),_l3,_l4),
_l4:map(lambda([x,y,z],x*y*z),_l6,_l5,_l4),
apply("+",map(lambda([x,y],x*y*volume),_l2,_l4)))$

399 :GO MAXIMA :04/07/09 14:05
/* Jは単位擬スカラー*/
J(_f):=volume*(Dr@Dphi@Dth)& _f$
/*test J(volume*Dr@Dphi@Dth)is -1? */
J(volume*Dr@Dphi@Dth);
/*係数a,b,cはr,phi,thの関数として一般性は失わない*/
depends([a,b,c],[r,phi,th]);
D(a);
v:a*Dr+b*Dphi+c*Dth$
display2d:false$
nest2([D,h_st,D],a);
nest2([h_st,D,h_st],v);
nest2([h_st,D],v);
nest2([D,j,D],a);
nest2([J,D,J],v);
/*load("cartan_test.lisp")からここまでをregionにして
M-x temp-region-writeとすればtempのbufferでbatch処理される。
このbufferを名前をつけてsaveしリンクを張る。>>をクリックすれば
結果のファイルに飛べます。
>>> ~/difform_result1
*/

400 :GO MAXIMA :04/07/09 14:10
この結果を見て分かるようにscalar a --> aまたはaJ
vector (a,b,c)-->a*Dr+b*r*Dphi+c*r*sin(phi)*Dthと対応させている。
a*Dx+b*Dy+c*Dzを引き戻したのがa*Dr+b*r*Dphi+c*r*sin(phi)*Dth
である。つまりvector (a,b,c)とa*Dx+b*Dy+c*Dzは同一視して計算している。
この同一視で引き戻しだけで球座標のベクトル解析ができる。
面倒だから、動くことが分かったので上の大部分をファイルにしてしまう。
これをdifform_test.macとした。

batch("difform_test.mac");
M-x temp-region-writeで上の一行を実行する。
tempのbufferで上と(D26)までは同じなので消して残りをsaveしてリンク。
>>> ~/difform_result2
最後がちょっと中途半端なので

load("difform_test.mac");
nest2([D,h_st,D],a);
ratsubst(1/(r^2*sin(phi)),Dr@Dphi@Dth,%);
expand(%);

>>> ~/difform_result3
てな風に使います。howmのよいところは検索も速いのでええっと
cartan関連のファイルを探しているのなら 一発ででcartanを含む
メモの一覧が出てきてブラウズできて気持ち好いです。




401 :FeaturesOfTheGod ◆UdoWOLrsDM :04/07/22 22:10
GO MAXIMAさん、良かったらこっちに出てきてください。
http://pc5.2ch.net/test/read.cgi/tech/1090227743/

402 :名無しさん@3周年:04/08/09 18:37
TeXmacsをフロントエンドとしてMaximaを起動したところ以下の様な警告文が出てしまいました.
使用するぶんには問題ないのですが色々いじってみても警告文が消えません。
どうしたらよいのか教えて頂けないでしょうか?

WARNING:
DEFUN/DEFMACRO: redefining function MAIN-PROMPT in
/usr/share/TeXmacs/plugins/maxima/lisp/texmacs-maxima-5.9.0.lisp, was defined in
/root/rpm/SOURSES/maxima-5.9.0/src/binary-clisp/macsys.fas

WARNING:
DEFUN/DEFMACRO: redefining function DISPLA in


WARNING:
DEFUN/DEFMACRO: redefining function BREAK-DBM-LOOP in


WARNING:
DEFUN/DEFMACRO: redefining function $ENTERMATRIX in


403 :名無しさん@3周年:04/08/12 01:57
ある程度書き溜めたら、まとめて本にでもしてくれると、嬉しいよ。
もちろんPDF/HTMLファイルで無料でダウンロード閲覧できるのでもいいけど。

MATHEMATICAとかが、跋扈している理由の大きなものは、参考書とか
教科書(?)の類が政策的に氾濫していること。日本国内ではMAPLEが
劣勢なのも、それが最大要因だ。

404 :名無しさん@3周年:04/08/16 21:33
maxima が出力できるプログラミング言語用の形式は,fortran だけですか?
C や lisp で使える式を出すにはどうしたらいいんですか?

405 :404:04/08/19 21:42
レスが無い...

プログラムに,とっても長い (数学的な) 関数やその偏微分の関数を
式として書きたいときにも maxima は便利なんですよね?
こういう使い方は一般的ではないのですか?

406 :名無しさん@3周年:04/08/19 23:01
http://www.00-chan.jp/i/
未体験の請求サイト     

407 :名無しさん@3周年:04/08/29 17:29
maximaってこの程度の計算も出来無いんですか
使えませんね

realonly : true $
solve(abs(2*x+1)-abs(x-2)/2) ;


408 :名無しさん@3周年:04/08/29 18:01
(C1) solve((2*x+1)^2-(x-2)^2/4);
(D1) [x = -4/3,x = 0]
A,Bがrealなら abs(A)=abs(B) はA^2=B^2と同値ということも知らんのか。

409 :名無しさん@3周年:04/08/29 18:13
>>408
そんな小細工する位なら手計算でやれば?
私は問題の本質部分を単純化して指摘しただけですよ
上と同じ状況がもっと複雑な例の中で出て来たらどうするの?
abs(A)*abs(B)とかabs(A+abs(B))とかね

>A,Bがrealなら abs(A)=abs(B) はA^2=B^2と同値ということも知らんのか。

maxima は知らないみたいだね(pu


410 :名無しさん@3周年:04/08/29 20:03
http://tmp4.2ch.net/test/read.cgi/bakanews/1093762453/l50#tag12
禿同の歴史オワタ・・・!!

411 :名無しさん@3周年:04/08/29 21:39
最近,maxima が使えればと思っていろいろやっていて,
lisp を知っているので lisp で maxima と対話しようとしています.
しかし,

f(x):=cos(x)*exp(x)$

:lisp $f

Error: The variable $F is unbound.
Fast links are on: do (si::use-fast-links nil) for debugging
Error signalled by PROGN.
Broken at PROGN. Type :H for Help.
MAXIMA>>

lisp の変数としてどうなっているのか知りたいのですが,
どうしたものでしょうか.maxima マニュアルではこの辺は
触れられていないように見えます...

412 :GO MAXIMA :04/08/29 23:44
>>411
ええっと このへんは 次のように考えてください。
MAXIMA言語で定義された関数は コンパイルしない限り
シンボルの属性としてしまわれます。今の関数なら
(%i10) :lisp (symbol-plist '$|f|)
(MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) $x) ((MTIMES) ((%COS) $x) (($EXP) $x)))))
従ってこれを属性として取り出して 実行するマクロmfunction-callを使って
実行しなければなりません。

(%i10) :lisp (mfunction-call $|f| 1.2)
1.203070112722819

(%i10) f(1.2);
(%o10) 1.203070112722819 で同じ実行であることが
解ります。
もしコンパイルした後では $|f|は LISPの関数に格上げされているのでこの実行は
($|f| 1.2)
としなくてはいけません。mAXIMAのコンパイラは時々両者をとりちがえてしまい、
コンパイルしたコードが動かないことがあることも覚えておくとよいでしょう。



413 :名無しさん@3周年:04/09/02 22:10
初歩的な質問ですみません。

(C2) save("test.lisp",ALL);

とやってセーブした後、別の機会に内容をロードしようとすると

(C1) loadfile("test.lisp");
Load failed for test.lisp
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)

と文句をいわれてしまいます。
どうすれば読めるようになるのでしょうか。

インストールは、rpmで
clisp-2.29-1.i386.rpm
maxima-5.9.0-1.i386.rpm
maxima-exec-clisp-5.9.0-1.i386.rpm
を取ってきて行いました。

414 :GO MAXIMA :04/09/02 23:47
>>413
いくつかのVerで やってみましたが再現できません。
よかったらそのtest.lispを 見せてください。
長ければ はじめの 7行と終わりの7行くらいでもよいです。


415 :413:04/09/03 12:47
レスありがとうございます。
始めの8行が
;;; -*- Mode: LISP; package:maxima; syntax:common-lisp; -*-
(in-package "MAXIMA")
(DSKSETQ $C1 '((MSETQ) |$a| ((MPLUS) |$b| |$c|)))
(ADDLABEL '$C1)
(DSKSETQ $D1 '((MPLUS SIMP) |$b| |$c|))
(ADDLABEL '$D1)
(DSKSETQ $C2 '(($SAVE) |&test.lisp| $ALL))
(ADDLABEL '$C2)
終りの7行が
(ADD2LNC '$HTRIGRULE4 $PROPS)
(MDEFPROP $HTRIGRULE4
((MEQUAL) ((%COTH SIMP) $A)
((MTIMES SIMP) ((%COSH SIMP) $A) ((MEXPT SIMP) ((%SINH SIMP) $A) -1)))
$RULE)
(ADD2LNC '$HTRIGRULE4 $PROPS)
(SETQ $LINENUM 2)
でした。

416 :413:04/09/03 12:49
もしやと思って、playbackしてみると、
(C1) load("./test.lisp");
Load failed for test.lisp
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)
(C2) playback(30);

(C1) a:b+c;

(D1) c + b
(D2) DONE

となり、とりあえず読めてはいるようです。
デバッガの使い方覚えたら、調べてみます。

417 :GO MAXIMA:04/09/03 16:53
今日 学生から聞いたらそのVerだけで 413と同じ症状がでるとのこと。
まあ次のVerでは 直っているのだけど、ノートパソコンを借りて調べた
ところ、test.lispの下のほうに
(DEFPROP $DVA #<COMPILED-CLOSURE TOP-LEVEL-FORM-2-3-3-2-1> TRANSLATED-MMACRO)
(DEFPROP $DVA T TRANSLATED)
(ADD2LNC '$DVA $PROPS)
があるがこの #<COMPILED...>を読み込もうとしてエラーとなっている。この$DVAは
現在使われていないので必要ないからこの3行をコメントアウトします。
;;;(DEFPROP $DVA #<COMPILED-CLOSURE TOP-LEVEL-FORM-2-3-3-2-1> TRANSLATED-MMACRO)
;;;(DEFPROP $DVA T TRANSLATED)
;;;(ADD2LNC '$DVA $PROPS)
とすれば正常に読み込めます。lispかperlで$DVAの行をコメントするスクリプトを
作って使ってください。

418 :413:04/09/03 17:33
GO MAXIMAさん、どうもありがとうございました。
いい機会なのでlispを使えるように勉強します。

419 :名無しさん@3周年:04/09/13 11:37:35
Maximaで底がe(2.71828)以外の対数関数の計算をするには
どうすればよろしいのでしょうか?

420 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/15 08:10:23
Re:>419 普通にLOG(x)/LOG(a)でいいんじゃないの?

421 :名無しさん@3周年:04/09/15 11:44:55
fortran(exp) の C 言語用が欲しいです.
しかも,多数の,それぞれの複素数ライブラリに対応したやつが欲しいです.

c_expression(exp, c++stl) とか
c_expression(exp, gsl) とか
c_expression(exp, c99) のような.

とりあえず義務としてソースを読んでみます...

422 :名無しさん@3周年:04/09/15 18:52:34
Deriveサブセットが載ってる、
Texas Instrument Voyage200
http://www.naoco.com/calc/voyage_200.htm
なら、こんな事も出来るぞ。

http://up.goraa.info/gazou/img-box/img20040828234121.jpg
このようにきわめてアレな関数を定義する。

どのようにアレかというと…
http://up.goraa.info/gazou/img-box/img20040828234138.jpg
激しすぎww

http://up.goraa.info/gazou/img-box/img20040828234148.jpg
まずy1(x)とy2(x)の交点のx座標を列挙し、それをy1(x)に代入する。

http://up.goraa.info/gazou/img-box/img20040828234202.jpg
テキストエディタに貼り付けて、正しく六個の交点が求められていること
が判る。

以上、解析的に求められる一例。
絶対値含んだ関数を微分して、微分可能な点だけ数を返す様なことも可能。

423 :名無しさん@3周年:04/09/15 18:53:09
http://vladimir.ddo.jp:8888/cgi-bin/upload2/src/pic2230.jpg
こういう微分をさせてみる。絶対値を含んでるとMathematicaでもムリだったりする。
sign()は符号関数で、パラメーターが正なら1、負なら-1,0ならsign(0)を返す。
sign(0)は数ではないので、微分可能な点は数を返し、微分不可能なときは数を返さないという形で
ある程度整合性を持って表現できている模様。

http://vladimir.ddo.jp:8888/cgi-bin/upload2/src/pic2231.jpg
微分する前とした後をプロットしてみる。分割画面でグラフそのものと
定義を同時に表示。特に定義の方が全部表示されるように分割比率を調節。

http://vladimir.ddo.jp:8888/cgi-bin/upload2/src/pic2232.jpg
グラフのプロットで定義したy1(x)とy2(x)の交点を求めさせてみる。
なんと解析的に解を出せたりする。(小数点を含んだ近似ではないという意味)

http://vladimir.ddo.jp:8888/cgi-bin/upload2/src/pic2233.jpg
先ほどの解をペーストしてマトリックス形式に変換する命令に食わす。
座標として見やすい並び方に。

http://vladimir.ddo.jp:8888/cgi-bin/upload2/src/pic2234.jpg
交点マトリックスを数値に変換して、先ほどのグラフと同時表示させる。
解が正しいことが判る。なお数値は見やすくするために表示時有効数字6桁
にしてある。(内部14桁)

MAXIMAごときでは全く歯が立たないだろう。

424 :名無しさん@3周年:04/09/15 19:52:40
>>422-423 落ち着いてください.

よーし,パパ Lisp で

425 :名無しさん@3周年:04/09/16 00:49:51
>>422-423
あのー、ちょっと程度が低いんじゃありませんか。。

まあ、話題を提供してくれるのは嬉しいんだけど。。


426 :名無しさん@3周年:04/09/16 04:39:35
>>425
え、MAXIMAじゃこれ出来ないでしょ。
悔しかったらやって見せてみなよ。

427 :名無しさん@3周年:04/09/16 08:11:32
>>426
活発なプロジェクトらしいので,良いアイデアがあれば連絡を取ってみるのも
いいと思います.

428 :名無しさん@3周年:04/09/16 14:44:00
>>64のMAXIMAで歯が立たない問題。

まぁざっとこんなもんですかね。凄く場合分けが長いから載せるのはλだけね。
この程度の場合分けも出来ますよ。

http://up.goraa.info/gazou/img-box/img20040916143537.jpg
http://up.goraa.info/gazou/img-box/img20040916143742.jpg
http://up.goraa.info/gazou/img-box/img20040916143755.jpg
http://up.goraa.info/gazou/img-box/img20040916143824.jpg
http://up.goraa.info/gazou/img-box/img20040916143910.jpg
http://up.goraa.info/gazou/img-box/img20040916143923.jpg
http://up.goraa.info/gazou/img-box/img20040916143935.jpg
http://up.goraa.info/gazou/img-box/img20040916143957.jpg

429 :名無しさん@3周年:04/09/16 15:28:09
なんか、商品として売っているもので正確に完全に実行できるものを、
タダで手にはいるからといってそれに実装しようとヘコヘコしてるのは
人生棒に振ってませんか?

430 :名無しさん@3周年:04/09/16 15:31:18
悪いけど、199$の計算機で出来る既知のアルゴリズムを
労力かけて実装しようという意味が全くわからない。


431 :名無しさん@3周年:04/09/16 15:35:39
あ、ちなみにこの計算機でwhen(A,B,C)ってのは、
Aが真の時Bを返し、Aが偽の時にCを返すという意味です。

432 :名無しさん@3周年:04/09/16 15:39:28
>>351は場合分けを全く含んでいないから数学的に誤りだよね。

433 :名無しさん@3周年:04/09/16 15:56:21
>>428
これは>>64 の問題は>351 352 で解けていますがなにか?(428よりエレガントにね)
数値計算で味付けしただけでしょ、deriveは。
コンピュータは アルゴリズムを載っけただけですから
できないのはMAXIMAではなくて あんたの頭だということを
忘れていませんか?
商売でないのだから、絶対値つきの連立方程式を解きたい人と言えば
高校生くらいしかによね。そんな人に向いてるのはOK。
数学だけなら 工学部の教授よりできる1、2、年がごろごろしているよ。
そいつらに問うたら、1分で次のようなアルゴリズムが返って来た。
外からabsをはずして+と-の 2つの式のわけて別リストにして再帰的に
繰り返し absがn個なら2^nの式になる。2元なら2^n*2^mこの連立方程式を
解いて、解を元のabsを含む式に入れてcheckをすればよい。
最後のstepが可能であるのは 解が数値であるときのみで、つまり
これはつまらない問題である、そうです。
商売でなにができるできないというなら別スレでやってください。
数式処理では できないのは頭の問題であることは 皆が知ってます。



434 :名無しさん@3周年:04/09/16 16:17:30
訂正
>2元なら2^n*2^mこの連立方程式を解いて
2元なら2^n*2^m回 2元連立方程式を解いて

435 :名無しさん@3周年:04/09/16 16:35:43
>>433
>351はαとβについての場合分けをした解ではないから
「エレガント」なのではなくて「決定的な数学的誤り」ですよ。
単なるヘタレ実装でヘタレ解しかでないだけ。
たとえばx^2=aの解をx=√aしか返さないとしたらそれはエレガントなのではなくヘタレ。
同値変形になってないんだよ。
Deriveは基本能力がMAXIMAとは決定的に違うよ。
そのつまらない問題でさえ手に余るのがMAXIMAだって事は自覚しなさい。
数式処理で出来ないのではなく、「MAXIMAというヘタレ系で出来ない」だけのこと。
混同しないように。

436 :名無しさん@3周年:04/09/16 16:38:28
現に>>66で「場合分けできっこない」といってる奴の頭で出来ないことを
5ページに完全に記述しきった訳でね。
しかも>>66で場合分けが必要と言っておきながら>>351では全くやってないね。
矛盾もいいとこ。
http://up.goraa.info/gazou/img-box/img20040916143824.jpg
http://up.goraa.info/gazou/img-box/img20040916143910.jpg
http://up.goraa.info/gazou/img-box/img20040916143923.jpg
http://up.goraa.info/gazou/img-box/img20040916143935.jpg
http://up.goraa.info/gazou/img-box/img20040916143957.jpg

437 :名無しさん@3周年:04/09/16 16:39:57
>最後のstepが可能であるのは 解が数値であるときのみで

これも意味不明だな。
http://up.goraa.info/gazou/img-box/img20040828234148.jpg
これが解析解以外の何だって言うんだ?

438 :名無しさん@3周年:04/09/16 16:50:08
MAXIMAの普及は数式処理の未来にとって有害だと思うね。
MAXIMAの限界が数式処理の限界だと混同する奴が増えるから。
現に何匹か居るみたいだし。

439 :名無しさん@3周年:04/09/16 17:00:01
>>433
http://up.goraa.info/gazou/img-box/img20040916165742.jpg
つまらない道具でつまらない発想になってしまった学生たちには
予想の出来ない解を返しましたよ。
場当たり的な個別問題の実装にはとどまらず、かなり広い範囲で条件付の
同値変形を行えるって事よ。
単にグレブナー基底求めましたじゃダメだっての。

440 :名無しさん@3周年:04/09/16 17:01:07
>>66 では
"つまりもし数式的に解けると仮定すると この単純な2つのalph betaにたいし
てさえ 解の個数つまり表現形がことなるので 場合分けが必要ですね。
では 一般のalphとbetaのとき どれだけ 場合わけしてしめしたらよいのでしょ
うか? ということで不可能としているのです。
ただし 実用上は 他の数式処理システムのように 厳密性に目をつぶって
えいやーとひとつの解をほしいときもあります。この場合もそれにあたるでしょ
う。こんなときは ほしい解の正当性をじぶんが 保証できる場合にあたり
mmmsolveとかいう名前でsolveの関数を書かなければいけません。"
とあり>352でheuristic なアルゴリズムを... とあり矛盾していないように
見えます。むしろ whenが解の表現に有効と主張するのであれば
>>66がいう"解の個数つまり表現形がことなるので 場合分け"が完全にできること
lambdaでなくてK、Lが意味ある形になるかどうかということが問題です。


441 :名無しさん@3周年:04/09/16 17:09:34
>>440
当然λの完全な表示が求めらているからKもLも出るよ。一対一対応してるでしょ。

442 :名無しさん@3周年:04/09/16 17:13:54
いやwhenが入っているのは単純な整式とはいえないので、
連立が 可能かどうかは 分からないと言うのが正しい。

443 :名無しさん@3周年:04/09/16 17:23:36
>>442
なんかこの計算機自分で使っててちょっと恐ろしいんだが、
when付きの式をsolveにぶち込んでもちゃんと正確に解を返すんだよね。
三角関数含んででも解に2@n1*π  (@n1は任意の整数を示す)とか含んで返してくるし。
ちょうどMathematica5のReduce[]というコマンドがこういう事をやる。
Mathematica5のReduce[]の方がかなり強力問題でも解を返すけどね。

444 :名無しさん@3周年:04/09/17 01:07:31
>>438
別にMAXIMAのかたを持つわけじゃないが、
「Deriveサブセットが載ってる、 Texas Instrument Voyage200」
なるものを、馬鹿チョンで使おうとするアホの出現の弊害の方が
大きいと思うがな。
数学ができないのに気がつかない馬鹿が一番迷惑なんだよな。


445 :名無しさん@3周年:04/09/17 01:44:04
>>444
MAXIMAだと気づくとでも?
それは使用者の資質に帰する問題だな。

446 :GO MAXIMA :04/09/17 03:40:27
あの私の書き込みでいろいろ言われていますが、
>>436 これは複素数の範囲での解を含めて>66の発言があるわけで
当然のことながら 436の解もすべてを尽くしていないわけです。
x^alph=1 を複素数の範囲で数式処理で明示的に解けるか考えてみてください。
>>437 解析解でも数値で得られるときと 式ででてくるときもあるでしょう。
数式処理では これらは区別します。これが分からないのは素人さんですかね。
>>438 賛成できません。 しかしmaximaが古臭いシステムであるのは確かです。
これは設計されたときには、十分発展していなくて その後本質的な
役割を果たすようになった数値ー数式の協調相互作用についての実装が
まったくないことが原因です。一例をあげときますと山崎圭次郎 ガロア群の計算
(数学研究へのコンピュータの影響、日本評論社など)高精度数値計算のが
数式処理のみのアルゴリズムを凌ぐ例です。
数値数式の協調相互作用の実装は、応用上も極めて重要であるばかりでなく
、数学の研究に使う場合でも 誰かが言っているように証明すべき命題は
証明される前に発見されている、その多くは数値数式の実験によって、
というわけだから極めて重要である。もう一桁使用者が増えるとそのような
実装を行う人も出てくるであろうと推測できる。
まあ 数式処理の現場での使われ方を書いてある文献は異常な程少ないので
、機能がどうこうと問題にする人がでるのも無理もないのですが。
知らないといことは恐ろしい、自戒も含めて。

447 :名無しさん@3周年:04/09/17 04:24:20
>>446
確かにx^alph=1 を複素数範囲で明示的に展開することはVoyage200計算機では
出来ないようです。実数なら漏らさずやるようですが。

しかし、x^alph=1をMathematica5のReduceでやってみて下さい。
驚愕しますから…

こういう解返されると人間が複素数体でやる事なんて無いんじゃないかとも思えてくる。

448 :名無しさん@3周年:04/09/17 05:10:09
まぁ計算機がMAXIMAよりは高性能であることは間違いないようですね。

449 :名無しさん@3周年:04/09/17 05:20:10
まとめ
absは純粋な文字式でも閉じた系で扱える
http://up.goraa.info/gazou/img-box/img20040916165742.jpg
Voyage200は実数範囲で正しく方程式の解を条件付きで展開できる
MAXIMAは条件付きの展開はどのような範囲でも望めない

450 :名無しさん@3周年:04/09/17 05:23:46
ここまで馬鹿だと笑えますな。

451 :名無しさん@3周年:04/09/17 13:22:20
>>450
負け惜しみご苦労。

452 :名無しさん@3周年:04/09/17 16:17:57
http://up.goraa.info/gazou/img-box/img20040917161717.jpg
x^a=1 by Mathematica5

453 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/18 22:55:13
Re:>438
まあ、maximaを導入する最大の理由はfreeであることだね。
maximaも、一通り仕様が分かれば使えるようになる。
だが仕様を一通り理解するまでが大変。

454 :名無しさん@3周年:04/09/18 23:39:23
>453
電波は相手にしないほうがいいよ。何言っても無駄だから。

455 :名無しさん@3周年:04/09/19 00:12:44
>>454
と何も言う能力のない電波が言うのであった。

456 :名無しさん@3周年:04/09/19 01:55:32
>>453
どんなに使用を理解して内部コードを読み解いたところで、
>>452は出来ない訳だが。

457 :名無しさん@3周年:04/09/19 01:56:21
使用→仕様

458 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/19 11:00:38
Re:>456 LispでReduceを作成する猛者は居ないか?

459 :名無しさん@3周年:04/09/19 15:34:20
なんか特許アルゴリズム使ってたら
それだけでむりぽだけどね。
特許切れるまで実装出来ないてのもかなりイタいよ。

460 :GO MAXIMA:04/09/19 16:19:37
x^alpha=1, x=e^beta*e^%i*th,alph=a+b*%i,(a,b,beta,thはreal)
とおいて一般性を失わない。2番目の式を最初の式に代入して指数法則を
使えば,
左辺=(e^beta*e^%i*th)^(a+b*%i)
=e^(beta*a)*e^(%i*b*beta)*e^(%i*a*th)*e^(-b*th)
=e^(beta*a-b*th)*e^(%i*(b*beta+a*th))
この式の第一項は大きさのみに関与し第2項は偏角のみに関与するから
e^(beta*a-b*th)=1かつe^(%i*(b*beta+a*th))=e^(2*%pi*n*%i)が成立
nは任意の整数、つまりbeta,thは
beta*a-b*th=0,b*beta+a*th=2*%pi*nという連立方程式の解
a^2+b^2が0でないとき逆行列が存在するから
beta=2*n*b*%pi/(a^2+b^2),
th=2*n*a*%pi/(a^2+b^2),解は x=e^(2*n*b*%pi/(a^2+b^2))*e^(%i*2*n*a*%pi/(a^2+b^2))
a^2+b^2が0のときx=1
ということで あまり商用のものをクサしたくは無いのだがmathematicaは
阿呆ということでファイナルアンサー。

461 :GO MAXIMA:04/09/19 16:20:02
1、2年のために捕捉問題を出しておこう。
(a)Let z approach infinity along aray through the origin (am z= const.).
Find all directions for which lim e^z exists.
(b) Let z move as in the proceding problem(a).
How does z+e^z behave?

(b)の答えは∞だけど(a)の場合の3通りごとに証明が必要です。

462 :GO MAXIMA:04/09/19 16:20:30
数式処理を使っている現場では、数式処理+数学の知識(力)で問題に
attackするのであって、ばかちょんに数式処理にいれてでて来た解を
ありがたく承るのでは決してない。手で計算するアルゴリズムが手に負えなく
なってハジメテ数式処理を使うのであって、そのときもけっして自分の
確認できないアルゴリズムを頭から信じてはならない。ある人が
行列のスペクトル分解を利用したくて、residueを計算する必要のある
アルゴリズムを使っていた、MAXIMAはresidueの計算で正しくない
答えを返すことがしばしばあるので使えないと相談にきたとき
僕はただちにこの場合のresidueの計算は定理に置き換えられるから
そこは頭の中でやってその次の部分からMAXIMAを使ったらいいよと
アドバイスしてうまくいった。いわば、数式処理を数学の力を使って
外挿してゆくのが現場での使い方であろう。>446であげた本に三輪さんの
MACSYMAで新しいstar-triangle relationを探す話が載っているが、
連立方程式の係数が√2を含んでいてMACSYMAでそのままでは解けない
ので(MAXIMAではCAE形式でないと解けない)式全体をPade近似して
x=e^uの有理式にかきなをして処理したとある。


463 :名無しさん@3周年:04/09/19 18:04:50
>>460
まずx=0の場合には複素指数関数では書けないので一般性を失いまくっている。
なのでダウト。
この時点でx≠0という無根拠な仮定を導入したことになる。
さらにnの範囲が明示されてないのでそれはxの明示的な解ではない。
0点だね。
あんたのは解の個数も不明だから明示的にもなってないし、x=0の考察がないから
数学的な正当性がない。
なのでその「解」とやらを問題の同値変形とは見なせず、数式処理で次のステップを行うことが
絶望的だ。所詮浅知恵ではそのくらいしかできないよ。

それに対してMathematicaではx=0,a=0の場合も考慮してnの範囲付きで漏れなく明示的解を記述している。
このような記述を行うことで意味を完全に保ったまま次の数式処理のステップに解を
渡す事が妥当な意味を持つ。つまり高度な数式処理システムでは広い範囲で閉じた
同値変形を行うことが出来るので一般性を失わない処理を延々と続行出来る。
それ故プログラミングの一部としてそれらを使うことが可能になるのでより複雑な
問題にも対処出来る。
対してMAXIMAでは閉じた体系で書ける解があまりにも狭い範囲なので、
その「解」を次のステップに使おうとすると一般性をほとんどの場合で失う。
結果として一般性を失わない処理を延々と続行出来きない。
そのためにプログラミングの一部として意味を保ったまま自動的に解を渡していくことは
絶望的。なので組める規模が大きくなることはない。

そういうわけなので、日本語は正確に使おう。
×「数式処理を使っている現場では、数式処理+数学の知識(力)で問題に
attackするのであって」
○「(貧弱な)数式処理を使っている現場では、(貧弱な)数式処理+数学の知識(力)で問題に
attackする(事を余儀なくされる)のであって」


464 :名無しさん@3周年:04/09/19 18:11:16
閉じた体系で明示的に解の表示を行える範囲が広いということは、
余興でも贅沢でもない。
数学的意味を保ったままプログラミングするための必要条件である。

465 :名無しさん@3周年:04/09/20 03:35:30
>>464
だからあ、そう思うんだったら、こんなMAXIMAスレなんかにカキコしないで、
「Deriveサブセットが載ってる、 Texas Instrument Voyage200」
でも「Mathematica」でも使ってなよ。時間が勿体ないよ。


466 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/21 09:36:09
Re:>460 複素冪の不定性を無視しないでくれよ、GM.

467 :名無しさん@3周年:04/09/21 10:38:43
仮に主値だと言い張ってもMathmeticaよりも数学的洞察力がないってのは
示されちゃってるけどね。

468 :GO MAXIMA:04/09/21 16:22:16
>> 466 467
ええっと xは0でないと仮定した。複素冪の 不定性は考慮してある。
つまりx=e^beta*e^%i*thの代わりに mを整数として
x=e^beta*e^%i*(th+2*m%pi)と置くべきだと言っているんだろう。
そんなことしても
matrix([a,-b],[b,a]). [beta,th]=[0,2*n*%pi]+2*m*%pi[b,-a]
で付け加えた項に逆行列を掛けたものは2*m*%pi[0,-1]で解に影響しない。
だいたい いつも>466は 考えもせずレスしているだろう。

>>463
数式処理システムと数学は重なりはあっても 一致はしない。
MAthematicaとは向かう方向が異なっているのだからそれぞれの道を
行けば良い。closed formについては 数学全体で適用できる程
進んではいない、A=Bのクヌースの序をみよ。それに演算子中心
の立場をとれば、空間は特定しなくとも計算できることを利用して
考えを進めることが結構ある。最近みた大森氏の量子的微分積分の
本もこの立場だと思う。

469 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/21 20:49:54
Re:>468 分かっていないな。複素冪の定義をもう一度読め。

470 :GO MAXIMA :04/09/21 22:23:18
>469
a^2+b^2が0でないとき、かつxが0でないときの>460の解が
不十分な点を教えていただけると有難い。

471 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/21 23:00:01
Re:>470
exp(z)は、よく知られた冪級数で定義されているものとする。
複素数冪は、
a^b=exp(blog(a))で定義される。
ここで、log(a)とは、exp(log(a))=aになるような複素数であり、
log(a)には、2πiの整数倍だけの不定性がある。
よって、blog(a)には2πibの整数倍だけの不定性があり、
bが整数でない限り、exp(blog(a))は多価になる。

472 :GO MAXIMA :04/09/22 00:07:01
>>471
それは a^2+b^2が0でないとき、かつxが0でないときの>460の解が
十分だといっているのと同じですよ。>468で言っているように
x=e^beta*e^(%i*(th+2*m%pi))とlog(x)=beta+%i*th +%i*2m%piは
同値ですから多価性を表現しているのです。対数関数で定義できる
ということは、当然複素指数関数でも定義できるのです。(単なる流儀の違い)
>460の解は 多価性の結果です。
解は x=e^(2*n*b*%pi/(a^2+b^2))*e^(%i*2*n*a*%pi/(a^2+b^2))で
nは任意の整数ですから 多くの場合∞個の解を持ちます。
>463の言うように明示的な表示かどうかは 意見が分れる、公平に言えば
形式解だろうが これを使って継続計算もできるので不自由はない。
>468でも言っているように、それぞれ我が道をいくしかないようだ。

とにかく[469] FeaturesOfTheGod ◆UdoWOLrsDM が1年のおちこぼれ
レベルであることはよく分った。ありがとう。


473 :名無しさん@3周年:04/09/22 03:32:59
>>472
答えが偶然合ってたからといって手順をこれっぽっちも正当化出来ないでしょ。
マークシート世代かね。

474 :名無しさん@3周年:04/09/22 03:48:58
MP3
人間の声は一切使っていません。
http://napo.main.jp/zin/
なぜゆえに、【ドリュホ】なの?

475 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/22 19:21:04
Re:>472
とりあえず式ぐらいちゃんと書いてくれ。[>468]で誤解されても無理はない。
それと、この板では実体参照(&alpha;,&beta;など)が使えるのでうまく使うように。

476 :名無しさん@3周年:04/09/22 21:10:01
x≠0と無根拠な仮定をしてる時点でダメだけどな。

477 :名無しさん@3周年:04/09/26 02:01:11
age

478 :Freeでウハウハ:04/09/29 12:26:39
MAIMAはおとこのおもちゃ
チンコビンビン。マンコヌレヌレ。

479 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/29 13:27:50
Re:>478 え?何だって?

480 :◆8P3ifcS3GM :04/09/29 17:55:18
s

481 :◆F1gx76.c5Y :04/09/29 17:59:54
121354

482 :FeaturesOfTheGod ◆UdoWOLrsDM :04/09/30 09:13:43
Re:>2
? kill;

483 :名無しさん@3周年:04/09/30 23:50:23
>479 480 481
FeaturesOfTheGod ◆UdoWOLrsDM == 1
話題が無いのに 書き込みは やめてください.

2chに「スレ主」というシステムはありません。
もしそのスレッドが「スレ主」のためのものであるというのなら、
削除ガイドラインの削除理由3「固定ハンドルの占有」として、
スレッド自体が削除対象となります。


484 :FeaturesOfTheGod ◆UdoWOLrsDM :04/10/01 09:36:01
Re:>483
FeaturesOfTheGod ◆UdoWOLrsDM == 1
って何だよ。
お前に何が分かるというのか?

485 :名無しさん@3周年:04/10/05 15:54:49
>304
clisp2.32 + maxima5.9.1 では微分が正しく展開されました。
5.9.1では修正されているみたいです。参考までに。
5.9.1にはcmucl用パケージしかないけどclispでも動くようです。


486 :名無しさん@3周年:04/10/28 23:01:55
荒れが収まったらこんどは寂れまくり...

MAXIMAそのものとは関係ないが,
とりあえずRisch積分に関連する文書をいくつか学校でプリントしてみた.
数理の図書館には元論文があったけど電子ジャーナルからプリントした方がきれい.
他にも ACM Digital Library が便利だった.
大手ベンダは資金力で人手をかけてヒューリスティクスを入れて拡張してるんだろうけど
まぁ基本からぼちぼち.

487 :名無しさん@3周年:04/11/10 22:23:12
保守

488 :名無しさん@3周年:04/11/29 16:34:26
Lisp使えるのがいいね
Debian GNU/Linux 上で emacs と maxima-emacs
最高です

489 :名無しさん@3周年:05/01/13 12:26:00
sqrt(2)*sqrt(3)をsqrt(6)に
するには、どうすればいいのでしょうか

490 :max:05/01/14 02:06:23
expand(sqrt(2*3)); です。

491 :名無しさん@3周年:05/01/14 11:14:28
質問のしかたがよくなかったようです。
知りたいのは、単に sqrt(6) を出力させたいのではなくて、
sqrt(2)*sqrt(3)のように出力されてきた結果があった場合、
どうしたら、sqrtの掛け算をさせることができるのか、
ということです。

492 :名無しさん@3周年:05/01/14 12:08:10
rootscontract

493 :名無しさん@3周年:05/01/21 13:07:26
f(x):= x*x;
と定義した関数 f(x) に対して、
その微分を関数 g(x) に設定したいのですが、
g(x):= diff(f(x),x);
とすると、x=0 での微分係数を知りたいときに
g(0);
とするとエラーが発生してしまいます。

494 :名無しさん@3周年:05/01/22 02:14:04
(%i1) f(x):=x*x$
(%i2) g(x):= block([t],subst(x,t,diff(f(t),t)))$
(%i3) g(0)
(%o3) 0
(%i4) f(x):=sin(x)$
(%i5) g(x);
(%o5) COS(x)
(%i7) g(0);
(%o7) 1
MAXIMAの関数は 数学的関数とは異なり プロシージャの扱いとなるので
きをつけてね。


495 :名無しさん@3周年:05/01/22 20:03:49
   ──    / ──┐  ┼─┐      |
  ──┐ /|      |   l    |  l l   |\_
   _ノ    |   _ノ    ノ   _/   _ノ  |

      ト|
      ト|
      ト|
      ト|
    /\ト|___/ヽ
   /''''''   '''''':::::::\
  . |(○),   、(○)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|
.   |   `‐=ニ=‐ ' .:::::::|
   \  `ニニ´  .:::::/
,,.....イ.ヽニニニニニニニニン-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||

496 :GO MAXIMA:05/01/24 02:04:24
>>494
これではちょっと不親切ではないか。
g(x):=diff(f(x),x)$ のような関数の定義は MAXIMAでは
常に lambda式として保存されるのだが その際 定義をそのまま
〔評価しないで)記述されたまま保存するので 483のような勘違い
が発生する。これはLISPでの関数定義を思い起こせば納得できる
だろう。しかし 沢山の素人さんに使ってもらうのにはこれでは
困る。関数定義を 評価してから保存する方法はある、quoteを
2回連続させることで可能となる。
(%i1) f(x):=x*x$
(%i2) g(x):=''(diff(f(x),x))$
(%i3) g(0);
(%o3) 0


497 :名無しさん@3周年:05/01/24 21:23:45
ゴミカス整形プロ野球界の汚物 身障剛志とそのオタは死ね

498 :名無しさん@3周年:05/01/26 00:53:27
taylor()関数で得られたテーラー形式の多項式をevで評価しようとするとエラーします。例えば
(%i1) taylor((1+x)^i,x,0,5),x=a-1;

** error while printing ERROR message **
Illegal taylor variable 〜M
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);
どうやったらさけられるのでしょうか?ratdisrep()やtaytorat()をかましてみても
うまくいきませんでした。

499 :GO MAXIMA:05/01/26 03:20:36
(%i1) taylor((1+x)^i,x,0,5)$
(%i2) subst(x=a-1,%);
または (%i2) %o1,x=a-1;でも動きます。つまりBUGですが
実害はないでしょう。

500 :名無しさん@3周年:05/01/26 23:32:55
やっぱりバグですか、、、。教えていただいたsubst()を使った置換でやります。
そういった意味での実害はないんですが、気持ち悪いのでデバッグもしてみます。
ありがとうございました。

501 :名無しさん@3周年:05/01/28 00:30:34
デバッグした結果、バグではないことが分かりました、、、。
mlispの評価を実装しているmevalをトレースしていて気がつきました。
(%i1) taylor((1+x)^i,x,0,5),x=a-1;
を実行すると、evの定義に従ってまず第2引数以降で環境を作り、その環境の中で
第1引数(taylor())を評価します。このときにtaylor()の引数に現れるxは全てまず
a-1となります。taylor()の第2引数は変数であるべきなのに数式になってしまったので、
今回のエラーが表示されていました。
お騒がせ、すみませんでした。

502 :GO MAXIMA:05/01/28 02:36:13
>>501
いや動作のBUGではなくて、設計のBUGなのよ。
(%i1) taylor((1+x)^i,x,0,5)$
(%i2) %o1,x=a-1;
で動くものが(%i1) taylor((1+x)^i,x,0,5),x=a-1;
でエラーになるのは ","の継続の設計がおかしいのだよ。
もっと言えば,サブシステムのtaylorと 別のサブシステムのevで
折り合いがつかなくなっている。

503 :名無しさん@3周年:05/01/29 07:20:44
ああ、なるほど。私はevもtaylorも仕様を理解出来てみるとどちらもそんなものだろうと
思ったのでした。

504 :名無しさん@3周年:05/01/31 22:34:00
maximaの初心者です。

diff(sum(X[i]^2,i,1,3),X[1]);
のように具体的な値を使わずに、
diff(sum(X[i]^2,i,1,n),j);
から
2*X[j]
を作りたいのですが、
maximaではどうすればよいでしょうか?
もちろんn>=j>=1でnもjも整数です。



505 :名無しさん@3周年:05/01/31 23:05:48
>>504
訂正です。
diff(sum(X[i]^2,i,1,n),X[j]);


506 :クレクレ厨 ◆QeWFJGRDFk :05/02/03 13:59:30
 初心者ですみません
solve(x^2-3=0);
 で計算すると、
x=-SQRT(3)
 みたいな感じで出力されます。
x=-1.732・・・
 と数値的に出力させることはできないのでしょうか?

507 :max:05/02/04 00:13:00
(%i1) float(solve(x^2-3));
(%o1) [x = - 1.732050807568877, x = 1.732050807568877]
あとevとか色んな方法があるみたいですが
私も初心者なので知らない。

508 :BlackLightOfStar ◆ifsBJ/KedU :05/02/06 22:28:00
私は見た。
(C19) SQRT(2)*SQRT(3)=SQRT(6),PRED;
(D19) FALSE
(C24) SQRT(2)*SQRT(3)=SQRT(6),ROOTSCONTRACT,PRED;
(D24) TRUE
果たしてMAXIMAの世界の=とは何だろう?

509 :ぼるじょあ ◆yBEncckFOU :05/02/20 09:17:50
                                         
     ∧_∧  ∧_∧                             
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕                             
  = ◎――――――◎                      山崎渉&ぼるじょあ
                                          

510 :山.崎 渉:05/02/22 19:43:31
...これからも僕を応援して下さいね(^^)。   
  
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
         
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。                         
  =〔~∪ ̄ ̄〕                                            
  = ◎――◎                      山崎渉                       
                                
 __∧_∧_                                                 
 |(  ^^ )| <寝るぽ(^^)      
 |\⌒⌒⌒\                                
 \ |⌒⌒⌒~|         山崎渉             
   ~ ̄ ̄ ̄ ̄                            
                            
   ∧_∧                                       
  (  ^^ )< ぬるぽ(^^)      
                                                       
    (⌒V⌒)                    
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。   
  ⊂|    |つ                                
   (_)(_)                      山崎パン 
                                         
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕                          
  = ◎――――――◎                      山崎渉&ぼるじょあ

511 :名無しさん@3周年:05/03/08 03:16:31

   ∩___∩
   | ノ      ヽ
  /  ●   ● | クマ―
  |    ( _●_)  ミ
 彡、   |∪|  、`\
/ __  ヽノ /´>  )
(___)f^f^f^f^f^f^f^f^f^┐
 |    |~ ~ ~ ~ ~ ~ ~ ~ ~.│
 |    |           |
 |  / | http://michel.gosse.free.fr/documentation/fichiers/maximabook.pdf
 | /  .|           |
 ∪   |__________|
        \_)

512 :BlackLightOfStar ◆ifsBJ/KedU :05/03/08 20:43:00
Re:>511 まだ殆ど読んでないけど、最初の方のmaximaの発音の説明でアクセント記号が無いのは何故?

513 :名無しさん@3周年:05/03/09 22:35:30
KNOPPIX/Math/2005 公開
http://geom.math.metro-u.ac.jp/wiki/index.php?%5B%5BKNOPPIX%2FMath%2F2005%5D%5D

KNOPPIX/Math 特有の収録パッケージ

* 詳しくは KNOPPIX/Math/2005/install を参照してください。
* OpenXM 1.2.3 packaged by Prof. N. Takayama
* R 2.0.1jp packaged by Prof. M. Okada
* Maxima 5.9.1 に更新

新規追加パッケージ

* MathML 対応 WebBrowser Mozilla-Firefox に入れ換え
* 可視化ツール Dynagraph
* 結び目理論ツール KodamaKnot
* Maxima の新GUI Kayali, wxMaxima
* Python で書かれた数論ツール NZMATH
* LaTeX2HTML, jBibTeX, ps2img
* Ruby の拡張ライブラリ polynomial, algebra, rational
* X11 グラフィックスライブラリ EGGX/ProCALL
* Maxima 日本語マニュアル by ponpoko さん
* KSEG 日本語ヘルプ by ponpoko さん
* 「私家版Maxima入門」中川義行著
* 「LaTeX2eによる論文作成の手引」松田七美男著、濱田龍義編集


514 :名無しさん@Linuxゾンビ:2005/03/22(火) 18:48:08
ザウルスでMaximaをお使いの方に教えていただけると
ありがたいのですが、xwindowなどの扱い方やコンソール、
ターミナルの使い方が分からないとインストールは
難しいでしょうか


515 :名無しさん@3周年:2005/03/31(木) 19:19:55
Mathematicaでいう、
f[a_ * b_] := f[a] + f[b]
みたいなルールはどう記述するの?

516 :名無しさん@3周年:2005/04/04(月) 00:43:28
KNOPPIX/MATHのMAXIMAはベースのLISPはなに?
そろそろMAXIMAの日本語のマニュアル本とか出ないかなぁ。

517 :BlackLightOfStar ◆ifsBJ/KedU :2005/04/04(月) 15:18:13
Re:>516
ヘルプの日本語訳なら既にあるんだけどね。
http://www.google.co.jp/search?hl=ja&q=maxima+%E3%83%98%E3%83%AB%E3%83%97&lr=

518 :emax:2005/04/07(木) 00:52:54
Re:>516
最新は5.9.1なので
Maxima 5.9.1 http://maxima.sourceforge.net
Using Lisp Kyoto Common Lisp GCL 2.6.5 (aka GCL)
と思いますが・・・。違ってらごめん!
ポンポコさんという方のサイトに日本語のマニュアルがあって
私はそれを37章を37にわけメモ帳に保存して使うによくわからない
コマンドを37章で見てその章を見てます。


519 :GO MAXIMA:2005/04/09(土) 15:39:48
>>329 最近 mAXIMAも6。0目指していろいろ主要部分で変化の
最中です。そのなかで gcdのmainのアルゴリズムがspmodを使うように
なるようです。そこで これを使うとalgsysのbugの一部がとれて
>329で指摘されていたH[4,4]のjordan標準型が数式で求まります。
(%i1) load("diag")$
(%i2) H[I,J]:=1/(I+J-1)$
(%i3) gcd:'spmod$ ;これが肝心
(%i4) display2d:false$
(%i5) jordan(GENMATRIX(H,4,4));
(%o5) [[-SQRT(-((357210000*(SQRT(4621318097)*%I/(750141000*SQRT(3))
+3805076179/6751269000000)
^(2/3)
-375521400*(SQRT。。。。。。。以下略
こうやってゆっくりですが着実に改良されているようです。

520 :GO MAXIMA:2005/04/09(土) 16:41:48
>515
wolframが 物理から足洗うころしきりにmacsymaの
ruleベースの記述が 弱いことをこぼしていたのを
思い出した。そうしてこの部分を全面的に書き換える必要があるとも。
また2003ころmailinglistでsantafeの数学屋が次のように述べている。
"mathematicaやyacasでは GCD(m,n)はm,nが何かにbindされていなければ
それが何処に現れてもevalすることがない。しかしmaximaではこれは1となってしまう。
しかもこれが唯一のmaximaの評価スキームのまずさの例というのではない。
この種のとげはmaximaを使うときに非常にしばしば遭遇するし、
そのために いろんな種類の境界条件(nounとverbとかruleと関数実体の境界)が
ゴチゃになって計算が混乱するようだ。"
かれはyacasでhomological algebraをルールbaseで実装し
同じことがmaximaでできないのはおかしいと主張していた。
従って 今のところはYacasを使ってrule basedなプログラミングを勧めます。
この原因は、maximaの設計が行われた60年代のなかばには、50年代
数学の一部で発達していた圏と関手のアイデアの大事さは伝わっていなかった。
70年代の後半になっても rule baseはいかがわしい推論システムに
応用され悲惨な状態にあった。(日本は十年以上たって同じことを。。)
rule baseは 数学のような単純な世界でのみ有効なのだ、したがって
カテゴリー論を使った数学の表現を数式処理システムでおこなうのに
これが最適な方法であると気づくのに長い時間が必要であったのだ。


521 :名無しさん@3周年:2005/04/14(木) 23:46:23
>516
フリードキュメントならば、
KNOPPIX/Math に含まれている中川先生の私家版「Maxima 入門」や
足立先生の「行列計算における数式処理ソフト maxima の利用について」
http://www.yo.rim.or.jp/~kenrou/index-j.html
など、いろいろ出てきました。


522 :名無しさん@3周年:2005/05/22(日) 22:54:32
a

523 :名無しさん@3周年:2005/06/06(月) 22:13:13
4月(2005)以前のことですが、Maximaに関する日本人著者による書籍
(雑誌ではない)を東京都内のどこか(忘れた)の書店で見かけ、
Maximaのことを知りました。その後Web上で検索してみましたが、
出版されたような情報が一切ありません。
講談社のブルーバックスに執筆中という情報はあります(竹内薫氏)。
著作権侵害のため回収という可能性もありますが、
ご存知の方いらっしゃいませんか?


524 :名無しさん@3周年:2005/06/11(土) 02:18:28
523>> 訂正
執筆中ではなく執筆予定

525 :名無しさん@3周年:2005/06/12(日) 14:47:49
integrate(log(x)/(x^2+1)^2,x,0,inf);
が、
(3iπ^2 - 4π)/32
になるんですが、これは正しいのでしょうか。
実関数を定積分して複素数になるのが、不思議です。

526 :名無しさん@3周年:2005/06/13(月) 00:00:16
牧島?

527 :GO MAXIMA:2005/06/13(月) 00:34:12
>>525
正しいわけ無いだろう。log(z)の適当な枝をとってεからRまで実軸、
半径Rで-Rまで 上半面、-Rから-εまで実軸、半径εでεまで上半面
の曲線で囲まれた領域で極は iだけにできる。(ε->0 R->∞)
(%i8) residue(log(x)/(x^2+1)^2,x,%i);
(%o8) -%I*(LOG(%I)-1)/4
(%i9) rectform(%);
(%o9) %PI/8+%I/4
従って この領域での積分は
(%i10) rectform(2*%pi*%i*%o9);
(%o10) %I*%PI^2/4-%PI/2
2つの半円状での積分はそれぞれ(ε->0 R->∞)で0に近づく。〔絶対値を評価せよ)
よって%o10 の積分はintegrate(log(x)/(x^2+1)^2,x,0,inf)+integrate((log(-x)+%i*%pi)/(x^2+1)^2,x,-inf,0);
で 変数変換して2*integrate(log(x)/(x^2+1)^2,x,0,inf)++%i*%pi*integrate(1/(x^2+1)^2,x,0,inf)
これが %I*%PI^2/4-%PI/2
後者は(%i12) integrate(1/(x^2+1)^2,x,0,inf);
(%o12) %PI/4 よってintegrate(log(x)/(x^2+1)^2,x,0,inf);は-%PI/4
どうしてMAXIMAが間違えたのか考えるのは面白いが、数学の力がひつようだろうね。

528 :名無しさん@3周年:2005/06/27(月) 06:09:18
Kayali や wxMaxima や Symaxx/2 の、GUI 自身の安定度は xmaxima と比較して
どうなんでしょうか?

529 :名無しさん@3周年:2005/06/28(火) 11:02:04
>528
Kayali も wxMaxima も KNOPPIX/Math/2005 で使っている分には
安定して使えています。

ただ、Kayali の場合は機能を限定していること、
また、メニューなどが未実装です。
たとえば File -> Exit を選択しても終了しません。
Help -> About さえありません。あくまでα版と思っていいでしょう。

でも、Kayali の方が汎用性を考えて作っているような気がします。
Maxima だけではなく Asir など他のシステムと組み合わせることもできそうです。

あいにく Symaxx/2 については試したことありません。


530 :528:2005/06/28(火) 23:54:05
恥を忍んで質問するのですけど、

a * x + b = c * x + d(x は任意値→当然 a = c, b = d が解)の様な式
(実際には x のより高次な項ありで、係数も式になります)を Maxima に
解かせ様として、POLYNOME2ELE() で係数だけ取り出して…と考えたのですが、
Win 上では POLYNOME2ELE() は何故か動いてくれません。
何か重大な誤りを犯してるのでしょうか?

>>529
Win 上で wxMaxima を使ってみました。少しいじった範囲では落ちてないです。

531 :GO MAXIMA:2005/06/29(水) 23:36:49
>>530
詳しくは分らないですがPOLYNOME2ELEを動かすのは
自動ではLいぬx上でも失敗するようです。ただ動かすのは
簡単で
load("util.lisp")$
load("chbase.lisp")$
load("operations.lisp")$
load("pui.lisp")$
POLYNOME2ELE(x^7-14*x^5 + 56*x^3 - 56*x + 22,x);
[7, 0, - 14, 0, 56, 0, - 56, - 22]
ele2polynome(%,x);
で元に戻ります。動かないのは多分compileのどこかで失敗
しているのでしょう、lispのままならかなり自由な改変を
許すシステムです、MAXIMAは。

532 :528:2005/06/30(木) 01:59:06
どうもです。

>>529
load("operations.lisp")$
で失敗するみたいです。>Win 版 5.9.1

…何か適当な Common Lisp の入門書から入った方がいいのでしょうか?(あとフランス語も)

533 :528:2005/06/30(木) 02:11:20
もう一つ、"HASHED" な配列の、特定の添字(に対応する要素)が使われてるか否かを
知る方法はないのでしょうか?
ARRAYINFO() の結果をいじればなんとかなりそうですが…私自身のマニュアルの
探し方が足りない様な気がしてなりません。

534 :GO MAXIMA:2005/06/30(木) 10:30:38
>>528 すみません、ちょっとどじったようです。
load("util.lisp")$
load("chbase.lisp")$
この間に(%i3) load("sym.mac")$を入れてください。
RESOLVANTEとGENERALEが定義されてerrorになりますがpolynome2ele
の動作には関係ないので気にせずに続けて
load("operations.lisp")$ これでerrorはでないはずです。
load("pui.lisp")$
これで動きます。
(%i6) POLYNOME2ELE(x^7-14*x^5 + 56*x^3 - 56*x + 22,x);
(%o6) [7, 0, - 14, 0, 56, 0, - 56, - 22]


535 :528:2005/06/30(木) 12:31:34
>>534
動きました! 有難う御座います。

536 :名無しさん@3周年:2005/07/06(水) 06:47:01
knoppix-mash2005でmaxima使ってるんですが
plot3dコマンドで3Dグラフを描くとデフォルトでgnuplotが
立ちあがってしまいます。今はいちいち[PLOT_FORMAT,openmash]として
使っていますが面倒なのでセッション中だけopenmashを常に有効にするには
どうすれば良いのでしょうか?

537 :名無しさん@3周年:2005/07/07(木) 14:24:12
>536
SET_PLOT_OPTION([PLOT_FORMAT,OPENMATH]);
を実行すれば良いのでは?

http://www.bekkoame.ne.jp/~ponpoko/Math/maxima/maximaGraph.html

で解説されています。


538 :名無しさん@3周年:2005/07/08(金) 05:39:33
>>537
上手くいきました。
どうも有り難う御座いました。

539 :名無しさん@Vim%Chalice:2005/07/17(日) 23:43:41
age

540 :名無しさん@3周年:2005/07/21(木) 12:39:41
xmaxima 5.9.1で
plot2d([parametric,cos(t),sin(t),[t,-%pi*2,%pi*2]]);
と入力しますと円を描いてくれません。
5.9.0では一応円らしきものを描いてくれたのですが。
円を描く方法がございましたら教えてください。


541 :541:2005/07/21(木) 12:57:55
plot2d([parametric,cos(t),sin(t),[t,-%pi*2,%pi*2],[nticks,100]]);
にしましたら円らしきものを描いてくれました。
お騒がせしました。


542 :名無しさん@3周年:2005/07/26(火) 16:13:38
simplify(%)みたいなのはないですか?
分母を揃えたいのですが。

543 :名無しさん@3周年:2005/07/28(木) 08:23:01
>>540-541
2周するの?>cos(t),sin(t),[t,-%pi*2,%pi*2]

544 :GiantLeaves ◆6fN.Sojv5w :2005/08/04(木) 10:15:48
talk:>>542
参考:
(C1) ? lcm;

0: LCM :(maxima.info)Definitions for Number Theory.

Info from file C:/Program Files/Maxima-5.9.0/info/maxima.info:
- Function: LCM (exp1,exp2,...)
returns the Least Common Multiple of its arguments. Do
LOAD(FUNCTS); to access this function.
(D1) FALSE

545 :名無しさん@3周年:2005/08/06(土) 01:26:03
ちょっと別分野 (電子工学の初歩の直流回路) に関連のある話です。とりあえず、OP アンプ
を使った減算器の式を作って、結果に不満はないのですが:

f1 : (Vout - V1)*(R1/(R1 + k*R1)) + V1 = V2*(k*R3/(R3 + k*R3)) $
R1 : 1 $
R3 : 1 $
fortran(solve(f1, Vout)) $
fortran(factor(solve(f1, Vout))) $

しかしホント実のところは:
fa : (Vout - V1)*(R1/(R1 + k*R1)) + V1
fb : V2*(k*R3/(R3 + k*R3))
fa = fb

みたいな書き方をして Vout について solve() したいのです。 マクロとかを使う必要が
あるのでしょうか。どのようにしたらいいのか、ヒントをお教えいただければ幸いです。
初歩的な質問でごめんなさい。

546 :GiantLeaves ◆6fN.Sojv5w :2005/08/06(土) 13:53:19
talk:>>545
普通に
(fa : (Vout - V1)*(R1/(R1 + k*R1)) + V1,fb : V2*(k*R3/(R3 + k*R3)),SOLVE(fa = fb,Vout));
とすればいいのではないか?

547 :名無しさん@3周年:2005/08/17(水) 00:38:32
函数の多項式近似を得たいのですが、MAXIMAを使って実現できますでしょうか?
いろんな函数のminimax approximationを求めて何次までで打ち切ったら誤差が
これくらい、とか調べたいのです。

548 :名無しさん@3周年:2005/08/17(水) 00:41:29
ちなみに手元の論文にはMapleのプログラムしか書いてなくて
幾らくらいするかも知らないし触ったこともないので無料の処理系でどうしたら
同じことができるのかさっぱりわからないのです。

549 :GO MAXIMA:2005/08/17(水) 04:06:00
>>547
きついようですが 解らなければ できません。計算機
の前を離れて 数学を勉強して下さい。
計算機系の駄作ばかりの他人の論文を読むより、100年前の数学の論文か
50年前の数学の専門書の方が実力をつけるのに役立つと思うね。
stone-wierstrusTHとか Bernstein関数による具体化の意味を考えよう。
Bernstein関数による一様近似は、実用上は有効とはいえないが
理論上は極めて重要で、ここを自力で考え抜かねばものにはなりません。
ヒントをあげとくね。
(%i1) comb(x,y):=genfact(x,y,1)/genfact(y,y,1)$
(%i2) b_delta(n,i,x):=n*comb(n,i)*x^i*(1-x)^(n-i)$
これはn->∞でδ関数に近付くだろう。
(%i3) plot2d([b_delta(10,5,x),b_delta(50,25,x),b_delta(120,60,x)],[x,0,1]);
これをみると中央付近では甘いのがみてとれるだろう。それは次のBernstein近似
をみたらわかる。
(%i4) bernst_p(n,x,f):=sum(f(i/n)*b_delta(n,i,x)/n,i,0,n);
(%i5) plot2d([sin(15*x),bernst_p(21,x,lambda([t],sin(15*t)))],[x,0,1]);
本物は%i4でn->∞にした多項式が「0、1」でf(x)に一様に収束する。
この偽物有限δ関数から熱核や弱大数の法則が見えてきませんか?
そうすれば3流の 計算屋の論文に頼らなくても、第一線はすぐです。



550 :547:2005/08/17(水) 23:33:11
>>549
返信ありがとうございます。
数学は嫌いではないのですが、いかんせん端折られている部分が多くて岩波の講座
シリーズ程度でも読み進めるのが大変です。美しい定理の裏にはそこに至るまでの
苦労もあるものと思いますがそれを努めて見せないようにしているのが数学だと
感じます。
そんなわけで定理の証明とかの式変形を自分で納得できるよう追いかけるだけで疲れて
しまう状態から脱却するのにこのツールが使えたらいいなぁと思いつつ、今日も目先の
問題に追われる一日でした。ツールも含めて色々な情報が入手しやすい状況になって
来て環境的には恵まれているはずなので頑張って精進します。

551 :545:2005/09/10(土) 15:18:55
>>546
超カメレス、ごめんなさい。
おかげさまで、ごく初歩的に MAXIMA が使えるようになりました。
ttp://www.d1.dion.ne.jp/%7Eriver_r/bell/devmodel/devmodel.html
こちら↑の 「数式処理プログラム MAXIMA で解く方法」 あたりです。
数値計算寄りの話ばかりで、ゴメンなさいネ。

それはともかく、どうもありがとうございました。

552 :GO MAXIMA:2005/09/21(水) 02:07:11
solveは多項式の連立を解くためのものですから
sqrtを含んでいてはいけません。以下のようにすれば
一度に求まります。

(%i1) f1:fs^2=1/(4*%pi^2*Lm*Cm)$
(%i2) f2:fp^2=1/(4*%pi^2*Lm*Cm*Cs/(Cm+Cs))$
(%i3) solve([f1,f2],[Lm,Cm]);
(%o3) [[Lm = -1/(4*%PI^2*Cs*fs^2-4*%PI^2*Cs*fp^2),
Cm = -(Cs*fs^2-Cs*fp^2)/fs^2


553 :551, 545:2005/09/22(木) 08:54:34
>552
たびたび、ありがとうございます。
そういう [ ] を使った書き方ができるとは知りませんでした。ありがとうございます。
(説明書を見直します。 アノ説明書が・・ っていうのは言いません。)

554 :GiantLeaves ◆6fN.Sojv5w :2005/09/22(木) 09:56:28
talk:>>553 [] についてはlist あたりを読むといいのではないか?リストはいろいろ使いでがあるはずだ。

555 :名無しさん@5周年:2005/09/28(水) 02:20:06
工学分野で、しかも数値計算寄りの話です。たまにしか数式処理機能を使いません。
まあ、勝手な話をしているものだと、お聞き流し下さい。

http://www.d1.dion.ne.jp/~river_r/bell/devmodel/devmodel.html#A2
で紹介されている、sac1.txt sac2.txt sac3.txt 、
少し先にある cjo_vj_m1.txt cjo_vj_m1.txt cjo_vj_m3.txt
これらは MAXIMA の *.mc と同等に使えます。

おそらく 「おそろしくバカなことをやっているヤツだな〜」 とお思いに
なるだろうな、と感じます。
数学を勉強せいよ、と言われるのはわかっていますが、
1つ2つでも、何かヒントをお教えいただければ幸いです。

556 :555:2005/09/28(水) 02:43:41
間違いがありました。ごめんなさい。
× 少し先にある cjo_vj_m1.txt cjo_vj_m1.txt cjo_vj_m3.txt
   ↓
○ 少し先にある cjo_vj_m.txt cjo_vj_m2.txt cjo_vj_m3.txt

557 :名無しさん@5周年:2005/10/09(日) 16:04:58
私家版MacsymaなんとかだったかあるいはMaximaなんとかという本は
噂を聞いたけど、どこの出版社から出ていますか?

558 :GiantLeaves ◆6fN.Sojv5w :2005/10/09(日) 21:19:47
talk:>>557 よく分からないけど、Maxima Helpでも開いてみたら?

559 :名無しさん@5周年:2005/10/11(火) 10:06:32
>557
「私家版Maxima入門」は
KNOPPIX/Math/2005 に収録されています。



560 :名無しさん@5周年:2005/10/17(月) 01:14:01
私家版をKNOPPIXなしで、ダイレクトにFTPできるところはないの?

561 :名無しさん@5周年:2005/10/17(月) 10:07:51
「私家版Maxima入門」の中川義行氏による「Maxima入門ノート」
が正式にGFDLで公開されました。
KNOPPIX/Math サイトの Maxima のページに添付しておきます。

562 :名無しさん@5周年:2005/10/18(火) 20:03:43
http://plaza.rakuten.co.jp/takamoriyo/
このサイトのランキングを押そう!!
そしてランキング一位にさせよう!!!!

563 :名無しさん@5周年:2005/11/08(火) 09:32:16
bigfloat数を係数として float 数と同様に使えることを期待しますが、
実際にはmaxima はいろんな部分でbigfloatはfloatとは同等には使えません。
keepfloat: true; にして float 係数の式の場合に簡約などでfloatの
有理数への近似は抑制できる場合にも、係数がbigfloat数の場合には
keepfloat:true;にしても有理数近似に置き換えて計算してしまいます。
しかも、その近似はどうやら値が10桁程度一致する近似有理数に
なってしまうのです。だからfpprec の値を大きくしても近似有理数化
されるところで同じように精度が10桁程度に落ちて計算されてしまうので
見かけ上結果が収束したかのように見えますが、それは嘘だったりします。
本来、float 数がbigfloat数の(場所を節約した)特別な場合として
処理されねばbigfloatを使う場合のコードを専用に設けるしかなくなる
のに、なんだかそこらへんが取ってつけたような不整合をもっていますね。

564 :名無しさん@5周年:2005/11/08(火) 22:21:45
maximaで計算したデータをgnuplotで表示できますが、
テキストファイルで保存はどうやればいいのですか?

plot2d([x+1],[x,-1,1]);
というグラフなら

x y
-1.00 0.00
-0.50 0.50
0.00 1.00
0.50 1.50
1.00 2.00

みたいな感じです、データの再利用をしたいのです。

565 :GiantLeaves ◆6fN.Sojv5w :2005/11/08(火) 22:57:58
talk:>>564
FOR i FROM 0 THRU 4 DO (x:i*(1-(-1))/4-1.0, PRINT(x, x+1));
して出力をコピー。

566 :564:2005/11/08(火) 23:36:39
>>565
ありがとうございます、参考に
for i from 0 thru 5 do (x:float(i/5),y:float(sin(x)),print(x,y));
としてみました。これは正常に動作しましたが、

sin(x)の所を
%o5   #4行目で方程式を解かせ、五行目の解の式を使うここでは%o5=sin(x)
としたところ
sin(x)がズラーって出てくるだけでした。。
出力式に値をどんどん代入させるにはどうしたらよいですか?
式が長いので手書でfloat()中にいれるのは難しいです。

567 :GiantLeaves ◆6fN.Sojv5w :2005/11/09(水) 20:47:34
talk:>>566 よく分からないけれど、''を使ってみたらどうか?(アポストロフィを二つ。prefix operator(つまり式の手前に書く。''sin(x)のように。).)

568 :GO MAXIMA:2005/11/09(水) 23:58:06
>>563
先月にFatemanのコードをとりいれたBartonのnummodがでています。
これはつぎのようにbigfloatをその精度内で正確に有理化します。
(%i5) fpprec : 20$
(%i6) rationalize(0.1b0);
(%o6) 236118324143482260685/2361183241434822606848
(%i7) rationalize(sin(0.1 * x + 5.6));
(%o7) sin((3602879701896397*x)/36028797018963968+3152519739159347/56294995342
1312)
これはwww.unk.edu/facstaff/profiles/willisb/ からnummodをとってきてください。
まあ明示的にrationalizeしないといけないのですが不正確なのよりよほどよいでしょう。



569 :GO MAXIMA:2005/11/10(木) 00:48:51
fpprec:20として
(%i10) rationalize(5.6b0));
(%o10) 206603533625546978099/36893488147419103232
(%i11) fpprec:30$ にしてこれをbfloatにすると
(%i13) bfloat(206603533625546978099/36893488147419103232);
(%o13) 5.59999999999999999999457898914B0
精度20桁を保っているのがわかります。

570 :名無しさん@5周年:2005/11/13(日) 17:11:13
bfloat を使って、円周率の桁数をうんと大きく計算したいのですが、
LISPの内部で記憶の割り当て制限を越えてしまって破綻します。
そこでGCL-MAXIMAで、bfloat 用に大量の記憶ページを割り当てたい
のですが、manual にあるとされているALLOCATEは動かないみたいだし、
どうやらGCLをコンパイルするところからはじめないとだめのようです。
でも、どうすればよいのか分かりません。ステップバイステップで
どうやってそのようなBFLOATに大量のページを割けるMAXIMAを作れる
のかを教えてください。
  OPTERON上のrpmパッケージは64ビット対応コードらしいのですが、
これもやはり大して記憶ページが取れないのです。IA32用と大差ないみたい。

571 :名無しさん@5周年:2005/11/14(月) 16:28:36
スレ違いかもしれませんが一応報告しときます
CygwinでMaxima+Texmacsが使えるようになったみたいですね
昨日インストールしたら、あっさり動きました
かな〜り遅いですが。

572 :名無しさん@5周年:2005/11/27(日) 11:59:51
wxMaxima 使うと float() の表示がなんかヘンで、例えば、xmaxima や maxima.bat なら
 (%i1) float(2.3);
 (%o1) 2.3
となるところが、wxMaxima 上では
 (%i1) float(2.3);
 (%o1) 2.2999999999999998
みたいになります(Win: maxima-5.9.2 + wxMaxima-0.6.4 と knoppix-math の wxMaxima)。

見やすいから wxMaxima 好きなんだけどなぁ。

573 :名無しさん@5周年:2005/12/18(日) 09:44:04
2003年11月にmaximaを知り、Windows98SE&xmaxima5.9.0の組み合わせで使っていました。
当初は、使い方が判らず、webページ検索で見つけたmaxima のページにあった、
solve()などを使うだけでした。

その頃から、ぽんぽこさんの日本語訳のマニュアルを見ていたのですが、
無知なもので、最初のリストの説明でつまずいていました。

それが、solve()などで使われる、[] の説明である事に気付いてからは、
マニュアルそのものは、リファレンスに過ぎない事を理解しました。
もともとの英語?のマニュアルがそうなっているに過ぎない様で・・・。

その後?、この板を知り
>>39でFLOAT2BF の使い方を知り、他にも、いろいろ学ばせて頂きました。
おかげさまで、2ヵ月後には以下のようなバッチファイルが作れました。
(誰かの書いた情報は、もとにした。が、誰にも質問はしていない。)

display2d:false;
float2bf:true;
fpprec:8;
kill(ALL);
eq1:V1/(Z3+Z4)+(V1-Vout)/Z5=(Vin-V1)/(Z1+Z2);
eq2:(Vin-Vout)/Z6+(V1-Vout)/Z5=Vout/Z7;
eq3:solve(eq1,V1);
eq4:solve(eq2,Vout);
eq5:solve(RATSUBST(last(eq3[1]),V1,eq4[1]),Vout);
eq5[1]/Vin$
ratsimp(%);
%,[Z2=R2/(1+%i*W*_C1*R2)]$
%,[Z3=R3/(1+%i*W*_C1*R3*10)]$
%,[Z6=R6-%i/(W*_C1/10)]$


574 :名無しさん@5周年:2005/12/18(日) 09:45:01
%,[Z7=R7-%i/(W*_C1)]$
%,[W=2*%pi*10^fn]$
%,[Z1=R1,Z5=R1,Z4=R1/10]$
%,[R1=10000,_C1=4.7*10^-8]$
eq6:ratsimp(%)$ /*VR1とVR2を個別に可変する式*/
eq6,[R6=R2,R7=R3]$
eq7:ratsimp(%)$ /*VR1とVR2を同量で可変する式*/
for i:0 thru 10 do (
temp:ev(eq7,[R2=100000-R3]),
/*temp:ev(temp,[R3=bfloat(10^(i/2))]),
temp:ev(temp,[R3=100000/bfloat((10-i)^2+1)]),
temp:ev(temp,[R3=500000/bfloat((10-i)^3+5)]),*/
temp:ev(temp,[R3=1000000/bfloat((10-i)^3+10)]),
temp:ratsimp(temp),
temp:abs(temp),
temp:ratsimp(temp),
mag[i+1]:bfloat(last(temp)),
db[i+1]:20*log(last(temp))/log(10)
)$
mag[1];mag[2];mag[3];mag[4];mag[5];
mag[6];mag[7];mag[8];mag[9];mag[10];mag[11];
plot2d(
[
db[1],db[2],db[3],db[4],db[5],
db[6],db[7],db[8],db[9],db[10],db[11]
],[fn,0,5]
);/*
*/

内容は、CR型のトーンコントロール回路のシミュレーションです。


575 :名無しさん@5周年:2005/12/18(日) 09:45:45
細かい説明なんですが、作ってから、2年近く、maxima を使ってなくて、
シミュレーションした回路の詳細とか、maxima の細かな使い方とか
忘れてしまったので、やめます。

ただ、結論からいくと、比較的簡単な回路でも数式処理と数値処理に、
案外時間がかかるので、spice の様な回路シミュレーターのかわりに
使えるほどではないと思います。

って、考えてみれば、目的が違う?のですから、当たり前ですね。
ただ、あえていえば?、回路シミュレーターでは、数式は解けないので、
シミュレーターで回路を考えるとき、目的の信号変換は、
どんな伝達関数にすればいいのか、数式を調べるのに有効かと・・・。
(Excelのかわりとしても・・・?)

って、これ以上、解った風な事を書くと無知が露出しそうだ・・・。
それに、この板って、高校数学より上のレベルの数学?を当たり前にした、
知識満載で、未だに解らない事だらけだし・・・。

って、リファレンスを見るとMaxima 自身がそうなってる!?

ということで、Maxima をかじった位の知識という、
自己紹介?(不要?・・・)兼、報告でした。

それに、これからが本題でWindows での動作についての情報を(勝手に?)UPします。
最初に書いた通り、当初、Windows 98SE&xmaxima5.9.0の組み合わせで使っていました。
で、ちょっとうろ覚えなんですけど、確か、バッチ(.dem)ファイルを
デスクトップに置いて、xmaxima からファイルを読ませていたはずで、
Windows Meでも読めていたと思うのです。

それが、>>349 の如くWindows Xp では、読めないのです。


576 :名無しさん@5周年:2005/12/18(日) 09:46:55
まー、良くある事と思いバージョンアップしてみると、
5.9.1では、解消せず、5.9.2で解決していました。

ところが、5.9.2は、gnuplotが、こけてるじゃないですか・・・。
Maxima 普及委員会のページでは、修正されたとありますが、
どうやら、Windows 版では、修正されてないのか???

基本的にWindows Only だし、Linux は、さっぱりだし、
Maxima の仕様が変わったとしても、やっぱりさっぱり。
Windows 上でのgcc のコンパイルですらさっぱり分からん。gclなんて。
せめて、VC なら・・・でもソースコードの嵐の壁が・・・?

で、gnuplot が OK な 5.9.1 で、デスクトップから読めるようにはならないかと
>>350 の方法も試してみたのですが、だめでした。ここまでで、うろ覚えながら
98SE やMe で読めてた事を忘れていたのですが、読めていたという事は、
Xp のOS互換機能?で読めるようになるのではないかの推測のもと、・・・
5.9.0 と 5.9.1 で読めるようになりました。

方法は、デスクトップやスタートメニュー内のxmaxima のアイコンを右クリックして、
[プロパティ]をクリック、表示されたダイアログの[互換性] のタブをクリック。
[互換モードでこのプログラムを実行する:]をクリックしてチェックを入れる。
[OK]をクリック。

[互換モードでこのプログラムを実行する:] の下に、OS 選択リストボックスが
ありますが、Windows 95で簡単な確認をしました。

ただ、5.9.0 や 5.9.1 や 5.9.2 でも同じなのですが、Xp 上でのxmaxima の
動作は、安定性に問題があり、まず、起動直後からquit();を受け付けません。

(なんだ、結局だめじゃん。まっ、一応報告ということで・・・。)


577 :名無しさん@5周年:2005/12/18(日) 09:47:34
(って、InstCD がSP2適用Xpだからとか?うちのパソコンだけだったらどうしよう・・・。)

それはそれとして、取りあえずマウス操作で終了し、その後、xmaxima を再起動して
バッチファイルを読みます。が、2度ほど読ませる途中でxmaxima が勝手に終了
仕出すと、プロセスだけ残ってしまうので、Windows のログオフで逃げて、
再度ログオンするという形になります。

ですから、バッチファイルを1度読ませたら、その都度、xmaxima を終了して
やらないとログオフしない限り、コンピュータのパフォーマンスの低下を
招きかねません。

・・・方針転換して、コマンドラインのmaxima は、quit();を受け付けるようなので、
バッチファイルの最後にquit();を入れて(Windowsでは不要?)、コマンドラインから、
(システムドライブがCドライブでmaxima のVersion 5.9.1でdefaultのinstall先の場合)
"C:\Program Files\Maxima-5.9.1\bin\maxima.bat" < tonecont.dem
とするようですね。
(馬鹿みたいだが、書いてる途中でこの方法に気づいた。>>303 に同じのあったな・・・。)

シェルが起動できるマクロ付きエディタとMaxima-5.9.1 となら、確かにWindows でも、
Maxima を快適に使えそうです。

たとえば、JmEditor 2.0.25 だと、以下のマクロを
Editor.Save();
Editor.ReLoad(0);
Window.ExecCmdEx("\"C:\\Program Files\\Maxima-5.9.1\\bin\\maxima.bat\" < \""+Editor.FileName+"\"");

maxima.dms の名前で保存して、メニューの[ツール][環境設定2(2)...] から開いた
ダイアログの[マクロ設定]タブをクリック、[タイトル]に、maxima [ファイル名]は、
入力箇所の右端の参照ボタンで、マクロを保存したファイルを指定して、


578 :名無しさん@5周年:2005/12/18(日) 09:48:22
[編集メニューに登録する]にチェックを入れて、[設定]をクリック。

メニューの[ツール][環境設定1(1)...] で、[基本設定3] タブをクリック、
[出力結果] の左下の[タブ文字数] が8になってることを確認、[設定]をクリック。
(コントロールバーは表示させてた方がいいかな、[基本設定1] で)

あとは、バッチファイルを開いた状態で、[編集][編集マクロ(M)][maxima]
をクリック。

このエディタのメインウインドウには、タブが付いていて、複数の文書を
タブの操作で切り替えます。バッチファイルに切り替えた状態にして
ないと、上の方法で maxima が目的の動作をしないです。

しかし、JmEditor ダウンロード速度が遅い?でも、ダウンロードできなくはない。

K2Editor では、以下のマクロを
// maxima 実行

SaveFile
ProgramExec("""C:\Program Files\Maxima-5.9.1\bin\maxima.bat"""," < ""%OpenFileName%"" > Output.txt")

maxima.mac の名前で k2Editor.exe のあるフォルダ下のMacroフォルダに保存して、
、バッチファイルを開いた状態で、メニューの[その他(O)][外部マクロ実行(V)...]
をクリック、maxima.mac を選択した状態で、[OK]をクリック。

>>325 にもありますが、5.9.0 のコマンドラインでは、確かにplot2D が
こけていますが、5.9.1 では、問題ないようです。5.9.2 は、xmaxima と同じです。

他に、もっと良いフリーのエディタがあるかもしれないが・・・疲れた。



579 :名無しさん@5周年:2005/12/18(日) 10:20:52
あ、あとマクロは半角でよろしく。

580 :名無しさん@5周年:2005/12/19(月) 08:39:45
しまった、Windowsでもquit();なきゃだめだ。

581 :名無しさん@5周年:2005/12/19(月) 12:42:19
>>580 やっぱ、Windows は、quit(); なくても問題なかった。
他で間違えていた。
maxima の使い方すっかり忘れてる。


582 :名無しさん@5周年:2005/12/20(火) 01:09:34
// maxima 実行

SaveFile
ProgramExec("""C:\Program Files\Maxima-5.9.1\bin\maxima.bat""",,1,2,4)


583 :名無しさん@5周年:2005/12/20(火) 08:05:06
import JmEdit2;
Window.ExecMenu(JmEdit2.MENU_FILE,JmEdit2.ITEM_FILE_SAVE);
Window.ExecCmdEx("\"C:\\Program Files\\Maxima-5.9.1\\bin\\maxima.bat\" < \""+Editor.FileName+"\"");


584 :GO MAXIMA:2005/12/24(土) 12:00:09
>>573 .. >>578
連立方程式を解くだけのprogramなど長々載せないでくれるとありがたい。
MAXIMAで何かしようと思う人の参考になることという観点からいうと、
あなたの書き込みはゴミです。BUGや、なんとかができないようという
情報の方がよほどましです。理想とはかけ離れていますが ”微分方程式を
はじめとする複雑な問題についても問題特有の知識をも豊富にたくわえた
有能な計算助手として、あるいは時に教師として用いうるような汎用の
システムを夢見て、MACSYMAの開発は行なわれた。”という心から言えば
MACSYMAを使うことがよりレベルの高い数学を必要とし、自然にその世界が
広がることを願っています。>>573のテーマならグレブナー基底を使うこと
を考えるのが筋です。
http://www.singular.uni-kl.de/DEMOS/GP-MEGA-03/HTML/Applications/Circuit/index.htm を覗いてみてください。



585 :名無しさん@5周年:2006/01/16(月) 10:03:33
質問させてください。

テーラー展開を使って展開した多項式を以後の計算に使いたいのですが、
高次項が残っているため、例えば、次の様に値を評価するとエラーが出ます。
f(x):=taylor(sin(x),x,0,3);
f(1);

代わりに、いつも
taylor(sin(x),x,0,3);
を実行した後で、結果を見ながら手作業で
f(x):=x-x^6/3;
f(1);
のように入力していますが、とても面倒です。

このtaylorの展開結果を使った多項式を簡単に作る方法はないでしょうか?

586 :GO MXIMA:2006/01/17(火) 02:28:16
f(t):= subst(t,x,taylor(sin(x),x,0,3));
この問題で汎用なものは 意味がないが、
polyf(t,_h):= block([_a],_a:funmake(_h,[x]),
subst(t,x,taylor(ev(_a),x,0,9)));
のように関数引数を使うこともあるだろう。このevは
fatemanによると美しくないそうだが、
(%i52) polyf(t,sin);
(%o52) t^9/362880-t^7/5040+t^5/120-t^3/6+t
(%i53) polyf(10,sin);
(%o53) 117310/81
(%i54) polyf(1+t,sin);
(%o54) (t+1)^9/362880-(t+1)^7/5040+(t+1)^5/120-(t+1)^3/6+t+1
とまあ使えるのではないかな?

587 :名無しさん@5周年:2006/01/17(火) 11:04:48
imaximaをMac OSX 10.4に導入しようとしたのですが、
以下のエラーが出て動きません。どうすれば動くでしょうか?

*** - READ from
#<INPUT BUFFERED FILE-STREAM CHARACTER
#P"/Applications/Emacs.app/Contents/Resources/site-lisp/imaxima/imaxima.lisp"
@10>: #<PACKAGE CUSTOM> has no external symbol with name "*SUPPRESS-CHECK-REDEFINITION*"
1. Break [1]>



588 :123 ◆mL2ZRk1cK. :2006/01/17(火) 13:26:18
age

589 :名無しさん@5周年:2006/01/19(木) 01:45:34
>>586
あぁ、できますね。
これはsubstの副作用を利用したと
考えて良いのでしょうかね?

最近Maximaを使い始めましたが、
あえてMaple学生版を買う必要ってありますか?



590 :名無しさん@5周年:2006/01/24(火) 22:02:00
Maple:テキストが豊富

ぐらいかな?

591 :名無しさん@5周年:2006/02/14(火) 07:59:15
>>587
只今インストでその状態中。解決はどうするかわかりました?

592 :kojiro_i619:2006/02/17(金) 14:59:38
http://www1.bbiq.jp/kougaku/maxima.html で、

Linuxでやろうにも僕のPCにはWindowsしかインストールされていないので,CDから起動できるKNOPPIXで試すことにしました。ここではMaximaをはじめとする数学関係のツールが同梱された「KNOPPIX/Math/2004」を使いました。

とありますが、、

noppix_v3.7_20041208-20050125-math-

をダウンロードして、CDに焼き付けても、動かないのですが、、



593 :名無しさん@5周年:2006/02/18(土) 19:04:56
Maximaと言うよりKnoppixの使用方法についての問題と思われますんで
こちらの方が適しているかと.

KNOPPIX 12
http://pc8.2ch.net/test/read.cgi/linux/1135377715/

# なお一応言っておくと,MaximaはWindows版ありますよ?

594 :kojiro_i619:2006/02/20(月) 12:28:35
MAXIMAのWindows版で、結果としてでききた数式を、きれいな上付きルビやルートや分数なども
きれいに表せるソフトが無いでしょうか?

595 :名無しさん@5周年:2006/02/20(月) 15:47:58
wxMaximaで小数を扱うとなぜか誤差が出るんだけど。
例えば0.1+0.1などすると0.20000000000000001と表示される。何なんだろう。
XMaximaだとちゃんと0.2で表示される。>>572も同じ問題が出てるみたいだけど、
なんか解決法ないだろうか?

596 :595:2006/02/20(月) 16:09:57
>>594
wxMaximaだと結構きれいに表示できるよ。
少数の扱いでの問題がなくなれば最高なんだけど。

597 :kojiro_i619:2006/02/20(月) 16:48:50
なんとか、バッチファイルを組み込んで、できるようになりました。
このきれいな数式を、Wordとかで利用するのは、画像しかないのでしょうか?

598 :595:2006/02/20(月) 17:33:32
>>597
Word持ってないので詳しくはわからないけどそのまま使うなら画像しかないと思う。
ただOfficeに数式エディタなるものがあるらしいから。手動でいいならそれ使えばいいんじゃない。

599 :名無しさん@5周年:2006/02/21(火) 22:46:42
Cygwin使いという条件なら
MaximaからTeXのソースを出力してplatexでdviファイルに変換して
dvipsでepsファイルに変換して貼り付け
さらにconvertでjpgやpngファイルに変換して貼り付け


600 :kojiro_i619:2006/02/22(水) 09:26:45
ありがとうございました。参考にします。

601 :名無しさん@5周年:2006/02/22(水) 22:34:51
wish xmaximaの下のintro.htmlのURL表示部分を起動時、出さない設定って
どこで行なえばいいの?

602 :名無しさん@5周年:2006/03/01(水) 14:14:21
KNOPPIX/Math/2006 を公開しました。
詳細は http://www.knoppix-math.org/ を御覧ください。

Maxima 5.9.2 を収録しています。
インターフェースとしては、wxMaxima 0.6.4 と
日本語対応の GNU TeXmacs を収録しています。

また、ドキュメントとして
「Maximaマニュアル改定版」 横田博史訳
「Maximaの計算事例」横田博史著
「Maxima入門ノート」中川義行著
を収録していますので、御利用ください。


603 :名無しさん@5周年:2006/03/09(木) 11:46:33
>>585 の逆、即ち任意の多項式に taylor() の結果のフリをさせる事は可能でしょうか?

604 :603:2006/03/09(木) 15:07:08
すいません、マニュアルの pade() の項に方法が載ってました。

605 :名無しさん@5周年:2006/03/12(日) 15:18:21
64ビットアドレスのCPUとOSを使っても、現行のMaximaでは
それほど大きなメモリ空間(リスプのセル)が取れるわけじゃないという
ことが判明した。早く広大なメモリ空間を縦横に駆使して、巨大な数式を
うん日間かけて扱えるようになればいいね。
MathematicaやMapleは多分、先行していると思う。

606 :名無しさん@5周年:2006/03/20(月) 15:12:22
5.9.3記念あげ

607 :◇ゾンビ@Linuxザウルス : ◆mzpjBMNq3U :2006/03/31(金) 18:28:10
工学社 はじめてのMAXIMA 横田博史著 2625円
見慣れた形で入力し、そのまま計算できるフリーソフト
の数式処理ソフト「Maxima」の基礎から応用まで
解説。CD−ROM付き。
2,625円 2006年03月中旬
近刊だそうです

608 :名無しさん@5周年:2006/03/32(土) 15:40:34
64ビットAMD64あるいはEM64T用の、
本当に32ビットを越えたメモリー空間にリスプのセルを
大量に取れて計算できるようになっているMAXIMAの
パッケージを希望する。

609 :名無しさん@5周年:2006/03/32(土) 17:50:30
実は、たったの24時間で、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
あなたの今後のネット収益を倍増するスキルがあります。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
それを知りたい方は、他にいませんか?

アフィリエイトを使わずにホームページとEメールだけで3,000万以上稼いだ
インターネット・マーケッターの宮川さんが、

巨大な現金の山を作り出す門外不出の一生涯使えるノウハウを
下記のサイトで公開しています。

その内容をお知りになりたい方は、下記をクリックしてください。

【たったの24時間で あなたの今後のネット収益を倍増するスキルとは? 】
http://infostore.jp/dp.do?af=moneyclick&ip=successpreneur&pd=01


610 :名無しさん@5周年:2006/03/32(土) 18:26:01
>>608
言い出しっぺのお前が作れ!

611 :名無しさん@5周年:2006/04/02(日) 01:01:18
>>605>>608
Maxima を走らせるベースになる Common Lisp の 64bit 版がないとね。
商用/非商用を問わないのなら Allegro Common Lisp が対応してるみたいだけど…。

612 :名無しさん@5周年:2006/04/06(木) 21:34:13
顧問リスプって、32ビットを前提にしていたんですか?

613 :名無しさん@5周年:2006/04/08(土) 00:57:33
>>612
そうではない。現在ある処理系が...ってこと。

614 :名無しさん@5周年:2006/04/09(日) 20:47:11
ウー

615 :名無しさん@5周年:2006/04/20(木) 22:18:58
C++やC#のコードを出力する方法はありますか?
Fortran出力を手作業で直すのはめんどうなので

616 :名無しさん@5周年:2006/04/21(金) 13:09:07
>>615
つ f2c(ウソ

617 :名無しさん@5周年:2006/04/22(土) 20:18:06
はじめてのMaximaマダー

(´・ω・`) っ/∨☆チンチン

618 :名無しさん@5周年:2006/04/23(日) 11:06:21
昨日アマゾンで検索したが出てこなかった

619 :名無しさん@5周年:2006/04/23(日) 20:24:37
Windows版5.9.3を使おうとしたのですが、
starting maxima timed out
とでてしまい使えません。
ウイルスバスター2006のせいかと思いパーソナルファイアーウォール機能を無効にしてみたのですが
それでも駄目でした。
どうすれば使えるようになるのでしょうか。
よろしくお願いします。

620 :名無しさん@5周年:2006/04/23(日) 21:47:15
おれはウイルスバスター2005だが
MAXIMA5.9.3は使えているぜ
タイムアウトになんか一遍もなったことないぜ
ベイビー

621 :名無しさん@5周年:2006/04/30(日) 00:23:30
工学社 はじめてのMAXIMA 横田博史著
2006年03月中旬 の予定がまだ出ないですね

2006/3/19にバージョン5.9.3がリリースされたので検証でも
しているのか?


622 :名無しさん@5周年:2006/04/30(日) 20:12:45
wxMaxima0.6.5 あげ

623 :名無しさん@5周年:2006/04/30(日) 20:20:15
ぽんぽこさんマダー
(・∀・ )っ/凵⌒☆チンチン

624 :名無しさん@5周年:2006/05/02(火) 09:54:32
wxMaxima 0.6.5 (+ Maxima-5.9.3) で >>572 >>595 は 直った みたいですね。 うれしい。 (*´Д`)

あと個人的に気になるのは(wxMaxima とは関係ないけど)、複素数値を plot したときに
実部 だけが描画されるとこ。

例えば
plot3d(sqrt(x) + sqrt(y), [x, -5, 5], [y, -5, 5]);
を maxima と 素の gnuplot で plot してみると違いがわかる。

wxMaxima の フォーラム
https://sourceforge.net/forum/forum.php?thread_id=1401822&forum_id=435775
見ると、これは maxima の 仕様 ということみたいだけど、「gnuplot 方式」 で描画する方法ないかなぁ…。 (´・ω・`)

625 :622:2006/05/03(水) 01:30:17
>>624
純正(?)GUI の XMaxima でも wxMaxima と同じですね(当然か)。

626 :名無しさん@5周年:2006/05/05(金) 03:36:54
debian sargeでmaximaのversionは5.9.1
なんだけど,ncharpolyが使えなくね?

627 :626:2006/05/05(金) 04:15:05
すまん,使えた.

628 :名無しさん@5周年:2006/05/05(金) 10:25:39
CMUCLのMAXIMAよりMuPadの方が速い気がするけど、どう?

629 :名無しさん@5周年:2006/05/05(金) 13:37:32
http://blog.livedoor.jp/kiomegane/?blog_id=1521751

630 :名無しさん@5周年:2006/05/06(土) 02:01:19
>>629
つまらん
MAXIMAとなんの関係があるの

631 :sage:2006/05/13(土) 21:26:28
微分を勉強中なのですが、Maximaで微分の計算手順とか表示出来ませんか?

例えば、diff(%e^x^x,x);をするといきなり結果が出てしまいますが、その途中が知りたいのですが。


632 :名無しさん@5周年:2006/05/14(日) 00:29:49
そう都合良く宿題には使えんぞ

633 :631:2006/05/14(日) 17:51:35
宿題に使うわけではないのですが、練習問題の答えだけは分かるのですが、計算途中がわからなくて。。。
そういう機能はないみたいですね、どうもでした。


634 :GiantLeaves ◆6fN.Sojv5w :2006/05/15(月) 12:49:42
talk:>>631
DIFF のアルゴリズムが分かればそう難しくはないはずだ。要するに数学での微分公式だが。
DIFF(%e^x^x,x)
%e^x^x*DIFF(x^x,x)
%e^x^x*DIFF(EXP(x*LOG(x)),x)
%e^x^x*x^x*DIFF(x*LOG(x),x)
%e^x^x*x^x*(DIFF(x,x)*LOG(x)+x*DIFF(LOG(x),x))
%e^x^x*x^x*(1*LOG(x)+x*(1/x))
%e^x^x*x^x*(LOG(x)+1)

635 :GO MAXIMA:2006/05/15(月) 16:26:16
diffは最初にderivを呼び出すので
trace(?deriv,?sdiff,diff);とするとmAXIMAでトレースできるが
見にくいのでLISPから次のようにすれば良い。
(%i10) :lisp (trace sdiff deriv)
(%i10) diff(%e^x^x,x);

1> (DERIV (((MEXPT SIMP) $%E ((MEXPT SIMP) $X $X)) $X))
2> (SDIFF ((MEXPT SIMP) $%E ((MEXPT SIMP) $X $X)) $X)
3> (SDIFF $%E $X)
<3 (SDIFF 0)
3> (SDIFF ((MEXPT SIMP) $X $X) $X)
4> (SDIFF $X $X)
<4 (SDIFF 1)
4> (SDIFF $X $X)
<4 (SDIFF 1)
<3 (SDIFF ((MTIMES SIMP) ((MEXPT SIMP) $X $X)
((MPLUS SIMP) 1 ((%LOG SIMP) $X))))
<2 (SDIFF ((MTIMES SIMP) ((MEXPT SIMP) $X $X)
((MEXPT SIMP) $%E ((MEXPT SIMP) $X $X))
((MPLUS SIMP) 1 ((%LOG SIMP) $X))))
<1 (DERIV ((MTIMES SIMP) ((MEXPT SIMP) $X $X)
((MEXPT SIMP) $%E ((MEXPT SIMP) $X $X))
((MPLUS SIMP) 1 ((%LOG SIMP) $X))))

これがすごく見安いと思えないようでは 使いこなせないよ。と煽ってみるTEST
ちなみに数学力一年生の634の言うとおりになっている。ぱちぱち。

636 :631:2006/05/15(月) 21:12:15
634さん、635さん、ありがとうございました。

Maximaも、634さんのように綺麗に途中経過を出してくれると嬉しいんですけどね。
でも、635さんの教えて頂いた方法でなんとか分かりそうです。
これから練習問題解いてみます。

637 :GiantLeaves ◆6fN.Sojv5w :2006/05/15(月) 22:10:59
talk:>>635 それならお前は数学力半年生かよ?

638 :名無しさん@5周年:2006/05/31(水) 06:21:32
しつもんです。
 t1 : LOG(3/2); t2 : LOG(3); fortran(t2 - t1);
とやっても、
 LOG(3)-LOG(3.0/2.0)
としか言いいません。もう少し進めるには、どう指定したらいいのでしょうか?

639 :名無しさん@5周年:2006/06/10(土) 09:14:20
はじめてのMaximaは8月になるみたいだね。

640 :名無しさん@5周年:2006/07/08(土) 23:20:16
>638
カメ自己レスすまぬ。 LOGEXPAND という変数があるのですね。なんと FALSE, TRUE, ALL, SUPER と、
4種もの状態があるのですね〜 ドロナワ式か?

641 :名無しさん@5周年:2006/07/29(土) 17:19:55
初心者です。texmacsで使いはじめました。maximaのグラフ表示の描画ウインドウの
saveボタンを押すとボタンがフォーカスしたときのバルーンヘルプまで書き出すのですが
このヘルプを止めるのってどこで設定するんでしょうか?

642 :名無しさん@5周年:2006/08/16(水) 11:42:52
記号処理はできるのですが、記号を含んだグラフ化ってできます??
切片が a^2+1+m^2*%pi^2/l^2 とか。

643 :名無しさん@5周年:2006/08/23(水) 19:03:43
はじめてのmaximaマダー
(・∀・ )っ/凵⌒☆チンチン

644 :名無しさん@5周年:2006/08/25(金) 12:32:21
alloc(4);
って打っても、メモリが増えない件


645 :名無しさん@5周年:2006/09/11(月) 15:26:16
2006年03月中旬 近刊といわれて
はや半年ほんとうに大丈夫かと思う今日このごろ、、、

646 :GO MAXIMA:2006/09/13(水) 03:12:19
本とは関係ないのですが、cliffordと微分形式のパッケージが完成間
近です。あと1カ月ほどで公開できると思います。それではほんのサワリをお見せしましょう。
Pontrjaguin indexのお話です。引き戻し計算。
(%i74) f_star([phi,theta],(pu1:sin(phi)*cos(theta),pu2:sin(phi)*sin(theta),pu3:cos(phi),
pu1*d(pu2)@d(pu3)+pu2*d(pu3)@d(pu1)+pu3*d(pu1)@d(pu2)))$
(%i76) trigsimp(%o74);
(%o76) Dphi Dtheta sin(phi)
f_star(newcoords,'a_form) のa_formの所にblockが使えるのがおおきい。
pu1*d(pu2)@d(pu3)+pu2*d(pu3)@d(pu1)+pu3*d(pu1)@d(pu2)は面積要素で pu1,pu2,pu3は単位球面
の座標であるからこの微分形式は立体角をあらわす。
(x,y)-->(pu1,pu2,pu3)はIxI--->S2への写像で境界上は1点に写っている。
今の立体角の微分形式をこの写像で引き戻して、IxI上で積分すれば単位球面の面積の整数倍の
はずでホモトピー不変量である。(Pontrjaguin index)
引き戻した微分形式はどんな形をしているか? Maximaで計算できるだろうか?
ここのGapは強烈だ。外微分の計算は座標によらないから適当に具体化して立体角であること
を得た。しかしここでは一般の写像の形にしないとその形は求まらないだろう。

647 :GO MAXIMA:2006/09/13(水) 03:13:13
しかし 一般の写像にすればよいことに気づけば以外と簡単で、
(%i81) f_star([x,y],(depends([p1,p2,p3],[x,y]),p1*d(p2)@d(p3)+p2*d(p3)@d(p1)+p3*d(p1)@d(p2)));
(%o81) p1*(Dx*Dy*'diff(p2,x,1)*'diff(p3,y,1)
-Dx*Dy*'diff(p2,y,1)*'diff(p3,x,1))
+p2*(Dx*Dy*'diff(p1,y,1)*'diff(p3,x,1)
-Dx*Dy*'diff(p1,x,1)*'diff(p3,y,1))
+(Dx*Dy*'diff(p1,x,1)*'diff(p2,y,1)-Dx*Dy*'diff(p1,y,1)*'diff(p2,x,1))
*p3
dp2 dp3 dp2 dp3 dp1 dp3 dp1 dp3
(%o79) p1 (Dx Dy --- --- - Dx Dy --- ---) + p2 (Dx Dy --- --- - Dx Dy --- ---)
dx dy dy dx dy dx dx dy
dp1 dp2 dp1 dp2
+ (Dx Dy --- --- - Dx Dy --- ---) p3
dx dy dx dy
この方が見易いだろうか、(p1,p2,p3).{(d/dx(p1,p2,p3)Xd/dy(p1,p2,p3))*Dx@Dy}であらわせる。
これが求める形式のベクトル表示だ。もちろん(%o79)の形式でも同じ。
この単純な計算に いろんな有益な情報が入っていることに気づいてほしい。

648 :GO MAXIMA:2006/09/13(水) 03:14:00
一般の微分形式は座標変換で不変な形式を保つ(ここがベクトル場と違う所だ)ので
計算しやすい座標をとって計算すれば良い、もともとこのパッケージはそういう目的
で考えられたものだ。しかしPontrjaguin indexの計算のように結果が立体角となったら、
一般の座標に戻って引き戻した微分形式はどんな形をしているかが知りたいだろう。
それは積分してホモトピー不変量を導くからだ。微分形式の計算はこのように具体計算と
一般の座標での計算の両方が可能であってはじめて役に立つ。
つまりPontrjaguinが考えたことは、IXIからS2へ境界が1点にうつる滑らかな写像全体を
考えるとlocalな2形式で簡単で不変なものは面積要素だけで、球座標でいくつか形式の
候補をあたるとpu1*d(pu2)@d(pu3)+pu2*d(pu3)@d(pu1)+pu3*d(pu1)@d(pu2)にいきあたる。
これをIxIの一般の座標で引き戻したものを積分表示すれば、当然ホモトピー不変な量
が得られるはずだというわけだったのだろうね。

649 :8月44日:2006/09/13(水) 23:56:16
はじめてのmaximaマダー
(・∀・ )っ/凵⌒☆チンチン

650 :名無しさん@5周年:2006/09/21(木) 16:22:40
槙島の参考書を紹介して下さい。

651 :名無しさん@5周年:2006/09/21(木) 16:26:37
Maxima 5.10.0 リリース!
(各種バイナリはもうちょっと待たれよ)

652 :名無しさん@5周年:2006/09/22(金) 22:47:22
その変わりTexmacsで動かんくなったぞ

653 :◇宮城200か12-54@Linuxザウルス : ◆mzpjBMNq3U :2006/09/23(土) 23:41:13
オープンソース「KNOPPIX/Math」の数式処理ソフトを使いこなす!
はじめてのMaxima
横田 博史 著
2006年 9月29日発売 B5判 672ページ [CD-ROM付]
価格 \3,675(本体 \3,500)
ISBN4-7775-1201-0 C3041 \3500E

654 :名無しさん@5周年:2006/09/24(日) 07:25:41
密林では検索にまだ出てこないな。

672ページで3500円って安い気がする。

655 :名無しさん@5周年:2006/09/24(日) 23:06:07
半年前はこの値段だったのに

2006/3 中
はじめてのMaxima
横田 博史著
工学社 2,625円

656 :名無しさん@5周年:2006/09/25(月) 12:02:48
MAXIMA 使ってますが、Clear memory → Kill all を連発しています。
私がアホなんでしょうね。

657 :GO MAXIMA:2006/09/25(月) 13:52:32
>>656
MAXIMA言語は 関数型ではないので、用途によっては ”Kill all を連発”
ということもあるでしょう。私は、 fnantara(p,q,r):=block([_a,_b,_c],....)
のスタイルで、p,q,rの引数は必ず評価されてから 渡されるので ここでは
変数がグローバルになること、blockのなかの変数宣言[_a,_b,_c]が、ローカル
になることを注意深く考慮すれば、疑似関数型にかけることを利用しています。
もちろん、blockのなかで外のグローバル変数を使うこともできます。
fnantara(p,q,'r):=block([_a,_b,_c],....,ev(r))とすれば評価しないで
渡ってきたrを ローカルな環境で評価できるので 非常に有効です。
あたかもグローバル変数を書き換えたかのような使い方ができるようです。
rのなかで関数をよびだし、その関数がまた別の関数をよびだすという
書き方も可能です。ただしdebuggerに慣れる必要があるかもしれないね。
debuggerは簡単で、見たい変数をtama;とすれば現在のフレームでのtama
の値を表示してくれます。後は :h と:stepくらいでOK。


658 :名無しさん@5周年:2006/09/28(木) 14:50:40
>>652
http://www.math.utexas.edu/pipermail/maxima/2006/014696.html

659 :GO MAXIMA:2006/09/29(金) 12:49:35
はじめてのMAXIMA 読みました。では書評をば。
良い点、感心した所は近頃の ソフトの解説書としては 独創的で筆者の主張が
書かれていて、内容は別として大変素晴らしい。マニュアルだけで構成されていたり
ほんの少しの例だけで組まれた、類書のソフト解説本に比べて出色のできでしょう。
特に演算子を解説した5章(ルールは除く)は良い。7章のMAXIMAでプログラムも誰かが
書かねばならないが面倒だ、という点を丁寧に解説してある。ここで何度も述べている
ようにMAXIMAを実用的に使うには、内部のLISPのソースを見ることも必要であって、
10章の積分関数の動きを観察しようは、初めての人にみせるLISPソースとして
最適だろう。11章結び目の概要は、LISPでなくMAXIMA言語で数学する一例として
かなりよい線をいっていると思う、つまり総合数式処理の存在意義は様々の道具が
交差して数学が展開される所にこそ活躍の場があるという実証になっている。
13章のOctaveとの連係のための、ややシンプルすぎるプログラムもMAXIMAを実用的に
使いたい人にとっては 大変参考になると思うね。
トータルとして誰が買っても損のない一冊だ。
次にプロの目からみた至らない点、改善すべき点をいくつか述べておく。


660 :名無しさん@5周年:2006/09/29(金) 13:58:40
http://etc4.2ch.net/test/read.cgi/vote/1158065845/65

661 :GO MAXIMA:2006/09/29(金) 14:05:08
Maximaを自分の研究や勉強や仕事に 本当に使いたい人がこの本を読んで、
使い始めると100人中99人は撤退することになると思う。その理由はこの本の
例を少し拡張としただけでMAXIMAはそのままでは動かないからだ。
例えばdiff(f(x^2),x)は これ以上計算されない。こんなとき小手先のプログラム
(この本にあるような)ではても足も出ないだろう。Bartonのpdiff.lispがあり、
かれは 量子力学の計算をMAXIMAを使って教えているのでその必要から生まれたものだ。
つまりこの本および著者は、share/contribを完全に無視することで、ご自分が
実用的にはなんにも使っていないということを暴露している。grobnerにしても
ここに>>235 236で紹介したような(名前はgrobner.lispに変更されているが)
まともなgrobnerのパッケージがある。coeflist.lisp、format.lisp
の提供するsimpの強化は強力だ。 まあ私の書いたjordan cannoicalformの計算を
するdiag.macも含めて 最近書かれたものは優れているものが多いのだ。
つぎに 自分でいくつかの関数をファイルから定義して、debuggmodeに入ったとき
>>657で少し触れたけど、backtraceしか書いてないけど、CAS使う人は大抵が
プログラマーでなくてアマグラマーなんだから、どうやって怪しい変数をみるのか?
変数名;でよいのだけど、ブレークポイントの設定や解除等 例をあげて書くべきだ。
これが金とって売る本としては唯一欠けてるところだ。デバガーはマニュアルも
うまく書けていないのは開発者はまあプログラマーだから自明なんだろう。
最後に4章の内容は もう少し考えてから書きましょう。何が言いたいか解りますね。
書き換えましょう、時間カケテから。
全体としては>>659のようによい本です。ご苦労さまでした。




662 :GO MAXIMA:2006/10/02(月) 01:23:48
公開間じかのパッケージからPoission bracketの計算を紹介しよう。
6次元のsymplectic manifoldをとる。symplectic formとして次の2形式をとる。
(%i39) f_star([p1,q1,p2,q2,p3,q3],(omega:Dp1@Dq1+Dp2@Dq2+Dp3@Dq3,omega@omega@omega));
(%o39) 6 Dp1 Dp2 Dp3 Dq1 Dq2 Dq3
(%i40) f_star([p1,q1,p2,q2,p3,q3],(omega:Dp1@Dq1+Dp2@Dq2+Dp3@Dq3,d(omega)));
(%o40) 0
よりsymplectic formの条件は満たしている。この時Poission bracketは座標によらない形式で
inner(Xf,(inner(Xg,omega)))と表せる。(もちろん具体的計算は座標を使うのだが)
(%i42) f_star([p1,q1,p2,q2,p3,q3],(depends([f,g],[p1,p2,p3,q1,q2,q3]),omega:Dp1@Dq1+Dp2@Dq2
+Dp3@Dq3,inner(diff(f,q1)*Dp1-diff(f,p1)*Dq1+diff(f,q2)*Dp2-diff(f,p2)*Dq2+diff(f,q3)*Dp3
-diff(f,p3)*Dq3,omega)));
df df df df df df
(%o42) Dq3 --- + Dq2 --- + Dq1 --- + Dp3 --- + Dp2 --- + Dp1 ---
dq3 dq2 dq1 dp3 dp2 dp1
これはd(f)であるからinner(i1(Xf),d(g))とすべて微分形式で書ける。
Poisson bracketを計算するプログラムを書こう。basisは[p1,p2,p3,q1,q2,q3]ではなくて
[p1,q1,p2,q2,p3,q3]というようにp1,q1と共役のpair順にとるものとする。
(%i55) f_star([p1,q1,p2,q2,p3,q3],(depends([f,g],[p1,q1,p2,q2,p3,q3]),p_braket(f,g)));
df dg df dg df dg df dg df dg df dg
(%o55) --- --- + --- --- + --- --- - --- --- - --- --- - --- ---
dp3 dq3 dp2 dq2 dp1 dq1 dq3 dp3 dq2 dp2 dq1 dp1
p_braketがPoisson bracketであることがわかる。
(%i57) f_star([p1,q1,p2,q2,p3,q3],(depends([f,g,h],[p1,q1,p2,q2,p3,q3]),
p_braket(f,g*h)-g*p_braket(f,h)-h*p_braket(f,g)))$
(%i58) ratsimp(%);
(%o58) 0


663 :GO MAXIMA:2006/10/02(月) 01:39:36
正準変換かどうかを調べる例。
(%i59) f_star([p,q],(P:q*cot(p),Q:log(sin(p)/q),d(P)@d(Q)))$
(%i60) trigsimp(%);
(%o60) Dp Dq
DP@DQ=Dp@Dqだから正準変換である。
(%i63) f_star([p1,q1,p2,q2,p3,q3],(depends([f,g,h],[p1,q1,p2,q2,p3,q3]),
p_braket(p_braket(f,g),h)+p_braket(p_braket(g,h),f)+p_braket(p_braket(h,f),g)))$
(%i64) ratsimp(%);
(%o64) 0
これはヤコビ則である。この意味は、hをHamiltonian、p_braket(g,h)=0
,p_braket(f,h)=0 とすればf,gは第一積分(first integral)であり、
p_braket(p_braket(f,g),h)=0だからp_braket(f,g)も第一積分(first integral)であること
を示している。もちろん 引き戻しを使って、具体的にHamiltonianを
与えた計算も自由にできる。行列と連動してLax表示を得る計算もできるので
解析力学の学習および教育に有効に使えると思うね。

664 :名無しさん@5周年:2006/10/06(金) 12:58:37
GO MAXIMAさんのこのスレでの発言をまとめ(抜粋)てみました。
GO MAXIMAさんの発言と関連のみを抜粋しただけです。
しおり(目次)をつけたのが若干便利かな程度のものです。
PDFとDOC(WORD)があります。
要望があり、GO MAXIMAさんが承諾すれば公開したいと思いますが、いかがでしょうか。


665 :GO MAXIMA:2006/10/06(金) 18:04:29
私は かまいませんが 最初の頃は私もMAXIMAの初心者だから
あまり参考にはならにかも、それとここ数年でMAXIMAも
ずいぶん変わってきているので そのままでは動かないもの
もあるかもです。

666 :名無しさん@5周年:2006/10/06(金) 20:47:00
>>665
いえいえ、大変重宝しております。
とりあえず、公開してみますが、不都合があればおっしゃてください、いつでも公開を止めます。

http://ryoma3.hp.infoseek.co.jp/maxima/GO_MAXIMA_coments.pdf
http://ryoma3.hp.infoseek.co.jp/maxima/GO_MAXIMA_coments.doc


667 :名無しさん@5周年:2006/10/08(日) 09:38:11
いただきます

668 :名無しさん@5周年:2006/10/09(月) 17:42:59
こんばんは 最近maximaを使い始めたばかりの初心者です。
maximaで数値計算をしグラフを書かせていますが,maxima側のプログラムで
軸を対数に設定してフロントエンド?のソフトに引き渡すような
設定はないのでしょうか?
教えてください。

669 :名無しさん@5周年:2006/10/18(水) 04:11:56
つ gnuplot_preamble

670 :668:2006/10/20(金) 00:33:44
>>669
ありがとうございます。まだちゃんと動いてくれてませんが、
がんばって動作できるようにしてみたいと思います。

英語のマニュアルは重要ですね。

671 :668:2006/10/20(金) 00:48:44
成功しました ありがとうございました。
これでだいぶ使いやすくなりました。

672 :GO MAXIMA:2006/11/03(金) 02:24:52
differential formsの パッケージを公開しました。
まだやり残しも かなりあるのですが、春までにはもっと
完璧なものにする予定です。
とりあえずフランダースや 和達の微分、幾何あたりを片手に
励んで下さいね。
http://maxima.cvs.sourceforge.net/maxima/maxima/share/diff_form


673 :名無しさん@5周年:2006/11/16(木) 15:28:00
質問です。初歩の電気回路の計算ですが、
 display2d : false $
 j : %I $
 rat( (1/(j*w*C))/(R + 1/(j*w*C)) );
結果は -%I/(C*R*w-%I) であり、なかなか 1/(%I*C*R*W + 1) とは言ってくれません。
 %I*(-%I); expand(%I*(C*R*w-%I));
こんなふうになだめすかすように言わないと、1/(%I*C*R*W + 1) が出てきません。
どう指定したらいいのでしょうか。

674 :673:2006/11/16(木) 19:46:25
追記。
もちろん、アプローチのしかたが全然よくない、とかいう話も、ぜひお聞かせ下さい。

675 :名無しさん@5周年:2006/11/16(木) 21:03:20
うちでは大丈夫だよ

Maxima 5.10.0 http://maxima.sourceforge.net
Using Lisp CLISP 2.39 (2006-07-16)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) display2d : false $
(%i2) j : %I $
(%i3) rat( (1/(j*w*C))/(R + 1/(j*w*C)) );
(%o3) 1/(%I*w*C*R+1)
(%i4)

676 :673:2006/11/17(金) 18:14:49
私は Maxima 5.9.1 Using Lisp Kyoto Common Lisp GCL 2.6.5 (aka GCL) を使っていました。
新版に入れ換えたら・・ 入力ができない。。 あ、入力のしかたが変わったのか。
「Multiline input」なんていうボタンがあったりして。。
あの苦労はいったい何。。 まあ、いろいろ悩んで大きくなるのでしょう。
ありがとうございました。

677 :名無しさん@5周年:2006/11/18(土) 07:56:55
けっこうすてきです。
http://proxy.f3.ymdb.yahoofs.jp/bc/51ca1d4c/bc/R/789.png?bceGkXFB6MImoJdw

678 :名無しさん@5周年:2006/11/18(土) 08:24:37
きもちわるすぎでもあります

679 :名無しさん@5周年:2006/11/23(木) 12:51:48
%PI と %pi の違い、%I と %i の違いを説明している部分を、
マニュアルで探そうとして、どうゆう方法でたどりつけるのでしょうか?

680 :名無しさん@5周年:2006/11/23(木) 12:58:34
【佐倉広夢(さくらひろむ)】
801ゲーム「好きなものは好きなのだからしょうがない」に登場する少年
高校一年生なのだが、ほとんど小学生としか思えない容姿と背丈である。
初登場でいきなり主人公(当然男)にエッチしようとせまってくる真性ホモ
少年。美少年といえば間違いなく美少年であるが、とにかく可愛いと言った
ほうが妥当だろう。
しゃぶるのが好きらしくフェラするのもされるもの大好き。このように書くと
こういう方面に嫌悪感を持つ人はなんだが気持ちの悪いキャラだなと思うだろ
うが、実際、ちんちんのついた女の子みたいな子ですから、性格も天真爛漫で
いやいや好きしょをやらされたヤシも「そのケはないけど広夢ならいい!!」
と漢どもに言わせてしまう、超絶美少年である。
広夢が一生懸命フェラしてくれる画像をみると正直、勃ちますから。というか
普通に抜けますから、これほんと。
ゲームの主人公の空くんももともとはノーマルだったのに広夢の破壊力がが
きっかけで801道に堕ちていってしまうわけですよ。

681 :名無しさん@5周年:2006/11/26(日) 03:27:49
>>673
出来てるみたいです。
wxMaxima 0.7.0a http://wxmaxima.sourceforge.net
Maxima 5.10.0 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) display2d:false $
(%i2) j:%I$
(%i3) rat((1/(j*w*c))/(R+1/(j*w*c)));
(%o3) 1/(%I*c*w*R+1)

682 :名無しさん@5周年:2006/12/11(月) 03:19:31
>>681
ありがとうございます。 wxMaxima 0.7.0a では:
(%i1) display2d:false $
 j:%I$
 rat((1/(j*w*c))/(R+1/(j*w*c)));
(%i2) (%i3)
(%o3) 1/(%I*c*w*R+1)

なんだけど、

(%i4) j:%i$
rat((1/(j*w*c))/(R+1/(j*w*c)));
(%i5)
(%o5) -%i/(c*w*R-%i)

まあ、間違いではないから。
しかし、いつのまに %I と %i の違いや、%PI と %pi の違いができるようになったのでしょうか。
よく読めばどっかに書いてあるとは思うのですが、そこは2chだからご勘弁を。単に勘違いかも。

683 :名無しさん@5周年:2006/12/11(月) 03:27:07
いや、確かに違うんです。知らなかったオレは実にバカでした。
(%i7) float(%i^2);
(%o7) -1.0
(%i8) float(%I^2);
(%o8) %I^2

684 :GO MAXIMA:2006/12/22(金) 18:56:16
Maxima 5.11.0がリリースされました。Bugもやや減り、
describe()が高速になり快適です。より多くの人に
使っていただく環境が整いつつあるようです。今回私の
contributionである微分形式のパッケージもshare/diff_form/
に入れてもらいました。文書が遅れていますが、サンプルを
みてもらうとなんとかなるでしょう。
ポテンシャルをうまく論じるためには、係数に超関数をもった
微分形式(カレント)が必要になるが現在のMaximaは超関数を
扱い難いのでどうしようか?と考えているところ、Laplace変換
と違和感のないMikusinskiの演算子空間を利用することを考えている。
まあ6.0が ぼくらの頭のなかでのVer1.0でMacsymaに近い性能と
Macsymaを上回る新しいPackageを持つものというのが目標です。

685 :名無しさん@5周年:2006/12/24(日) 21:06:14
His judgement cometh and that right soon

男性諸君、結婚すると不幸になる。女の外面は綺麗で清潔で良い人、内面はずるくて汚いため、口も悪くなる
今の女は「どうやって男にたかるか」を必死に考えてる。騙されるな。家事は極めて軽労働になった
コンビニやPC、風俗関係も、「嫁いらず」に拍車をかける。今の女は「人生の不良債権」「北朝鮮」「金メッキを施したゴキブリ」
社会的に男女は対等で平等。男が女を養ったり守る必要はない「見切れ!見切り千両!私不幸なの?嘘!泣いてます?演技!情けは不要!つけこまれるぞ」
女は社会的優遇、過剰な法的保護、仕事と家庭の二束のわらじを得て、もはや女尊男卑〜結婚しようとするあなたを彼女は陰で小馬鹿にしている事でしょう〜

★☆★よほどの事が無い限り結婚は保留し、沢山の女性と自由に恋愛(sex)を楽しめ♪★☆★ 避妊(ピル等)は忘れずにねd(^−^
★☆★捨てた女は優しい真面目男が結婚(残飯処理)してくれるさw★☆★

それでも結婚する君へ究極の護身法→[夫婦財産契約登記]
夫婦財産契約により契約財産制となり、自分の稼いだ財産はすべて自分の物
離婚時に財産の半分を配偶者に取られない

・弱い者いじめは最低と言いつつ、赤ちゃんを殺す母親(そして無罪判決(笑
・狙撃は女子のほうが強い。男は、ノイローゼになってやめてしまうが
女は何人殺してもノイローゼにならない。そして、骨盤が安定しているため

・ナチスの拷問で、女の拷問の残虐非道さを見て、拷問をしていた男達もひいたという
拷問しながら楽しそうに笑みをうかべていたそうだ。罪悪感や引け目が無い

・有史以前が女尊男卑の時代だったことを指摘したのは、スイスの学者バッハオーフィン
アマゾン女族の女王は、法律を定め、女には従軍させ、男たちには卑しい奴隷の仕事を課した
男児が生まれたら、脚と腕を不自由にして、戦えなくした
・王位継承権が女性にだけあったという事実だけから考えて、古代エジプトでは女性権力が非常に大きかった
男女平等どころか、かなり女性上位の社会であった
・日本国でも卑弥呼が女王
・昆虫などにいたっては、オスカマキリはメスに食われてしまう

女は虐げられてきた?父系社会など人類の歴史から見ればほんのわずかな期間に過ぎない。むしろ・・・

686 :名無しさん@5周年:2007/01/03(水) 01:25:36
WindowsでTeXmacs-maxima interface を試してみました。

画面ハードコピー
http://puka-world.com/php/upload/puka/img-box/1167754817482.jpg

出力が全て大文字になってしまいます。小文字の出力を得るにはどうするのでしょうか?

687 :名無しさん@5周年:2007/01/05(金) 22:12:38
5.9.2 cmucl で使ってるのですが
eigenvectors では行列の対角化、固有値が algsys failure とかで求まりません。
octaveでは普通に求まります。
maximaにはほかのアルゴリズムはあるのでしょうか。
eigens_by_jacobiなるものがあるという情報もあるのですが、バージョンが低いせいか
入っていないようです。

688 :名無しさん@5周年:2007/01/05(金) 22:46:56
>>687

求まらないって言うか、デフォルトだと固有値の重複度を1行使って
余計に出力するだよね・・・

ところでload(eigen); した?

689 :名無しさん@5周年:2007/01/05(金) 23:04:38
>>688
早速の返信ありがとうございました。
申し訳ない。
実は、求まっておりました。
evでfloatに変換したら気付きました。
ただ、重解となるはずのところが小数点以下3桁のオーダーでずれてますが。。。

690 :名無しさん@5周年:2007/01/07(日) 21:28:03
流れを読まずに「はじめてのMAXIMA」感想。
著者は bekkoame の ponpoko 氏、つまり↓
ttp://www.bekkoame.ne.jp/~ponpoko/Math/maxima/ManualBook/ManualBook.html
もちろん書籍の内容はこれより多い。

>659,661以前の問題として、
フォントの全角半角等幅プロポーショナルの使い分けがダメすぎて目で追ってて疲れた。
あとで読み返す気にならないかも。文章も読んでてたるい。

こちらが普段 wxmaxima 使いということもあるが、
生のアスキー表記は商用に比べ表示が劣ると言っておいて直後 texemacs の紹介してるわりに
本文はアスキー表示なのも。ほんとに MAXIMA 紹介したいのかと。

gnuplot でマウスが使えてないのもマイナス評価。
いやまあ最近 MAXIMA 自体の謎なんだけど。なんでデフォルトが gnuplot -persist になったんだ。
MAXIMA 古来の mgnuplot 経由でいいのに。-persist したらマウスが使えなくなるじゃん。

かくして 3章あたりまでで地に落ちた評価なのだが、ここから盛りかえす。

5章の演算子順序の説明の件が >659 にも出てたが、MAXIMA が与えられた式を
どう評価するのか(変形するのか)という点にかっちり触れたとこはすばらしい。

web漁っても「簡約化する」とか「展開する」とかしか書いてないとこ多いし、
前提とする知識多いから紙に展開しておいたものを持っておく意義は十分。

自分で読んでみてようやく >659,661の内容が分かった。ほぼ全面同意。


691 :ということで:2007/01/09(火) 02:33:32
借金ですよね
善良な市民生活大混乱中。。。

376 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)