1110 5 Enjoy Mathematica


(* 定数の定義 *)

a = 3

(* 一度定義するとその定数はその値のまま *)

a + 8

(* 定数の再定義 *)

a = 5

a + 5

(* べき乗 *)

a^2

(* 式の足し算 *)

y1=x^2 + 4*x+1 ;

y2 = 8*x +1 ;

y1 + y2

(* 関数の定義 *)

f[x_] := x^2

(* 関数の利用 1 *)

f[5]

(* 関数の利用 2 ―文字数 1― *)

f[a+b]

(* 関数の利用 3 ―関数― *)

f[f[1+x]]

(* 微分 ―導関数を求める― *)

D[f[x], x]

(* 積分 *)

Integrate[f[x], x]

(* pを100桁表示 *)

Pi

N[Pi, 100]

(* 解を求める *)

Solve[x^2+x == a, x]

(* 多項式の因数分解 *)

Factor[x^99+y^99]

(* 式の展開 *)

Expand[%]

(* 式を簡単な形にする *)

Factor[%]

Simplify[%]

Integrate[1/(x^4-1), x]

D[%, x]

Simplify[%]

(* 微分方程式を解く *)

DSolve[ D[ x[t],t,t] + x[t]==0, x[t], t ]


(* グラフを描いてみよう  (いろいろパラメーターを変えてみる)*)

(* 描画 *)

Plot[Sin[x], {x, -Pi, Pi}];

Plot[Sin[Tan[x]], {x, -Pi, Pi}];

Plot[Sin[Tan[x]-Tan[Sin[x]]], {x, -Pi, Pi}];

Plot[Tan[Sin[x]]-Sin[Tan[x]], {x, -Pi, Pi}];

Plot[(Tan[Sin[x]]-Sin[Tan[x]])/x, {x, -Pi, Pi}];

Plot[(Tan[Sin[x]]-Sin[Tan[x]])/x^7, {x, -Pi, Pi}];

 

(* ランダム関数 *)

m=Table[Random[ ], {5}, {2}]

ListPlot[m]

 

(* 再度上記命令の実行、Shift+Enter *)

(* リストの値が変化し、グラフも変化する *)

m=Table[Random[ ], {5}, {2}]

ListPlot[m]

 

(* mとおいた時点で行列になっている *)

m = Table[Random[ ], {10}, {10}]

ListPlot[Abs[Eigenvalues[m]]]

 

m = Table[Random[ ], {100}, {100}];

ListPlot[Abs[Eigenvalues[m]]]

 

(* どんな図形 ? *)

Plot3D[Sin[x y], {x, 0, 4}, {y, 0, 4}];  (* 注 xとyの間に スペース が必要 *)

 

ParametricPlot[{Cos[3t], Sin[5t]}, {t, 0, 2Pi}];

 

ParametricPlot3D[{r Cos[t], r Sin[t], 0.3 + r^2 Sin[4t+Sin[3 Pi r]]}, {r, 0, 0.5}, {t, 0, 2Pi}, PlotPoints -> {40, 80}, BoxRatios -> {1, 1, 0.3}];

    (* ↓↓ rの値を大きくしてみると *)

ParametricPlot3D[{r Cos[t], r Sin[t], 0.3 + r^2 Sin[4t+Sin[3 Pi r]]}, {r, 0, 3}, {t, 0, 2Pi}, PlotPoints -> {40, 80}, BoxRatios -> {1, 1, 0.3}];

 

DensityPlot[Abs[Gamma[x+y I]], {x, -5, 4}, {y, -2, 2}, PlotPoints -> {100, 50}, Mesh -> False, PlotRange -> {0, 4}, AspectRatio -> Automatic];

 

(* 3Dアニメーション表示 *)

Animate[Plot3D[Sin[x y], {x, -n, n}, {y, -n, n}], {n, 1, 3, 0.2}];

 

Animate[ContourPlot[Sin[x^2+y^2] Cos[(x-n)^2+y^2], {x, -2, 2}, {y, -2, 2}, PlotRange -> {-1, 1}], {n, -2, 2, 0.2}]

 

(* 表示の色を変えてみる −RGBColorの値を変える− *)

Plot[Cos[x^2]-x Sin[x], {x, 0, 4}];

 

Show[Graphics[Table[{RGBColor[0, x/4., 1. - x/4.], Point[{x, Cos[x^2]-x Sin[x]}]}, {x, 0, 4, .01}]], Axes -> Automatic]

 


(* ヘルプの使い方 *)

? Plot

?? Plot

? *Plot*


(* 解いてみよう!

例1 微分方程式

y' = x^2 但しy(0) = 3 *)

DSolve[y'[x]==x^2, y[x], x]

DSolve[{y'[x]==x^2, y[0]==3}, y[x], x]

 

(* 例2 微分方程式

y'' + 3y' - 4y = 0 但しy(0) = 1, y'(0) = -1

y'' + 4y' + 20y = 0 但しy(0) = 1, y'(0) = 0 *)

DSolve[{y''[x]+3y'[x]-4y[x]==0, y'[0]==-1, y[0]==1}, y[x], x]

Simplify[%]

DSolve[{y''[x]+4y'[x]+20y[x]==0, y'[0]==1, y[0]==1}, y[x], x]

 


(* 例3 バネの運動 その1 *)

 図のように質量mの小物体aがx軸上にあり、バネ定数k、自然長lの軽いバネで壁に結びつけられて静止している。そこへ、同じ質量mの小物体bがx軸上左側から速度vでaと完全弾性衝突をする。衝突した時刻をt = 0、衝突した場所をx = 0として以下の問いに答えよ。ただし、摩擦は無視し、運動はx方向に限られ、またバネの伸び縮みの大きさはlに比べて十分小さいものとする。(簡便のため単位は略す。)

  1. t >= 0における小物体aの位置をxとしてaの運動方程式を書け。
  2. t >= 0における小物体aの運動の様子をグラフに表し説明せよ。この時m=2、k=4、v=5とする。

DSolve[{m x''[t] == -k x[t], x'[0]==v, x[0]==0}, x[t], t]

sol=NDSolve[{2 x''[t] == -4 x[t], x'[0]==5, x[0]==0}, x[t], {t, 0, 10}]

Plot[Evaluate[x[t] /. sol], {t, 0, 10}]

 

(* 例4 バネの運動 その2 *)

 図のように質量mの小物体a、bがx軸上にあり、バネ定数k、自然長lの軽いバネで結びつけられて釣り合いの位置に静止している。そこへ、同じ質量mの小物体cがx軸上左側から速度vでbと完全弾性衝突をする。衝突した時刻をt = 0、衝突した場所をx = 0として以下の問いに答えよ。ただし、摩擦は無視し、運動はx方向に限られ、またバネの伸び縮みの大きさはlに比べて十分小さいものとする。(簡便のため単位は略す。)

  1. t >= 0における小物体a、bの位置をxa、xbとしてa、bの運動方程式を書け。
  2. 小物体a、bの重心の運動を求めよ。
  3. 小物体a、bの相対運動を求めよ。
  4. t >= 0における小物体a、bそれぞれの運動の様子をグラフに表し説明せよ。この時m=2、k=4、l=3、v=5とする。

DSolve[{ m xa''[t] == -k (xa[t] - xb[t] -l), m xb''[t] == -k (xb[t] - xa[t] +l), xa'[0]==0, xb'[0]==v, xa[0]==l, xb[0]==0}, {xa[t], xb[t]}, t]

 

(* differential equations *)

eqr= m D[xa[t], t, t] + k (xa[t] - xb[t] -l);

eql = m D[xb[t], t, t] + k (xb[t] - xa[t] +l);

(* solving the differential equations *)

generalsol = DSolve[{eqr==0, eql==0}, {xa[t], xb[t]}, t]

(* definition *)

tosincos[ x_] := Simplify[x /. {Exp[ I*t_ ] -> ( Cos[t] +I*Sin[t]), Exp[ -I*t_ ] -> ( Cos[t] -I*Sin[t]) } ];

x1gn = tosincos[ xb[t] /. generalsol[[1]] ]

x2gn = tosincos[ xa[t] /. generalsol[[1]] ]

(* initial conditions *)

consts = Solve[ { ( x1gn /. { t ->0 } )==0, ( x2gn /. { t ->0 } )==l, ( D[ x1gn, t] /. { t ->0 } )==v, ( D[ x2gn, t] /. { t ->0 } )==0 }, { C[1], C[2], C[3], C[4]}] ;

(* solutions with initial conditions *)

x1sol = Simplify[ x1gn /. consts[[1]] ]

x2sol = Simplify[ x2gn /. consts[[1]] ]

(* motion of center of mass *)

( x1sol + x2sol )/ 2

(* relative motion *)

Simplify[ x2sol - x1sol ]

(* plot *)

values := { m ->2, k->4, l ->3, v ->5 } ;

Plot[ { ( x1sol + x2sol )/ 2 /. values, x2sol - x1sol /. values} , {t, 0, 10}]

Plot[ { x1sol /. values, x2sol /. values} , {t, 0, 10} ]


「授業で扱った主なコマンド」へ


ホームページに戻る

Last updated on Nov. 16 1999