1read 100read
2011年11月2期数学55: 【数式処理システム】 Maxima 【Common Lisp】 (176) TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ

【数式処理システム】 Maxima 【Common Lisp】


1 :10/10/17 〜 最終レス :11/12/04
フリーの数式処理システムMaximaに関するスレです。
MaximaはCommon Lispで書かれており、GNU GPLライセンスのもと
配布されています。各種UNIX、Windows、OSXで動作します。
■関連サイト
□Maxima, a Computer Algebra System (英語) - 公式サイト
 ttp://maxima.sourceforge.net/
□Maxima Beginner's FAQ (英語) - 初心者向けのFAQ
 ttp://beshenov.ru/maxima/faq.html
□Imaxima (英語) - Emacs用のGUIフロントエンド
 ttp://members3.jcom.home.ne.jp/imaxima/Site/Welcome.html
□Maxima interest list (英語) - Maximaに関するメーリングリスト
 ttp://www.ma.utexas.edu/mailman/listinfo/maxima
□Maximaで遊ぼう (日本語) - マニュアルの日本語訳や、インストールガイド等
 ttp://www.bekkoame.ne.jp/~ponpoko/Math/maxima/MaximaMAIN.html
□数式処理システムMaximaで楽をしよう (日本語) - 初心者向けのMaxima導入編
 ttp://www1.bbiq.jp/kougaku/maxima.html

2 :
■前スレ
【数式処理システム】 Maxima 【Common Lisp】
http://kamome.2ch.net/test/read.cgi/math/1220340695
 ttp://www.unkar.org/read/kamome.2ch.net/math/1220340695 (ミラー)
■過去スレ
MAXIMA
http://science6.2ch.net/test/read.cgi/sim/1011102458/
 ttp://www.unkar.org/read/science6.2ch.net/sim/1011102458 (ミラー)
Maxima part2
http://science6.2ch.net/test/read.cgi/sim/1218342679/
 ttp://www.unkar.org/read/science6.2ch.net/sim/1218342679 (ミラー)
前スレは>>1に入れておくべきだったか? まぁいいか。

3 :
初代スレのコテハン "GO MAXIMA" 氏の書込みのまとめ
ttp://ryoma3.hp.infoseek.co.jp/maxima/GO_MAXIMA_coments.pdf
ttp://ryoma3.hp.infoseek.co.jp/maxima/GO_MAXIMA_coments.doc
日本語マニュアルは
ttp://www.h3.dion.ne.jp/~y.ich/Maxima/maxima.html
の方が新しいバージョンに対応してるのかな?

4 :
>>1乙です。シミュ版のスレも落ちてたので現行唯一のスレ、かな?
wxMaximaを使う際は「Shift+Enter」で式を評価するというのは
FAQとしてテンプレに書いてあっても良いかも

5 :
>>4
Windows版はDEPの対象から外すのもFAQかも

6 :
XPを使ってるから気づかなかったけど
バージョンアップの際、これは絶対ひっかかりそう
他の言語等に比べてpdf情報が多いのは数式が綺麗に表示出来るからかな
よく知らないけど、Webでの数式表示って未だ制限が多いのかなぁ

7 :
FirefoxにPopup ALT Attributes入れるの忘れてた
>>6
IEはMathMLに対応してないですね(MathPlayerを入れればいいのだけど)。
数式を沢山使ってるWikipediaでも、画像にレンダリングしたものを返してきますし、
普及はまだ先かも。

8 :
調べてみたら、Maxima→MathMLは問題なさそう(直/tex経由etc)なので、対応が待ち遠しいですね
久しぶりにVerUpしたらgensymが使えるようになっててこんなの作ってみた
genmat(a,b):=genmatrix(lambda([x,y],gensym(10*x+y)),a,b);
主に自習用にmaximaを使っているので
g以外の文字をくっつけたりアルファベット順に文字を出力させたり
色々カスタマイズしたいがgensymのインタフェースが中途半端なのが悲しい
Lisp層わからないし

9 :
Maxima on ABCL: full pass on the test suite
ttp://abcl-dev.blogspot.com/2010/10/maxima-on-abcl-full-pass-on-test-suite.html
ABCL(Armed Bear Common Lisp)はJavaで実装されてるCommon Lisp処理系なんだけど、
他の処理系でMaximaを走らせた場合と比べてどうなんでしょう?

10 :
他の処理系が何か(OS/別のlisp処理系)
試したいのは何か(速度/安定度)
よくわからないけど、実際に試してみればいいのでは?
それより古い記事だけど、速度は通常のmaximaよりは遅いって書いてる
ttp://abcl-dev.blogspot.com/2009/11/maximal-performance.html

11 :
猫に小判、まで読んだ。

12 :
猫が寝転んだ。

13 :
wxMaximaについて質問させてください。
OSはwindows 7 home premium 64bit
wxMaxima0.8.6を使っています。
最近導入したばかりで基本的なことをいろいろ試していたところでしたが、ファイル出力がうまくいかないので教えていただきたいです。
(%i) stringout("test",input);
(%o) C:/Program Files (x86)/Maxima-5.22.1/wxmaxima/test
となるのですが、該当フォルダに出力ファイルが作られません。というかどこにも作られません。
(%i) save("test",all);
(%o) test
こっちでも出力されません。
どうすれば出力されるのでしょうか?いろいろ調べてみたのですがわかりませんでした。。。

14 :
>>11


15 :
>>13
とりあえず絶対パスにして、
stringout("d:/test",input);
とかで回避するとか。
WindowsでwxMaximaをショートカットから起動すると、作業フォルダーが
Maximaのインストールディレクトリになるみたいですね。
あんまりうれしくない…。

16 :
>>15
できました!ありがとうございます!!
なんで絶対パスじゃないと通らないのかは腑に落ちませんがとりあえずこれでやっていきます!

17 :
>>16
C:/Program Files (x86)/Maxima-5.22.1/wxmaxima/ が書込み禁止になってるからじゃないの?

18 :
sage

19 :
不具合と回避策の報告をしておく。
現象:以前は動いていたmaxima5.20.1が急に動かなくなった。
wxMaximaを動かすと「Not connected to maxima」と表示される。
コマンドラインから動かすと
「Error in SYSTEM::SET-UP-TOP-LEVEL [or a callee]: :ROOT is an illegal pathname name.」
などのメッセージが出る。
maxima-5.22.1に変えても現象は変わらず。
OSはWindowsXPとWindows7(64bit)両方。
回避策:最近、環境変数TMPとTEMPをRAMディスクのある
R:\ に設定したのだが、これをR:\tmpに変更したら動作するようになった。
ドライブ直下にTMPを設定してはいけないらしい。
ウイルスソフトとかDEPの他にも不具合を起こす原因があったので参考までに。

20 :
sage

21 :
mac osXのclisp版で使っているのですが
gnuplotで出力したグラフをクリップボードに保存するのにはどうすれば良いですか?
winではボタンがあったのですが・・・

22 :
>>21 gnuplotからcopy to clipboardってコンテキストメニューでてこないの?
最近知ったがdraw_fileが5.20から追加されてたのな
未だに5.17使ってるけど新しいの入れないと

23 :
WindowsでGCL版を使ってるので外してるかも知れませんが
>>21
OSXならsbcl版の方が速いのでは?

24 :
>>23
> OSXならsbcl版の方が速いのでは?
本題は速い遅いではないでショ

25 :
>>24 もしかして総北ネタだったのか?気付くの遅くなってスマソ

26 :
factorでたまに出てくるbpvって何だ?

27 :
【R言語】統計解析フリーソフトR 第4章【GNU R】
http://kamome.2ch.net/test/read.cgi/math/1294561909/

28 :
素人がここで聞いていいのかですがおじゃまします。
えっと累乗和なんですけど、
Bin(n,r):=n!/(r!*(n-r)!);
s(p,n):=s(p,n):=((n+1)^(p+1)-1-sum(sum(Bin(p+1,a)*k^a,a,0,p-1),k,1,n))/(p+1);
とすると、s(0,n) = n , s(1,n) = n(n+1)/2 までは求まるんだけど、
n(2,n)が (n^3+3n^2+3n-Σ(k=1,n)(3k+1))/3 になっちゃって Σの中が展開されないんですけど、これを展開して Σk が s(1,n)であると maximaに認識してもらって
展開する方法ってありますでしょうか
ものすごく昔にmathematicaにやらせたときは、求められた記憶があるんですが…
わかる方いらっしゃいましたら、よろしくお願いします。


29 :
なんか ひどいので直してもう一度><
えっと累乗和なんですけど、
Bin(n,r):=n!/(r!*(n-r)!);
s(p,n):=((n+1)^(p+1)-1-sum(sum(Bin(p+1,a)*k^a,a,0,p-1),k,1,n))/(p+1);
とすると、s(0,n) = n , s(1,n) = n(n+1)/2 までは求まるんだけど、
s(2,n)が (n^3+3n^2+3n-Σ(k=1,n)(3k+1))/3 になっちゃって Σkの部分が展開されないんですけど、これを展開して Σk が s(1,n)であると maximaに認識してもらって 展開される方法ってありますでしょうか
ものすごく昔にmathematicaにやらせたときは、求められた記憶があるんですが…
わかる方いらっしゃいましたら、よろしくお願いします。
yacasでやってみたら、 s(0.n)で、なぜか後半部分に p=0が代入されずに残っちゃいました><

30 :
お使いのプログラムでは、
Σ[k=1,n] 1 =n
Σ[k=1,n] k =n(n+1)/2
Σ[k=1,n] k^2 =n(n+1)(2n+1)/6
が求められるのでしょうか?
記述を見ると、おそらく、それぞれ、
sum(1,k,1,n) sum(k,k,1,n) sum(k^2,k,1,n)
と、入力するとおもいます。

31 :
>>30
回答ありがとうございます えっと 値を求めたいんじゃなくて
Σ[k=1,n] 1 = n で表される 式そのものを求めたいんですよ。でこれで求まるはずなんですが
>>29のようなわけでして。

32 :
蛇足 大昔10年くらい前に mathematicaで 同様の式で うちのPCでやったら 
(とうじはアカデミックパックをもってて使えたもので)
たしか7乗くらいまではなんとか数時間で答えが出て 8乗くらいでギブアップだったかと
またやってみたくて、つかえる処理環境当たり出したんですよ。

33 :
ああ Σなしで n だけで表される式って言えばいいんですかね。

34 :
いま、思った通りの動作をしてくれないのですよね?
それで原因を特定するために、チェックをして欲しいと書いたのです。
例えば、お使いの処理系がs(3,n)をnだけの式として表示されるためには、
Σ[k=1,n] k^3 を、きちんと (n(2n+1)/2)^2 と表示させる能力を持っている
必要があります。
その基本能力を有していますか? と尋ねているのです。
それを持っているのに、思い通りの動作をしないというのであれば、別のところに原因がある
はずですが、まずは、その「基本能力」の有無をチェックして欲しいと書いたのです。

35 :
あぁ...、訂正
×:Σ[k=1,n] k^3 を、きちんと (n(2n+1)/2)^2 と表示させる能力を持っている
○:Σ[k=1,n] k^3 を、きちんと (n(n+1)/2)^2 と表示させる能力を持っている

36 :
http://up3.viploader.net/ippan/src/vlippan179716.jpg でわかりますかね
wxMaxima 0.7.8
Maxima ver 5.23.0 っつーことらしいんですが

37 :
s(0,n)、s(1,n)のときでは、sumの実質的な働きを検証できません。なぜなら、
p=0の時は、内側のsumはsum(Bin(1,a)*k^a,a,0,-1)と、0から-1までの加算なので、何も行わず0となるでしょう。
外側のsumも何も行わずはずれ、((n+1)^(p+1)-1)/(p+1)に、p=0が入った、((n+1)^1-1)/1=nが表示されたのです。
p=1の時は、sum(Bin(2,a)*k^a,a,0,0)なので、0から0までの加算つまり、0の時の値そのものなので、
一端Bin(2,0)*k^0となり、1になります。
そして、外側のsumは、sum(1,k,1,n)となりますが、sumのインデックス変数kと無関係な量の加算なので、
sum関数の特殊処理として、(被和算関数)×(インデックス数)が行われ、1*nから、nとなり、
((n+1)^(1+1)-n-1)/(1+1)=((n+1)^2-n-1)/2となったと想像できるのです。
そして、p=2の時、内側のsumは、sum(Bin(3,a)*k^a,a,0,1)です。つまり、Bin(3,0)+Bin(3,1)*k=3k+1です。
これが、sumが本来の仕事を初めてですが、これはできて当然です。sumのインデックス変数に文字は
含まれてなく、展開しただけだからです。
そして、外側のsumはsum(3k+1,k,1,n)となりますが、文字nがあるため、計算されなかったのです。
つまり、お使いの処理系では、sum(k,k,1,n)=n(n+1)/2と処理する能力が無いのではと考えられるのです。
だから、最初から、言っているではありませんか。
sum(1,k,1,n)
sum(k,k,1,n)
sum(k^2,k,1,n)
これらを入力してみてください。そして、その結果をお知らせ下さい、と。上の疑いをはっきりさせるためです。

38 :
おじゃましましたまたきますw

39 :
ちなみに mathematicaのギブアップというのは 表現が悪くて2日くらい回して終わらなかったので私がやめました。
勝手な想像になるかも知れなせんが、計算量から見て、「一つ手前のべきの累乗和の式をすでに持っている」のではなく
>>29でいったように 一つ手前のべきが出る式からまた再帰的に演算に入っていたと判断したのですが、
その判断が正しかったかは、いまは済みません検証できません。それ以上は私の頭がわるいようです。
いつか機会がありましたらまたきます。

40 :
>>38
大変失礼です 「w」はミスタッチです 謹んでお詫び申し上げます

41 :
あと、古い記憶なのでなにがしかのまちがいもあるかもしれません。
すくなくとも、出来る出来ないみたいなことで 文句を言いにきたとかではないです

42 :
MATHEMATICA なら すなおに>>36をうちこむと
s(100,n)=1/101(1-2535301200456458802993406410650n +(1+n)^101)
になりますね
MAPLE、Maxima は カンがにぶってよくわからんけど

43 :
s(100,n)=1/101(ー1-2535301200456458802993406410650n +(1+n)^101) ダヨ

44 :
内側のsumと外側のsumを入れ替え、sum(k^a,k,1,n)をs(a)に置き換えると(再帰的に定義)、
s[p_]:=s[p]=Simplify[((n+1)^(p+1)-1-Sum[Binomial[p+1,a] s[a],{a,0,p-1}])/(p+1)]
となります。
関数Simplifyは、適当に括弧をはずし、適当に因数分解してくれるような感じの関数です。
何度も呼び出す可能性がある場合は、メモリに記憶させるとよく、途中に、“=s[p]”を入れておきます。
これで、s[100]を計算させると、
(-94598037819122125295227433069493721872702841533066936133385696204311395415197247711*n)/33330
+ 18674771685049011296614057325260991542019103825338734064995339343748060441015725*n^3
- (16293234618989521508515025064456465992824384487957638029599182473343901462949018943*n^5)/442
(中略)
(43232541100*n^91)/3 - 66698170*n^93 + 298760*n^95 - (2695*n^97)/2 + (25*n^99)/3 + n^100/2 + n^101/101
となりました。上の定義式が、希望されているものなのではないでしょうか?
以上、Mathematicaでの書式です。適当に記述をmaximaに変換してお試し下さい。

45 :
初の夫ってことは 次の夫もいるのかw

46 :
あ、誤爆してた すんません
>>44 わざわざありがとうございます そういうことだと思いまする
精読するのに ちょっと不足している知識があるようなんで ガンバつて読んでみますありがとうございます。


47 :
柳下浩紀 建部賞

48 :
>>29 nusum(k^2,k,1,n);
sum,の代わりにnusumを使えば済む話だと思うがどうか

49 :
ド素人な俺が来ましたよ。
lbfgsの第一引数FOMは、ev(FOM, x:1)が実数になるものを用意する、
そこまではわかりましたが、
ev(FOM)とやったときにエラーやFconvertを返したりするFOMがまずい理由がわかりません。
具体的にはFOMがrkを含んでいると軽くます。
curve : 'rk (..aが未束縛...
fom() := block([t], t: ev(curve), sum(...
このときev(fom())はFconvertを返します。おそらくこのために、
libfgs(fom(). [a], [1], ...
がZero divisorで失敗します。
ここまで来るのにも、Maximaの遅延評価の黒魔術の片鱗に触れましたが、
もっと深くハマらないとならんのでしょうか。

50 :
Maximaの勉強していたけど、商用CASの挙動も知りたくなって、
TI-89 Titaniumを買ってみた。
機能的にはMaximaのほうが上なのだろうけど、
CASでは何が出来るべきなのか?という所を理解するのに、
商品として販売されていた実績があるものを買ってみた。
(Mathematicaも、せめてphotoshopくらいの価格だったら良いのに)
その関係で、Maxima以外にもCASの選択肢があることに気付いた。
Debug4x HP 48/49 SDK 2.2 Build 153
http://www.hpcalc.org/hp49/pc/programming/debug4x_b153.exe
HPのCAS電卓HP50gのエミュレータが含まれている。
商用利用は不可らしいけど、無料で使えて販売されている実績のあるCAS。
(エミュレータで遊んでいるうちに実機も衝動買いしてしまったorz)
Giac/Xcas
http://www-fourier.ujf-grenoble.fr/~parisse/giac.html
もフリーのCAS。
日本語のドキュメントが無いけど、HP電卓のCAS開発者らしい。

51 :
これは計算できないのでしょうか?
ave:sum(x[i], i, 1, n)/n;
sqave:sum(x[i]^2, i, 1, n)/n;
var:sum((x[i]-ave)^2,i,1,n)/n;
var-(sqave-ave^2);
nを決めてratsimpしたらゼロになりましたが、
n未定のままゼロになるようにしたいときは、どうすればいいのでしょう?

52 :
二項定理も同じふるまい。
(x+y)^n-sum(binomial(n,i)*(x^i)*(y^(n-i)),i,0,n);

53 :
>>52
xcasでは、nが未定のままでも
(x+y)^n-sum(((n!)/((k!)*(n-k)!))*(x^k)*(y^(n-k)),k,0,n)
が0になった。
CASが二項定理を知っているかどうかだけの違い?

54 :
>>51は、xcasでもsimplify出来なかった。

55 :
>>51
これで望んだ結果が出ました。
declare(sum,additive);
sd:expand(sum((x[i]-ave)^2,i,1,n)/n);
subst(sum(x[i], i, 1, n)/n,ave,sd);

56 :
これもうまくいかないです。
(%i1) is(a[i]^2>=0);
(%o1) true
(%i2) is(sum(a[i]^2,i,1,n)>=0);
(%o2) unknown
(%i3) n:6;
(%o3) 6
(%i4) is(sum(a[i]^2,i,1,n)>=0);
(%o4) true

57 :
Maximaってマスマティカからの乗換えでも十分使える性能ある?

58 :
これも知らないって。
assume(a^2>=b^2);
assume(b>=0);
is(abs(a)>=b);
教科書の証明の中では、自明であるかのように使われているのに。

59 :
assumeのヘルプにもあんまり推論昨日は強くないと書かれてたような気がしたが

60 :
>>59
無理かなという気もしていた。
そもそも、どの問題もderive(TI-89のCAS)では歯が立たなかったし。
(高校レベルの範囲であるのは間違いないのですが。)
『はじめてのMaxima』のネット公開版は書籍版の2倍近くに増えていて、
述語論理とか数学基礎論の話題も含まれるようになっていたので、
読んでみるとこのあたりの事情にも理解が深まるかもしれないですね。
TI-89は50ページほどの取扱説明書を読めば、使い方も限界も把握できる感じですが、
Maximaは1000ページくらいの本を読んでも、何が可能で何が不可能かよく分からない感じです。

61 :
>何が可能で何が不可能かよく分からない感じです。
分かってる人いるのか?w

62 :
>>61
それは、ゲーデルの不完全性定理みたいなもの?

63 :
これもだめだ。
diff(%e^x,x,n)
書店でmathematicaの本を立ち読みしたら、sumの使用例では項数が固定になっていた。
CASは任意の自然数nについての答えを出すのが苦手なのかな。

64 :
>>63
n
d x
--- (%e )
n
dx
って出るぞ?

65 :
>>64
x
%e
と出て欲しい。
exp(x)を何階微分してもexp(x)になるのだから。

66 :
>>65 数式処理ってそういう先回りした答えを出すものなのか?
ちなみにmathematicaでもn回微分と表示される
探せばそういう簡単化のオプションがあるのかもしれない

67 :
>>66
Mathematicaでも出来ないと言われるとホッとしてしまうorz
しかし、これも記号処理だから出来て欲しいとは思う。
教科書見ると普通に
a[1]*b[1]+a[2]*b[2]+...+a[n]*b[n]
なんて式が出てくる。
nを決めないと答えが出てこないのでは、CASの面白みが半減する。

68 :
級数解を閉形式にしたいってことなのか?
なんか言ってることに違和感を感じるんだが

69 :
オープンソースだし
出来ないなら君が実装すればいい

70 :
>>68
そこまで抽象的な理解はしてないです。
diff(%e^x,x,1)
diff(%e^x,x,2)
diff(%e^x,x,3)
と続くのに
diff(%e^x,x,n)
だと答えが出ない。
また、高校レベルの統計の公式
E((x-E(x))^2)=E(x^2)-E(x)^2
も、ユーザーがサンプル数を決めないと
成り立つか成り立たないか判定できないところが不思議だと思うわけです。
前提を一つ加えてスンナリ判定できるようになるなら面白いのですが。
(仮に自明でないとすれば、欠けてる前提は何なのでしょう)

71 :
>>70
なんというか数式処理が出す形式的な回答に満足がいかない感じなのか
diff(%e^x,x,n) の評価が (d^n/dx^n)exp(x) というのは間違っていないし、
数式を処理する手順の表現として合っていると俺は思うんだが。
declare(n, integer)とかしても駄目みたいだな

72 :
maxima
ttp://news.dengeki.com/elem/000/000/345/345986/

73 :
>>71
もちろん、>>70で挙げたのも「形式的」な処理だとは思うのです。
しかし、xは式でOKなのに、nは数値でなければならない。
行列やベクトルの各要素は式でもOKだけど、要素数と次元数は数値でなければならない。
級数や数列の各項は式でもOKだけど、項数は数値でなければならない。
教科書の記述では上記のnも式であることが多いのに、
CASでは数値であることを要求されるのが不思議です。
Mathematicaもそうであるようですけど、学生など、これで不自由を感じないものなのか。
diff(%e^x,x,1))=%e^x
diff(%e^x,x,n-1)=%e^x
から、
diff(%e^x,x,n)=%e^x
が求まるのでも面白いですね。
diff(%e^x,x,1)=%e^x
は知識としてmaximaにコーディングされているだけだと思うのですが、それが
diff(%e^x,x,n)=%e^x
と実装されていれば良かったのか(再定義可能なのかも知れませんが)。
それとも
diff(%e^x,x,1)=%e^x
diff(%e^x,x,n)=%e^x
の2つの知識は、数学の専門家にとってはもう全然別の話題なのか。

74 :
>diff(%e^x,x,1)=%e^x
>diff(%e^x,x,n)=%e^x
>の2つの知識は、数学の専門家にとってはもう全然別の話題なのか。
1段目は定義で2段目は1段目から数学的帰納法によって導かれる定理じゃないの?
defruleとか使ってみたらどうなんだろ

75 :
>>74
defrule(rec,recdiff(%e^x,x,n),%e^x);
apply1(recdiff(%e^x,x,n),rec);
とやると、一応OKだったんですけど、
今度は、
apply1(recdiff(%e^x,x,1),rec);
が置換されない。
まだまだMaximaの勉強をしなくてはならないと思いました。
> 1段目は定義で2段目は1段目から数学的帰納法によって導かれる定理じゃないの?
前者と後者は「同値」で、どちらを公理として採用しても残る一方は導出できますね。
でも一般的なCASはその導出を行わない。「自明」ではない。
「同値」と「自明」の違いは、単に直感的でものではなく、
計算理論に基づく厳密なものなのかも。

76 :
1+4と2+3は同値だけどどっちを公理にすればいいですか?w
maximaの勉強じゃなくて用語の定義を勉強しなおせよw

77 :
>>76
自分が「同値」と「自明」の違いを整理しきれていないのはその通りだけど、
1+4や2+3が「命題」になるような体系も考え得るものなのですかね?

78 :
できあいの関数はなさそうなので
n要素のm番目が1の単位ベクトルを作る関数を書こうとしてるのですが
/* これの中身が評価されれば求まる */
f(n,m):=makelist(x=m,x,0,n-1);
あと少しだと思うのですがうまくいきません
どうすればいいでしょうか

79 :
自己解決。うまくはないけど行列経由で
g(n,m):=substpart("[",genmatrix(lambda([x,y],if y=m then 1 else 0),1,n),0)[1];
置換群の行列表現で計算するプログラムを書いたんですが
もう一箇所つまづいたのがリストのリストから行列を構成する所
buildq+spliceでうまくいきます。参考まで

80 :
こうとかかね
f( n, m ) := makelist( (if i - 1 = m then 1 else 0), i, 1, n )
part が 1 からだから添え字 1 からの方が相性は良いかもしれないけど

81 :
なんというタイミングの悪さ
80は忘れてくれ

82 :
先頭が1で残り要素0の配列を作って、それを右にm-1回転させたりとか。
数学板で言うとバカにされそうなやり方w

83 :
>>80
いやいや、こちらのほうが効率は良いので助かります。ありがとう。

84 :
この計算は、nを定めなくても実行してくれますな。
sum(1,i,1,n)
sum(1/n,i,1,n)
しかし、
(%i1) is(product(i,i,1,n)=n!),n=10;
(%o1) true
(%i2) is(product(i,i,1,n)=n!);
(%o2) false
わからないならUnknownと表示すべきなのに……

85 :
1,2,3,...
が自然数であるとして、
自然数のいずれでもありうるとされる文字"n"は自然数ではないというのが、問題なのかな。
a[1]*x+a[0]
a[2]*x^2+a[1]*x+a[0]
は多項式に該当するけど、
a[n]*x^n+a[n-1]*x^(n-1)+...+a[1]*x+a[0]
は多項式ではないみたいな。

86 :
質問です。
方程式60*2^p=50*2^q(p,q are integer)をmaximaに入力させたいのですが、
p,qの最小の(p*qが)整数解を得るにはどのような入力をするべきでしょうか。

87 :
高校レベルの定理が網羅されていないような気がする。
declare(a,real)$
declare(b,real)$
declare(c,real)$
declare(x,real)$
assume(equal(a*x^2+b*x+c,0))$
is(b^2-4*a*c>=0);
> (%o6) unknown

88 :
>>87
Maximaは本当に推論は弱い(というか実装されていない)と思います。代わりに計算は強いので、
solve(a*x^2+b*x+c=0,x);
[x = -(sqrt(b^2-4*a*c)+b)/(2*a),x = (sqrt(b^2-4*a*c)-b)/(2*a)]
と答えてくれます。
ちなみにassume()って途中でpositiveかとか聞かれるのを抑制するのにはうまく使えるんです。

89 :
>>88
どうもありがとう。
もしかしてMaximaが自分の用途に向いていないのでしょうか?
当初は数理ファイナンスの教科書の記述を辿る予定で、
そのために必要な操作を『はじめてのMaxima』で摂取するつもりだったのですが、
正直歯が立たないです。
その基礎知識を摂取するつもりで手を付けた群論の教科書も、
最初の定理の証明をMaximaにやらせるにはどうすればよいのか途方に暮れる始末。
こういう用途にはprologかMLなのでしょうか?

90 :
実用的な定理証明システムなんてまだ無いので、定理の証明をMaximaにやらせるのは無理です。
数式変形ならMaximaでもできますから、まずは簡単な問題をMaximaで解いてみると良いです。
例えば、86の問題。
p,qの不定方程式60*2^p=50*2^q(p,q are integer)
をMaximaで解いてみると、どうなります?(一目瞭然ではありますが)。

91 :
maxima,mathematicaは代数・記号処理ですから、gnur R言語の方がいいでしょうね。
もう少し「数学ソフト」と言うのはどういうのがあるかを調べた方がいいですよ。

92 :
定理自動証明とかならCoq, Agdaあたりかな?少し毛色が違うけど

93 :
>>90
> 実用的な定理証明システムなんてまだ無いので、定理の証明をMaximaにやらせるのは無理です。
無理ですか……
ポリアとかサイモンとか、結構古いんですけど。
やっぱり、サイモン先生はうそつき?
> p,qの不定方程式60*2^p=50*2^q(p,q are integer)
> をMaximaで解いてみると、どうなります?(一目瞭然ではありますが)。
q:a+p$
solve(60*2^p=50*2^q,a)$
rhs(%[1])$
radcan(%);
integerp(%);
> (%o15) false
p-qは整数でないので、pとqが同時に整数とはなりえない。
もうちょっとコンピュータ任せに出来れば面白いのですが。

94 :
>>91
Rは数値処理ですね。(Maximaより先にR/APLのほうに触れています。)
(∀x (Px → Qx)) ∧ Pa → Qa
だって記号処理ですし、
everyやsomeという関数があったり、
『はじめてのMaxima』に外延/内包という記述もあったりで、期待はしていたのですが……

95 :
>>92
具体的なソフトウェア名の提示ありがとうございます。
ドキュメントが英語なのは難ですが、英語の情報だけから目的にあったソフトウェアを探すのはもっと大変だと思います。
さすが、数学板住民ですね。

96 :
>>94
私もRは数値処理って思ったんだけど、91さんが言いたいのは
数理ファイナンスならRの方が役に立つ、ということかも。違ってたら
ご指摘を。
93でやったような数式計算ならばMaximaは得意だと思うんです。数理
ファイナンスの数学の式計算(偏微分方程式のオンパレードみたいな
やつですよね)には使えないのかなあ。
>>92
CoqやAgda、普通の証明(ってなんだ?)にも使えそうでしょうか。
時代は進歩しているんですね。

97 :
>>96
> 数理ファイナンスならRの方が役に立つ、ということかも。違ってたら
なるほど、そういう意味でしたか。
教科書は記号で書かれていても、
実務の世界ではモンテカルロシミュレーションが幅を利かせるらしいですね。
> ファイナンスの数学の式計算(偏微分方程式のオンパレードみたいな
それが放送大学の教科書では、ベクトルと行列なんですよ。
著者がへそ曲がりなのかも知れません。
ただ教科書は、大きさ未定義の数列、ベクトル、行列について記載されているので、
イラついていました。
>>87の定理も、教科書中でコーシー=シュワルツの不等式を証明するのに使われていたものです。

98 :
>>92
CoqはOCaml、AgdaはHaskellで記述されているそうですね。
手元にSMLの入門書があるので、ML→Coqの順に攻略してみようかな。
あと、ちょっと気がついたのですが、
「新しい数学」の提唱者のケメニーとBASIC言語の開発者のケメニーって同一人物ですよね?

99 :
>>98
> 「新しい数学」の提唱者のケメニーとBASIC言語の開発者のケメニーって同一人物ですよね?
検索してみると、このケメニーがジョン・マッカーシーを助教授としてダートマス大学に招いて、
LISPの開発はマッカーシーがダートマス大学の助教授だった頃に行われたとか。
すごく偉い人みたい。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ