ラベル 微分方程式 の投稿を表示しています。 すべての投稿を表示
ラベル 微分方程式 の投稿を表示しています。 すべての投稿を表示

2010年1月18日月曜日

ドリフト運動のグラフを1:1に直してみると…


磁場の加速度のx方向の成分が電場の加速度の方向と強めあうときは、グラフの接線方向の加速度が大きくなるので回転半径が大きくなる。また弱め合う場合は、グラフの接線方向の加速度が小さくなるので回転半径が小さくなる。この変化を繰り替えしていくと荷電粒子が全体としてy軸負の方向に移動しているようにみえる。

各時刻でグラフに内接する円の中心の座標がどのように移動していくかプロットすることで、何か分かるだろうか…?

2009年12月17日木曜日

ドリフト運動(電場×磁場;垂直)(重力あり)





本日のソースコード

#include <>

main(){

double a,B,E,g,m,q,C,x,y,z,Vx,Vy,Vz,Vx1,Vy1,dt;

//C=q*B/m(定数)

int i,n;

a=0.0; //空気抵抗
B=2.0; //磁束密度//z方向
E=1.0; //電場//x方向
g=9.8; //重力加速度
m=1.0; //粒子質量
q=5.0; //粒子電荷
x=0.0; //
y=0.0; //
z=0.0; //
Vx=2.0; //
Vy=0.0; //
Vz=0.0; //


dt=0.0001; //時間(パラメータ)
for(i=0;i<100000;i++)
{
C=q*B/m;
x=x+Vx*dt;
y=y+Vy*dt;
z=z+Vz*dt;
Vx1=Vx+C*Vy*dt-a*Vx*dt+q*E*dt;
Vy1=Vy-C*Vx*dt-a*Vy*dt;
Vx=Vx1;
Vy=Vy1;
Vz=Vz-g*dt-a*Vz*dt;
printf("%e %e %e \n", x, y, z );
}
}

x-y平面への出力結果
x方向へ少しずつ広がっているのは微小時間tの値が大きいことによる誤差と考えられます。

x軸+方向に電場をかけた結果、ドリフト運動してy軸-方向へドリフト運動します。
さらに、振動の中心がすこしx軸+方向へずれているのが分かります。

z軸-方向へ重力場がはたらいているのでだんだん上昇速度が小さくなっています。

2009年11月19日木曜日

重力場中(空気抵抗あり)の物体のx-tグラフのための数値計算

#include < stdio.h >
main()
{
double t, x, dt, dx, ta, tb, v;
double f(double ,double );
int i, n;
x = 0.0 ;
t = 0.0 ;
ta = 0.0 ;
tb = 100 ;
v = 0.0 ;
n = 1000;
dt = (tb - ta) / n ;
for ( i = 0; i < n ; i++){
x = x+ v*dt ;
v = v+ f(v, t)*dt ;
t = t + dt ;
printf(" %e %e \n", t, x);
}
}
double f( double x, double t){
double y, z, alpha, g;
alpha = 0.1;
g = - 9.8;
z = -alpha * x + g ;
return z;
}