[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/19 02:05 / Filesize : 264 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

〓Mathematica〓



1 名前:132人目の素数さん [2001/03/20(火) 02:34]
ないので立てました。
Mathematicaについて語るスレです。

大学で初めて出会った時は感動したなぁ。(NeXT版…)
Plot3Dでよく遊んだものです。
四次方程式の一般解を出力して、壁に貼ったりしてました(w

809 名前:132人目の素数さん mailto:sage [03/11/19 00:16]
>>808
重い計算させてりゃXPでなくてもカーネルは落ちる

810 名前:132人目の素数さん mailto:sage [03/11/19 10:42]
>>808
カーネルの中の人も大変だからな

811 名前:supermathmania ◆ViEu89Okng [03/11/19 12:51]
いいこと教えてあげよう。
Mathematicaを使うときは、なるべく他のアプリケーションは切る。
これを守れば今日からジンセイバラ色(?)

812 名前:supermathmania ◆ViEu89Okng [03/11/19 12:54]
私がいつかやってしまった事だが、
TeXのdviファイルのプレビューと、Mathmaticaを同時に動かしたとき、フリーズした。
気をつけよう。

813 名前:132人目の素数さん mailto:sage [03/11/19 14:41]
>>810
そういえば中の人などいないって聞かないね。
これも中の人がいるということが広く認知されたということか。

814 名前: [03/11/19 15:41]
a

815 名前:132人目の素数さん [03/11/19 17:59]

811 名前:supermathmania ◆ViEu89Okng :03/11/19 12:51
いいこと教えてあげよう。
Mathematicaを使うときは、なるべく他のアプリケーションは切る。
これを守れば今日からジンセイバラ色(?)



              ジンセイバラ色(?)


パシャ パシャ  パシャ パシャ パシャ  パシャ パシャ パシャ パシャ パシャ パシャ
   パシャ パシャ パシャ パシャ パシャ  パシャ パシャ パシャ  パシャ  パシャ 
 ∧_∧     ∧_∧     ∧_∧  ∧_∧    ∧_∧     ∧_∧
 (   )】      (   )】    (   )】 【(   )    【(   )    【(   )
 /  /┘ .   /  /┘.    /  /┘ └\\    └\\   └\\
ノ ̄ゝ     ノ ̄ゝ      ノ ̄ゝ     ノ ̄ゝ     ノ ̄ゝ     ノ ̄ゝ


816 名前:132人目の素数さん mailto:sage [03/11/19 19:48]
>>811
おまいの環境がわかるわw

817 名前:132人目の素数さん [03/11/22 02:47]
行列を貼り付けたのですが
Dimensions[a]で実行したところ
Out[数字]={100,100}とならずに
{1,100}
Out[数字]={100}
と成ってしまいます。{1,100}ならわかるんですが、、

問題解決できるひといませんか?(これだけではわからないかな・・・)



818 名前:132人目の素数さん mailto:sage [03/11/22 11:08]
>817
行列ってのは
{ {a1 , a2 , ... } , { b1 , b2 , ... } , ... }

てな形なので、2つの階層のどっちかで
, コンマが抜けているのでは。。。



819 名前:132人目の素数さん [03/11/22 17:09]
supermathmaniaって実社会でも干されてんの?

820 名前:132人目の素数さん [03/11/22 23:01]
マセマティカでべき級数展開ってできますか?

821 名前:132人目の素数さん [03/11/22 23:05]
すいません、ちょっと質問なんですけど、
教科書で使われてるような図をMathematicaで作成したいのですけど、
ある領域を斜線で塗りつぶすような事ってできますか?

822 名前:132人目の素数さん [03/11/22 23:55]
>>821
液晶汚してもいいならできるよ

823 名前:132人目の素数さん mailto:sage [03/11/23 00:17]
>>821
色塗はできるが斜線は自分で引くしかないんじゃないか。

824 名前:821 mailto:sage [03/11/23 00:58]
そうですか、わかりました〜ありがとうございます。
自分で作ってみますね。

825 名前:132人目の素数さん [03/11/23 22:21]
>>807
www.synapse.ne.jp/~dozono/math/anime/cycloid.htm


826 名前:132人目の素数さん [03/11/25 13:17]
>>818
ありがとうございます。違うところでの入力ミスでした。
でも、数百×数百の逆行列を計算しようとして、結果メモリー不足になり
計算できませんでした。普通のPCでこんな計算するのが間違ってましたw

827 名前:132人目の素数さん [03/12/04 03:09]
EmacsのMathematica-modeなんてあるのを知った。
フロントエンドよりマシな環境ができたらうれしいな〜。

とりあえずコマンドの補完とか括弧の補完とか
それくらいやってほしいなぁ…



828 名前:_ [03/12/05 03:31]
windows でmaximaをtexmacsで起動できた人っている?
両方インストールした(texmacsのみcygwin)けどtexmacsでmaximaを起動しようとすると,
bad url in "complete"
というerrorが表示され終了されます。できた人がいれば教えてください


829 名前:132人目の素数さん [03/12/05 05:12]
MATHEMATICAって値段が高過ぎ。生協価格が20万円を超えている。
ふざけるなって言いたい。しかも毎年バ-ジョンアップが出てて、
アップデ-トに半額以上払わされる。なんだかぼられているのじゃ
ないのかな? アメリカだと10分の1の値段だったりしない?

830 名前:132人目の素数さん mailto:sage [03/12/05 05:51]
>>829
アカデミック価格だと、まあまあ買える値段だよ。

831 名前:132人目の素数さん mailto:sage [03/12/05 08:38]
>828
環境が違うのでなんともいえないが
locate コマンドの db がまだ更新されていないのでは?
僕はそうでした。

>829
1/10 ということはない。まあ実質半分かな
向こうでは $2000 を超えていないはず。
日本は、日本語環境 5 万円に1年保守費30%
強制付きだからね。
もう個人は買うなってこと。。。
10年前は海外から3万円でアップデートして
くれたのにな

832 名前:_ [03/12/06 06:13]
>>831
レスthx。更新しても駄目でした。
xmaximaは動くのですがmaximaをcygwinのxtermで動かす事ができなかったので,
その辺が原因だと考えてます。誰か分かる人いたら教えてください。
激しくすれ違いスマソ

833 名前:132人目の素数さん mailto:sage [03/12/06 23:45]
you should not ever use Japanese.

834 名前:132人目の素数さん [03/12/07 10:07]
{{a,b},{c,d},{e,f}}のようなリストを
{a,b,c,d,e,f}にする簡単な方法はありませんか?


835 名前:132人目の素数さん mailto:sage [03/12/07 10:43]
Flatten[%]でいけました。よごし失礼。

836 名前:132人目の素数さん [03/12/07 18:02]
>829
生協に商用版がおいてあるの?

837 名前:132人目の素数さん mailto:sage [03/12/07 23:53]
この関数を

fbbs = Flatten[Cases[
ReplaceAll[{u, t},
NSolve[{fbb[#1, #2, #3, #4], fbb[#5, #6, #7, #8]}, {u, t}]],
{_Real, _Real}]]&;

こんな↓感じにする、いい方法はないかな。
目的は可読性の向上。

NSolve[{fbb[#1, #2, #3, #4], fbb[#5, #6, #7, #8]}, {u, t}]
ReplaceAll[{u, t}, %]
Cases[%, {_Real, _Real}]
fbbst2 = Flatten[%]&

↑の方法だとうまくいかないのです。
Flatten[%]がそのままはいってしまいます。




838 名前:132人目の素数さん [03/12/08 16:31]
>>836
Student版が29000で売ってる
software.univcoop.or.jp/products/mathematica/student.html

839 名前:132人目の素数さん [03/12/10 20:33]
MATHEMATICA4.0をUNIXにインストールしようと思ったのですが、
パスワードだけ書き残していてライセンスIDをなくしてしまっていました。
さてここで問題です。
いったい私はどうしたら良いのでしょうか?

840 名前:132人目の素数さん [03/12/10 20:43]
ノーヒントですか?
相談なしですか?

841 名前:132人目の素数さん mailto:sage [03/12/10 22:05]
>>840
俺のライセンスIDなら・・・

842 名前:132人目の素数さん [03/12/11 11:35]
ライセンスIDってCD-ROMの袋に書いてなかったっけ?
ライセンスIDって無くしたら大変な気がするけど。。。

843 名前:132人目の素数さん [03/12/11 12:27]
誰かただでください!

844 名前:132人目の素数さん mailto:sage [03/12/11 15:33]
C言語から評価式と、入力したパラメータをMathematicaに送り,Mathematicaで計算,
結果をCプログラムに返して表示される、というものを作ろうとしています.
で,関数を書いてみたのですが,いくつかわからない点がありましたので質問させてください.

@MathKernel.exeのパスの指定はどのようにするのでしょうか?
CプログラムのほうからMathKernel.exeのパスを指定し,char変数PATHに格納してあるとすると,
link = MLOpenString(env, "-linklunch -linkname 'PATH'", &err);
でいいのでしょうか?

Aパッケージの読み込み時に使うのは以下のようにMLPutStringで良いのでしょうか?
MLPutFunction(link, "Get", 1);
MLPutString(link, "Package");

B一時変数はC言語側で定義するのでしょうか?
たとえば,以下の評価式で変数y,zはCプログラムのほうから入力するとき,y,zはC言語側で定義しますが,一時変数xもC言語側で定義するのでしょうか?(用いる変数はMathmatica内部で使用するのみであってもすべてCで定義するのでしょうか?)
temp = y + z
x = temp^temp

845 名前:844 mailto:sage [03/12/11 15:34]
C定義関数f[t_]=〜を送信するのはどうすれば良いのでしょうか?
f[Pattern[t, Blank[]]から,以下のようにしてみたのですが・・・

MLPutFunction(link, f, 1); //←これでいいのか?
MLPutFunction(link, "Pattern", 2);
MLPutDouble(link, t);
MLPutFunction(link, "Blank");

D(x^y + z)のように関数Plusの引数に関数Powerが入っている場合,送信するのは
MLPutFanction(link, "Plus", 2);
MLPutFanction(link, "Power", 2); //←ちゃんとPlusの引数と見なされるのか?
MLPutInteger(link, x);
MLPutInteger(link, y);
MLPutInteger(link, z);
でいいのでしょうか?

長くなりましたが,よろしくお願いします m(_ _)m

846 名前:844 mailto:sage [03/12/11 15:36]
Bに関して・・・
一時変数xも→一時変数tempと結果を代入する変数xも
の間違いです

847 名前:こてはん [03/12/11 19:35]
>>842
それほんと?
探してみたら俺のも行方不明でした・・・。
ピンチ?



848 名前:132人目の素数さん mailto:sage [03/12/11 22:06]
>>843
ヤフオクに出てる違法コピー買って摘発されてくださいw

849 名前:132人目の素数さん mailto:sage [03/12/11 22:29]
今M2で今年で卒業なんだけど
卒業までにstudent版を買ってら、来年も問題なく使えますか?
それとも自動的にライセンスが切れる仕組みになってるの?
卒業までに残りの貯金でソフトを購入する覚悟はできたのですが。

850 名前:837 mailto:sage [03/12/12 00:30]
>>844

E:\Program Files\Wolfram Research\Mathematica\4.0\AddOns\
MathLink\DevelopersKits\Windows\UnsupportedGoodies\VCFE\Source\

ヘルプのアドオンMathLink当たりにすべての答えがあると思います。

自作のprogramはwrapper classを作って
頭にMLの文字とMLINKの引数が無いのでそれを前提として読んで見てください。

1、これを渡していました。

"-linkname \'\"E:\\Program Files\\Wolfram Research\\Mathematica\\
4.0\\MathKernel.exe\" -mathlink\' -linkmode Launch";
err checkはしていませんでした。

> link = MLOpenString(env, "-linklunch -linkname 'PATH'", &err);
ちゅうかsprintfしないと……。

2、たぶん、EndPacket();が必要です。


851 名前:837 mailto:sage [03/12/12 00:30]
3、y + zとtemp ^ temp を複数のPutFunctionでやる場合は結果を受け取る時に必要です。
それを一つの関数にしてしまいひとつのPutFunctionでやる場合は必要ありません。
F.E.
y + z
temp^temp
それぞれ送信する場合、それぞれ答えが帰ってくる。
x = (y + z) ^ (y + z)
これなら一つの結果しか返ってこない。
temp = y + z
x = temp^temp
これを一気に送信したら、2つの答えが帰ってくる。
temp = y + z;
x = temp^temp
たぶんこうして一気に送信したら一つだけだと思う。

4、初期化時に
char *型の配列を用意して関数を登録(VCFEのサンプルにあるEvaluateを呼び出し)
してそれをPutFunctionしている。
つまり
fx = f[Pattern[#1, Blank[]]&;
を登録して
PutFunction(fx, 1);
PutDouble(t);
EndPacket();

852 名前:837 mailto:sage [03/12/12 00:31]
5、それはよくわからないからtry&errorで。
僕の場合は4の通り、使う関数をすべてあらかじめ登録してから使っています。

おまけ、
EndPacket後に、答え以外のパケットが帰ってくる場合の処理が面倒です。
それは試行錯誤してみてください。

たぶん例に出したような簡単な処理をするのではないと思いますが、
もし桁数を考えないで計算したいのであれば、多倍長 ライブラリで検索して見てください。
GMP,NTLがおすすめ。

むむむ、質問に答える事で、自分の質問の答えがわかった。thank you。

853 名前:132人目の素数さん [03/12/12 12:03]
>>847
ホントだよ。
今使えてるならば

C:\Program Files\Wolfram Research\Mathematica\4.2\Configuration\Licensing\mathpass
ってファイルにライセンス情報が書かれていて
そこにちゃんとライセンス番号もあるから大丈夫
今の内に控えておこう。

ちなみにこのmathpassファイルはOSを再インストールしなかったら使い回しできる。
いちいちWolframにパスワードを聞かなくて済むので便利。
OSを入れ替えたり、別のパソコンにインストールしようとした場合は
MathIDが変わるからWolframのお世話にならないとダメ。


ライセンスIDが完全に分からない場合はどうするのかねえ。
Wolframに聞いてみるとかか?
>>839はパスワードはあるみたいだし、是非聞いて欲しい。
報告待ってま〜す。



854 名前:132人目の素数さん mailto:sage [03/12/12 12:09]
>>849
問題なく使えるけどライセンス違反だぞ。
次回パスワードをもらうときに、困ったりするかもしれなかったりするかもしれない。。。


たぶん困らないけど。。。



昔はWolframに英語のメール出したりしてパスワード再発行しないといけなくて大変だった。
英語苦手だから、訳分からない文章だったろうなぁ。。。
Hey!とかから始めたし。

855 名前:132人目の素数さん mailto:sage [03/12/12 12:30]
>>849
俺もstudent版買ってパスワードもらう時、卒業時期を
思いっきりごまかしといたからだいぶ使えそう。
アップグレードもしないと思うし。

856 名前:844 mailto:sage [03/12/12 18:45]
>>850
とても詳しいお答えありがとうございました.
提示していただいたサンプルプログラムやヘルプも参考にしてみたのですが,下記の点についていまいちわかりませんでした.

@
>> link = MLOpenString(env, "-linklunch -linkname 'PATH'", &err);
>ちゅうかsprintfしないと……。

wsprintf(launchstring, " -linklunch -linkname '%s'", PATH);
link = MLOpenString(env, launchstring, &err);
としてみたのですが,提示していただいたサンプルプログラムを見てみると,LinkProtocolの指定を行っていますが,これは必要あるのでしょうか?

A
>たぶん、EndPacket();が必要です
パッケージ読み込みの送信をしてMLEndPacket(link);を送信,その後に評価式の送信を行う場合はMLNextPacket(link);を送信する必要があるのでしょうか?

B
>y + zとtemp ^ temp を複数のPutFunctionでやる場合は結果を受け取る時に必要です。
>それを一つの関数にしてしまいひとつのPutFunctionでやる場合は必要ありません。

y + z の結果tempの値をCプログラムの方に返さない、つまり
temp = y + z;
を送ってやれば,変数定義する必要はないということでしょうか?
またtemp = y + z;の送信をする際,
CompoundExpression[Set[temp, Plus[y, z]], NULL]
の引数NULLを送信するときの関数は何を用いるのでしょうか?

857 名前:844 mailto:sage [03/12/12 18:47]
C
大変恐縮ではありますが,関数の登録について詳しく教えていただけないでしょうか?
VCFEのEvaluate関数のところを見てみたのですが,正直なところほとんどわかりませんでした・・・
もちろん自分で理解しようと勉強してはいるのですが,苦戦している状況です・・・

D
VCFEをビルドしてみたところ
LINK : fatal error LNK1104: ファイル "..\..\..\..\Program Files\Microsoft Visual

Studio\VC98\Lib\ml32i2m.lib" を開けません。
とエラーが出てビルドできません.ml32i2m.libは
C:\Program Files\Microsoft Visual Studio\VC98\Lib
にコピーしたのですが,できませんでした.他に何が必要なのでしょうか?

当方MathematicaもC言語も学び始めて間もないので理解が浅く,お手数とは存じますがよろしくお願いしますm(_ _)m




858 名前:839 [03/12/12 21:01]
>>853
むぅ〜、mathpassに身に覚えの無い数字とアルファベットが
タブ区切りで入っているのですがこれをどう理解すればよいの?

859 名前:837 mailto:sage [03/12/13 00:27]
>>844,856-857
*LNK1104を調べて見て。
ようはlibはcopyをするだけで使えるようになるわけではなく、
リンカにこのlibを使うと教えてあげなければ、使えるようにはなりません。
VisualStadioのプロジェクトのプロパティでリンカの部分で指定してあげてください。

また、libはcopyするのではなく、libがあるフォルダのパスを通してあげてください。
menu,ツール->オプション,プロジェクトでライブラリファイルが指定できるはずです。
(VS.Net 2003であれば)

*僕もMathLinkをバリバリ使っているというわけではないので、間違えが含まれるかも知れません。それを前提として読んでください。
僕の前の発言は少し間違いがふくまれているかもしれません。
こちらでEvaluate関数を改造してしまっていたので、そのまま式を渡しても自作関数を
登録(定義)したことにはならないかもしれませんし、いけるかもしれません。try&errorで。

*MathLinkは二種類の式の呼び出し方をサポートしています。

ひとつは関数を指定して、値を一つずつ渡す方法。
PutFunction("Plus", 2);
PutReal(hoge);
PutReal(hage);
EndPacket();

もうひとつが、式の文字列をそのまま渡す方法。(TextPacketかEnterTextPacket
(違いはみていない)の関数の引数として式の文字列を渡す。)

PutFunction("TextPacke"/*不安*/, 1);
PutByteString((const BYTE *)"hoge + hage");
EndPacket();

860 名前:837 mailto:sage [03/12/13 00:27]
上の例だとGetReal();で答えを取れるはずですが、
下の例だとhelpファイルを見れば分かりますが、答えがそのまま文字列として
帰ってくるので、GetString(&OutputString);でとればOKです。

VCFEのEvaluate関数は下の例でやっています。

*関数の定義は別に難しい事をやっているわけではなく、
Mathematica上で関数の定義をするのとまったく一緒です。

// ベジェ曲線を媒介変数tを指定しxyposを取得
// #1 t #2 q0 #3 q1 #4 q2 #5 q3
char szInit_fb[] = "fb = (1 - #1)^3 #2 + 3(1 - #1)^2 #1 #3 + 3(1 - #1)#1^2 #4 + #1^3 #5&;";
// #1 t #2 q0x #3 q0y #4 q1x #5 q1y #6 q2x #7 q2y #8 q3x #9 q3y
char szInit_fb2[] = "fb2 = List[fb[#1, #2, #4, #6, #8], fb[#1, #3, #5, #7, #9]]&;";

この二つの式をMathmatica上で定義しておけば、
fb2[(* 略 *)]
と打ち込むだけで答えが返ってきます。
同じように自作プログラムでは、あらかじめEvaluate関数で上の二つを定義しておき、使う時に
PutFunction("fb2", 9);
/* 略 */
EndPacket();
で答えが返ってきます。

あとNullは固定シンボルであるようです。helpファイルを。

861 名前:132人目の素数さん [03/12/13 09:30]
>>858
どう理解って…
そんなの他人に入れてもらったとしか理解できんよ。。。
割れてるんじゃないの?

862 名前:858 [03/12/13 09:43]
>>861
自分で入れたんだけどね、
あそこにはパスなどの情報がそっくりそのままの状態で入ってるの?
識別できたのは自分で任意にいれた名前と所属ぐらいだったよ。

863 名前:132人目の素数さん [03/12/13 15:52]
>>862
そうだよ。
ライセンスIDとかMathIDとかパスワードがそのまま入ってる。
だから同じパソコンに同じOSをインストールして、
そこに同じMathematicaを入れたなら
このmathpassファイルはそのまま使える。

Wolframにパスワードを聞いても、全く同じものが返ってくるしね。
これは自分で確かめた。

864 名前:厨房君 [03/12/13 18:02]
わしは某大学の研究室でwindowsとlinux両方にインストールしているのだが
linuxのほうはmathpassにそのままデータが入っていたが
確かにwindowsのほうはデータがそのまま入っているようには見えないなぁ
ちなみに4.0でーす。

865 名前:132人目の素数さん mailto:sage [03/12/13 20:33]
>>864
そう?
俺はWindows2000でMathematica4.2だけど
全部そのまま入ってるよ。

まずパソコン名
その次がMathID
そしてライセンスID
パスワードで
最後がユーザー名

そのまま入ってるよ。

866 名前:858=862 [03/12/13 23:47]
>>865さん
もし問題が無ければ自分の手元にあるパスとmathpassに入っている
(タブで)4つめにあるデータを書き込んで一体どういうことなのか、
更に(タブで)3つめのデータからライセンスIDを推測するには
どうしたらよいかご教授いただきたいのですが、
問題ありですかねぇ。

867 名前:132人目の素数さん [03/12/14 03:13]
>>866
パスワードの方は公開しても何も問題ないと思う。
個々のMathematicaごとに違うから、バレても意味無いしね。

ライセンスIDの方はWolframとやりとりする時に必要そうだから
公開するのはやめた方がいいんじゃないかな?
そのmathpassに書いてある、訳分からない文字列の4番目の方も
そこからライセンスIDが分かったら困るしやめた方がいいかもね。



868 名前:132人目の素数さん [03/12/14 17:02]
ですよねぇ。とほほ・・・

869 名前:132人目の素数さん [03/12/14 17:43]
>>868
パスワードの方だけでも見せてくれない?
そのままじゃないってのがどういう状態なのか見てみたいです。
4番目の所だけ伏せて見せてくれたらベスト。

870 名前:868 [03/12/14 22:07]
>>868さん
一応部分的に*(中身は数字です)でふせておきます。
mathpassに入っていたデータをタブの順番通りにコピペすると以下の通りです。

aaaa <-自分で任意に入力しました。
**90F64AED623BCB72B3168A
F76EA93EB4840346902DCBE4A72B8F47E89417B223**
28495937**
aaaa <-自分で任意に入力しました。
aaaa <-自分で任意に入力しました。

です。
ちなみに手元のパスワードは
「49874-10775-47982-49844-53548-***」
です。
>>865の順番通りだとすれば
どう理解すればいいのやら・・・。

871 名前:132人目の素数さん mailto:sage [03/12/15 00:08]
自分で任意に入れたって部分がよく分からないけど
(ユーザー名とパソコン名?じゃもう一つはなんだろ…)
それじゃあライセンスIDは分かりそうもないね。。。

872 名前:844 mailto:sage [03/12/15 22:21]
>>859,860さん
丁寧にありがとうございました。
教えてくださったこととVCFEを参考にしてソースを書いてみたいと思います
またなにかありましたらよろしくお願いしますm(_ _)m

873 名前:大学生 [03/12/17 20:22]
ParametricPlot3Dでメビウスの輪の描き方教えてください。
よろしくお願いします。

874 名前:132人目の素数さん mailto:sage [03/12/17 22:16]
ヘルプに載ってるよ

875 名前:873 [03/12/17 23:33]
ヘルプ見たんですがトーラスしかのってませんでした。どうか教えてくださいませんか?
お願いします。

876 名前:837 mailto:sage [03/12/18 16:20]
mathworld.wolfram.com/MoebiusStrip.html

877 名前:837 [03/12/19 02:31]
これすげぇ
メビウスの歯車だ。
mathworld.wolfram.com/gifs/moebgear.gif




878 名前:132人目の素数さん mailto:sage [03/12/19 03:13]
notebookも落とせるところがよいね

879 名前:844 mailto:sage [03/12/20 17:47]
CプログラムのほうからMathKernel.exeを立ち上げることができましたので,簡単な例をやってみようと思い,
和を計算させるソースを書いてみました.以下はその一部です

char expr[] = "2^4 + 3^2";
const char *OutputString;

case IDC_EVALUATE:
MLPutFunction(link, "EvaluatePacket", 1);
MLPutFunction(link, "ToExpression", 1);
MLPutString(link, expr);
MLEndPacket(link);
MLFlush(link);

while (MLNextPacket(link) != RETURNPKT)
MLNewPacket(link);

MLGetString(link, &OutputString);
wsprintf(szBuf, "OutputString = %s", OutputString);
MessageBox(hDlg, szBuf, "Debug", MB_OK);
MLDisownString(link, OutputString);

MLNewPacket(link);

return TRUE;

この例だとうまく行くのですが,
結果を取得する部分を,この場合は答えは25であり明らかに整数ですので,
MLGetIntegerを用いてみるとアプリケーションエラーで終了してしまいました.
MLGetIntegerなどはどのような場合に使用するのでしょうか?

880 名前:844 mailto:sage [03/12/20 17:48]
また,ほかの評価式の場合,例えば
char expr[] = " Solve[{x + y == 5, 3x + 5y ==13}, {x,y}]";
といった連立方程式の評価を試みてみたところ,同様にアプリケーションエラーが出て終了してしまいました.
結果の取得に用いる関数がMLGetStringでは正しくないためと思われるのですが,どの関数を用いて結果の取得を行えばいいのでしょうか?
MLGetRealList等試してみたのですが,うまくいきませんでした.

よろしくお願いします

881 名前:837 mailto:sage [03/12/21 17:07]
EvaluatePacket & ToExpression でもいけるんですね。
違いはわかりませんが、TextPacke、EnterTextPacketと同じく
式を文字列でおくり、結果を文字列で返す関数だと思います。

結果をGetIntegerでもらう場合はこうです。
PutFunction("Plus", 2);
PutInteger(1);
PutInteger(1);
EndPacket(link);

下の例は、GetStringでいいはずです。
VCFEで投げるとうまく行く&エラーメッセージが
返ってくるような式ではないので
EvaluatePacket & ToExpressionがまずいか、
EndPacketから、GetStringの間の処理がまずいかどちらかです。

882 名前:837 mailto:sage [03/12/21 17:12]
ToExpressionですね。

In[373]:=
EvaluatePacket[ToExpression[{x + y == 5, 3x + 5y == 13}]]

\:6B21\:3088\:308A\:FF1AIn[373]:=
ToExpression::"notstrbox": "\!\(\(\(x + y\)\) == \
5\)h文字列あるいはボックスではありません.ToExpressionは文字列かボ\
ックスだけをMathematica入力として解釈することができます."

\:6B21\:3088\:308A\:FF1AIn[373]:=
ToExpression::"notstrbox": "\!\(\(\(\(\(3\\ x\)\) + \(\(5\\ y\)\)\)\) == \
13\)h文字列あるいはボックスではありません.ToExpressionは文字列かボ\
ックスだけをMathematica入力として解釈することができます."

Out[373]=
EvaluatePacket[{$Failed, $Failed}]

In[374]:=
EvaluatePacket[ToExpression[2^4 + 3^2]]

Out[374]=
EvaluatePacket[25]

883 名前:132人目の素数さん [03/12/22 10:54]
a,b,tをパラメータにしてグラフにしたいんですが,うまくいきません。
bのところを数字にすればできました。どうしたらいいでしょう?
sol = Table[NDSolve[{x''[t] == aCos[((b - a)) t^2] - bSin[((b - a))t^2],
           y''[t] == aSin[((b - a) t^2] + bCos [((b - a)) t^2],
         x[0] == 0, y[0] == 0, x'[0] == 0, y'[0] == 0},
         {x, y}, {t, 0, 1}],
      {a, (-1), 1, 0.2}, {b, (-1), 1, 0.2}];
ParametricPlot[Evaluate[{x[t], y[t]} /. sol], {t, 0, 1},
PlotRange -> {{0, 3}, {0, 3}}]です。


884 名前:132人目の素数さん [03/12/22 12:16]
Mathematica で、整数や多項式の行列の単因子(不変因子)を求めるには
どうしたらいいんでしょうか?
Maple だと、smith や ismith という関数があるんですが・・・

885 名前:132人目の素数さん mailto:sage [03/12/24 00:40]
>>883
このスレの一番最初にある関数は違うかな?

886 名前:132人目の素数さん [03/12/26 11:03]
FrameLabelのフォントサイズを指定するにはどうすれば良いのでしょうか?
FrameStyle->{FontSize->36}とか設定してもFrameLabelのフォントサイズ
は変わりません。

887 名前:844 mailto:sage [03/12/27 15:22]
>>837さん
遅レスになりましたが、レスありがとうございました
参考にさせていただき、がんばってみます



888 名前:132人目の素数さん [04/01/04 12:08]
age

889 名前:844 mailto:sage [04/01/07 20:43]
879について再度教えていただけないでしょうか?

EvaluatePacket[ToExpression["Solve[{x + y == 5, 3x + 5y ==13}, {x,y}]"]]
としてMathematicaのほうで計算するとできたのですが,
char expr[] = "\"Solve[{x + y == 5, 3x + 5y ==13}, {x,y}]\"";
MLPutFunction(link, "EvaluatePacket", 1);
MLPutFunction(link, "ToExpression", 1);
MLPutString(link, expr);
とCのほうから送信してやってMLGetStringで受信しても,答えのほうにSolve[{x + y == 5, 3x + 5y ==13}, {x,y}]が出てきて不正な処理落ちしてしまいます・・・

また、VCFEのように,
char expr[] = "Solve[{x + y == 5, 3x + 5y ==13}, {x,y}]";
MLPutFunction(link, "EnterTextPacket", 1);
MLPutByteString(link, (const unsigned char*)expr, strlen(expr));
MLEndPacket(link);
で送信
MLGetString(link, &OutputString);
で受信というようにしてみたのですが,こちらもうまく行かず処理落ちしてしまいました・・・

どうすればよいのでしょうか?正直お手上げ状態です・・・

890 名前:837 mailto:sage [04/01/09 11:33]
VCFEと同じようにして落ちるって言うのはありえないから、
同じように出来ていないって事では。
Debugger立ち上げて一行ずつどう処理しているかみてみるといいよ。

たぶん、必要なFlash関数の呼び出しとかをしていないんだと思うよ。

891 名前:132人目の素数さん [04/01/09 14:37]
どなたか
Fourierseriesexpansion[1/(Pi+Cos[x])]
をしてください。

892 名前:132人目の素数さん mailto:sage [04/01/09 23:37]
In[1]:=
Fourierseriesexpansion[1/(Pi + Cos[x])]

Out[1]=
\!\(Fourierseriesexpansion[1\/\(π + Cos[x]\)]\)

ウェブ全体から検索日本語のページを検索
ウェブ イメージ グループ ディレクトリ




Fourierseriesexpansionに該当するページが見つかりませんでした。
"fourierseriesexpansion"を含むページは見つかりませんでした。



893 名前:132人目の素数さん [04/01/10 02:37]
初心者ですが、質問させてください。
Version5で新機能となったMaximizeって機能を使いたいのですが
私のVersionが古くて使えません。

そこで関数に領域を与え最大値を求める関数を実装したいと思いますが
どのようにしたら良いのでしょうか。
教えてください、お願いします。

894 名前:837 mailto:age [04/01/11 20:14]
ベジェ曲線の長さを求める式の不定積分を無理やり計算しようとしているのですが、
僕のマシンが非力なのか計算できません。
どなたかできませんか?
もし計算を途中で止める場合はAlt+.かAlt+,です。

(* www.interq.or.jp/www1/anzawa/doc/doc3.htm *)
(* #1 == t; #2,#3,#4,#5 == 1234 ;*)
fb = (1 - #1)^3 #2 + 3(1 - #1)^2 #1 #3 + 3(1 - #1)#1^2 #4 + #1^3 #5 &;

(* 媒介変数表示で表されたた曲線の長さを求める式
NIntegrateにして、x1などに値を入れ、2番目の引数を{t, 0, 1}にすれば求められる *)
Integrate[Sqrt[(fb'[t, x1, x2, x3, x4])^2 + (fb'[t, y1, y2, y3, y4])^2], t];

895 名前:837 mailto:age [04/01/11 20:22]
>> 893
やったことないけど
FindRoot, FindMinimum, ConstrainedMin, ConstrainedMax,
あたりかな?
素直にヴァージョン上げるのが一番早いと思うよ。

896 名前:844 mailto:sage [04/01/12 23:20]
>>837さん
レスありがとうございます
おっしゃるとおりFlash関数呼び出していませんでしたので,やってみます

グラフィック描画はどのようにすればよいのでしょうか?
(VCFEで簡単なプロットをさせてみようとしてもエラーが出て描画できないのですが,実装されていないのでしょうか?)

VCFEのソースを見たのですが、いまいちよくわかりません
WMFファイルのオープン?とかさっぱりです・・・
プロット画像情報のWMFファイルが作成されていて,それをOpenWMFFileで読み込み,DisplayGraphicで表示させていると解釈していいのでしょうか?
とすればどこにWMFファイルが作成されているのか等々問題点は尽きないのですが・・・

また,DISPLAYENDPKTが来ると描画させているようですが,DISPLAYPKTのときはどのような処理を行っているのでしょうか

?グラフィックウインドウに空文字列または出力文字列を表示させようとしているみたいですが・・・

質問ばかりで申し訳ありませんがよろしくお願いします

897 名前:837 mailto:sage [04/01/13 02:27]
>>894を無理やり計算して見ました。結果は押して知るべし。

FullSimplify[Sqrt[(fb'[t, x1, x2, x3, x4])^2 + (fb'[t, y1, y2, y3, y4])^2]]
(* 出てきた答えのルートの中の式をhogeとしてベキ級数展開 *)
Series[hoge, {t, 0, 4}]
(* そんでこんな形になると仮定。本当は係数の英文字の順が逆がいいな *)
f[t_] := 3 Sqrt[AA + BB t + CC t^2 DD t^3 + EE t^4]
(* どうぞ *)
Integrate[f[t], {t, 0, 1}]

>>896
> グラフィック描画はどのようにすればよいのでしょうか?
> (VCFEで簡単なプロットをさせてみようとしてもエラーが出て描画できないのですが,実装されていないのでしょうか?)
そう?
一番最初に設定されている式は結構時間かかるから待って見てごらん。
Plot3Dのサンプルにある下の式とか問題なく表示できたよ。
Plot3D[Sin[x y], {x, 0, 4}, {y, 0, 4}, PlotPoints -> 40, Mesh -> False,
FaceGrids -> All, AxesLabel -> {"Length", "Width", "Height"}];
Plotのサンプルは続けてやらないとダメダヨ。
t = {Sin[x], Sin[2x], Sin[3x]};
Plot[t, {x, 0, 2π}];
pp = Plot[Evaluate[t], {x, 0, 2π}];

> WMFファイルのオープン?とかさっぱりです・・・
たぶんWMFの知識とかソースが何をやっているか理解できないんでしょう(^^;
ソースに書いてある事をすべて説明する余裕はないので、
C言語の本などを読んで見てください。
言語の説明は板違いになるので、プログラム技術板でお待ちしています。



898 名前:837 mailto:sage [04/01/13 02:39]
ここでも出来た!
3 Sqrt[AA + BB x + CC x^2 + DD x^3 + EE x^4]
integrals.wolfram.com/
でも横が切れちゃってる……。

899 名前:844 mailto:sage [04/01/13 15:37]
>>837さん
デフォで入力してあるPlot3Dを実行してみると
OpenTemporary::noopen:
Cannot open C:\\DOCUME~1\\\214\212\340V\215G\216\:8180\\LOCALS~1\\Temp\\000001a01440.
Part::partd: Part specification $Failed \:301A 1 \:301B
is longer than depth of object.
Part::partd: Part specification $Failed \:301A 1 \:301B
is longer than depth of object.
General::stream:
$Failed is not a string, InputStream[ ], or OutputStream[ ].
Display::fname: Filename $Failed [[ 1 ]] is not a string.

とエラーが出てしまうんですよね・・・
多分WMFファイルが開けないって言ってると思うんですが・・・
(ソース等は何もいじってません)

900 名前:844 mailto:sage [04/01/13 16:13]
tempフォルダのパスに2バイト文字が入っていたのがいけなかったようで,
環境変数からパスを変更してみたところ表示できるようになりました

お騒がせしました・・・

901 名前:837 mailto:sage [04/01/13 20:19]
(,,゚Д゚) ガンガレ!

902 名前:132人目の素数さん mailto:sage [04/01/14 14:00]
PolarPlotを実行しても、なぜか命令文と同じ文が表示されて、
グラフが描かれません。
どのようにすればグラフが描かれるようになるのでしょうか?
教えてください。お願いします。
Version5です。

903 名前:837 mailto:sage [04/01/15 01:36]
<< Graphics`Graphics`

904 名前:902 mailto:sage [04/01/16 16:53]
>>903
さんくす

905 名前:132人目の素数さん mailto:sage [04/01/16 17:53]
バックグラウンドを黒にすることはできないの?

906 名前:837 mailto:sage [04/01/16 18:38]
Alt+E,F
書式設定→フォント設定→(FontColor || Background)

907 名前:132人目の素数さん mailto:sage [04/01/16 19:24]
さんくす。まじで。



908 名前:132人目の素数さん mailto:sage [04/01/17 20:33]
InverseLaplaceTransform[ (12s - 6)/(4s^2 - 4s + 37) , s , t]
を使って逆ラプラス変換を求めてみたところ次のようになりました。

3/2 * ( Exp(αt)+Exp(βt)) [α=1/2 - 3i β=1/2 + 3i]

でもじぶんで計算したら、頭についてる係数が、2/3 でなくて 6 になった。。。

mathematicaのほうが合ってるんやろか?
mathematicaの計算結果って絶対正しいんかな〜

ちなみにバージョンは4でつ。

909 名前:844 mailto:sage [04/01/17 20:52]
いつもお世話になっております

ある評価をした際にグラフが2つ出力される場合,その2つをそれぞれ2つのピクチャボックスに表示させたいのですが,
どうすればよいでしょうか?

描画関連の関数はとりあえずVCFEのを流用して,改変してみたのですが,
1つ目のグラフをピクチャボックス1に表示させ,2つ目をピクチャボックス2に表示させようとすると,1つ目が表示され,その後2つ目が表示されるのですが
1つ目がなぜかクリアされてしまいます・・・

OpenWMFFile関数内のDeleteEnhMetaFileを実行しなければクリアされないかと思ったのですが,うまく行きませんでした

スレ違いかもしれませんが,VCFE関連ですのでご容赦ください






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<264KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef