その1
#include < stdio.h >
main(){
int i=1,x;
for(x=1; x<70 ;x++){
i=i*2;
printf("%d %d \n" ,i,x);
}
}
その2
#include < stdio.h >
main(){
int count=1;
int x=1;
int y=0;
while (y !=x){
y=x;
x=x*2;
printf("%d\n",count,x);
count++;
}
}
while :繰り返しの記号
y !=x :y=xでないならば count :番号を付けていく xとyが一致しない限り繰り返されるプログラム。計算機が計算できる範囲を超えたらx=yとなるのでここで計算が止まる。
2009年7月30日木曜日
2009年7月29日水曜日
n項まで計算できるsinのテイラー展開のプログラムです
#include < stdio.h >
#include < math.h >
main(){
char FileName[124];
FILE *fp;
int i, j, k, n, m, e;
float a, b, c, d;
double x;
float dx, s;
x = 0.0e0;
dx = 0.1e0;
x = -dx;
b = 0;
printf("結果の保存先ファイル名を入力してください>");
scanf("%s" , FileName);
fp = fopen(FileName , "w");
printf("テイラー展開のn項まで計算します。nを入力してください>");
scanf("%d", &n);
for(e=1; e<=70; e++){
x = x + dx;
for(m=1; m<=n*2; m = m + 4){
b=0;
for(i=1; i<=m; i = i + 4){
a = 1.0;
for(j=1; j<=i; j++){
a = a * 1/j;
}
a = a * pow(x,i);
b = b + a;
}
}
for(m=3; m<=n*2; m = m + 4){
c = 0;
for(i=3; i<=m; i = i + 4){
a = 1.0;
for(j=1; j<=i; j++){
a = a * 1/j;
}
a = a * pow(x,i);
c = c + a;
}
c = -c;
}
d = b + c;
printf("%d %f %e\n", e, x, d);
fprintf(fp,"%d %f %e\n", e, x, d);
}
fclose(fp);
return 0;
}
実行したら、最初に実行結果を出力するファイル名を記入してください。
その後に、n項まで計算するための"n"を入力してください。
#include < math.h >
main(){
char FileName[124];
FILE *fp;
int i, j, k, n, m, e;
float a, b, c, d;
double x;
float dx, s;
x = 0.0e0;
dx = 0.1e0;
x = -dx;
b = 0;
printf("結果の保存先ファイル名を入力してください>");
scanf("%s" , FileName);
fp = fopen(FileName , "w");
printf("テイラー展開のn項まで計算します。nを入力してください>");
scanf("%d", &n);
for(e=1; e<=70; e++){
x = x + dx;
for(m=1; m<=n*2; m = m + 4){
b=0;
for(i=1; i<=m; i = i + 4){
a = 1.0;
for(j=1; j<=i; j++){
a = a * 1/j;
}
a = a * pow(x,i);
b = b + a;
}
}
for(m=3; m<=n*2; m = m + 4){
c = 0;
for(i=3; i<=m; i = i + 4){
a = 1.0;
for(j=1; j<=i; j++){
a = a * 1/j;
}
a = a * pow(x,i);
c = c + a;
}
c = -c;
}
d = b + c;
printf("%d %f %e\n", e, x, d);
fprintf(fp,"%d %f %e\n", e, x, d);
}
fclose(fp);
return 0;
}
実行したら、最初に実行結果を出力するファイル名を記入してください。
その後に、n項まで計算するための"n"を入力してください。
2009年7月27日月曜日
2009年7月21日火曜日
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
ファイル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
3-4-2. プログラム例 (pow関数を使う)
#include < stdio.h >
#include < math.h>
main()
{
int i, n;
double x;
float 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) + c5*pow( x,5) - c7 * pow(x,7)+c9* pow(x,9);
printf(" %d %f %e \n", i , x, s);
}
}
#include < math.h>
main()
{
int i, n;
double x;
float 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) + c5*pow( x,5) - c7 * pow(x,7)+c9* pow(x,9);
printf(" %d %f %e \n", i , x, s);
}
}
3-4-1. プログラム例
#include < stdio.h >
main()
{
int i, n;
float x, dx, s ;
x=0.0;
n= 70;
dx = 0.1;
x = -dx ;
for (i=1;i<=n; i++ ){
x = x + dx;
s = x -1/6.0 *x*x*x +1/5.0/4.0/3.0/2.0* x*x*x*x*x
- 1/7.0/6.0/5.0/4.0/3.0/2.0* x*x*x*x*x*x*x ;
printf("%d %f %e \n", i , x, s);
}
}
main()
{
int i, n;
float x, dx, s ;
x=0.0;
n= 70;
dx = 0.1;
x = -dx ;
for (i=1;i<=n; i++ ){
x = x + dx;
s = x -1/6.0 *x*x*x +1/5.0/4.0/3.0/2.0* x*x*x*x*x
- 1/7.0/6.0/5.0/4.0/3.0/2.0* x*x*x*x*x*x*x ;
printf("%d %f %e \n", i , x, s);
}
}
2009年7月15日水曜日
3-2. c プログラムの例
これは何をしているのか,考えてみよう
#include
main()
{
int a ;
a = 1 + 2 ;
printf("%d¥n" , a);
a = 1 - 2 ;
printf("%d¥n" , a);
a = 1 * 2 ;
printf("%d¥n" , a);
a = 1.0 / 2 ;
printf("%d¥n" , a);
}
#include
main()
{
int a ;
a = 1 + 2 ;
printf("%d¥n" , a);
a = 1 - 2 ;
printf("%d¥n" , a);
a = 1 * 2 ;
printf("%d¥n" , a);
a = 1.0 / 2 ;
printf("%d¥n" , a);
}
3-1. unix (Linux)の使い方
1) loginとlogout
他の計算機と接続するには sshを使う
2) ファイル
3) ディレクトリ
ファイルをしまっておく場所で階層的に構成されている
Linuxでは
一番大きな階層がルートディレクトリ(/)
その下のディレクトリの例(/bin, /usr, /homeなど)
4) 標準入出力とパイプラインとリダイレクト
コマンドの出力は普通標準出力先(ディスプレイ)へ
これをリダイレクトして例えばファイルに入力できる
ls > log.txt
これはlsの出力先を>でlog.txtというファイルに変更している
コマンドの出力を別のコマンドの入力に出来る
ls > less
これはlsの出力をlessに渡している
5) ファイル管理と複写、移動、削除,ディレクとの作成と削除,文字列の検索
ls, cp, mv, rm, mkdir, rmdir, grep
6) フォアグランドとバックグランド
他の計算機と接続するには sshを使う
2) ファイル
3) ディレクトリ
ファイルをしまっておく場所で階層的に構成されている
Linuxでは
一番大きな階層がルートディレクトリ(/)
その下のディレクトリの例(/bin, /usr, /homeなど)
4) 標準入出力とパイプラインとリダイレクト
コマンドの出力は普通標準出力先(ディスプレイ)へ
これをリダイレクトして例えばファイルに入力できる
ls > log.txt
これはlsの出力先を>でlog.txtというファイルに変更している
コマンドの出力を別のコマンドの入力に出来る
ls > less
これはlsの出力をlessに渡している
5) ファイル管理と複写、移動、削除,ディレクとの作成と削除,文字列の検索
ls, cp, mv, rm, mkdir, rmdir, grep
6) フォアグランドとバックグランド
3. unix (linux)
計算機の制御システムのこと
c言語で書かれており、世界共同で開発され続けれている
計算を目的としている計算機で多く使われている
(pcからスーパーコンピューターまで)
複数の計算を同時に行なえる
複数の人が一つの計算機を同時に使用できる
解析ツールもそろっている(gcc, gnuplotなど)
c言語で書かれており、世界共同で開発され続けれている
計算を目的としている計算機で多く使われている
(pcからスーパーコンピューターまで)
複数の計算を同時に行なえる
複数の人が一つの計算機を同時に使用できる
解析ツールもそろっている(gcc, gnuplotなど)
2. プログラムとは
問題を計算機に計算させる手順を書いたもの,
ソースあるいはソースコードとも言う
使用する言語はc、c++あるいはfortran
取り上げるテーマ
惑星円盤における粒子の衝突による成長
膨張宇宙における密度揺らぎの成長
ソースあるいはソースコードとも言う
使用する言語はc、c++あるいはfortran
取り上げるテーマ
惑星円盤における粒子の衝突による成長
膨張宇宙における密度揺らぎの成長
登録:
投稿 (Atom)