プログラムを書こう  2004/1111/08

 

今回はc言語でプログラムを書いて数値計算を行いましょう。

まず、簡単な例を示します。

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

 

double kaijyou(double x, int n);

 

main()

{

  int n;

  double x, y;

 

  x=2.0;

 

  for (n=1; n<10; n++) {

    y = kaijyou(x, n);

    printf("%f%I= %f\n", x, n, y);

  }

}

 

double kaijyou(double x, int n)

{

  int i;

  double value;

 

  value = 1.0;

 

  for (i=0; i<n; i++) {

    value *= x;

  }

 

  return value;

}

これは階乗を計算するプログラムです。
プログラムの構成は
n         ヘッダファイル定義部
n         本文(main文)
n         変数の定義部
n         計算をさせている部分
n         関数定義部
となっています。
 
n         ヘッダファイル定義部
printf文などの関数を使うためにヘッダファイルを読み込むところ。
はじめはおまじないだと思っても大丈夫
n         本文(main文)
c言語のプログラムには必ずmain文が必要です。
プログラムの中心ですね。main分の他に自分で作った関数をmain文から呼ぶことも
出来ます。
n         変数の定義部
プログラムで使われる変数を定義します。変数の型にはいろいろあって
char   8bit   大体文字につかう
int    32bit  整数につかう
float           浮動小数点
double          浮動小数点
n         計算をさせている部分
宣言した変数、文法、関数をつかっていろいろさせます。
文法としてここではfor文を使っています。これは繰り返しに使うもので
for ( i=0; i<10; i++) {
  何かさせる
}
というように使います。
またkaijyou(x, n)というのはxのn乗を計算させるためにつくったプログラムです。
n         関数定義部分
階乗を計算させて値を返します。
return文を使って値を返しています。
 
とりあえずコンパイルをしよう。
コンパイルするには

% gcc -o kaijyou.out kaijyou.c -lm

とします。-lmというオプションは、C言語で数値計算プログラムを作る際には、付ける必要があります。この結果、kaijyou.outという名前の実行ファイルができます。

n         ここからが問題
実験でラザフォード散乱を行うわけですが12MeVの運動エネルギーを持った陽子をビームとして炭素標的にぶつけるとします。運動学的にある角度θに散乱された陽子の運動エネルギーは弾性散乱であればエネルギー保存則と運動量保存則によって一意に決定されます。ある角度θに散乱されたときの陽子の運動エネルギーを計算させるプログラムを作ってください。
その結果を横軸角度、縦軸運動エネルギーのグラフを作ってください。
陽子の質量は983.2MeV, 炭素の質量は11177MeVです。
 


 
 
 
 
 
 
 
 
 

〇方針
 角度を0度から180度までfor文で回そう。
   for (theta=0.0; theta<180.0; theta += 10.0)
 角度を入れたら運動量または運動エネルギーを返す関数を作ろう。
  double calc(double theta)
 角度と運動エネルギーを端末またはファイルに書き出そう。
  printf(%f %f\n, theta, energy);