Mathematica とは何か．

ノートブックでインタラクティブな計算を行う

以下は，計算の例です．入力セルのどこにカーソルを置いても，⇧|⌤を押すことができます．

4+5

πを100桁計算しましょう.

N[Pi, 100]

今度は(Sqrt[2])です.100桁計算しましょう.もっと桁数を大きくしてみてください.

N[(Sqrt[2]),100]

ノートブックで微分・積分の計算を行う

((\[DifferentialD](cos(x) (E^x)))/(\[DifferentialD]x))

Manipulate[{D[Cos[x] ^n  Exp[x],{x,n}],Framed[n]}, {n,1,30,1}]

∫cos(x) (E^x)\[DifferentialD]x

∫(cos^n)(x) (E^x)\[DifferentialD]x

Manipulate[{Integrate[Cos[x] ^n  Exp[x],x],Framed[n]}, {n,1,30,1}]

∫(1/(1-(x^20)))\[DifferentialD]x

D[%,x]

FullSimplify[%]

Manipulate[∫(1/(1-(x^n)))\[DifferentialD]x, {n,1,30,1}]

2D，3Dグラフィックスの作成

これは1変数の関数のプロットです．リスト{x, 0, 4}がプロットの範囲を指定しています．

Plot[sin((E^x)),{x,0,4}]

Manipulate[Plot[Sin[Exp[ a x]],{x,0,4}], {a, 0, 2}]

これは2変数の関数の3D曲面プロットです．

Plot3D[cos(x) sin(y),{x,0,2 π},{y,0,2 π}]

ParametricPlot3D[(({{3 cos(x), 3 sin(x), y}, {x, 2 sin(y), 2 cos(y)}, {sin(y), x, cos(y)}})),{x,-2 π,2 π},{y,-3 π,3 π}]

ParametricPlot3D[(({{3 cos(x) cos(y), 3 sin(x) cos(y), y}, {x, 2 sin(y) cos(y), 2 cos(y)}, {sin(y) sin(x), x, cos(y)}})),{x,-2 π,2 π},{y,-3 π,3 π}, PlotPoints->60]

点電荷で生成される静電ポテンシャルを操作する：

Manipulate[ContourPlot[q1/Norm[{x,y}-p[[1]]]+q2/Norm[{x,y}-p[[2]]],{x,-2,2},{y,-2,2},Contours->20,ColorFunction->"Rainbow"],{{q1,-1},-3,3},{{q2,1},-3,3},{{p,{{-1,0},{1,0}}},{-1,-1},{1,1},Locator},Deployed->True]

二重振り子

注意：うまくアニメーションが作れないとき

パラメターの値が固定されている場合、うまくアニメーションが作れないときがあります．カーネルを終了して（評価ー＞カーネルを終了（Q)）もう一度、トライしてください．

はじめに

二重振り子の運動は振幅が十分小さいときには線形な微分方程式で記述できるが、一般には複雑な非線形運動を行う．この系は散逸系ではないカオスを出現できる系として知られている．ここではその運動を記述する微分方程式を導きだし、運動のアニメーションをつくることにする．

次の様な座標とパラメターを下図のように設定する．

x1=0.426024;y1=-0.904712;x2=1.40871;y2=-0.719444;
Show[Graphics[{Hue[.8],Line[{{x1,y1}, {x2,y2}}]}],Graphics[{Hue[.6],PointSize[.06],Point[{x2,y2}]}],Graphics[{Hue[.8],Line[{{0,0}, {x1,y1}}]}],Graphics[{Hue[1],PointSize[.06],Point[{x1,y1}]}],Graphics[{Text["(Subscript[m, 1])",{0.417078,-0.881541}],Text["(Subscript[m, 2])",{1.39758,-0.697567}],{Hue[.4],Line[{{x1,-2},{x1,2}}]},Text[(Subscript[θ, 1]),{ .1,-0.5}],Text[(Subscript[θ, 2]),{0.59269,-1.11151}],Text["(Subscript[l, 1])",{0.329272,-0.344951}],Text["(Subscript[l, 2])",{0.841473,-0.666905}]}],Axes->True,Ticks->None,AspectRatio->1,PlotRange->{{-2.1,2.1},{-2.2,2.2}}]

それぞれの質量の位置を表す座標を次のようにする．

x1=l1 Sin[θ1[t]];y1=-(l1 Cos[θ1[t]]);
x2=l1 Sin[θ1[t]]+l2 Sin[θ2[t]];
y2=-(l1 Cos[θ1[t]])-l2 Cos[θ2[t]];

運動は次の微分方程式に従う．（詳細は割愛）．

l2 m2 sin(θ1(t)-θ2(t)) (((θ2)'(t))^2)+g m1 sin(θ1(t))+g m2 sin(θ1(t))+l1 (m1+m2) (θ1)''(t)+l2 m2 cos(θ1(t)-θ2(t)) (θ2)''(t)==0

-l1 sin(θ1(t)-θ2(t)) (((θ1)'(t))^2)+g sin(θ2(t))+l1 cos(θ1(t)-θ2(t)) (θ1)''(t)+l2 (θ2)''(t)==0

実際の計算

ここで数値計算をすることにする．次のようにNDSolveを用いればいろいろなパラメターや初期値に対応する解が得られる．

{l1,l2,m1,m2,g}={1,1,1,1,9.8};
result=NDSolve[{g m1 Sin[θ1[t]]+g m2 Sin[θ1[t]]+l2 m2 Sin[θ1[t]-θ2[t]] (((θ2)'[t])^2)+l1 (m1+m2) (θ1)''[t]+l2 m2 Cos[θ1[t]-θ2[t]] (θ2)''[t]==0,g Sin[θ2[t]]-l1 Sin[θ1[t]-θ2[t]] (((θ1)'[t])^2)+l1 Cos[θ1[t]-θ2[t]] (θ1)''[t]+l2 (θ2)''[t]==0,θ1[0]==π,(θ1)'[0]==-0.1,θ2[0]==π,(θ2)'[0]==0.1},{θ1[t],θ2[t]},{t,0,10},MaxSteps->2500]

θ1[t_]=θ1[t]/.First[result];
θ2[t_]=θ2[t]/.First[result];

graphicsAll={};Do[{g1=Show[Graphics[{Hue[.8],Line[{{x1,y1}, {x2,y2}}]}],Graphics[{Hue[.6],PointSize[.06],Point[{x2,y2}]}],Graphics[{Hue[.8],Line[{{0,0}, {x1,y1}}]}],Graphics[{Hue[1],PointSize[.06],Point[{x1,y1}]}],Axes->True,Ticks->None,AspectRatio->1,PlotRange->{{-2.1,2.1},{-2.2,2.2}}]; graphicsAll=Append[graphicsAll,g1]; },{t,0,10,0.05}]

Manipulate[graphicsAll[[n]],{n,1,Length[graphicsAll],1}]