物理 力学 2021.7-2016.2 Yuji.W

☆ 運動のシミュレーション ☆

◎ 数値解析 コンピューターで計算する simulation   

0.お勉強 A.力学 B.特殊相対性理論,電磁気 C.物理学一般 D.数学,その他 E.Python

2*3=6 6/2=3 3^2=9 1000=10^3=Ten(3)      000 py- 0table-202012
微分 : 偏微分 ; 積分 $ ネイピア数 e 虚数単位 i e^(i*x)=expi(x)
ベクトル <A> 縦ベクトル <A) 単位ベクトル <Au> 内積 * 外積 #  2021.7

\3=2.99792458 光速 c=\3*Ten(8)_m/sec=\3*Ten(10)_cm/sec
速さ(対光速比) b 相対論効果率 Γ(b)=1/root(1-b^2) Λ(b)=Γ(b)*b

\e=1.6021766208 素電荷 qe=\e*Ten(-19)_C
クーロン力定数 ke=1/(4Pi*ε0)=\3^2*Ten(9)_N*m^2/C^2
μ0=1/(ε0*c^2)=4Pi*ke/c^2=4Pi*Ten(-7)_N/A^2 
CGS静電単位系 ke=1 1_C=\3*Ten(9)_esu
[国際単位系の磁場 1_T] ⇔ [CGS静電単位系の磁場 Ten(4)_G]
[国際単位系の電流 1_A] ⇔ [(CGS静電単位系の電流)/c 0.1_esu/cm]  2021.7


◇ 運動のシミュレイションの原理 ◇ 

〇 1質点 質量 m 1次元の運動 時間 t 位置 x(t) 速さ v(t) 加速度 a(t)

● 時刻 t での、x(t),v(t),a(t) がわかったとしよう。微少時間 Δt 後の、x(t+Δt),v(t+Δt),a(t+Δt) を求めたい。
微少時間 Δt の間にも、v(t),a(t) は変化するのだが、微少時間 Δt は十分に小さく、v(t),a(t) は一定の値をとり続けるとみなす。そうすると、次の値を計算する事ができる。
x(t+Δt)=x(t)+v(t)*Δt v(t+Δt)=v(t)+a(t)*Δt
x(t+Δt)とv(t+Δt)とが求められたので、運動方程式により、a(t+Δt)を求めることができる。
以下、同様に計算して、任意の時刻の x,v,a がわかる。


◇  ◇ 

◎ 運動をシミュレイションする 〓〓〓
○ ☆☆
◆ 1質点 質量 m 1次元の運動 位置 x 速さ v 加速度 a 力 F(x,v)
時間 初期値 t0 微少時間 Δt
t=t0 , t=t0+Δt , t=t0+2*Δt , … での位置 x0 , x1 , x2 , … と表す 他の物理量も同様に表す
■ x(t) を知りたい{!} 運動方程式より a(t)=F(x(t),v(t))/m
① 適当に初期値 x0 , v0 を定める F0 , a0 も決まる
② 微少時間 Δt に対して、次の式が成り立つとして、その値を求める
x1=x0+v0*Δt v1=v0+a0*Δt
x1 , v1 がわかったから、F1 , a1 も求める事ができる
③ ②と同様にして、x2 , v2 , F2 , a2 を求める事ができる 以下、②③の繰り返し

時刻

t0

t0+Δt

t0+2*Δt

t0+3*Δt

位置

x0

x1

x2

速さ

v0

v1

v2

加速度

a0

a1

x2


◇  ◇ 

〇 ☆運動をシミュレイションする-精度を上げた方法-2☆
◎ Yuji流
■ ① 初期値 x0 , v0 ⇒ F0 , a0
② v1=v0+a0*Δt
③ x1=x0+[(v0+v1)/2]*Δt ★ {ここが工夫したところ!}
※ x1=x0+[(v0+v0+a0*Δt)/2]*Δt=x0+v0*Δt+a0*Δt^2/2 ファインマン流と同じ
以下同様

時刻

t0

t0+Δt

t0+2*Δt

t0+3*Δt

位置

x0

x1

x2

速さ

v0

v1

v2

加速度

a0

a1

x2


◇  ◇ 

● ▲ x=500-5*t^2 Δt=0.2 精度を上げた方式でシミュレイションしたもの。
t の値を代入して、xの値を求めたものではない。しかし、数式通り、
t=10 で、x=0 になっている。{素晴らしい!2013/2}


◇  ◇ 

〇 精度を上げた方法の精度☆
◎ 等加速度運動では、精度を上げた方法でシミュレイションすると、誤差が全く出ない。なぜか。
◆ 加速度 a0=a1=a2=…=a=一定
n*Δt 後の真の値 x=(1/2)*a*(n*Δt)^2+v0*(n*Δt)+x0
シミュレイション \v0=v0+a*Δt/2 x1=x0+\v0*Δt
\v(n)=\v(n-1)+a*Δt xn=x(n-1)+\v(n-1)*Δt
■ \v0=v0+a*Δt/2
\v1=\v0+a*Δt=(v0+a*Δt/2)+a*Δt=v0+1.5*a*Δt
\v(n-1)=v0+(n-0.5)*a*Δt \v(n)=v0+(n+0.5)*a*Δt
x1=x0+\v0*Δt=x0+(v0+a*Δt/2)*Δt=x0+v0*Δt+a*Δt^2/2
x2
=x1+\v1*Δt
=(x0+v0*Δt+a*Δt^2/2)+(v0+1.5*a*Δt)*Δt
=x0+v0*(2*Δt)+(1/2)*a*(2*Δt)^2
x3
=x2+\v2*Δt
=[x0+v0*(2*Δt)+(1/2)*a*(2*Δt)^2]+[v0+2.5*a*Δt]*Δt
=x0+v0*(3*Δt)+(1/2)*a*(3*Δt)^2
xn=x0+v0*(n*Δt)+(1/2)*a*(n*Δt)^2=真の値
▲ 加速度 a=一定 の場合、精度を上げた方法を使えば、全く誤差なしで、速さや位置を求める事ができる。 ★


◇  ◇ 

〇 2次関数の場合☆
★ 上記の精度の問題は、次の問題と同じになる。
◆ 2次関数 f(x)=a*x^2+b*x+c で、
[f(x2)-f(x1)]/(x2-x1)=f;x((x1+x2)/2)
■ 右辺の f;x=2*a*x+b だから、
右辺=2*a*[(x1+x2)/2]+b=a*(x1+x2)+b
左辺=[(a*x2^2+b*x2+c)-(a*x1^2+b*x1+c)]/(x2-x1)
=[(a*(x1+x2)*(x2-x1)+b*(x2-x1)]/(x2-x1)
=(x2-x1)*[a*(x1+x2)+b]/(x2-x1)
=a*(x1+x2)+b
左辺=右辺 』


◇  ◇ 

お勉強しよう since 2011 Yuji Watanabe

inserted by FC2 system