1 名前:132人目の素数さん mailto:sage [2010/10/17(日) 09:09:43 ] フリーの数式処理システム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 名前:132人目の素数さん mailto:sage [2010/10/17(日) 09:15:29 ] ■前スレ 【数式処理システム】 Maxima 【Common Lisp】 kamome.2ch.net/test/read.cgi/math/1220340695 ttp://www.unkar.org/read/kamome.2ch.net/math/1220340695 (ミラー) ■過去スレ MAXIMA science6.2ch.net/test/read.cgi/sim/1011102458/ ttp://www.unkar.org/read/science6.2ch.net/sim/1011102458 (ミラー) Maxima part2 science6.2ch.net/test/read.cgi/sim/1218342679/ ttp://www.unkar.org/read/science6.2ch.net/sim/1218342679 (ミラー) 前スレは>>1 に入れておくべきだったか? まぁいいか。
3 名前:132人目の素数さん mailto:sage [2010/10/17(日) 09:22:54 ] 初代スレのコテハン "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 名前:132人目の素数さん mailto:sage [2010/10/18(月) 07:40:42 ] >>1 乙です。シミュ版のスレも落ちてたので現行唯一のスレ、かな? wxMaximaを使う際は「Shift+Enter」で式を評価するというのは FAQとしてテンプレに書いてあっても良いかも
5 名前:1 mailto:sage [2010/10/18(月) 11:09:40 ] >>4 Windows版はDEPの対象から外すのもFAQかも
6 名前:132人目の素数さん mailto:sage [2010/10/18(月) 20:58:45 ] XPを使ってるから気づかなかったけど バージョンアップの際、これは絶対ひっかかりそう 他の言語等に比べてpdf情報が多いのは数式が綺麗に表示出来るからかな よく知らないけど、Webでの数式表示って未だ制限が多いのかなぁ
7 名前:132人目の素数さん mailto:sage [2010/10/20(水) 21:30:10 ] FirefoxにPopup ALT Attributes入れるの忘れてた >>6 IEはMathMLに対応してないですね(MathPlayerを入れればいいのだけど)。 数式を沢山使ってるWikipediaでも、画像にレンダリングしたものを返してきますし、 普及はまだ先かも。
8 名前:132人目の素数さん mailto:sage [2010/10/21(木) 19:28:59 ] 調べてみたら、Maxima→MathMLは問題なさそう(直/tex経由etc)なので、対応が待ち遠しいですね 久しぶりにVerUpしたらgensymが使えるようになっててこんなの作ってみた genmat(a,b):=genmatrix(lambda([x,y],gensym(10*x+y)),a,b); 主に自習用にmaximaを使っているので g以外の文字をくっつけたりアルファベット順に文字を出力させたり 色々カスタマイズしたいがgensymのインタフェースが中途半端なのが悲しい Lisp層わからないし
9 名前:132人目の素数さん mailto:sage [2010/10/23(土) 18:31:56 ] 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 名前:132人目の素数さん mailto:sage [2010/10/24(日) 11:25:14 ] 他の処理系が何か(OS/別のlisp処理系) 試したいのは何か(速度/安定度) よくわからないけど、実際に試してみればいいのでは? それより古い記事だけど、速度は通常のmaximaよりは遅いって書いてる ttp://abcl-dev.blogspot.com/2009/11/maximal-performance.html
11 名前:132人目の素数さん [2010/10/26(火) 23:46:48 ] 猫に小判、まで読んだ。
12 名前:132人目の素数さん [2010/11/01(月) 18:16:10 ] 猫が寝転んだ。
13 名前:132人目の素数さん [2010/11/09(火) 23:59:44 ] 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 名前:猫は偉そう ◆MuKUnGPXAY mailto:age [2010/11/10(水) 00:00:40 ] >>11 猫
15 名前:132人目の素数さん mailto:sage [2010/11/10(水) 06:37:26 ] >>13 とりあえず絶対パスにして、 stringout("d:/test",input); とかで回避するとか。 WindowsでwxMaximaをショートカットから起動すると、作業フォルダーが Maximaのインストールディレクトリになるみたいですね。 あんまりうれしくない…。
16 名前:132人目の素数さん [2010/11/10(水) 09:55:18 ] >>15 できました!ありがとうございます!! なんで絶対パスじゃないと通らないのかは腑に落ちませんがとりあえずこれでやっていきます!
17 名前:132人目の素数さん mailto:sage [2010/11/10(水) 10:02:04 ] >>16 C:/Program Files (x86)/Maxima-5.22.1/wxmaxima/ が書込み禁止になってるからじゃないの?
18 名前:132人目の素数さん mailto:sage [2010/11/19(金) 00:43:36 ] sage
19 名前:132人目の素数さん [2010/11/23(火) 11:09:32 ] 不具合と回避策の報告をしておく。 現象:以前は動いていた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 名前:132人目の素数さん mailto:sage [2010/12/01(水) 22:38:06 ] sage
21 名前:132人目の素数さん mailto:sage [2010/12/02(木) 17:18:18 ] mac osXのclisp版で使っているのですが gnuplotで出力したグラフをクリップボードに保存するのにはどうすれば良いですか? winではボタンがあったのですが・・・
22 名前:132人目の素数さん [2010/12/11(土) 20:14:24 ] >>21 gnuplotからcopy to clipboardってコンテキストメニューでてこないの? 最近知ったがdraw_fileが5.20から追加されてたのな 未だに5.17使ってるけど新しいの入れないと
23 名前:132人目の素数さん mailto:sage [2010/12/15(水) 23:16:59 ] WindowsでGCL版を使ってるので外してるかも知れませんが >>21 OSXならsbcl版の方が速いのでは?
24 名前:132人目の素数さん mailto:sage [2010/12/17(金) 21:41:45 ] >>23 > OSXならsbcl版の方が速いのでは? 本題は速い遅いではないでショ
25 名前:132人目の素数さん mailto:sage [2011/01/03(月) 19:34:19 ] >>24 もしかして総北ネタだったのか?気付くの遅くなってスマソ
26 名前:132人目の素数さん [2011/01/07(金) 02:05:33 ] factorでたまに出てくるbpvって何だ?
27 名前:132人目の素数さん mailto:sage [2011/01/09(日) 17:39:16 ] 【R言語】統計解析フリーソフトR 第4章【GNU R】 kamome.2ch.net/test/read.cgi/math/1294561909/
28 名前:132人目の素数さん [2011/01/12(水) 13:41:05 ] 素人がここで聞いていいのかですがおじゃまします。 えっと累乗和なんですけど、 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 名前:132人目の素数さん [2011/01/12(水) 18:26:21 ] なんか ひどいので直してもう一度>< えっと累乗和なんですけど、 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 名前:132人目の素数さん mailto:sage [2011/01/12(水) 19:12:15 ] お使いのプログラムでは、 Σ[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 名前:132人目の素数さん [2011/01/12(水) 20:29:22 ] >>30 回答ありがとうございます えっと 値を求めたいんじゃなくて Σ[k=1,n] 1 = n で表される 式そのものを求めたいんですよ。でこれで求まるはずなんですが >>29 のようなわけでして。
32 名前:132人目の素数さん [2011/01/12(水) 20:33:55 ] 蛇足 大昔10年くらい前に mathematicaで 同様の式で うちのPCでやったら (とうじはアカデミックパックをもってて使えたもので) たしか7乗くらいまではなんとか数時間で答えが出て 8乗くらいでギブアップだったかと またやってみたくて、つかえる処理環境当たり出したんですよ。
33 名前:132人目の素数さん [2011/01/12(水) 20:36:10 ] ああ Σなしで n だけで表される式って言えばいいんですかね。
34 名前:132人目の素数さん mailto:sage [2011/01/12(水) 20:57:02 ] いま、思った通りの動作をしてくれないのですよね? それで原因を特定するために、チェックをして欲しいと書いたのです。 例えば、お使いの処理系がs(3,n)をnだけの式として表示されるためには、 Σ[k=1,n] k^3 を、きちんと (n(2n+1)/2)^2 と表示させる能力を持っている 必要があります。 その基本能力を有していますか? と尋ねているのです。 それを持っているのに、思い通りの動作をしないというのであれば、別のところに原因がある はずですが、まずは、その「基本能力」の有無をチェックして欲しいと書いたのです。
35 名前:132人目の素数さん mailto:sage [2011/01/12(水) 21:29:19 ] あぁ...、訂正 ×:Σ[k=1,n] k^3 を、きちんと (n(2n+1)/2)^2 と表示させる能力を持っている ○:Σ[k=1,n] k^3 を、きちんと (n(n+1)/2)^2 と表示させる能力を持っている
36 名前:132人目の素数さん [2011/01/13(木) 03:49:05 ] up3.viploader.net/ippan/src/vlippan179716.jpg でわかりますかね wxMaxima 0.7.8 Maxima ver 5.23.0 っつーことらしいんですが
37 名前:132人目の素数さん mailto:sage [2011/01/13(木) 11:29:02 ] 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 名前:132人目の素数さん [2011/01/13(木) 11:45:21 ] おじゃましましたまたきますw
39 名前:132人目の素数さん [2011/01/13(木) 12:09:22 ] ちなみに mathematicaのギブアップというのは 表現が悪くて2日くらい回して終わらなかったので私がやめました。 勝手な想像になるかも知れなせんが、計算量から見て、「一つ手前のべきの累乗和の式をすでに持っている」のではなく >>29 でいったように 一つ手前のべきが出る式からまた再帰的に演算に入っていたと判断したのですが、 その判断が正しかったかは、いまは済みません検証できません。それ以上は私の頭がわるいようです。 いつか機会がありましたらまたきます。
40 名前:132人目の素数さん [2011/01/13(木) 12:45:00 ] >>38 大変失礼です 「w」はミスタッチです 謹んでお詫び申し上げます
41 名前:132人目の素数さん [2011/01/13(木) 13:09:45 ] あと、古い記憶なのでなにがしかのまちがいもあるかもしれません。 すくなくとも、出来る出来ないみたいなことで 文句を言いにきたとかではないです
42 名前:仙石60+x mailto:しらんぞ [2011/01/13(木) 16:17:25 ] MATHEMATICA なら すなおに>>36 をうちこむと s(100,n)=1/101(1-2535301200456458802993406410650n +(1+n)^101) になりますね MAPLE、Maxima は カンがにぶってよくわからんけど
43 名前:132人目の素数さん [2011/01/13(木) 16:20:28 ] s(100,n)=1/101(ー1-2535301200456458802993406410650n +(1+n)^101) ダヨ
44 名前:132人目の素数さん mailto:sage [2011/01/13(木) 19:59:07 ] 内側の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 名前:132人目の素数さん [2011/01/14(金) 02:39:15 ] 初の夫ってことは 次の夫もいるのかw
46 名前:132人目の素数さん [2011/01/14(金) 16:43:51 ] あ、誤爆してた すんません >>44 わざわざありがとうございます そういうことだと思いまする 精読するのに ちょっと不足している知識があるようなんで ガンバつて読んでみますありがとうございます。
47 名前:132人目の素数さん mailto:sage [2011/01/21(金) 20:45:05 ] 柳下浩紀 建部賞
48 名前:132人目の素数さん mailto:sage [2011/01/23(日) 01:55:59 ] >>29 nusum(k^2,k,1,n); sum,の代わりにnusumを使えば済む話だと思うがどうか
49 名前:132人目の素数さん mailto:sage [2011/01/24(月) 18:23:15 ] ド素人な俺が来ましたよ。 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 名前:132人目の素数さん mailto:sage [2011/01/30(日) 11:46:20 ] Maximaの勉強していたけど、商用CASの挙動も知りたくなって、 TI-89 Titaniumを買ってみた。 機能的にはMaximaのほうが上なのだろうけど、 CASでは何が出来るべきなのか?という所を理解するのに、 商品として販売されていた実績があるものを買ってみた。 (Mathematicaも、せめてphotoshopくらいの価格だったら良いのに) その関係で、Maxima以外にもCASの選択肢があることに気付いた。 Debug4x HP 48/49 SDK 2.2 Build 153 www.hpcalc.org/hp49/pc/programming/debug4x_b153.exe HPのCAS電卓HP50gのエミュレータが含まれている。 商用利用は不可らしいけど、無料で使えて販売されている実績のあるCAS。 (エミュレータで遊んでいるうちに実機も衝動買いしてしまったorz) Giac/Xcas www-fourier.ujf-grenoble.fr/~parisse/giac.html もフリーのCAS。 日本語のドキュメントが無いけど、HP電卓のCAS開発者らしい。
51 名前:132人目の素数さん mailto:sage [2011/02/11(金) 17:35:14 ] これは計算できないのでしょうか? 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 名前:132人目の素数さん mailto:sage [2011/02/11(金) 20:49:57 ] 二項定理も同じふるまい。 (x+y)^n-sum(binomial(n,i)*(x^i)*(y^(n-i)),i,0,n);
53 名前:51=52 mailto:sage [2011/02/11(金) 23:35:21 ] >>52 xcasでは、nが未定のままでも (x+y)^n-sum(((n!)/((k!)*(n-k)!))*(x^k)*(y^(n-k)),k,0,n) が0になった。 CASが二項定理を知っているかどうかだけの違い?
54 名前:132人目の素数さん mailto:sage [2011/02/12(土) 00:11:08 ] >>51 は、xcasでもsimplify出来なかった。
55 名前:51 mailto:sage [2011/02/12(土) 23:21:27 ] >>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 名前:132人目の素数さん mailto:sage [2011/02/13(日) 14:22:04 ] これもうまくいかないです。 (%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 名前:132人目の素数さん [2011/02/13(日) 14:22:54 ] Maximaってマスマティカからの乗換えでも十分使える性能ある?
58 名前:132人目の素数さん mailto:sage [2011/02/13(日) 15:43:49 ] これも知らないって。 assume(a^2>=b^2); assume(b>=0); is(abs(a)>=b); 教科書の証明の中では、自明であるかのように使われているのに。
59 名前:132人目の素数さん mailto:sage [2011/02/15(火) 23:07:43 ] assumeのヘルプにもあんまり推論昨日は強くないと書かれてたような気がしたが
60 名前:132人目の素数さん mailto:sage [2011/02/16(水) 20:17:54 ] >>59 無理かなという気もしていた。 そもそも、どの問題もderive(TI-89のCAS)では歯が立たなかったし。 (高校レベルの範囲であるのは間違いないのですが。) 『はじめてのMaxima』のネット公開版は書籍版の2倍近くに増えていて、 述語論理とか数学基礎論の話題も含まれるようになっていたので、 読んでみるとこのあたりの事情にも理解が深まるかもしれないですね。 TI-89は50ページほどの取扱説明書を読めば、使い方も限界も把握できる感じですが、 Maximaは1000ページくらいの本を読んでも、何が可能で何が不可能かよく分からない感じです。
61 名前:132人目の素数さん mailto:sage [2011/02/17(木) 00:38:52 ] >何が可能で何が不可能かよく分からない感じです。 分かってる人いるのか?w
62 名前:132人目の素数さん mailto:sage [2011/02/18(金) 21:34:34 ] >>61 それは、ゲーデルの不完全性定理みたいなもの?
63 名前:132人目の素数さん mailto:sage [2011/02/19(土) 15:19:04 ] これもだめだ。 diff(%e^x,x,n) 書店でmathematicaの本を立ち読みしたら、sumの使用例では項数が固定になっていた。 CASは任意の自然数nについての答えを出すのが苦手なのかな。
64 名前:132人目の素数さん mailto:sage [2011/02/20(日) 00:05:44.53 ] >>63 n d x --- (%e ) n dx って出るぞ?
65 名前:132人目の素数さん mailto:sage [2011/02/20(日) 00:30:16.91 ] >>64 x %e と出て欲しい。 exp(x)を何階微分してもexp(x)になるのだから。
66 名前:132人目の素数さん mailto:sage [2011/02/20(日) 02:24:25.94 ] >>65 数式処理ってそういう先回りした答えを出すものなのか? ちなみにmathematicaでもn回微分と表示される 探せばそういう簡単化のオプションがあるのかもしれない
67 名前:132人目の素数さん mailto:sage [2011/02/20(日) 09:08:46.49 ] >>66 Mathematicaでも出来ないと言われるとホッとしてしまうorz しかし、これも記号処理だから出来て欲しいとは思う。 教科書見ると普通に a[1]*b[1]+a[2]*b[2]+...+a[n]*b[n] なんて式が出てくる。 nを決めないと答えが出てこないのでは、CASの面白みが半減する。
68 名前:132人目の素数さん mailto:sage [2011/02/20(日) 19:57:01.06 ] 級数解を閉形式にしたいってことなのか? なんか言ってることに違和感を感じるんだが
69 名前:132人目の素数さん mailto:sage [2011/02/20(日) 21:25:25.71 ] オープンソースだし 出来ないなら君が実装すればいい
70 名前:132人目の素数さん mailto:sage [2011/02/20(日) 21:29:34.58 ] >>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 名前:132人目の素数さん mailto:sage [2011/02/22(火) 21:30:33.98 ] >>70 なんというか数式処理が出す形式的な回答に満足がいかない感じなのか diff(%e^x,x,n) の評価が (d^n/dx^n)exp(x) というのは間違っていないし、 数式を処理する手順の表現として合っていると俺は思うんだが。 declare(n, integer)とかしても駄目みたいだな
72 名前:132人目の素数さん mailto:sage [2011/02/23(水) 00:17:14.09 ] maxima ttp://news.dengeki.com/elem/000/000/345/345986/
73 名前:132人目の素数さん mailto:sage [2011/02/23(水) 00:23:50.40 ] >>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 名前:132人目の素数さん mailto:sage [2011/02/23(水) 02:02:33.38 ] >diff(%e^x,x,1)=%e^x >diff(%e^x,x,n)=%e^x >の2つの知識は、数学の専門家にとってはもう全然別の話題なのか。 1段目は定義で2段目は1段目から数学的帰納法によって導かれる定理じゃないの? defruleとか使ってみたらどうなんだろ
75 名前:132人目の素数さん mailto:sage [2011/02/23(水) 21:37:41.47 ] >>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 名前:132人目の素数さん mailto:sage [2011/02/24(木) 00:13:57.67 ] 1+4と2+3は同値だけどどっちを公理にすればいいですか?w maximaの勉強じゃなくて用語の定義を勉強しなおせよw
77 名前:132人目の素数さん mailto:sage [2011/02/24(木) 20:01:31.39 ] >>76 自分が「同値」と「自明」の違いを整理しきれていないのはその通りだけど、 1+4や2+3が「命題」になるような体系も考え得るものなのですかね?
78 名前:132人目の素数さん mailto:sage [2011/03/04(金) 08:03:16.12 ] できあいの関数はなさそうなので n要素のm番目が1の単位ベクトルを作る関数を書こうとしてるのですが /* これの中身が評価されれば求まる */ f(n,m):=makelist(x=m,x,0,n-1); あと少しだと思うのですがうまくいきません どうすればいいでしょうか
79 名前:132人目の素数さん mailto:sage [2011/03/04(金) 20:10:43.18 ] 自己解決。うまくはないけど行列経由で g(n,m):=substpart("[",genmatrix(lambda([x,y],if y=m then 1 else 0),1,n),0)[1]; 置換群の行列表現で計算するプログラムを書いたんですが もう一箇所つまづいたのがリストのリストから行列を構成する所 buildq+spliceでうまくいきます。参考まで
80 名前:132人目の素数さん mailto:sage [2011/03/04(金) 20:20:28.84 ] こうとかかね f( n, m ) := makelist( (if i - 1 = m then 1 else 0), i, 1, n ) part が 1 からだから添え字 1 からの方が相性は良いかもしれないけど
81 名前:80 mailto:sage [2011/03/04(金) 20:25:00.78 ] なんというタイミングの悪さ 80は忘れてくれ
82 名前:132人目の素数さん mailto:sage [2011/03/04(金) 21:06:38.53 ] 先頭が1で残り要素0の配列を作って、それを右にm-1回転させたりとか。 数学板で言うとバカにされそうなやり方w
83 名前:132人目の素数さん mailto:sage [2011/03/04(金) 21:34:13.84 ] >>80 いやいや、こちらのほうが効率は良いので助かります。ありがとう。
84 名前:132人目の素数さん mailto:sage [2011/03/12(土) 20:37:50.70 ] この計算は、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 名前:132人目の素数さん mailto:sage [2011/03/13(日) 17:12:20.93 ] 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 名前:132人目の素数さん mailto:sage [2011/03/14(月) 20:10:20.30 ] 質問です。 方程式60*2^p=50*2^q(p,q are integer)をmaximaに入力させたいのですが、 p,qの最小の(p*qが)整数解を得るにはどのような入力をするべきでしょうか。
87 名前:132人目の素数さん mailto:sage [2011/03/20(日) 15:53:51.94 ] 高校レベルの定理が網羅されていないような気がする。 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 名前:132人目の素数さん [2011/03/22(火) 01:10:52.03 ] >>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 名前:132人目の素数さん mailto:sage [2011/03/22(火) 20:32:08.00 ] >>88 どうもありがとう。 もしかしてMaximaが自分の用途に向いていないのでしょうか? 当初は数理ファイナンスの教科書の記述を辿る予定で、 そのために必要な操作を『はじめてのMaxima』で摂取するつもりだったのですが、 正直歯が立たないです。 その基礎知識を摂取するつもりで手を付けた群論の教科書も、 最初の定理の証明をMaximaにやらせるにはどうすればよいのか途方に暮れる始末。 こういう用途にはprologかMLなのでしょうか?
90 名前:132人目の素数さん [2011/03/22(火) 23:32:21.02 ] 実用的な定理証明システムなんてまだ無いので、定理の証明をMaximaにやらせるのは無理です。 数式変形ならMaximaでもできますから、まずは簡単な問題をMaximaで解いてみると良いです。 例えば、86の問題。 p,qの不定方程式60*2^p=50*2^q(p,q are integer) をMaximaで解いてみると、どうなります?(一目瞭然ではありますが)。
91 名前:132人目の素数さん mailto:sage [2011/03/23(水) 04:12:45.16 ] maxima,mathematicaは代数・記号処理ですから、gnur R言語の方がいいでしょうね。 もう少し「数学ソフト」と言うのはどういうのがあるかを調べた方がいいですよ。
92 名前:132人目の素数さん mailto:sage [2011/03/23(水) 15:48:37.06 ] 定理自動証明とかならCoq, Agdaあたりかな?少し毛色が違うけど
93 名前:132人目の素数さん mailto:sage [2011/03/23(水) 22:30:40.48 ] >>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 名前:132人目の素数さん mailto:sage [2011/03/23(水) 22:55:55.86 ] >>91 Rは数値処理ですね。(Maximaより先にR/APLのほうに触れています。) (∀x (Px → Qx)) ∧ Pa → Qa だって記号処理ですし、 everyやsomeという関数があったり、 『はじめてのMaxima』に外延/内包という記述もあったりで、期待はしていたのですが……
95 名前:132人目の素数さん mailto:sage [2011/03/23(水) 22:59:27.41 ] >>92 具体的なソフトウェア名の提示ありがとうございます。 ドキュメントが英語なのは難ですが、英語の情報だけから目的にあったソフトウェアを探すのはもっと大変だと思います。 さすが、数学板住民ですね。
96 名前:132人目の素数さん [2011/03/24(木) 00:47:34.61 ] >>94 私もRは数値処理って思ったんだけど、91さんが言いたいのは 数理ファイナンスならRの方が役に立つ、ということかも。違ってたら ご指摘を。 93でやったような数式計算ならばMaximaは得意だと思うんです。数理 ファイナンスの数学の式計算(偏微分方程式のオンパレードみたいな やつですよね)には使えないのかなあ。 >>92 CoqやAgda、普通の証明(ってなんだ?)にも使えそうでしょうか。 時代は進歩しているんですね。
97 名前:132人目の素数さん mailto:sage [2011/03/24(木) 20:26:02.40 ] >>96 > 数理ファイナンスならRの方が役に立つ、ということかも。違ってたら なるほど、そういう意味でしたか。 教科書は記号で書かれていても、 実務の世界ではモンテカルロシミュレーションが幅を利かせるらしいですね。 > ファイナンスの数学の式計算(偏微分方程式のオンパレードみたいな それが放送大学の教科書では、ベクトルと行列なんですよ。 著者がへそ曲がりなのかも知れません。 ただ教科書は、大きさ未定義の数列、ベクトル、行列について記載されているので、 イラついていました。 >>87 の定理も、教科書中でコーシー=シュワルツの不等式を証明するのに使われていたものです。
98 名前:132人目の素数さん mailto:sage [2011/04/02(土) 18:00:03.52 ] >>92 CoqはOCaml、AgdaはHaskellで記述されているそうですね。 手元にSMLの入門書があるので、ML→Coqの順に攻略してみようかな。 あと、ちょっと気がついたのですが、 「新しい数学」の提唱者のケメニーとBASIC言語の開発者のケメニーって同一人物ですよね?
99 名前:98 mailto:sage [2011/04/02(土) 21:35:41.58 ] >>98 > 「新しい数学」の提唱者のケメニーとBASIC言語の開発者のケメニーって同一人物ですよね? 検索してみると、このケメニーがジョン・マッカーシーを助教授としてダートマス大学に招いて、 LISPの開発はマッカーシーがダートマス大学の助教授だった頃に行われたとか。 すごく偉い人みたい。
100 名前:132人目の素数さん [2011/04/05(火) 02:08:43.33 ] >>63 diff(exp(x),x,n)が簡約出来ない理由を調べました。comm-new.lispの中の deriv(e)という関数が微分を行う関数群のentry pointです。この中でdiff の第三引数の型をチェックしています。 この型がFIXNUM以外の場合には、名詞形を返す処理をしています。 ちなみにMaximaの機能拡張を使ってこの処理を実装するのは簡単でした。 matchdeclare([a,b],true); tellsimpafter('diff(exp(a),a,b),exp(a)); でお終いです。これをmaxima-init.macにでもかいておけば所望の処理が 行われます。 最後になぜこいつが実装されていないのか、、、想像するに普通は欲張って diff(exp(f(x)),x,n)を実装したくなりませんか?もちろんnが具体的な 数ならばちゃんと微分してくるのですが、変数の場合の一般的な公式が よく分かりません。だからじゃないかな、、。 ちなみにdiff(exp(x),x,n)->exp(x) だけなら自明だし簡単に自分で 実装出来るのでわざわざ組み込まれてない気がします。
101 名前:132人目の素数さん mailto:sage [2011/04/06(水) 17:40:41.88 ] >>100 ありがとうございます。 LISPのプログラムを解読できるなんて、スゴイですね。 > matchdeclare([a,b],true); こっちの記述が、理解できていません。 『はじめてのMaxima』には、a,b部分が項の羅列でtrue部分が述語だとありました。 記述は簡単でも、概念が自分の理解を超えて抽象的なようです。 > diff(exp(f(x)),x,n)を実装したくなりませんか?もちろんnが具体的な 単純に使う立場として、 diff(%e^(k*x),x,n); を入力してしまいました。 一般性を求め始めると切りがないのですね。 今はMLの教科書を読み進めているのですが、 正直、何から手を付けたものかちょっと途方に暮れています。 CASや定理自動証明などのコンピュータ使用を前提として、 中学・高校レベルの数学の教育方法を全面的に見なおす流れにはなっていないみたいですね。 '60年代の「新しい数学」や'90〜'00のグラフ電卓の時には、教育者の方々も熱中していたみたいですが。
102 名前:132人目の素数さん mailto:sage [2011/04/06(水) 17:51:32.43 ] で?