Mathematicaプログラミング 質問箱 その1
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG本家
http://www.wolfram.com/index.ja.html
http://www.jip.co.jp/si/soft/mathematica/
Mathematicaユーザー会(有料)
http://www.jp-mathusers.org/
0159AQUARIUS
2007/06/30(土) 14:52:37お返事ありがとうございます。
>i1 じゃなくて i
>g1 じゃなくて q1
了解いたしました。
>Plot[-i, {x, 0, 0.0001}]
>とでもすれば?
振幅の符号が逆転しましたが、やはり減少しております。
0160AQUARIUS
2007/06/30(土) 21:23:29下記プログラムで、円から亜鈴に変形する図を作成したのですが、このプログラムを書き換えて、アニメのように、ある場所で固定させて、時間の経過とともに、円から亜鈴、亜鈴から円、円から亜鈴、亜鈴から円に、繰り返し変形するようにすることは可能でしょうか?
For[t = 0, t <= 5, t++,
r0 = 1;
a1 = 0.2*t;
ParametricPlot[{{r1 = r0 + a1*LegendreP[2, Cos[q]]; r1*Cos[q], r1*Sin[q]}}, {q, 0, 2*Pi}, AspectRatio -> Automatic];
];
0161デフォルトの名無しさん
2007/06/30(土) 21:40:31何のグラフを描きたいのかがわかりません
0162AQUARIUS
2007/06/30(土) 21:50:38>何のグラフを描きたいのかがわかりません
説明不足ですいません。下記を評価しますと、xが増加するにつれて、振幅が減少しますが、xが増加するにつれて、振幅が増加するグラフを描きたいです。要するに、左から右に行くにつれて、揺れが大きくなるようにしたいです。
L := 2.65/10^3;
r := 73.32;
c := 12.55/10^9;
e1 := 5;
i = y[x] /. NDSolve[{Derivative[2][y][x] == (-(r/L))*Derivative[1][y][x] - (1/(L*c))*y[x] + e1/L, y[0] == 0.0001, Derivative[1][y][0] == 0}, y, {x, 0, 0.0001}]
Plot[i, {x, 0, 0.0001}]
q1 = D[i, x]
q2 = Plot[q1, {x, 0, 0.0001}]
Plot[-i, {x, 0, 0.0001}]
0163デフォルトの名無しさん
2007/06/30(土) 21:57:130164AQUARIUS
2007/06/30(土) 23:48:09下記のように、((r/L))*Derivative[1][y][x]の符号を、マイナスからプラスにしましたら、振幅が増加するようになりました。これが、減衰振動の反対の現象だと考えてよろしいでしょうか?
L := 2.65/10^3;
r := 73.32;
c := 12.55/10^9;
e1 := 5;
i = y[x] /. NDSolve[{Derivative[2][y][x] == ((r/L))*Derivative[1][y][x] - (1/(L*c))*y[x] + e1/L, y[0] == 0.0001, Derivative[1][y][0] == 0}, y, {x, 0, 0.0001}]
Plot[i, {x, 0, 0.0001}]
q1 = D[i, x]
q2 = Plot[q1, {x, 0, 0.0001}]
0165デフォルトの名無しさん
2007/07/01(日) 07:10:46Animate Selected Graphics (MacだとCommand-Y)?
0166デフォルトの名無しさん
2007/07/03(火) 22:30:48x = 0.7;
a2 =. ;
y = a2 + (7*(-1 + x))/(1 + 2*x);
Solve[y == 0, a2]
答えは
a2=
となります。
これを、ParametricPlot[{{r1 = 1 + a2*LegendreP[2, Cos[q]]; r1*Cos[q], r1*Sin[q]}}, {q, 0, 2*Pi}, AspectRatio -> Automatic];のa2に代入して、図を書きたいのですが、どうしたら書けるでしょうか?
x = 0.7;
a2 =. ;
y = a2 + (7*(-1 + x))/(1 + 2*x);
Solve[y == 0, a2]
ParametricPlot[{{r1 = 1 + a2*LegendreP[2, Cos[q]]; r1*Cos[q], r1*Sin[q]}}, {q, 0, 2*Pi}, AspectRatio -> Automatic];
0167デフォルトの名無しさん
2007/07/04(水) 01:26:36x = 0.7;
a2 =.;
y = a2 + (7*(-1 + x))/(1 + 2*x);
rule1 = Solve[y == 0, a2][[1]];
ParametricPlot[{{r1 = 1 + a2*LegendreP[2, Cos[q]] /. rule1; r1*Cos[q],
r1*Sin[q]}}, {q, 0, 2*Pi}, AspectRatio -> Automatic];
0168デフォルトの名無しさん
2007/07/04(水) 23:00:37お返事ありがとうございます。
わかりました。
申し訳ございません。更に、下記でa2の数値を表示させるには、どうしたら良いでしょうか?
x = 0.5;
a2 =.;
y = a2 + (7*(-1 + x))/(1 + 2*x);
rule1 = Solve[y == 0, a2][[1]];
Print["x=",x];
Print["a2=",a2];
0169デフォルトの名無しさん
2007/07/05(木) 12:38:19x = 0.5;
a2 =.;
y = a2 + (7*(-1 + x))/(1 + 2*x);
rule1 = Solve[y == 0, a2][[1]];
Print["x=", x];
Print["a2=", a2 /. rule1];
0170デフォルトの名無しさん
2007/07/06(金) 21:55:22いつも、お返事ありがとうございます。
>Print["a2=", a2 /. rule1];
わかりました。
すいませんが、更に下記を教えて下さい。
次のHPは、核分裂の臨界エネルギーを求めたものです。
http://space.geocities.jp/gamow_gold/nuc.pdf
(上記をコピーして、アドレスに貼り付けて、エンターしてください)
質問
P6のFig.4.5の図を得るため、 (30) 式の下の a2=7(1-x)/(1+2x) という式から a2 を求め、後はこの値を(17)式に代入し、mathematicaで作図したのが下記です。しかし、評価してみますと、Fig.4.5の図と形が異なります。
(17)式を、(1 + a2*LegendreP[2, Cos[q]])としたのが、多分、間違っていると思われますが、(17)式をどのように修正すれば、P6のFig.4.5の図が得られるでしょうか?
For[n=0,n<=10,n++,
x = 0.1*n;
a2 =.;
y = a2 + (7*(-1 + x))/(1 + 2*x);
rule1 = Solve[y == 0, a2][[1]];
Print["x=",x];
Print[rule1];
ParametricPlot[{{r1 = (1 + a2*LegendreP[2, Cos[q]]) /. rule1; r1*Cos[q],
r1*Sin[q]}}, {q, 0, 2*Pi}, AspectRatio -> Automatic];
];
0171デフォルトの名無しさん
2007/07/23(月) 17:06:49Mathematicaで作成した図を、LaTeXに貼り付ける方法および手順を教えてください。例えば、下記で作成した図について教えてください。
{r0,r1,n,qs}={1,0.1,8,Pi/32};
ParametricPlot[{{Cos[q],Sin[q]},{r=r0+r1 Sin[n q];r Cos[q-qs],r Sin[q-qs]}},{q,0,2Pi},AspectRatio®1];
0172デフォルトの名無しさん
2007/07/23(月) 18:22:04プログラムは、抵抗の値、コンデンサの容量、周波数を入力すると、複素インピーダンスとその絶対値を求めその結果を表示するものである。
このプログラミングはどのようになりますか?おねがいします
0173デフォルトの名無しさん
2007/07/23(月) 18:54:17もしくはチュートリアルくらい読め
0174デフォルトの名無しさん
2007/07/23(月) 22:27:48171了解。ところで、「ググれ」の意味は何でしょうか?
0175デフォルトの名無しさん
2007/07/23(月) 22:41:00以前このサイトでご教示頂きました下記の図形なのですが、横軸の数字が重なって気になるので、いろいろとViewPoint®{-3.382,0.096,0.076}の値を変えているのですが、一番綺麗に作図するには、どの値にすれば良いでしょうか?個人の好みもあると思うのですが、、
<<"Graphics`ParametricPlot3D`"
SphericalPlot3D[1+LegendreP[2,Cos[thet]],{thet,0,Pi,Pi/30},{phi,0,2*Pi,Pi/15},ViewPoint®{-3.382,0.096,0.076},ViewVertical®{0,1,0},ImageSize®300]
SphericalPlot3D[1+LegendreP[2,Cos[thet]],{thet,0,Pi,Pi/30},{phi,0,2*Pi,Pi/15},ViewPoint®{-1.8,0.5,0.1},ViewVertical®{0,1,0},ImageSize®300]
SphericalPlot3D[1+LegendreP[2,Cos[thet]],{thet,0,Pi,Pi/30},{phi,0,2*Pi,Pi/15},ViewPoint®{-0.8,0.5,0.1},ViewVertical®{0,1,0},ImageSize®300]
SphericalPlot3D[1+LegendreP[2,Cos[thet]],{thet,0,Pi,Pi/30},{phi,0,2*Pi,Pi/15},ViewPoint®{-1.0,0.5,0.1},ViewVertical®{0,1,0},ImageSize®300]
0176デフォルトの名無しさん
2007/07/23(月) 22:47:09すいません。文字化けしております。
元々のソースは「153」です。ViewPointの値だけを変えております。
0177デフォルトの名無しさん
2007/07/24(火) 08:28:19「ググれ」の意味わかりました。以後「ググり」ます。
0178デフォルトの名無しさん
2007/07/24(火) 20:43:49事情により追求を残念しましたので回答は結構です。すみません、お騒がせ致しました。
0179デフォルトの名無しさん
2007/07/24(火) 20:48:360180みさころ
2007/07/29(日) 13:45:19@2変数関数z=(2x^2+y^2)exp(1-X^2-Y^2)のグラフを、-2≦X≦2,-2≦Y≦2の範囲でPlot3Dを使って描きなさい。
A上記関数において∂z/∂x=0,∂z/∂y=0を連立して解いて全ての臨海点を求めなさい。
このとき、∂z/∂x=0,∂z/∂y=0は、どちらもFactorを用いてexp(1-X^2-Y^2)を括りだした後に
exp(1-X^2-Y^2)で割っておき、多項式の方程式にしてからSolveを使うのがよい。
B各臨界点におけるzの値を求め、またH=、(∂^2)z/(∂^2)x・(∂^2)z/(∂^2)y 及び、(∂^2)z/(∂^2)x
の符号を調べて臨界点を分類しなさい。
この3つの問題が全然わからなく困っています。どなたか教えていただけるとありがたいです(><)
0181デフォルトの名無しさん
2007/07/31(火) 08:43:00そうじゃないならどこまで考えてどこまで分かってるのか書く。
0182まえ
2007/08/01(水) 17:20:40どうすればよいのでしょうか?
わかる方がいましたらどうが教えてください。
(ちなみに現在は一度Illustratorで編集を行い数字のサイズの調節を行っています)
0183デフォルトの名無しさん
2007/08/01(水) 23:08:34日本公式サイトのFAQにそのものずばりの項目がある.
ttp://www.cybernet.co.jp/matlab/support/techkwdb/search_view.php?id=1008
0184デフォルトの名無しさん
2007/08/02(木) 01:47:48お前。。。
0185デフォルトの名無しさん
2007/08/02(木) 02:06:055ならPlotのヘルプに書いてあるような気がするが。
Mathematica Plot font sizeでググったらいくらでも出てくるし。
何をやるにしてもこれくらいのことは自分で調べる能力をまず身に付けろ。
0186デフォルトの名無しさん
2007/08/02(木) 02:07:04上のは>>182の間違い。
0187まえ
2007/08/02(木) 11:27:40しかし、MathematicaではなくMATLABの説明のページでした。
>>185 申し訳ありません。おもに書籍を用いてMathematicaの勉強をしていたためヘルプの使い方が未熟でした。
もし、よろしければ
Plot[sin[x],{x,0,2}]
のグラフの数字のフォントを大きくした例を示していただけると非常に助かります。
0188デフォルトの名無しさん
2007/08/02(木) 12:19:080189まえ
2007/08/02(木) 14:24:21Plot[sin[x],{x,0,2},FontSize->20]
と書いても、
StyleFont[Plot[sin[x],{x,0,2}],FontSize->20]
と書いてもうまくいかず、どのように記述すればよいのかわからないからです。
私のヘルプ活用能力、Mathematicaのスキルが劣っているためだと認識しております。
どうがお力を貸してください。
0190デフォルトの名無しさん
2007/08/02(木) 14:41:11ヘルプに書いてある通りに本当にやってんのか?
で上でググれとも書いたんだけどググったのか?
0191まえ
2007/08/02(木) 17:08:51ご迷惑をおかけしました。解決しました。
ヘルプについてですが使用しているMathematicaのバージョンが4.0のため若干異なっているのかもしれません。(検索ワードに問題があったのかもしれませんが・・・)
「ググれ」についてですが、私は「日本語のページを検索」にチェックを入れて検索を行う癖がありまして、それが原因でうまくいっていませんでした。
親切な返答に対しいい加減な調べ方しかしていなかった自分を恥ずかしいく思います。
本当にありがとうございました。助かりました。
0192デフォルトの名無しさん
2007/08/02(木) 23:25:06エラーが出たならエラーメッセージの内容を書く。
解決したなら何が問題だったのか、どうやって解決したのかを書く。
もういないんだろうけど。
0193まえ
2007/08/03(金) 02:59:03今後は気をつけます。
エラーの原因は>>189で示したような間違った文法を用いていたからです。
どうやって解決したかは、グーグルを用いてMathematica Plot font sizeで検索を行い、
ttp://documents.wolfram.com/mathematica/Built-inFunctions/GraphicsAndSound/2DPlots/FurtherExamples/Plot.html
の文法の通りに修正を行いました。
掲示板を使用する上での私のマナー、常識が欠けていたために>>192の人の気分を害してしまったことを申し訳なく思っております。
>>192の人には掲示板を使用する上での常識、マナーまで教えていただき本当に感謝しております。
ありがとうございました。
0194デフォルトの名無しさん
2007/08/03(金) 13:45:59掲示板を使用する上で、とかは全然関係ないと思うよ。
問題を解決する基本的なスキルの話だよ。何をするときでも一緒。
0195デフォルトの名無しさん
2007/08/12(日) 11:36:18青色の字で、アルファベット「abc」と印字したいのですが、
どのようなコマンドを使用すれば良いでしょうか?
Print[“abc”];
0196デフォルトの名無しさん
2007/08/22(水) 04:17:48Print["abc"]
と入力した後、abc の部分を選択して、メニューの書式から文字の色を選んで青を選択する。
これじゃかっこ悪いと思うなら
Print[StyleForm["abc",FontColor->RGBColor[0,0,1]]]
でやったらいかが.
0197デフォルトの名無しさん
2007/09/18(火) 10:48:565.2のヘルプのようなMathematica Bookがないって本当ですか?
0198デフォルトの名無しさん
2007/09/19(水) 04:12:35デフォルトのフォントサイズが小さいので、毎回大きく設定しなおして
使ってます。デフォルトのフォントサイズを変更する方法って
ないですか?
0199デフォルトの名無しさん
2007/09/19(水) 06:33:42そのあと、Presentationを選択することにしました。
0200デフォルトの名無しさん
2007/09/19(水) 18:12:266.0のヘルプは確かに見づらい。検索は向上してるけど、
5.2にあるMathematica Bookのように一から読んでいけるようなものはない。
初めて使う人には使いづらいかも。
0201デフォルトの名無しさん
2007/09/20(木) 01:36:11そういうもの「も」ついててもいいとは思うが。
基本は強力な検索とハイパーテキストと豊富な実例がヘルプの命。
0202デフォルトの名無しさん
2007/09/21(金) 11:12:14あと最初のページが見づらい
0203デフォルトの名無しさん
2007/09/24(月) 18:34:01z = y Sqrt[m] Sqrt[x^2+y^2]
とやると
z = y Sqrt[m] Sqrt[x^2+y^2]
になると思いますが
出てきた結果を根号で再度まとめることはできるんでしょうか?
具体的には
z = Sqrt[m (x^2 + y^2) y^2]
と変形して欲しいのです。
どうもやり方が分からず困ってます。
どなたか御存じでしたら教えて下さい。お願いします。
0204デフォルトの名無しさん
2007/09/24(月) 18:43:050205デフォルトの名無しさん
2007/09/25(火) 17:22:35どういう場面でそういう操作が必要になるの?
0206デフォルトの名無しさん
2007/09/27(木) 18:03:45レス遅れてすみません。えーと、問題になってるのは、 複雑な式でSimplifyできないので困ってます。
Log[Sqrt[A] Sqrt[B]]
(A、Bは非常に複雑な式)
のような場合に上手くSimplifyしてくれないので困ってたんですが、これは
SqrtSimplify[sqrt_] := (sqrt//. Sqrt[x_] Sqrt[y_] -> Sqrt[x y])//Simplify
のような形でSimplifyをかけると簡略化に成功しました。
ですが、今度は、
(-2 m + r0) r[t]
Out[1]= (Sqrt[----------------]
m (r0 - r[t])
Sqrt[r[t]]
> ((Sqrt[-2 m + r0] (4 m + r0) ArcTan[---------------] -
Sqrt[r0 - r[t]]
3/2 Sqrt[-2 m + r0] Sqrt[r[t]]
> 4 Sqrt[2] m ArcTanh[-------------------------------])
Sqrt[2] Sqrt[m] Sqrt[r0 - r[t]]
> Sqrt[r0 - r[t]] + Sqrt[-2 m + r0] Sqrt[r[t]] (-r0 + r[t]))) /
> (Sqrt[2] Sqrt[-2 m + r0] Sqrt[r[t]])
のような複雑な式でどうにもFullSimplifyがききません。本当は分母がSqrt[2m - r0]とSqrt[2] m で簡略化されるはずなんですが・・・
ここで上手く分母を上記でまとめないと、r[t] -> r0 などと仮定して計算を行うので1/0の形でエラーで止まります。
どうも良く分かりません。。
0207デフォルトの名無しさん
2007/09/27(木) 18:06:53(-2 m + r0) r[t]
Out[1]= (Sqrt[----------------]
m (r0 - r[t])
Sqrt[r[t]]
> ((Sqrt[-2 m + r0] (4 m + r0) ArcTan[---------------] -
Sqrt[r0 - r[t]]
3/2 Sqrt[-2 m + r0] Sqrt[r[t]]
> 4 Sqrt[2] m ArcTanh[-------------------------------])
Sqrt[2] Sqrt[m] Sqrt[r0 - r[t]]
> Sqrt[r0 - r[t]] + Sqrt[-2 m + r0] Sqrt[r[t]] (-r0 + r[t]))) /
> (Sqrt[2] Sqrt[-2 m + r0] Sqrt[r[t]])
0208デフォルトの名無しさん
2007/09/28(金) 09:15:13数式 /. {条件}
のときの/.ってどういういみですか?
0209デフォルトの名無しさん
2007/09/28(金) 13:47:50Mathematica持ってるなら?/.でヘルプが出る。
0210デフォルトの名無しさん
2007/09/28(金) 18:05:08203の式はy>0じゃないと成り立たないよね
変数に条件与えてRefineでなんとかならんかね
少しは手で式を変形しとかんと上手くいかんだろうけど
0211繰り返し計算について
2007/09/29(土) 12:55:54こんにちは、
下記のような数値計算で、yが0に最も近づく
nを求めたいのですが、どのようなプログラム
になるのでしょうか?
但し、yは、0以上であり、
yが0に最も近づいたときの、nとyのみを
知りたいです。
下記は、あくまでも例であり
N[4000/95]
により、
n=43
y=4085
なので、この例の数値を知りたい訳ではなく、
プログラムの仕方を知りたいです。
For[n=1,n£100,n++,
y=4000-95*n;
If[y==0,Print[n]];
];
0212デフォルトの名無しさん
2007/10/01(月) 01:57:36どれくらいの精度でnを求めたいかによって変わるんじゃない。
与えられた情報だけでは答えるのが難しい。
0213繰り返し計算について
2007/10/01(月) 22:16:10質問の仕方が悪かったです。
一応下記で出来ました。
すいませんでした。
For[n=1,n<100,n++,
y=4000-95*n;
If[y<0,Print[n]];
If[y<0,Print[y]];
If[y<0,Break[]];
];
0214デフォルトの名無しさん
2007/10/01(月) 22:16:48Solve[4-x^2Š0,x]
を計算しますと
X=-2,
X=2
の解が得られますが、
X=2
だけを取り出して、
y=x^3+1
でしたら、
9
とするには、
{{x->-2},{x->2}}
から、どのように2だけを
取り出せばよいでしょうか?
0215デフォルトの名無しさん
2007/10/02(火) 02:05:37y=x^3+1/.Solve[4-x^2==0,x][[2]]
0216デフォルトの名無しさん
2007/10/02(火) 02:09:15は不要でした。
0217デフォルトの名無しさん
2007/10/02(火) 18:56:16普通フォートランだろ
0218デフォルトの名無しさん
2007/10/02(火) 20:04:58お返事ありがとうございます。
この方法もありますね。
下記で、x->は不要です。
2だけを取り出す仕方はどうでしたか?
Flatten[Solve[4-x^2==0,x]][[2]]
0219デフォルトの名無しさん
2007/10/03(水) 02:12:35質問の意味が???
0220デフォルトの名無しさん
2007/10/03(水) 03:28:24質問の真意はよく解らないが、単純に数値の2のみを取出したいのなら
x=.
x/.Flatten[Solve[4-x^2==0,x]][[2]]
でよいと思う。但しこの場合xには2が代入されていない。これを実行した後に
x
を実行すると
x
が返ってくるだけである。
もしxに2を代入した状態にしたいというのであれば
x=.
x=x/.Flatten[Solve[4-x^2==0,x]][[2]]
としなければならないように思う。これを実行した後に
x
を実行すると
2
が返ってくる。
0221デフォルトの名無しさん
2007/10/03(水) 20:31:02お返事ありがとうございます。
よくわかりました。
x=x/.Flatten[Solve[4-x^2==0,x]][[2]]
で、希望のものを得られました。
0222デフォルトの名無しさん
2007/10/24(水) 16:07:48を使用し3Dの図形を書いたのですが、それをどうすれば回転させることができますでしょうか?よろしくお願いします
0223デフォルトの名無しさん
2007/11/08(木) 14:54:52i = 0; atari = 0; hazure = 0;
While[i < 10,
{com1 = Random[Integer, {0, 100}];
com2 = Random[Integer, {0, 100}];
com3 = com1 + com2;
Print[com1, "+", com2, "=?"];
you = Input[];
If[you == com3,
{Print["当たり"]; atari = atari + 1},
{Print["はずれ"]; hazure = hazure + 1}];
i = i + 1
}]
Print["ゲ-ム終了です."]
kekka = atari/(atari + hazure)*100;
Print["あなたの点数は", kekka, "点です."]
If[kekka > 80, Print["合格"],
Print["不可"]]
上記のような簡単な計算のゲームを、今度は足し算の問題と引き算の問題がランダムに入り交じって10問出題されるようにするには、どうすればよいのでしょうか?
IfやRandomを使っても、僕の力ではよくわかりませんでした。
どなたかよろしくお願い致します。
0224デフォルトの名無しさん
2007/11/16(金) 14:14:190225デフォルトの名無しさん
2007/12/09(日) 14:42:35サイクロイドだよ
0226パニパニ少女
2007/12/19(水) 14:04:389行9列の整数型配列変数uzu[ ] [ ]に1から1づつカウントアップ下値を渦巻き状に代入するプログラムを作る。整数型の配列変数はuzu[9 ] [9 ]とする。
こんな感じにしたいんですよ。
1 2 3 4 5 6 7 8 9
32 33 34 35 36 37 38 39 10
31 56 57 58 59 60 61 40 11
30 55 72 73 74 75 62 41 12
29 54 71 80 81 76 63 42 13
28 53 70 79 78 77 64 43 14
27 52 69 68 67 66 65 44 15
26 51 50 49 48 47 46 45 16
25 24 23 22 21 20 19 18 17
0227デフォルトの名無しさん
2008/01/17(木) 09:52:20感覚的には9×9のマスを動くロボットのようなプログラムを作ればいい。
壁か自分が既に通ったマスにぶつかったら自分の進行方向から見て右に曲がる。
次のマスにつくたびにカウントを1プラスしてuzu[x] [y]にその値を書き込めばそんな感じになる。
はず。
0228デフォルトの名無しさん
2008/01/21(月) 00:13:15期限が明日の18:00までなので急いでいます。
以下問題文
ランダムウォーク
(1)
平方和が1になるようなx成分、y成分を持つ乱数を発生させる関数randomXY[]を作成せよ
ヒント:単位円上に一様に値を持つ乱数を考えよ.
つまり,qを2 Piの乱数として,2つの要素x=Cos[q], y=Sin[q]を持つリストを生成する
乱数の発生については,組み込み関数のRandom[] のHelpを参照
(2)
(1)で作った乱数の1000回分のリストを2次元平面上にプロットし,
ランダムな動きを実現していることを確かめよ
(これがランダムウォークの動く方向と大きさを表示している)
ヒント:randomXY[]を1000回適用して得られるTableを作成せよ
(そのリスト・テーブルの名前をrandomWalkStepとする)
(3)
randomWalkStepをListPlotせよ.
FoldList,Plusなどの関数を用いてrandomWalkStep 値を順に加えた、
randomWalkというリストを生成せよ
randomWalkを2次元の図に表せ(これがランダムウォークの粒子の動きの軌跡となる)
HelpのListPlotの項目を参考に
長レスすみません。
お願いします。
0229デフォルトの名無しさん
2008/01/23(水) 22:21:17まあもう期限過ぎたしいいか。
randomXY[] := (q = 2Pi*Random[]; {Cos[q], Sin[q]})
randomWalkStep = Table[randomXY[], {i, 1, 1000}];
ListPlot[randomWalkStep]
randomWalk = Transpose[{FoldList[Plus, 0, Transpose[randomWalkStep][[1]]],
FoldList[Plus, 0, Transpose[randomWalkStep][[2]]]}];
ListPlot[randomWalk]
で出来るはず。
0230デフォルトの名無しさん
2008/01/23(水) 23:08:25教えるバカ
0231デフォルトの名無しさん
2008/01/30(水) 01:37:21アクティブなノートブックを変えるショートカットキーってあります?
0232デフォルトの名無しさん
2008/02/17(日) 01:27:57linuxにMathematica6.0がインストールできません。
MatheInstallerを実行すると、最後に
A valid password file entry already exists.
Installation complete.
となって成功したようにみえます。でも、起動しようとすると
# mathematica &
Mathematica front end executable
/usr/local/Wolfram/Mathematica/6.0/SystemFiles/FrontEnd/Binaries/Linux/Mathematica
not found. Your Mathematica installation may be incomplete
or corrupted.
OS は fedora7 です。
どなたかわかりますか??
0233デフォルトの名無しさん
2008/03/01(土) 11:24:38こんにちは、
下記の式、y1とy2があります。
y1を評価させて、y2の通り表示させるには、どうしたら良いでしょうか?
y1 = Expand[(a1*p1 + a2*p2 + a3*p3 + b*mc)^2]
y2 = p1^2*a1^2 + p2^2*a2^2 + p3^2*a3^2 + mc^2*b^2 + (a1*a2 + a2*a1)*p1*p2 + (a2*a3 + a3*a2)*p2*p3 + (a3*a1 + a1*a3)*p3*p1 + (a1*b + b*a1)*p1*mc + (a2*b + b*a2)*p2*mc + (a3*b + b*a3)*p3*mc
ちなみに、y1をそのまま評価しますと、下記になり、y2の通り表示しません。
p1^2*a1^2 + 2*p1*p2*a1*a2 + p2^2*a2^2 + 2*p1*p3*a1*a3 + 2*p2*p3*a2*a3 + p3^2*a3^2 + 2*mc*p1*a1*b + 2*mc*p2*a2*b + 2*mc*p3*a3*b + mc^2*b^2
0234デフォルトの名無しさん
2008/03/30(日) 20:46:34mathematicaで非集計ロジットモデルのパラメータ推定できるのでしょうか。
Rでは出来るようですけど、mathematicaの方が慣れてるのでできればmathematicaでやりたいのです・・・
0235デフォルトの名無しさん
2008/03/30(日) 21:15:50# mathematica &
とやってみそ。
0236デフォルトの名無しさん
2008/04/20(日) 18:00:19ウインドウズの右下の日付を少し戻したんですが使えないままです。
ウインドウズの日付というのは値渡しということなんでしょうか?
0237デフォルトの名無しさん
2008/07/09(水) 18:22:13For[i = 1, i <= 500, i++, xdate1[i] = Random[Real, {-1, 1}]]
For[i = 1, i <= 500, i++, xdate2[i] = Random[Real, {-1, 1}]]
For[i = 1, i <= 500, i++, If[(xdate1[i])^2 + (xdate2[i])^2 > (2/Pi), ydate[i] = 1, ydate[i] = -1]]
ってとこまでやったんだけど
ListPlot[Table[{xdate1[i], xdate2[i]}, {i, 1, 500}]]]]
のグラフ書いたとき
ydate[i]=1の部分だけ色変えたいときってどうすればいい?
0238デフォルトの名無しさん
2008/07/09(水) 18:49:46グラフのオプションはバージョン5以前と6以降で大きく違うから、
バージョンも書いたほうがいいよ
楽なのはydate[i]=1のときのグラフと-1のときのグラフを別々に作って、
Showで表示する方法だと思う
あとdateじゃなくてdataじゃないの?
0239238
2008/07/09(水) 18:54:10For[i = 1, i <= 500, i++, xdate1[i] = Random[Real, {-1, 1}]]
For[i = 1, i <= 500, i++, xdate2[i] = Random[Real, {-1, 1}]]
tbl1 = {}; tbl2 = {};
For[i = 1, i <= 500, i++,
If[test[i] = (xdate1[i])^2 + (xdate2[i])^2 > (2/Pi),
AppendTo[tbl1, {xdate1[i], xdate2[i]}],
AppendTo[tbl2, {xdate1[i], xdate2[i]}]]]
ListPlot[{tbl1, tbl2}, PlotStyle -> {Blue, Red}]
こんな感じかな
ver6だけど、5以前でも変わらないと思う
0240デフォルトの名無しさん
2008/07/10(木) 16:36:340241デフォルトの名無しさん
2008/07/15(火) 16:39:38れ。整数i は最初の行にi=4; のように与えること。
これ教えてくださいお願いします
0242デフォルトの名無しさん
2008/07/15(火) 16:41:000243デフォルトの名無しさん
2008/07/15(火) 17:50:12PrimeQ使えば至極簡単なんだけど、使ってもいいの?
0244デフォルトの名無しさん
2008/07/15(火) 19:26:080245デフォルトの名無しさん
2008/09/11(木) 10:50:40定義域ごとに関数を定義したいんですが
例えば,
For[i=0,i<100,i++,x[t_] := 0.5^i /; i<t<i+1]
とするとうまくいきません.
誰か教えてください.
0246デフォルトの名無しさん
2008/09/11(木) 13:55:24例えが何がしたいのか良くわからないが、
定義域が引数に対してなら、こんな感じになる
x[t_ /; t >= 0] := Log[t]
x[t_ /; t < 0] := Log[-t]
関数xは引数tが0以上のときにLog[t]、0以下のときにLog[-t]を返す
質問の意図がよくわからんかったから見当はずれの答えかもしれん
0247デフォルトの名無しさん
2008/09/11(木) 14:35:02x[t_ /; 0<t<1] := 0
x[t_ /; 1<t<2] :=1
とすれば、階段関数みたいのものを定義できますが、
これを繰り返し、定義域 i<t<i+1に対して
例えば 関数
x[t_] := i
みたいなもの定義したいのです。
もちろんこのケースは
x[t_] := Integer[t]
とすれば階段関数が定義できますが、
もっと複雑に i に依存して、
それぞれの区間 i<t<i+1 にたいして
Forループで関数を定義したいのですが、
For[i=0,i<100,i++,x[t_] := i /; i<t<i+1]
ではうまく定義されません。
どうしたらよいでしょうか?
0248246
2008/09/11(木) 20:27:57反復演算子を使ってるのが良くないみたいですね
局所定数にしてしまえば、上手くいくんじゃないでしょうか
For[i = 0, i < 100, i++, With[{j = i}, x[t_] := j /; j < t < j + 1]]
0249デフォルトの名無しさん
2008/09/11(木) 20:57:59大変ありがとうございました。
うまく行きました。
たすかりました。
0250デフォルトの名無しさん
2008/09/22(月) 21:24:34例えば,一次元調和振動子のハミルトニアンでしたら
H=-d^2/dx^2+x^2
ですが,これを独立に扱って
(H-E)^2*ψ
などの計算をmathematicaで簡便に行いたいのですが(ここでψは簡単な指数関数,ψ=exp(-a*x^2) など),このような計算のプログラミングはどのようにすればできるのでしょうか?
0251デフォルトの名無しさん
2008/09/24(水) 22:23:31下記HPをコピーして、実行させたいのですが、そのままコピーして使おうとしますと文字しかコピーできません。手で文字を1字ずつ入力して実行させる以外に方法はないでしょうか?
http://www-antenna.ee.titech.ac.jp/~hira/hobby/edu/commu/ss/index.html
0252デフォルトの名無しさん
2008/10/07(火) 22:08:00(・∀・)つ 「物理学のためのMathematica―古典力学から宇宙論まで」
ロバート・L. ジンマーマン (著), フレデリック・I. オルネス (著)
0253デフォルトの名無しさん
2008/10/14(火) 17:14:51マスマティカってwigner分布啓さんできる?
0254デフォルトの名無しさん
2008/11/25(火) 15:07:59interpolationを使ったら
座標が構造化テンソル積グリッド上にありません
って言われた。
ヘルプにも乗ってないんだけど、ヘルプが古いのかな?
0255そら
2009/06/11(木) 13:12:43ここで問題なのですが、
Distribute[f[a+a+b,c]]と入力をすると、f[a,c]+f[a,c]+f[b,c]と出力してほしいのに、
f[2a,c]+f[b,c]と出力されてしまいます。
f[a,c]+f[a,c]+f[b,c]と出力するには、
a+a+bの部分を勝手に計算してしまうMathematicaの悪い癖を正さないといけないと思うのですが、
何か良い方法はないでしょうか?
0256デフォルトの名無しさん
2009/06/16(火) 14:32:17n乗の計算式を求めたいんですが・・
mathematicaでは自分で数値を入力するようなことはできないのですか?
0257そら
2009/06/21(日) 03:24:07n乗の計算式って何?
x^nと記述すれば、xのn乗が求まります。
具体的な数値を知りたければ
In:N[Pi^3]
Out:31.006277
となると思います。
知りたい事がよく分からないので、勝手に回答しちゃいました。
0258そら
2009/06/21(日) 03:32:55解決しました。
SetAttributes[f, HoldFirst]で属性を加えると
第一引数については計算しないで固定しておいてくれるみたいです。
しかし残念ながら、第二引数、第三引数については固定しておく方法が見つかりませんでした。
まぁ、問題は解決したので良かったのですが・・・。
■ このスレッドは過去ログ倉庫に格納されています