ラベル gnuplot の投稿を表示しています。 すべての投稿を表示
ラベル gnuplot の投稿を表示しています。 すべての投稿を表示

2010年7月7日水曜日

ファイルへの書き込み

<今日の内容>
・sinxのテーラー展開の復習
・得られたデータをファイルに書き込む
・Gnuplotでデータをプロットする

〜ファイルへの書き込み〜
「./a.out > ”ファイル名”」とすればリダイレクトされて、./a.outの内容がファイルに書き込まれる。

sinxの展開のプログラムでpow関数を用いた方がコンパイルできなかった。
→各自、原因を考えて来てください

プログラム
#include
#include
main()
{
int i, n;
double x;
double dx, s ,c1,c3,c5,c7,c9;
x=0.0e0;
n= 70;
dx = 0.1e0;
x = -dx ;
c1=1;
c3=c1/2/3;
c5=c3 / 4 /5;
c7 = c5 /6 /7;
c9 = c7 /8 /9;
for (i=1;i<=n; i++ ){
x = x + dx;
s = x -c3 *pow(x,3.0) + c5*pow(x,5.0) - c7 * pow(x,7.0)+c9* pow(x,9.0);
printf(" %d %f %e \n", i , x, s);
}
}

2010年1月18日月曜日

gnuplotで各軸の感覚を調節する

グラフが正しい比率でかかれないと
物体の運動の軌跡が解析しにくいことがある。

これにはグラフで表示するxとyの範囲を適度に調節すればよい。
x軸の範囲を0以上0.6以下にしたいときは、
以下のコマンドをプロット前に実行しておく。
set xrange [ 0 : 0.6 ]
y軸についても同様に行えばよい。

gnuplotで各軸に名前をつける


gnuplotは標準では各軸にX軸、Y軸などの名前が表示されない。
gnuplotでデータをプロットする前に、次のコマンドを実行しておく。

set xlabel "x" 0.0,1.0

これでx軸の下に”x”と表示されるようになる。

ドリフト運動のグラフを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年12月10日木曜日

三次元plotその2 空気抵抗あり

右の図は下のプログラムの場合です


#include

main(){

double a,x,y,z,Vx,Vy,Vz,Vx1,Vy1,C,dt;

int i,n;

a=0.1;
x=1.0;
y=0.0;
z=0.0;
Vx=2.0;
Vy=0.0;
Vz=0.1;
C=10;
dt=0.0001;
for(i=0;i<100000;i++)
{
x=x+Vx*dt;
y=y+Vy*dt;
z=z+Vz*dt;
Vx1=Vx+C*Vy*dt-a*Vx*dt;
Vy1=Vy-C*Vx*dt-a*Vy*dt;
Vx=Vx1;
Vy=Vy1;
printf("%e %e %e \n", x, y,z );
}
}

三次元のplot


先週のグラフを三次元で表してみました
(z軸方向に等速度運動)

gnuplot > plot "re"
→gnuplot > splot "re"
で三次元のplotが表示される
splotはファイルreに保存されたデータから一行目をx座標、二行目をy座標、三行目をz座標としてplotする。


#include

main(){

double a,x,y,z,Vx,Vy,Vz,Vx1,Vy1,C,dt;

int i,n;

a=0.0;
x=1.0;
y=0.0;
z=0.0;
Vx=2.0;
Vy=0.0;
Vz=0.1;
C=10;
dt=0.0001;
for(i=0;i<100000;i++)
{
x=x+Vx*dt;
y=y+Vy*dt;
z=z+Vz*dt;
Vx1=Vx+C*Vy*dt-a*Vx*dt;
Vy1=Vy-C*Vx*dt-a*Vy*dt;
Vx=Vx1;
Vy=Vy1;
printf("%e %e %e \n", x, y,z );
}
}

2009年11月12日木曜日

グラフを画像ファイルとして保存する

gnuplotで表示した画像の保存
clipboardに保存(グラフ画面の左上のアイコンをクリック)
GIMPを起動しファイルメニューから”画像の生成”を選び”クリップボードから”をクリック。するとグラフが表示される。名前をつけて保存を選び、形式を”JEPG画像”にして保存。

ブログにアップロードするには、ブログの投稿画面で”画像を追加”から”参照”

2009年7月16日木曜日

3-4-3. gnuplotの使い方

使用例
ファイルreの2行目をx3行目をyとしてグラフを書く

astro-PBG4-12:~/tmp habe$ gnuplot <----- gnuplotの起動

G N U P L O T
Version 4.0 patchlevel 0
last modified Thu Apr 15 14:44:22 CEST 2004
System: Darwin 8.11.0

Terminal type set to 'x11'
gnuplot> plot "re"
gnuplot> plot "re" u 2:3
gnuplot> plot "re" u 2:3 with line
gnuplot> set yrange[-1:1]
gnuplot> plot "re" u 2:3 with line
gnuplot> exit